sync: reconcile local changes and modernizations with remote

This commit is contained in:
fmq
2026-07-27 11:12:06 +08:00
parent 4ee085ecde
commit dc659d2e7b
125 changed files with 6338 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
# ==============================================================================
# TLUSTY CMake 构建配置文件
# ==============================================================================
cmake_minimum_required(VERSION 3.15)
project(TLUSTY Fortran)
# 编译器设置
set(CMAKE_FORTRAN_COMPILER gfortran)
set(CMAKE_Fortran_FLAGS "-O3 -fno-automatic")
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0 -fcheck=all -Wall")
# 模块输出目录
set_target_properties(${PROJECT_NAME} PROPERTIES
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
)
# ==============================================================================
# TLUSTY 模块文件 (按编译顺序排列)
# ==============================================================================
set(TLUSTY_MODULES
${CMAKE_CURRENT_SOURCE_DIR}/modules/impli_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/basics_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/iterat_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/alipar_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/atomic_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/modelq_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/odfpar_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/array1_module.f90
)
# ==============================================================================
# TLUSTY 子程序文件
# 注意:这些子程序需要从原始 tlusty208.f 中提取
# ==============================================================================
set(TLUSTY_SUBROUTINES
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/start_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/initia_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/resolv_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/solve_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/solves_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/accel2_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/rybsol_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/timing_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/comset_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/prdini_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/hedif_sub.f90
)
# ==============================================================================
# TLUSTY 主程序
# ==============================================================================
set(TLUSTY_MAIN
${CMAKE_CURRENT_SOURCE_DIR}/main/tlusty_main.f90
)
# ==============================================================================
# 创建可执行文件
# ==============================================================================
add_executable(tlusty.exe
${TLUSTY_MODULES}
${TLUSTY_SUBROUTINES}
${TLUSTY_MAIN}
)
# 设置模块依赖关系
target_include_directories(tlusty.exe PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/modules
)
# ==============================================================================
# 安装规则
# ==============================================================================
install(TARGETS tlusty.exe DESTINATION bin)
install(DIRECTORY ${CMAKE_BINARY_DIR}/modules/ DESTINATION include/tlusty)
# ==============================================================================
# 打印配置信息
# ==============================================================================
message(STATUS "TLUSTY 配置:")
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
message(STATUS " 模块目录:${CMAKE_BINARY_DIR}/modules")
+64
View File
@@ -0,0 +1,64 @@
!==============================================================================
! TLUSTY208 主程序
!
! Non-LTE model stellar atmospheres computer program
! Universal code for stellar atmospheres and accretion disks
!
! 版本:TLUSTY208
!==============================================================================
PROGRAM TLUSTY
USE impli_module
USE basics_module
USE iterat_module
USE alipar_module
IMPLICIT NONE
INTEGER :: INIT, ITER
LOGICAL :: LFIN
! 打开临时文件
OPEN(UNIT=91, STATUS='SCRATCH', FORM='UNFORMATTED')
OPEN(UNIT=92, STATUS='SCRATCH', FORM='UNFORMATTED')
OPEN(UNIT=93, STATUS='SCRATCH', FORM='UNFORMATTED')
! 初始化
INIT = 1
ITER = 0
CALL START
LFIN = .FALSE.
IF (NITER .EQ. 0) LFIN = .TRUE.
! 混合 CL/ALI 方法的基本迭代循环
10 CONTINUE
ITER = ITER + 1
! 1. 形式解步骤
CALL RESOLV
! CALL TIMING(1,ITER)
INIT = 0
IF (LFIN) GO TO 20
! 1b. 收敛加速
IF (IACC .GT. 0) CALL ACCEL2
! IF (LAC2) GO TO 10
! 2. 线性方程组的解
IF (IFRYB .EQ. 0) THEN
IF (NN .GT. MSMX) THEN
CALL SOLVE
ELSE
CALL SOLVES
END IF
ELSE
CALL RYBSOL
END IF
CALL TIMING(2, ITER)
GO TO 10
20 CONTINUE
STOP
END PROGRAM TLUSTY
+109
View File
@@ -0,0 +1,109 @@
MODULE alipar_module
!==============================================================================
! TLUSTY ALI (Accelerated Lambda Iteration) 方法参数模块
! 原始文件:ALIPAR.FOR
!
! 包含加速 Lambda 迭代方法的参数和数组
!==============================================================================
USE impli_module
USE basics_module
USE iterat_module
IMPLICIT NONE
!==========================================================================
! 公共变量块 - FIXALP (固定 ALI 参数)
!==========================================================================
! 吸收、发射、散射数组
REAL(dp) :: ABSO(MFREQ)
REAL(dp) :: EMIS(MFREQ)
REAL(dp) :: SCAT(MFREQ)
! 重新发射相关数组(温度相关)
REAL(dp) :: REIT(MDEPTH)
REAL(dp) :: REIN(MDEPTH)
REAL(dp) :: REIM(MDEPTH)
REAL(dp) :: REIP(MLVEXP,MDEPTH)
! 平均重新发射数组
REAL(dp) :: AREIT(MDEPTH)
REAL(dp) :: AREIN(MDEPTH)
REAL(dp) :: AREIM(MDEPTH)
REAL(dp) :: AREIP(MLVEXP,MDEPTH)
! 校正重新发射数组
REAL(dp) :: CREIT(MDEPTH)
REAL(dp) :: CREIN(MDEPTH)
REAL(dp) :: CREIM(MDEPTH)
REAL(dp) :: CREIP(MLVEXP,MDEPTH)
! 交叉重新发射数组
REAL(dp) :: REIX(MDEPTH)
REAL(dp) :: CREIX(MDEPTH)
! 重新发射导数数组
REAL(dp) :: REDX(MDEPTH)
REAL(dp) :: REDT(MDEPTH)
REAL(dp) :: REDN(MDEPTH)
REAL(dp) :: REDM(MDEPTH)
REAL(dp) :: REDP(MLVEXP,MDEPTH)
! 重新发射导数负值数组
REAL(dp) :: REDXM(MDEPTH)
REAL(dp) :: REDTM(MDEPTH)
REAL(dp) :: REDNM(MDEPTH)
REAL(dp) :: REDMM(MDEPTH)
REAL(dp) :: REDPM(MLVEXP,MDEPTH)
! 重新发射导数正值数组
REAL(dp) :: REDTP(MDEPTH)
REAL(dp) :: REDNP(MDEPTH)
REAL(dp) :: REDXP(MDEPTH)
REAL(dp) :: REDMP(MDEPTH)
REAL(dp) :: REDPP(MLVEXP,MDEPTH)
! He 重新发射数组
REAL(dp) :: HEIT(MDEPTH)
REAL(dp) :: HEIN(MDEPTH)
REAL(dp) :: HEIM(MDEPTH)
REAL(dp) :: HEIP(MLVEXP,MDEPTH)
! He 重新发射负值数组
REAL(dp) :: HEITM(MDEPTH)
REAL(dp) :: HEINM(MDEPTH)
REAL(dp) :: HEIMM(MDEPTH)
REAL(dp) :: HEIPM(MLVEXP,MDEPTH)
! He 重新发射正值数组
REAL(dp) :: HEITP(MDEPTH)
REAL(dp) :: HEINP(MDEPTH)
REAL(dp) :: HEIMP(MDEPTH)
REAL(dp) :: HEIPP(MLVEXP,MDEPTH)
! 能量相关数组
REAL(dp) :: EHET(MDEPTH)
REAL(dp) :: EHEN(MDEPTH)
REAL(dp) :: ERET(MDEPTH)
REAL(dp) :: EREN(MDEPTH)
REAL(dp) :: EHEP(MLVEX3,MDEPTH)
REAL(dp) :: EREP(MLVEX3,MDEPTH)
! APT 相关数组
REAL(dp) :: APT(MLVEXP,MDEPTH)
REAL(dp) :: APN(MLVEXP,MDEPTH)
REAL(dp) :: AAPT(MLVEX3,MDEPTH)
REAL(dp) :: AAPN(MLVEX3,MDEPTH)
REAL(dp) :: CAPT(MLVEX3,MDEPTH)
REAL(dp) :: CAPN(MLVEX3,MDEPTH)
! APP 相关数组
REAL(dp) :: APP(MLVEXP,MLVEXP,MDEPTH)
REAL(dp) :: AAPP(MLVEX3,MLVEX3,MDEPTH)
REAL(dp) :: CAPP(MLVEX3,MLVEX3,MDEPTH)
! ALI 标志和参数
REAL(dp) :: QTLAS
INTEGER :: IFALI,IFPOPR,irprec,ifprec,itold1,itold2,itlas
END MODULE alipar_module
+191
View File
@@ -0,0 +1,191 @@
MODULE array1_module
!==============================================================================
! TLUSTY 工作数组模块
! 原始文件:ARRAY1.FOR
!
! 包含线性方程组系数矩阵、辐射场数组和导数数组等主要工作数组
!==============================================================================
USE impli_module
USE basics_module
USE iterat_module
USE alipar_module
USE atomic_module
USE modelq_module
USE odfpar_module
IMPLICIT NONE
!==========================================================================
! 公共变量块 - 矩阵数组 (A, B, C, E)
!==========================================================================
REAL(dp) :: A(MTOT,MTOT)
REAL(dp) :: B(MTOT,MTOT)
REAL(dp) :: C(MTOT,MTOT)
REAL(dp) :: E(MTOT,MTOT)
!==========================================================================
! 公共变量块 - 向量数组
!==========================================================================
REAL(dp) :: VECL(MTOT)
REAL(dp) :: Y1(MTOT)
REAL(dp) :: Y2(MTOT)
!==========================================================================
! 公共变量块 - PSI 数组
!==========================================================================
REAL(dp) :: PSI0(MTOT)
REAL(dp) :: PSIM(MTOT)
REAL(dp) :: PSIP(MTOT)
!==========================================================================
! 公共变量块 - 辐射场数组
!==========================================================================
REAL(dp) :: RAD0(MTOT)
REAL(dp) :: RADM(MTOT)
REAL(dp) :: RADP(MTOT)
!==========================================================================
! 公共变量块 - FKM, FK0, FKP
!==========================================================================
REAL(dp) :: FKM(MFREX)
REAL(dp) :: FK0(MFREX)
REAL(dp) :: FKP(MFREX)
!==========================================================================
! 公共变量块 - 吸收系数数组
!==========================================================================
REAL(dp) :: ABSOM(MFREX)
REAL(dp) :: ABSO0(MFREX)
REAL(dp) :: ABSOP(MFREX)
!==========================================================================
! 公共变量块 - 发射系数数组
!==========================================================================
REAL(dp) :: EMISM(MFREX)
REAL(dp) :: EMIS0(MFREX)
REAL(dp) :: EMISP(MFREX)
!==========================================================================
! 公共变量块 - 散射系数数组
!==========================================================================
REAL(dp) :: SCATM(MFREX)
REAL(dp) :: SCAT0(MFREX)
REAL(dp) :: SCATP(MFREX)
!==========================================================================
! 公共变量块 - 吸收导数数组 (温度)
!==========================================================================
REAL(dp) :: DABTM(MFREX)
REAL(dp) :: DABT0(MFREX)
REAL(dp) :: DABTP(MFREX)
!==========================================================================
! 公共变量块 - 发射导数数组 (温度)
!==========================================================================
REAL(dp) :: DEMTM(MFREX)
REAL(dp) :: DEMT0(MFREX)
REAL(dp) :: DEMTP(MFREX)
!==========================================================================
! 公共变量块 - 吸收导数数组 (密度)
!==========================================================================
REAL(dp) :: DABNM(MFREX)
REAL(dp) :: DABN0(MFREX)
REAL(dp) :: DABNP(MFREX)
!==========================================================================
! 公共变量块 - 发射导数数组 (密度)
!==========================================================================
REAL(dp) :: DEMNM(MFREX)
REAL(dp) :: DEMN0(MFREX)
REAL(dp) :: DEMNP(MFREX)
!==========================================================================
! 公共变量块 - 吸收导数数组 (列质量)
!==========================================================================
REAL(dp) :: DABMM(MFREX)
REAL(dp) :: DABM0(MFREX)
REAL(dp) :: DABMP(MFREX)
!==========================================================================
! 公共变量块 - 发射导数数组 (列质量)
!==========================================================================
REAL(dp) :: DEMMM(MFREX)
REAL(dp) :: DEMM0(MFREX)
REAL(dp) :: DEMMP(MFREX)
!==========================================================================
! 公共变量块 - 权重深度数组
!==========================================================================
REAL(dp) :: WDEPM(MFREX)
REAL(dp) :: WDEP0(MFREX)
REAL(dp) :: WDEPP(MFREX)
!==========================================================================
! 公共变量块 - SBF 数组
!==========================================================================
REAL(dp) :: SBFM(MLEVEL)
REAL(dp) :: SBF0(MLEVEL)
REAL(dp) :: SBFP(MLEVEL)
!==========================================================================
! 公共变量块 - HE, RE, REXA 数组
!==========================================================================
REAL(dp) :: HEX(MLEVEL)
REAL(dp) :: REX(MLEVEL)
REAL(dp) :: REXA(MLEVEL)
!==========================================================================
! 公共变量块 - DSBF 数组
!==========================================================================
REAL(dp) :: DSBFM(MLEVEL)
REAL(dp) :: DSBF0(MLEVEL)
REAL(dp) :: DSBFP(MLEVEL)
!==========================================================================
! 公共变量块 - SUMDCH
!==========================================================================
REAL(dp) :: SUMDCH(MLEVEL)
!==========================================================================
! 公共变量块 - DRCH, DRET 数组 (负值)
!==========================================================================
REAL(dp) :: DRCHM(MLEVEL,MFREX)
REAL(dp) :: DRETM(MLEVEL,MFREX)
!==========================================================================
! 公共变量块 - DRCH, DRET 数组 (零阶)
!==========================================================================
REAL(dp) :: DRCH0(MLEVEL,MFREX)
REAL(dp) :: DRET0(MLEVEL,MFREX)
!==========================================================================
! 公共变量块 - DRCH, DRET 数组 (正值)
!==========================================================================
REAL(dp) :: DRCHP(MLEVEL,MFREX)
REAL(dp) :: DRETP(MLEVEL,MFREX)
!==========================================================================
! 公共变量块 - EXPRAD (显式辐射)
!==========================================================================
REAL(dp) :: ABSOEX(MFREX,MDEPTH)
REAL(dp) :: EMISEX(MFREX,MDEPTH)
REAL(dp) :: SCATEX(MFREX,MDEPTH)
REAL(dp) :: DABTEX(MFREX,MDEPTH)
REAL(dp) :: DEMTEX(MFREX,MDEPTH)
REAL(dp) :: DABNEX(MFREX,MDEPTH)
REAL(dp) :: DEMNEX(MFREX,MDEPTH)
REAL(dp) :: DABMEX(MFREX,MDEPTH)
REAL(dp) :: DEMMEX(MFREX,MDEPTH)
REAL(dp) :: DRCHEX(MLVEXP,MFREX,MDEPTH)
REAL(dp) :: DRETEX(MLVEXP,MFREX,MDEPTH)
!==========================================================================
! 公共变量块 - BPOCOM (束缚 - 自由连续谱)
!==========================================================================
REAL(dp) :: ESEMAT(MLEVEL,MLEVEL)
REAL(dp) :: BESE(MLEVEL)
REAL(dp) :: ATT(MLEVEL)
REAL(dp) :: ANN(MLEVEL)
END MODULE array1_module
+220
View File
@@ -0,0 +1,220 @@
MODULE atomic_module
!==============================================================================
! TLUSTY 原子数据模块
! 原始文件:ATOMIC.FOR
!
! 包含原子、离子、能级和跃迁相关的参数和数据
!==============================================================================
USE impli_module
USE basics_module
IMPLICIT NONE
!==========================================================================
! 辅助参数
!==========================================================================
INTEGER, PARAMETER :: MPAG = MLEVEL/6+1
!==========================================================================
! 字符类型数组
!==========================================================================
CHARACTER*40 :: FIDATA(MION),FIODF1(MION),FIODF2(MION),FIBFCS(MION)
CHARACTER*10 :: TYPLEV(MLEVEL)
CHARACTER*4 :: TYPION(MION)
!==========================================================================
! 公共变量块 - 原子参数 (ATOPAR)
!==========================================================================
REAL(dp) :: AMASS(MATOM)
REAL(dp) :: ABUND(MATOM,MDEPTH)
INTEGER :: NUMAT(MATOM)
INTEGER :: N0A(MATOM)
INTEGER :: NKA(MATOM)
INTEGER :: nref(matom)
INTEGER :: iatex(matom)
INTEGER :: nrefs(matom,mdepth)
INTEGER :: iadop(matom)
INTEGER :: iifix(matom)
INTEGER :: iatref
INTEGER :: modref
!==========================================================================
! 公共变量块 - 原子质量
!==========================================================================
REAL(dp) :: amas(100)
!==========================================================================
! 公共变量块 - 离子参数 (IONPAR)
!==========================================================================
REAL(dp) :: FF(MION)
REAL(dp) :: CHARG2(MION)
INTEGER :: NFIRST(MION)
INTEGER :: NLAST(MION)
INTEGER :: NNEXT(MION)
INTEGER :: IZ(MION)
INTEGER :: IUPSUM(MION)
INTEGER :: ICUP(MION)
INTEGER :: ilte(mion)
INTEGER :: iltion(mion)
!==========================================================================
! 公共变量块 - 能级参数 (LEVPAR)
!==========================================================================
REAL(dp) :: ENION(MLEVEL)
REAL(dp) :: G(MLEVEL)
INTEGER :: NQUANT(MLEVEL)
INTEGER :: IATM(MLEVEL)
INTEGER :: IEL(MLEVEL)
INTEGER :: ILK(MLEVEL)
INTEGER :: ilin(mlevel)
INTEGER :: iltlev(mlevel)
INTEGER :: indlev(mlevel)
INTEGER :: imodl(mlevel)
INTEGER :: iiexp(mlevel)
INTEGER :: iifor(mlevel)
INTEGER :: ipzert(mlevel)
INTEGER :: igzert(mlevel)
INTEGER :: indlgz(mlevel)
INTEGER :: iinonz(mlevel)
INTEGER :: NLVEXP
INTEGER :: NLVFOR
INTEGER :: NLVEXZ
LOGICAL :: LBPFX
!==========================================================================
! 公共变量块 - 跃迁参数 (TRAPAR)
!==========================================================================
REAL(dp) :: FR0(MTRANS)
REAL(dp) :: OSC0(MTRANS)
REAL(dp) :: CPAR(MTRANS)
REAL(dp) :: FRQMX(MTRANS)
REAL(dp) :: FR0PC(MTRANS)
REAL(dp) :: OMECOL(MLEVEL,MLEVEL)
REAL(dp) :: XGRAD
REAL(dp) :: STRL1
REAL(dp) :: STRL2
REAL(dp) :: STRLX
INTEGER :: ILOW(MTRANS)
INTEGER :: IUP(MTRANS)
INTEGER :: INDEXP(MTRANS)
INTEGER :: KFR0(MTRANS)
INTEGER :: KFR1(MTRANS)
INTEGER :: ILUCTR(MTRANS)
INTEGER :: IFC0(MTRANS)
INTEGER :: IFC1(MTRANS)
INTEGER :: IFR0(MTRANS)
INTEGER :: IFR1(MTRANS)
INTEGER :: ITRA(MLEVEL,MLEVEL)
INTEGER :: IPROF(MTRANS)
INTEGER :: ICOL(MTRANS)
INTEGER :: INTMOD(MTRANS)
INTEGER :: ITRCON(MTRANS)
INTEGER :: IDIEL(MTRANS)
INTEGER :: IJTF(MTRANS)
LOGICAL :: LCOMP(MTRANS)
LOGICAL :: LINE(MTRANS)
!==========================================================================
! 公共变量块 - 光子设置 (PHOSET)
!==========================================================================
REAL(dp) :: S0CS(MLEVEL)
REAL(dp) :: ALFCS(MLEVEL)
REAL(dp) :: BETCS(MLEVEL)
REAL(dp) :: GAMCS(MLEVEL)
INTEGER :: IBF(MLEVEL)
!==========================================================================
! 公共变量块 - TOPCS (b-f 截面表)
!==========================================================================
REAL(dp) :: CTOP(MFIT,MCROSS) ! sigma=alog10(sigma/10^-18) of fit point
REAL(dp) :: XTOP(MFIT,MCROSS) ! x = alog10(nu/nu0) of fit point
!==========================================================================
! 公共变量块 - 碰撞率表
!==========================================================================
REAL(dp) :: CTEMP(MXTCOL,MCFIT,MCORAT) ! temperature vs.
REAL(dp) :: CRATE(MXTCOL,MCFIT,MCORAT) ! collisional rates
!==========================================================================
! 公共变量块 - Voigt 参数
!==========================================================================
REAL(dp) :: GAMAR(MVOIGT)
REAL(dp) :: STARK1(MVOIGT)
REAL(dp) :: STARK2(MVOIGT)
REAL(dp) :: STARK3(MVOIGT)
REAL(dp) :: VDWH(MVOIGT)
!==========================================================================
! 公共变量块 - He 碰撞率
!==========================================================================
REAL(dp) :: COLHE1(19,19)
!==========================================================================
! 公共变量块 - 跃迁相关
!==========================================================================
LOGICAL :: LEXP(MTRANS)
LOGICAL :: LALI(MTRANS)
!==========================================================================
! 公共变量块 - 跃迁 ALI
!==========================================================================
INTEGER :: NFFIX
LOGICAL :: IFSUB
LOGICAL :: IFLEV
!==========================================================================
! 公共变量块 - 辅助索引
!==========================================================================
INTEGER :: IATH,IATHE,IELH,IELHM,IELHE1,IELHE2
!==========================================================================
! 公共变量块 - 离子文件
!==========================================================================
CHARACTER*40 :: FIDATA_ARR(MION)
CHARACTER*40 :: FIODF1_ARR(MION)
CHARACTER*40 :: FIODF2_ARR(MION)
CHARACTER*40 :: FIBFCS_ARR(MION)
!==========================================================================
! 公共变量块 - 离子数据
!==========================================================================
INTEGER :: IATI(MION)
INTEGER :: IZI(MION)
INTEGER :: NLEVS(MION)
INTEGER :: NLLIM(MION)
!==========================================================================
! 公共变量块 - 氢振子强度
!==========================================================================
REAL(dp) :: OSH(20,20)
!==========================================================================
! 公共变量块 - 打印参数
!==========================================================================
INTEGER :: NPGPOP
INTEGER :: IIPR(6,MPAG)
!==========================================================================
! 公共变量块 - 表最大值
!==========================================================================
REAL(dp) :: frtabm
!==========================================================================
! 谱线展宽参数
!==========================================================================
INTEGER, PARAMETER :: MTRPRD = 5
!==========================================================================
! 公共变量块 - 展宽参数 (PRDPAR)
!==========================================================================
REAL(dp) :: DOPTR(MTRPRD,MDEPTH)
REAL(dp) :: COHER(MTRPRD,MDEPTH)
REAL(dp) :: PJBAR(MTRPRD,MDEPTH)
REAL(dp) :: RJBAR(MTRPRD,MDEPTH)
REAL(dp) :: XPDIV
INTEGER :: IPRD(MTRANS)
INTEGER :: ITRTOT(MTRPRD)
INTEGER :: NTRPRD
LOGICAL :: IFPRD
END MODULE atomic_module
+206
View File
@@ -0,0 +1,206 @@
MODULE basics_module
!==============================================================================
! TLUSTY 基本参数和常量模块
! 原始文件:BASICS.FOR
!
! 包含数组维度参数、物理常数、数学常数和公共变量块
!==============================================================================
USE impli_module
IMPLICIT NONE
!==========================================================================
! 数组维度参数
!==========================================================================
INTEGER, PARAMETER :: MATOM = 99 ! 最大显式原子数
INTEGER, PARAMETER :: MION = 170 ! 最大显式离子数
INTEGER, PARAMETER :: MLEVEL = 1134 ! 最大显式能级数
INTEGER, PARAMETER :: MLVEXP = 233 ! 最大线性化显式能级数
INTEGER, PARAMETER :: MTRANS = 21000 ! 最大跃迁总数
INTEGER, PARAMETER :: MDEPTH = 100 ! 最大深度点数
INTEGER, PARAMETER :: MFREQ = 135000 ! 最大频率点数
INTEGER, PARAMETER :: MFREQP = 220000 ! 频率工作数组
INTEGER, PARAMETER :: MFREQC = 125000 ! 连续谱最大频率点数
INTEGER, PARAMETER :: MFREX = 54 ! 最大线性化频率数
INTEGER, PARAMETER :: MFREQL = 25798 ! 每条线最大频率数
INTEGER, PARAMETER :: MTOT = 280 ! 最大线性化参数数
INTEGER, PARAMETER :: MMU = 6 ! 最大角度点数
INTEGER, PARAMETER :: MFIT = 357 ! 最大拟合点数 (OP b-f c.s)
INTEGER, PARAMETER :: MITJ = 380 ! 最大重叠跃迁数
INTEGER, PARAMETER :: MMCDW = 26 ! 最大伪连续能级数
INTEGER, PARAMETER :: MMER = 12 ! 最大合并能级数
INTEGER, PARAMETER :: MVOIGT = 8080 ! Voigt 轮廓最大线条数
INTEGER, PARAMETER :: MZZ = 10 ! 占据概率离子最大电荷
INTEGER, PARAMETER :: NLMX = 80 ! 考虑的类氢最高能级
INTEGER, PARAMETER :: MSMX = 1 ! SOLVE 中内存保持的矩阵大小
INTEGER, PARAMETER :: MFREQ1 = MFREQ ! ISPLIN<5 时为 1,否则为 MFREQ
INTEGER, PARAMETER :: MFRTAB = 125000 ! 不透明度表最大频率数
INTEGER, PARAMETER :: MTABT = 21 ! 不透明度表最大温度数
INTEGER, PARAMETER :: MTABR = 19 ! 不透明度表最大密度数
INTEGER, PARAMETER :: MDEPTC = 2 ! 最大深度点数 (Compton)
INTEGER, PARAMETER :: MMUC = 2 ! 最大角度点数 (Compton)
INTEGER, PARAMETER :: MLEVE3 = 1 ! 对角精度为 1,三对角为 MLEVEL
INTEGER, PARAMETER :: MLVEX3 = 1 ! 对角运算为 1,三对角为 MLVEXP
INTEGER, PARAMETER :: MTRAN3 = 1 ! 对角运算为 1,三对角为 MTRANS
INTEGER, PARAMETER :: MCROSS = MLEVEL+5 ! 最大 b-f 截面数
INTEGER, PARAMETER :: MBF = MLEVEL ! 最大 b-f 跃迁数
INTEGER, PARAMETER :: MCFIT = 10 ! 碰撞拟合最大点数
INTEGER, PARAMETER :: MXTCOL = 3 ! 碰撞类型数 (CE, CP, CH)
INTEGER, PARAMETER :: MCORAT = MTRANS ! 最大碰撞激发跃迁数
!==========================================================================
! 物理常数
!==========================================================================
REAL(dp), PARAMETER :: H = 6.6256D-27 ! Planck 常数 h
REAL(dp), PARAMETER :: BOLK = 1.38054D-16 ! Boltzmann 常数 k
REAL(dp), PARAMETER :: HK = 4.79928144D-11 ! h/k
REAL(dp), PARAMETER :: CAS = 2.997925D18 ! 光速 c (A/s)
REAL(dp), PARAMETER :: EH = 2.17853041D-11 ! 氢电离能
REAL(dp), PARAMETER :: BN = 1.4743D-2 ! 2*h/c**3
REAL(dp), PARAMETER :: SIGE = 6.6516D-25 ! Thomson 散射截面
REAL(dp), PARAMETER :: SIG4P = 4.5114062D-6 ! Stefan-Boltzmann 常数/4pi
REAL(dp), PARAMETER :: PI4H = 1.8966D27 ! 4pi/h
REAL(dp), PARAMETER :: PCK = 4.19168946D-10 ! 4pi/c
REAL(dp), PARAMETER :: HMASS = 1.67333D-24 ! 氢原子质量
!==========================================================================
! 数学常数
!==========================================================================
REAL(dp), PARAMETER :: UN = 1.0D0
REAL(dp), PARAMETER :: HALF = 0.5D0
REAL(dp), PARAMETER :: TWO = 2.0D0
!==========================================================================
! 单元编号
!==========================================================================
INTEGER, PARAMETER :: IBUFF = 95
!==========================================================================
! 公共变量块 - 基本数值
!==========================================================================
INTEGER :: NATOM,NION,NLEVEL,NTRANS,ND,NFREQ,NFREQC,NFREQE
INTEGER :: IOPTAB,IDISK,IZSCAL,IDMFIX,IHESO6,IFMOL,IFENTR
INTEGER :: NFREQL,NLEV0,ICOLHN,IOSCOR,ILGDER,IFRYB,IFRSET
INTEGER :: NFREAD,NELSC,NTRANC,IOVER,JALI,IBC,IUBC,INTENS
INTEGER :: IRDER,ILMCOR,IFDIEL,IFALIH,IFTENE,ITNDRE
INTEGER :: ILPSCT,ILASCT,IRTE,IDLTE,IBFINT,INTRPL,ICHANG
INTEGER :: NATOMS,IPSLTE,ISPODF,ITLUCY,NRETC,IFRAYL,IFPRAD
!==========================================================================
! 公共变量块 - 输入参数
!==========================================================================
REAL(dp) :: TEFF,GRAV
REAL(dp) :: YTOT(MDEPTH),WMM(MDEPTH),WMY(MDEPTH)
REAL(dp) :: TMOLIM
REAL(dp) :: xmstar,xmdot,rstar,alpha0,reynum
REAL(dp) :: QGRAV,EDISC,DZETA,RELDST
REAL(dp) :: visc,zeta0,zeta1,dmvisc,fractv
REAL(dp) :: omeg32,wbarm,wbar,alphav,pgas0
REAL(dp) :: bergfc,cutlym,cutbal
INTEGER :: ISPLIN,IRSPLT,ivisc,ibche
LOGICAL :: LTE,LTGREY,LCHC,LRESC
!==========================================================================
! 公共变量块 - 模型关键字
!==========================================================================
INTEGER :: NN,NN0,INHE,INRE,INPC,INSE,INZD,INMP,NDRE,insel
!==========================================================================
! 公共变量块 - 固定密度
!==========================================================================
INTEGER :: IFIXDE
!==========================================================================
! 公共变量块 - 逆积分
!==========================================================================
REAL(dp) :: XI2(NLMX),XI3(NLMX)
!==========================================================================
! 公共变量块 - 运行关键字
!==========================================================================
REAL(dp) :: CHMAX
INTEGER :: ITER,NITER,NITZER,INIT
LOGICAL :: LAC2,LFIN
!==========================================================================
! 公共变量块 - 连续谱关键字
!==========================================================================
REAL(dp) :: HMIX0,crflim
INTEGER :: NCONIT,ICONV,INDL,IPRESS,ITEMP,ICBEG
INTEGER :: itmcor,iconre,ideepc,ndcgap,IDCONZ
!==========================================================================
! 公共变量块 - 不透明度关键字
!==========================================================================
INTEGER :: NCON,IOPHL1,IOPHL2,IPHE2C,IFMOFF
!==========================================================================
! 公共变量块 - 打印开关
!==========================================================================
INTEGER :: IPRINT,IPRING,IPRIND,IPRINP,ICOOLP,ICHCKP
INTEGER :: IPOPAC,IPRINI
!==========================================================================
! 公共变量块 - PSI 限制
!==========================================================================
REAL(dp) :: DPSILG,DPSILT,DPSILN,DPSILD
!==========================================================================
! 公共变量块 - 中心
!==========================================================================
REAL(dp) :: ZND
INTEGER :: IFZ0
!==========================================================================
! 公共变量块 - 附加不透明度参数
!==========================================================================
INTEGER :: IOPADD,IOPHMI,IOPH2P,IOPHEM,IOPCH,IOPOH
INTEGER :: IOPH2M,IOH2H2,IOH2HE,IOH2H,IOHHE
INTEGER :: IOPHLI,IRSCT,IRSCHE,IRSCH2,KEEPOP,IOPOLD
!==========================================================================
! 公共变量块 - 角度
!==========================================================================
REAL(dp) :: AMU(MMU),WTMU(MMU),FMU(MMU)
INTEGER :: NMU
!==========================================================================
! 公共变量块 - Compton 散射
!==========================================================================
REAL(dp) :: amuc(mmuc),wtmuc(mmuc)
REAL(dp) :: amuc1(mmuc),amuc2(mmuc),amuc3(mmuc)
REAL(dp) :: amuj(mmuc),amuk(mmuc),amuh(mmuc),amun(mmuc)
REAL(dp) :: calph(mmuc,mmuc),cbeta(mmuc,mmuc)
REAL(dp) :: cgamm(mmuc,mmuc),RADZER,FRLCOM
REAL(dp) :: SIGEC(MFREQ)
INTEGER :: ijorig(mfreq)
INTEGER :: nmuc
!==========================================================================
! 公共变量块 - Compton 时间
!==========================================================================
INTEGER :: nedd,nsti,islab,ilbc,icompt,icomst,icomde
INTEGER :: icombc,icmdra,knish,itcomp,icomve,icomrt
INTEGER :: ichcoo,icomgr
!==========================================================================
! 公共变量块 - Compton 迭代
!==========================================================================
INTEGER :: ncfor1,ncfor2,nccoup,ncitot,ncfull
!==========================================================================
! 公共变量块 - 平均不透明度系数
!==========================================================================
REAL(dp) :: aconml,bconml,cconml
!==========================================================================
! 公共变量块 - Tau RSS
!==========================================================================
REAL(dp) :: taurs(mdepth)
!==========================================================================
! 公共变量块 - 打印关键字
!==========================================================================
INTEGER :: iprybh,ipelch,ipeldo,ipconf
END MODULE basics_module
+17
View File
@@ -0,0 +1,17 @@
MODULE impli_module
!==============================================================================
! TLUSTY 隐式类型声明模块
! 原始文件:IMPLIC.FOR
!
! 此模块定义双精度类型别名,用于替代原始的 IMPLICIT REAL*8 声明
!==============================================================================
IMPLICIT NONE
! 定义双精度类型别名
INTEGER, PARAMETER :: dp = KIND(1.0D0)
! 定义逻辑类型别名(对应原 LOGICAL*1)
INTEGER, PARAMETER :: log1 = KIND(.TRUE.)
END MODULE impli_module
+72
View File
@@ -0,0 +1,72 @@
MODULE iterat_module
!==============================================================================
! TLUSTY 迭代控制参数模块
! 原始文件:ITERAT.FOR
!
! 包含迭代相关的参数和公共变量块
!==============================================================================
USE impli_module
IMPLICIT NONE
!==========================================================================
! 迭代参数
!==========================================================================
INTEGER, PARAMETER :: MITER = 200 ! 最大迭代次数
INTEGER, PARAMETER :: MLAMBD = 100 ! Lambda 迭代最大维数
!==========================================================================
! 公共变量块 - Lambda 迭代
!==========================================================================
INTEGER :: NLAMBD
INTEGER :: IFFIX(MITER)
INTEGER :: NETEXP(MITER)
INTEGER :: NETFIX(MITER)
INTEGER :: IETEXP(MITER,MLAMBD)
INTEGER :: IETFIX(MITER,MLAMBD)
INTEGER :: NITLAM(MITER+1)
INTEGER :: IELCOR
!==========================================================================
! 公共变量块 - 矩阵链
!==========================================================================
INTEGER :: INHE0(MITER)
INTEGER :: INRE0(MITER)
INTEGER :: INPC0(MITER)
INTEGER :: INDL0(MITER)
INTEGER :: INSE0(MITER)
INTEGER :: INMP0(MITER)
INTEGER :: NN00(MITER)
INTEGER :: NDRE0(MITER)
LOGICAL :: LCHMAT
LOGICAL :: LIROST
!==========================================================================
! 公共变量块 - 加速参数
!==========================================================================
REAL(dp) :: ORELAX
INTEGER :: ITEK,IACC,IACC0,IACD
INTEGER :: KANT(MITER)
INTEGER :: KSNG
LOGICAL :: LSNG(MTOT)
LOGICAL :: LASO
LOGICAL :: LRES2
!==========================================================================
! 公共变量块 - ALI 加速参数
!==========================================================================
INTEGER :: ILAM,IACPP,IACC0P,IACDP
LOGICAL :: LAC2P
!==========================================================================
! 公共变量块 - Lambda 迭代加速
!==========================================================================
INTEGER :: IACLT,IACLDT
!==========================================================================
! 公共变量块 - 链 AD
!==========================================================================
REAL(dp) :: CHMAXT
INTEGER :: NLAMT,ILDER,IBPOPE
END MODULE iterat_module
+700
View File
@@ -0,0 +1,700 @@
MODULE modelq_module
!==============================================================================
! TLUSTY 模型物理量和状态变量模块
! 原始文件:MODELQ.FOR
!
! 包含模型参数、能级布居、辐射场等物理量
!==============================================================================
USE impli_module
USE basics_module
USE atomic_module
IMPLICIT NONE
!==========================================================================
! 谱线展宽参数
!==========================================================================
INTEGER, PARAMETER :: MLINH = 78
INTEGER, PARAMETER :: MHT = 7
INTEGER, PARAMETER :: MHE = 20
INTEGER, PARAMETER :: MHWL = 90
INTEGER, PARAMETER :: MFHTAB = 1000
INTEGER, PARAMETER :: MTABTH = 10
INTEGER, PARAMETER :: MTABEH = 10
!==========================================================================
! 类型声明
!==========================================================================
INTEGER*2 :: ITRLIN
REAL*4 :: PRFLIN, BFCS
REAL*8 :: absopac(mtabt,mtabr,mfrtab)
!==========================================================================
! 公共变量块 - 模型参数 (MODPAR)
!==========================================================================
REAL(dp) :: DM(MDEPTH)
REAL(dp) :: TEMP(MDEPTH)
REAL(dp) :: ELEC(MDEPTH)
REAL(dp) :: DENS(MDEPTH)
REAL(dp) :: TOTN(MDEPTH)
REAL(dp) :: ANTO(MDEPTH)
REAL(dp) :: ANMA(MDEPTH)
REAL(dp) :: ANH1(MDEPTH)
REAL(dp) :: ZD(MDEPTH)
REAL(dp) :: HKT1(MDEPTH)
REAL(dp) :: TK1(MDEPTH)
REAL(dp) :: HKT21(MDEPTH)
REAL(dp) :: SQT1(MDEPTH)
REAL(dp) :: TEMP1(MDEPTH)
REAL(dp) :: ELEC1(MDEPTH)
REAL(dp) :: DENS1(MDEPTH)
REAL(dp) :: DENSI(MDEPTH)
REAL(dp) :: DENSIM(MDEPTH)
REAL(dp) :: ELSCAT(MDEPTH)
REAL(dp) :: ALAB(MDEPTH)
REAL(dp) :: DELDM(MDEPTH)
REAL(dp) :: DEDM1
REAL(dp) :: DELDMZ(MDEPTH)
REAL(dp) :: THETAV(MDEPTH)
REAL(dp) :: VISCD(MDEPTH)
REAL(dp) :: DALPMX
REAL(dp) :: XHYD
REAL(dp) :: DMTOT
REAL(dp) :: RRDIL
REAL(dp) :: TEMPBD
REAL(dp) :: ALPTAV
REAL(dp) :: ALPGAV
INTEGER :: NALP
INTEGER :: IBETA
!==========================================================================
! 公共变量块 - 能级布居 (LEVPOP)
!==========================================================================
REAL(dp) :: POPUL(MLEVEL,MDEPTH)
REAL(dp) :: BFAC(MLEVEL,MDEPTH)
REAL(dp) :: POPINV(MLEVEL,MDEPTH)
REAL(dp) :: POPGRP(MLEVEL)
REAL(dp) :: POP(MLEVEL)
REAL(dp) :: SBF(MLEVEL)
REAL(dp) :: DSBF(MLEVEL)
REAL(dp) :: USUM(MION)
!==========================================================================
! 公共变量块 - 布居零级近似
!==========================================================================
REAL(dp) :: POPZER
REAL(dp) :: POPZR2
REAL(dp) :: POPZCH
REAL(dp) :: RPOP0(MLVEXP,MDEPTH)
INTEGER :: IPZERO(MLEVEL,MDEPTH)
INTEGER :: IGZERO(MLVEXP,MDEPTH)
!==========================================================================
! 公共变量块 - CRSWPS
!==========================================================================
REAL(dp) :: CRSW(MDEPTH)
REAL(dp) :: SWPFAC
REAL(dp) :: SWPLIM
REAL(dp) :: SWPINC
INTEGER :: ICRSW
!==========================================================================
! 公共变量块 - WMCOMP
!==========================================================================
REAL(dp) :: WNHINT(NLMX,MDEPTH)
REAL(dp) :: WNHEII(NLMX,MDEPTH)
REAL(dp) :: wop(mlevel,mdepth)
INTEGER :: ifwop(mlevel)
!==========================================================================
! 公共变量块 - REPART
!==========================================================================
REAL(dp) :: REINT(MDEPTH)
REAL(dp) :: REDIF(MDEPTH)
REAL(dp) :: TAUDIV
INTEGER :: IDLST
!==========================================================================
! 公共变量块 - 湍流 (TURBUL)
!==========================================================================
REAL(dp) :: VTURB(MDEPTH)
REAL(dp) :: VTURBS(MDEPTH)
REAL(dp) :: VTB
INTEGER :: IPTURB
!==========================================================================
! 公共变量块 - 能级参考 (LEVREF)
!==========================================================================
REAL(dp) :: SBPSI(MLEVEL,MDEPTH)
REAL(dp) :: SBLPSI(MLEVEL,MDEPTH)
REAL(dp) :: DSBPST(MLEVEL,MDEPTH)
REAL(dp) :: DSBPSN(MLEVEL,MDEPTH)
INTEGER :: ILTREF(MLEVEL,MDEPTH)
INTEGER :: IGUIDE(MLEVEL)
INTEGER :: ILTERF(MLEVEL,MDEPTH)
!==========================================================================
! 公共变量块 - 能级固定 (LEVFIX)
!==========================================================================
REAL(dp) :: PT(MLEVEL,MDEPTH)
REAL(dp) :: PN(MLEVEL,MDEPTH)
REAL(dp) :: PP(MLEVEL,MDEPTH)
!==========================================================================
! 公共变量块 - 能级附加 (LEVADD)
!==========================================================================
REAL(dp) :: USUMS(MION,MDEPTH)
REAL(dp) :: DUSMT(MION,MDEPTH)
REAL(dp) :: DUSMN(MION,MDEPTH)
REAL(dp) :: DIESIG(MION,MDEPTH)
!==========================================================================
! 公共变量块 - 合并参数 (MRGPAR)
!==========================================================================
REAL(dp) :: SGM0(MMER)
REAL(dp) :: FRCH(MMER)
REAL(dp) :: SGEXT1(MMER,MDEPTH)
REAL(dp) :: GMER(MMER,MDEPTH)
REAL(dp) :: SGMSUM(NLMX,MMER,MDEPTH)
REAL(dp) :: SGMSUD(NLMX,MMER,MDEPTH)
REAL(dp) :: SGMG(MMER,MDEPTH)
INTEGER :: IMRG(MLEVEL)
INTEGER :: IIMER(MMER)
!==========================================================================
! 公共变量块 - UPSUMS
!==========================================================================
REAL(dp) :: DUSUMT(MION)
REAL(dp) :: DUSUMN(MION)
!==========================================================================
! 公共变量块 - DWNPAR (向下跃迁参数)
!==========================================================================
REAL(dp) :: ELEC23(MDEPTH)
REAL(dp) :: ACOR(MDEPTH)
REAL(dp) :: Z3(MZZ)
REAL(dp) :: DWC1(MZZ,MDEPTH)
REAL(dp) :: DWC2(MDEPTH)
REAL(dp) :: DWF1(MMCDW,MDEPTH)
INTEGER :: MCDW(MTRANS)
INTEGER :: ITRCDW(MMCDW)
INTEGER :: NCDW
!==========================================================================
! 公共变量块 - OBFPAR
!==========================================================================
INTEGER :: ITRBF(MBF)
!==========================================================================
! 公共变量块 - GFFPAR (Gaunt 因子参数)
!==========================================================================
REAL(dp) :: GF0(MDEPTH)
REAL(dp) :: GF1(MDEPTH)
REAL(dp) :: GF2(MDEPTH)
REAL(dp) :: GF3(MDEPTH)
REAL(dp) :: GF4(MDEPTH)
REAL(dp) :: GF5(MDEPTH)
REAL(dp) :: GF6(MDEPTH)
REAL(dp) :: GF0D(MDEPTH)
REAL(dp) :: GF1D(MDEPTH)
REAL(dp) :: GF2D(MDEPTH)
REAL(dp) :: GF3D(MDEPTH)
REAL(dp) :: GF4D(MDEPTH)
REAL(dp) :: GF5D(MDEPTH)
REAL(dp) :: GF6D(MDEPTH)
REAL(dp) :: DELTT(MDEPTH)
!==========================================================================
! 公共变量块 - OFFPAR
!==========================================================================
REAL(dp) :: SFF3(MION,MDEPTH)
REAL(dp) :: SFF2(MION,MDEPTH)
REAL(dp) :: DSFF(MION,MDEPTH)
REAL(dp) :: CFFN(MDEPTH)
REAL(dp) :: CFFT(MDEPTH)
!==========================================================================
! 公共变量块 - OTRPAR
!==========================================================================
REAL(dp) :: ABTRA(MTRANS,MDEPTH)
REAL(dp) :: EMTRA(MTRANS,MDEPTH)
REAL(dp) :: DEMLT(MTRANS,MDEPTH)
!==========================================================================
! 公共变量块 - CURRNT
!==========================================================================
REAL(dp) :: XKF(MDEPTH)
REAL(dp) :: XKF1(MDEPTH)
REAL(dp) :: XKFB(MDEPTH)
!==========================================================================
! 公共变量块 - CUROPA
!==========================================================================
REAL(dp) :: ABSO1(MDEPTH)
REAL(dp) :: EMIS1(MDEPTH)
REAL(dp) :: SCAT1(MDEPTH)
REAL(dp) :: ABSOT(MDEPTH)
REAL(dp) :: ABSOE1(MFREX)
REAL(dp) :: EMEL1(MDEPTH)
REAL(dp) :: ABSO1L(MDEPTH)
REAL(dp) :: EMIS1L(MDEPTH)
REAL(dp) :: ABSOPR(MDEPTH)
REAL(dp) :: EMISPR(MDEPTH)
!==========================================================================
! 公共变量块 - TOTRAD
!==========================================================================
REAL(dp) :: RAD(MFREQ1,MDEPTH)
REAL(dp) :: FHD(MFREQ)
REAL(dp) :: FAK(MFREQ1,MDEPTH)
REAL(dp) :: RADK(MFREQ1,MDEPTH)
REAL(dp) :: EXTRAD(MFREQ)
REAL(dp) :: EXTINT(MFREQ,MMU)
REAL(dp) :: HEXTRD(MFREQ)
REAL(dp) :: TRAD
REAL(dp) :: WDIL
REAL(dp) :: EXTOT
REAL(dp) :: TSTAR
!==========================================================================
! 公共变量块 - CURRAD
!==========================================================================
REAL(dp) :: RAD1(MDEPTH)
REAL(dp) :: ALI1(MDEPTH)
REAL(dp) :: FAK1(MDEPTH)
REAL(dp) :: radcm(mfreq,mdepth)
REAL(dp) :: RADL(MFREQL,MDEPTH)
REAL(dp) :: ABSALI(MFREQL,MDEPTH)
REAL(dp) :: alih1(mdepth)
!==========================================================================
! 公共变量块 - CURDER
!==========================================================================
REAL(dp) :: DABT1(MDEPTH)
REAL(dp) :: DEMT1(MDEPTH)
REAL(dp) :: DABN1(MDEPTH)
REAL(dp) :: DEMN1(MDEPTH)
REAL(dp) :: DABM1(MDEPTH)
REAL(dp) :: DEMM1(MDEPTH)
REAL(dp) :: DABX1(MDEPTH)
REAL(dp) :: DEMX1(MDEPTH)
REAL(dp) :: DABP1(MLEVEL,MDEPTH)
REAL(dp) :: DEMP1(MLEVEL,MDEPTH)
REAL(dp) :: DRCH1(MLEVEL,MDEPTH)
REAL(dp) :: DRET1(MLEVEL,MDEPTH)
REAL(dp) :: ABSFF(MDEPTH)
REAL(dp) :: DABFT(MDEPTH)
REAL(dp) :: DABFN(MDEPTH)
REAL(dp) :: DSFDT(MDEPTH)
REAL(dp) :: DSFDN(MDEPTH)
REAL(dp) :: DSFDM(MDEPTH)
REAL(dp) :: DSFDP(MLVEXP,MDEPTH)
REAL(dp) :: DSFDTM(MDEPTH)
REAL(dp) :: DSFDNM(MDEPTH)
REAL(dp) :: DSFDPM(MLVEXP,MDEPTH)
REAL(dp) :: DSFDTP(MDEPTH)
REAL(dp) :: DSFDNP(MDEPTH)
REAL(dp) :: DSFDPP(MLVEXP,MDEPTH)
!==========================================================================
! 公共变量块 - CURTRI
!==========================================================================
REAL(dp) :: ALIM1(MDEPTH)
REAL(dp) :: ALIP1(MDEPTH)
!==========================================================================
! 公共变量块 - EXPRAF
!==========================================================================
REAL(dp) :: RADEX(MFREX,MDEPTH)
REAL(dp) :: FAKEX(MFREX,MDEPTH)
!==========================================================================
! 公共变量块 - TOTPRF
!==========================================================================
REAL(dp) :: PRFLIN(MDEPTH,MFREQP)
!==========================================================================
! 公共变量块 - TOTFLX
!==========================================================================
REAL(dp) :: FLTOT(MDEPTH)
REAL(dp) :: FLFIX(MDEPTH)
REAL(dp) :: FLEXP(MDEPTH)
REAL(dp) :: FCOOL(MDEPTH)
REAL(dp) :: FCOOLI(MDEPTH)
REAL(dp) :: FLRD(MDEPTH)
REAL(dp) :: FPRAD(MDEPTH)
REAL(dp) :: GRAD(MDEPTH)
REAL(dp) :: FPRD(MDEPTH)
REAL(dp) :: GRADF(MDEPTH,MFREQ)
!==========================================================================
! 公共变量块 - RRATES
!==========================================================================
REAL(dp) :: RRU(MTRANS,MDEPTH)
REAL(dp) :: RRD(MTRANS,MDEPTH)
REAL(dp) :: DRDT(MTRANS,MDEPTH)
!==========================================================================
! 公共变量块 - RRTOFF
!==========================================================================
REAL(dp) :: RDDP(MTRAN3,MDEPTH)
REAL(dp) :: RDDM(MTRAN3,MDEPTH)
!==========================================================================
! 公共变量块 - CRATES
!==========================================================================
REAL(dp) :: COLRAT(MTRANS,MDEPTH)
REAL(dp) :: COLTAR(MTRANS,MDEPTH)
!==========================================================================
! 公共变量块 - FRQALL
!==========================================================================
REAL(dp) :: FREQ(MFREQ)
REAL(dp) :: W(MFREQ)
REAL(dp) :: PROF(MFREQP)
REAL(dp) :: WCH(MFREQ)
REAL(dp) :: JIK(MFREQ)
INTEGER :: IJX(MFREQ)
INTEGER :: IJBF(MFREQ)
INTEGER :: IFS0
REAL(dp) :: KIJ(MFREQ)
LOGICAL :: LSKIP(MDEPTH,MFREQ)
!==========================================================================
! 公共变量块 - FRQINT
!==========================================================================
REAL(dp) :: FRCMAX
REAL(dp) :: FRCMIN
REAL(dp) :: FRLMAX
REAL(dp) :: FRLMIN
REAL(dp) :: CFRMAX
REAL(dp) :: DFTAIL
REAL(dp) :: TSNU
REAL(dp) :: VTNU
REAL(dp) :: DDNU
REAL(dp) :: CNU1
REAL(dp) :: CNU2
INTEGER :: IELNU
INTEGER :: NFTAIL
!==========================================================================
! 公共变量块 - LINOVR
!==========================================================================
INTEGER :: NITJ(MFREQ)
INTEGER :: IJLIN(MFREQ)
INTEGER*2 :: ITRLIN_ARR(MITJ,MFREQ)
!==========================================================================
! 公共变量块 - LINFRQ
!==========================================================================
INTEGER :: NLINES(MFREQ)
!==========================================================================
! 公共变量块 - PHOEXP
!==========================================================================
REAL(dp) :: AIJBF(MFREQ)
REAL(dp) :: BFCS_ARR(MCROSS,MFREQC)
INTEGER :: IFREQB(MFREQC)
!==========================================================================
! 公共变量块 - FREAUX
!==========================================================================
REAL(dp) :: W0E(MFREQ)
REAL(dp) :: BNUE(MFREQ)
REAL(dp) :: WC(MFREQ)
INTEGER :: IJTC(MTRANS)
INTEGER :: IJALI(MFREQ)
INTEGER :: IJEX(MFREQ)
INTEGER :: IJFR(MFREQ)
!==========================================================================
! 公共变量块 - COMPIF
!==========================================================================
LOGICAL :: LINEXP(MTRANS)
!==========================================================================
! 公共变量块 - SURFAC
!==========================================================================
REAL(dp) :: FLUX(MFREQ)
REAL(dp) :: FH(MFREQ)
REAL(dp) :: Q0(MFREQ)
REAL(dp) :: UU0(MFREQ)
!==========================================================================
! 公共变量块 - FILES
!==========================================================================
REAL(dp) :: PSY0(MTOT,MDEPTH)
REAL(dp) :: PSY1(MTOT,MDEPTH)
REAL(dp) :: PSY2(MTOT,MDEPTH)
REAL(dp) :: PSY3(MTOT,MDEPTH)
!==========================================================================
! 公共变量块 - PRESSR
!==========================================================================
REAL(dp) :: PTOTAL(MDEPTH)
REAL(dp) :: PGS(MDEPTH)
REAL(dp) :: PRADT(MDEPTH)
REAL(dp) :: PRADA(MDEPTH)
!==========================================================================
! 公共变量块 - HEQAUX
!==========================================================================
INTEGER :: PRD0
INTEGER :: IHECOR
!==========================================================================
! 公共变量块 - OPMEAN
!==========================================================================
REAL(dp) :: ABROSD(MDEPTH)
REAL(dp) :: SUMDPL(MDEPTH)
REAL(dp) :: ABPLAD(MDEPTH)
REAL(dp) :: ABPMIN
!==========================================================================
! 公共变量块 - CHARFX
!==========================================================================
REAL(dp) :: QFIX(MDEPTH)
!==========================================================================
! 公共变量块 - WINDBL
!==========================================================================
REAL(dp) :: ALBE(MFREQ)
INTEGER :: IWINBL
!==========================================================================
! 公共变量块 - DFEALI
!==========================================================================
REAL(dp) :: DJMAX
INTEGER :: NTRALI
!==========================================================================
! 公共变量块 - OPACAD
!==========================================================================
REAL(dp) :: ABAD
REAL(dp) :: EMAD
REAL(dp) :: SCAD
REAL(dp) :: DAT
REAL(dp) :: DAN
REAL(dp) :: DET
REAL(dp) :: DEN
REAL(dp) :: DST
REAL(dp) :: DSN
REAL(dp) :: DDN(MLEVEL)
!==========================================================================
! 公共变量块 - MODCON
!==========================================================================
REAL(dp) :: FLXC(MDEPTH)
REAL(dp) :: DELTA(MDEPTH)
!==========================================================================
! 公共变量块 - RESDER
!==========================================================================
REAL(dp) :: RSAT
REAL(dp) :: RSBT
REAL(dp) :: RSAN
REAL(dp) :: RSBN
REAL(dp) :: RSAX(MLEVEL)
REAL(dp) :: RSBX(MLEVEL)
!==========================================================================
! 公共变量块 - GRAYTS
!==========================================================================
REAL(dp) :: TAUROS(MDEPTH)
REAL(dp) :: TAUFLX(MDEPTH)
REAL(dp) :: TAUTHE(MDEPTH)
REAL(dp) :: THETA(MDEPTH)
!==========================================================================
! 公共变量块 - TAURSS
!==========================================================================
REAL(dp) :: TROSS(MDEPTH)
!==========================================================================
! 公共变量块 - TCONST
!==========================================================================
REAL(dp) :: TDISK
INTEGER :: ITCONS
!==========================================================================
! 公共变量块 - HYDADD
!==========================================================================
REAL(dp) :: PHMOL(MDEPTH)
REAL(dp) :: ANEREL
INTEGER :: IHM
INTEGER :: IH2
INTEGER :: IH2P
!==========================================================================
! 公共变量块 - ELDNSP
!==========================================================================
REAL(dp) :: ANP
REAL(dp) :: AHTOT
REAL(dp) :: AHMOL
!==========================================================================
! 公共变量块 - RRVALS
!==========================================================================
REAL(dp) :: RR(99,99)
REAL(dp) :: ABNDD(99,MDEPTH)
REAL(dp) :: ENEV(99,30)
INTEGER :: IONIZ(99)
INTEGER :: IREF
INTEGER :: IREFA
LOGICAL :: LGR(99)
LOGICAL :: LRM(99)
!==========================================================================
! 公共变量块 - STATEP
!==========================================================================
REAL(dp) :: Q
REAL(dp) :: QM
REAL(dp) :: DQT
REAL(dp) :: DQN
REAL(dp) :: DQM
REAL(dp) :: ENER
REAL(dp) :: ENTR
REAL(dp) :: QREF
REAL(dp) :: DQTR
REAL(dp) :: DQNR
REAL(dp) :: PFHYD
!==========================================================================
! 公共变量块 - ODFCHT
!==========================================================================
REAL(dp) :: CHANT(MDEPTH)
!==========================================================================
! 公共变量块 - STRAUX
!==========================================================================
REAL(dp) :: XK0(MLINH)
REAL(dp) :: XK
REAL(dp) :: DBETA
REAL(dp) :: BETAD
REAL(dp) :: ADH
REAL(dp) :: DIVH
!==========================================================================
! 公共变量块 :: STDPAR
!==========================================================================
INTEGER :: ELSTD
INTEGER :: IDSTD
!==========================================================================
! 氢 Stark 加宽表参数
!==========================================================================
REAL(dp) :: PRFHYD(MLINH,MHWL,MHT,MHE)
REAL(dp) :: WLHYD(MLINH,MHWL)
REAL(dp) :: WLH(MHWL,MLINH)
REAL(dp) :: XTLEM(MHT,MLINH)
REAL(dp) :: XNELEM(MHE,MLINH)
INTEGER :: NWLHYD(MLINH)
INTEGER :: NWLH(MLINH)
INTEGER :: NTH(MLINH)
INTEGER :: NEH(MLINH)
INTEGER :: ILINH(4,22)
INTEGER :: IHYDPR
!==========================================================================
! Xenon 相关参数
!==========================================================================
REAL(dp) :: PRFXB(MLINH,MHWL,MHT,MHE)
REAL(dp) :: PRFXR(MLINH,MHWL,MHT,MHE)
REAL(dp) :: ALXEN(MLINH,MHWL)
REAL(dp) :: XTXEN(MHT,MLINH)
REAL(dp) :: XNEXEN(MHE,MLINH)
REAL(dp) :: XNEMIN
INTEGER :: NWLXEN(MLINH)
INTEGER :: NTHXEN(MLINH)
INTEGER :: NEHXEN(MLINH)
INTEGER :: ILXEN(4,22)
INTEGER :: IHXENB
!==========================================================================
! 公共变量块 - LTEGRP
!==========================================================================
REAL(dp) :: TAUFIR
REAL(dp) :: TAULAS
REAL(dp) :: ABROS0
REAL(dp) :: TSURF
REAL(dp) :: ALBAVE
REAL(dp) :: DION0
REAL(dp) :: DM1
REAL(dp) :: ABPLA0
INTEGER :: NNEWD
INTEGER :: NDGREY
INTEGER :: IDGREY
!==========================================================================
! 公共变量块 - COMPTF
!==========================================================================
REAL(dp) :: DLNFR(MFREQ)
REAL(dp) :: BNUS(MFREQ)
REAL(dp) :: CDER10(MFREQ)
REAL(dp) :: CDER1P(MFREQ)
REAL(dp) :: CDER1M(MFREQ)
REAL(dp) :: CDER20(MFREQ)
REAL(dp) :: CDER2P(MFREQ)
REAL(dp) :: CDER2M(MFREQ)
REAL(dp) :: DELJ(MFREQ,MDEPTH)
!==========================================================================
! 公共变量块 - VISPAR
!==========================================================================
REAL(dp) :: TVISC(MDEPTH)
REAL(dp) :: DTVIST(MDEPTH)
REAL(dp) :: DTVISN(MDEPTH)
REAL(dp) :: DTVISR(MDEPTH)
!==========================================================================
! 不透明度表参数
!==========================================================================
REAL(dp) :: FRTB1
REAL(dp) :: FRTB2
REAL(dp) :: RTAB1
REAL(dp) :: RTAB2
REAL(dp) :: TTAB1
REAL(dp) :: TTAB2
INTEGER :: numfreq
INTEGER :: numrho
INTEGER :: numtemp
INTEGER :: numrh(mtabt)
REAL(dp) :: tempvec(mtabt)
REAL(dp) :: rhovec(mtabr)
REAL(dp) :: rhomat(mtabt,mtabr)
REAL(dp) :: frtab(mfrtab)
REAL(dp) :: frtlim
REAL(dp) :: absopac_arr(mtabt,mtabr,mfrtab)
REAL(dp) :: raytab(mtabt,mtabr)
REAL(dp) :: raysc(mdepth)
INTEGER :: ibinop
!==========================================================================
! 氢不透明度表参数
!==========================================================================
REAL(dp) :: hglim
INTEGER :: ihgom
REAL(dp) :: FRGTB1
REAL(dp) :: FRGTB2
REAL(dp) :: EGTAB1
REAL(dp) :: EGTAB2
REAL(dp) :: TGTAB1
REAL(dp) :: TGTAB2
INTEGER :: nugfreq
INTEGER :: nugele
INTEGER :: nugtemp
REAL(dp) :: temvec(mtabth)
REAL(dp) :: elevec(mtabeh)
REAL(dp) :: frgtab(mfhtab)
REAL(dp) :: hydcrs(mtabth,mtabeh,mfhtab)
END MODULE modelq_module
+123
View File
@@ -0,0 +1,123 @@
MODULE odfpar_module
!==============================================================================
! TLUSTY ODF (Opacity Distribution Functions) 参数模块
! 原始文件:ODFPAR.FOR
!
! 包含不透明度分布函数相关的参数和数据
!==============================================================================
USE impli_module
USE basics_module
IMPLICIT NONE
!==========================================================================
! ODF 参数
!==========================================================================
INTEGER, PARAMETER :: MFODF = 180 ! ODF 最大频率数
INTEGER, PARAMETER :: MHOD = 3 ! H-ODF 维数
INTEGER, PARAMETER :: MFRO = MFREQL ! ODF 频率范围
INTEGER, PARAMETER :: MDODF = 3 ! ODF 导数维数
INTEGER, PARAMETER :: MKULEV = 7000 ! 最大 Kuler 能级数
INTEGER, PARAMETER :: MLINE = 1140000 ! 最大谱线数
INTEGER, PARAMETER :: MCFE = 7824000 ! 最大碰撞拟合元素数
!==========================================================================
! REAL*4 类型数组
!==========================================================================
REAL*4 :: SIGFE
!==========================================================================
! 公共变量块 - ODFION
!==========================================================================
INTEGER :: INODF1(MION)
INTEGER :: INODF2(MION)
INTEGER :: INBFCS(MION)
INTEGER :: IKOBS(MION)
!==========================================================================
! 公共变量块 - ODFCTR
!==========================================================================
REAL(dp) :: FRODF(MLEVEL)
INTEGER :: NFRODF(MHOD)
INTEGER :: INDODF(MLEVEL)
INTEGER :: JNDODF(MTRANS)
!==========================================================================
! 公共变量块 - ODFFRQ
!==========================================================================
REAL(dp) :: FROS(MFRO,MHOD)
REAL(dp) :: WNUS(MFRO,MHOD)
REAL(dp) :: XDO(3,MHOD)
INTEGER :: KDO(4,MHOD)
!==========================================================================
! 公共变量块 - ODFMOD
!==========================================================================
INTEGER :: I1ODF(MLEVEL)
INTEGER :: I2ODF(MLEVEL)
INTEGER :: NQLODF(MLEVEL)
!==========================================================================
! 公共变量块 - ODFSTK
!==========================================================================
REAL(dp) :: XKIJ(MHOD,NLMX)
REAL(dp) :: WL0(MHOD,NLMX)
REAL(dp) :: FIJ(MHOD,NLMX)
!==========================================================================
! 公共变量块 - SPLCOM
!==========================================================================
REAL*4 :: SIGFE_ARR(MDODF,MCFE)
REAL(dp) :: FRS1
REAL(dp) :: FRS2
REAL(dp) :: DXNU
REAL(dp) :: XJID(MDEPTH)
INTEGER :: JIDI(MDEPTH)
INTEGER :: JIDR(MDODF)
INTEGER :: JIDS
INTEGER :: JIDN
INTEGER :: NFRS1
INTEGER :: NFTT
!==========================================================================
! 公共变量块 - OPALIM
!==========================================================================
INTEGER :: M1FILE(NLMX,MHOD)
INTEGER :: M2FILE(NLMX,MHOD)
INTEGER :: IMERG
!==========================================================================
! 公共变量块 - OPLIMT
!==========================================================================
REAL(dp) :: ALLIM1
REAL(dp) :: ABLIM1
REAL(dp) :: ABLIM2
REAL(dp) :: ABLIM3
!==========================================================================
! 公共变量块 - LEVCOM
!==========================================================================
REAL(dp) :: EMKU(MLEVEL,2)
REAL(dp) :: YMKU(MLEVEL,2)
REAL(dp) :: XEV(MLEVEL,MION)
REAL(dp) :: XOD(MLEVEL,MION)
REAL(dp) :: EU(2*MLEVEL)
INTEGER :: JEN(2*MLEVEL)
REAL(dp) :: EEV(MKULEV)
REAL(dp) :: AEV(MKULEV)
REAL(dp) :: SEV(MKULEV)
REAL(dp) :: WEV(MKULEV)
REAL(dp) :: EOD(MKULEV)
REAL(dp) :: AOD(MKULEV)
REAL(dp) :: SOD(MKULEV)
REAL(dp) :: WOD(MKULEV)
INTEGER :: KSEV(MKULEV)
INTEGER :: KSOD(MKULEV)
INTEGER :: NEVKU(MION)
INTEGER :: NODKU(MION)
INTEGER :: NLEVKU
INTEGER :: NLINKU
INTEGER :: KEVE
INTEGER :: KODD
END MODULE odfpar_module