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

35 lines
1.1 KiB
Fortran

SUBROUTINE DIVSTR(A,DIV)
C ==============================
C
C Auxiliary procedure for STARKA - determination of the division
C point between Doppler and asymptotic Stark profiles
C
C Input: BETAD - Doppler width in beta units
C Output: A - auxiliary parameter
C A=1.5*LOG(BETAD)-1.671
C DIV - only for A > 1; division point between Doppler
C and asymptotic Stark wing, expressed in units
C of betad.
C DIV = solution of equation
C exp(-(beta/betad)**2)/betad/sqrt(pi)=3*beta**-5/2
C
INCLUDE 'PARAMS.FOR'
PARAMETER (UN=1.,TWO=2.,UNQ=1.25,UNH=1.5,TWH=2.5,FO=4.,FI=5.)
PARAMETER (CA=1.671,BL=5.821,AL=1.26,CX=0.28,DX=0.0001)
C
A=UNH*LOG(BETAD)-CA
IF(BETAD.LT.BL) RETURN
IF(A.GE.AL) THEN
X=SQRT(A)*(UN+UNQ*LOG(A)/(FO*A-FI))
ELSE
X=SQRT(CX+A)
ENDIF
DO I=1,5
XN=X*(UN-(X*X-TWH*LOG(X)-A)/(TWO*X*X-TWH))
IF(ABS(XN-X).LE.DX) GO TO 20
X=XN
END DO
20 DIV=X
RETURN
END