SpectraRust/synspec/extracted/xk2dop.f
2026-03-19 14:05:33 +08:00

34 lines
1.2 KiB
Fortran

FUNCTION XK2DOP(TAU)
C ====================
C
C KERNEL FUNCTION K2 (AUXILIARY PROCEDURE TO NLTE)
C AFTER HUMMER, 1981, J.Q.S.R.T. 26, 187
C
INCLUDE 'PARAMS.FOR'
DATA PI2SQ,PISQ /2.506628275D0, 1.772453851D0/
DATA A0,A1,A2,A3,A4 /
* 1.D0, -1.117897000D-1, -1.249099917D-1, -9.136358767D-3,
* -3.370280896D-4/
DATA B0,B1,B2,B3,B4,B5 /
* 1.D0, 1.566124168D-1, 9.013261660D-3, 1.908481163D-4,
* -1.547417750D-7, -6.657439727D-9/
DATA C0,C1,C2,C3,C4 /
* 1.0D0, 1.915049608D01, 1.007986843D02, 1.295307533D02,
* -3.143372468D01/
DATA D0,D1,D2,D3,D4,D5/
* 1.D0, 1.968910391D01, 1.102576321D02, 1.694911399D02,
* -1.669969409D01, -3.666448000D01/
XK2DOP=1.D0
IF(TAU.LE.0.) RETURN
IF(TAU.GT.11.) GO TO 10
P=A0+TAU*(A1+TAU*(A2+TAU*(A3+TAU*A4)))
Q=B0+TAU*(B1+TAU*(B2+TAU*(B3+TAU*(B4+TAU*B5))))
XK2DOP=TAU/PI2SQ*LOG(TAU/PISQ)+P/Q
RETURN
10 X=1.D0/LOG(TAU/PISQ)
P=C0+X*(C1+X*(C2+X*(C3+X*C4)))
Q=D0+X*(D1+X*(D2+X*(D3+X*(D4+X*D5))))
XK2DOP=P/Q/2.D0/TAU/SQRT(LOG(TAU/PISQ))
RETURN
END