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

36 lines
878 B
Fortran

SUBROUTINE INPBF
C ================
C
INCLUDE 'PARAMS.FOR'
INCLUDE 'MODELP.FOR'
PARAMETER (MINPUT=MLEVEL+4)
DIMENSION DEPTH(MDEPTH),X(MINPUT,MDEPTH),XX(MDEPTH),BF(MDEPTH)
C
OPEN(8,FILE='bfactors',STATUS='OLD')
NUMLT=3
IF(INMOD.EQ.2) NUMLT=4
READ(8,*) NDPTH,NUMPAR
READ(8,*) (DEPTH(I),I=1,NDPTH)
IF(NUMPAR.LT.0) NUMLT=NUMLT+1
NUMP=ABS(NUMPAR)
DO ID=1,NDPTH
READ(8,*) (X(I,ID),I=1,NUMP)
END DO
CLOSE(8)
c
c interpolate the input b-factors to the original DM-scale;
c compute new NLTE populations
c
DO I=NUMLT+1,NUMP
DO ID=1,NDPTH
XX(ID)=X(I,ID)
END DO
CALL INTERP(DEPTH,XX,DM,BF,NDPTH,ND,2,1,1)
DO ID=1,ND
POPUL(I-NUMLT,ID)=POPUL(I-NUMLT,ID)*BF(ID)
END DO
END DO
C
RETURN
END