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
+89
View File
@@ -0,0 +1,89 @@
# ==============================================================================
# SYNSPEC CMake 构建配置文件
# ==============================================================================
cmake_minimum_required(VERSION 3.15)
project(SYNSPEC 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"
)
# ==============================================================================
# SYNSPEC 模块文件 (按编译顺序排列)
# ==============================================================================
set(SYNSPEC_MODULES
${CMAKE_CURRENT_SOURCE_DIR}/modules/params_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/lindat_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/modelp_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/synthp_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/wincom_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/optpar_module.f90
)
# ==============================================================================
# SYNSPEC 子程序文件
# 注意:这些子程序需要从原始 synspec54.f 中提取
# ==============================================================================
set(SYNSPEC_SUBROUTINES
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/start_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inpmod_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inkur_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/change_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inpbf_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/setwin_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/ingrid_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inibl0_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inimod_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/tint_sub.f90
)
# ==============================================================================
# SYNSPEC 工具程序
# ==============================================================================
set(SYNSPEC_UTILS
${CMAKE_CURRENT_SOURCE_DIR}/utils/rotin.f90
${CMAKE_CURRENT_SOURCE_DIR}/utils/ngrid.f90
)
# ==============================================================================
# SYNSPEC 主程序
# ==============================================================================
set(SYNSPEC_MAIN
${CMAKE_CURRENT_SOURCE_DIR}/main/synspec_main.f90
)
# ==============================================================================
# 创建可执行文件
# ==============================================================================
add_executable(synspec.exe
${SYNSPEC_MODULES}
${SYNSPEC_SUBROUTINES}
${SYNSPEC_UTILS}
${SYNSPEC_MAIN}
)
# 设置模块依赖关系
target_include_directories(synspec.exe PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/modules
)
# ==============================================================================
# 安装规则
# ==============================================================================
install(TARGETS synspec.exe DESTINATION bin)
install(DIRECTORY ${CMAKE_BINARY_DIR}/modules/ DESTINATION include/synspec)
# ==============================================================================
# 打印配置信息
# ==============================================================================
message(STATUS "SYNSPEC 配置:")
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
message(STATUS " 模块目录:${CMAKE_BINARY_DIR}/modules")
+59
View File
@@ -0,0 +1,59 @@
!==============================================================================
! SYNSPEC54 主程序
!
! Program for evaluating synthetic spectra for a given model atmosphere
!
! 版本:SYNSPEC54
!==============================================================================
PROGRAM SYNSPEC
USE params_module
USE lindat_module
USE modelp_module
USE synthp_module
IMPLICIT NONE
INTEGER :: ifeos, ibfac, LTE0, inmod, ichang, ifwin, imode0
! 打开输出文件
OPEN(UNIT=12, STATUS='UNKNOWN')
OPEN(UNIT=14, STATUS='UNKNOWN')
! 初始化 - 输入基本参数和模型大气
CALL START
ifeos = 0 ! 默认值,实际应从输入读取
ibfac = 0 ! 默认值,实际应从输入读取
if(ifeos .gt. 0) imode = -3
if(ibfac .gt. 1) then
LTE0 = LTE
LTE = .TRUE.
END IF
IF(IMODE .GE. -2 .AND. IFEOS .LE. 0) THEN
IF(INMOD .GT. 0) CALL INPMOD
IF(INMOD .EQ. 0) CALL INKUR
IF(ICHANG .NE. 0) CALL CHANGE
IF(IBFAC .GT. 1) THEN
CALL INPBF
LTE = LTE0
END IF
IF(IFWIN .GT. 1) CALL SETWIN
ELSE
CALL INGRID(0, inext, 0)
END IF
CALL INIBL0
CALL INIMOD
CALL TINT
imode0 = IMODE
IF(imode0 .EQ. -4) IMODE = 2
! 主循环(简化版本)
! 完整的实现需要从这里继续
STOP
END PROGRAM SYNSPEC
+92
View File
@@ -0,0 +1,92 @@
MODULE lindat_module
!==============================================================================
! SYNSPEC 谱线数据模块
! 原始文件:LINDAT.FOR
!
! 包含谱线数据参数和数组
!==============================================================================
USE params_module
IMPLICIT NONE
!==========================================================================
! 谱线参数
!==========================================================================
INTEGER, PARAMETER :: MLIN0 = 1200000
INTEGER, PARAMETER :: MGRIEM = 10
INTEGER, PARAMETER :: MNLT = 2000
INTEGER, PARAMETER :: MSPHE2 = 20
INTEGER, PARAMETER :: MLIN = 190000
INTEGER, PARAMETER :: MPRF = MLIN0
INTEGER, PARAMETER :: MLINM0 = 9000000
INTEGER, PARAMETER :: MLINM = 1000000
INTEGER, PARAMETER :: MMLIST = 3
!==========================================================================
! REAL*4 类型数组
!==========================================================================
REAL*4 :: EXCL0(MLIN0), EXCU0(MLIN0), GF0(MLIN0)
REAL*4 :: EXTIN(MLIN0), BNUL(MLIN0)
REAL*4 :: GAMR0(MPRF), GS0(MPRF), GW0(MPRF)
REAL*4 :: WGR0(4,MGRIEM)
REAL*4 :: EXCLM(MLINM0,MMLIST), GFM(MLINM0,MMLIST)
REAL*4 :: EXTINM(MLINM0,MMLIST), GRM(MLINM0,MMLIST)
REAL*4 :: GSM(MLINM0,MMLIST), GWM(MLINM0,MMLIST)
REAL*4 :: GVDWH2(MLINM0,MMLIST), GEXPH2(MLINM0,MMLIST)
REAL*4 :: GVDWHE(MLINM0,MMLIST), GEXPHE(MLINM0,MMLIST)
!==========================================================================
! 公共变量块 - 总谱线 (LINTOT)
!==========================================================================
REAL(dp) :: FREQ0(MLIN0)
INTEGER :: INDAT(MLIN0), INDNLT(MLIN0)
INTEGER :: ILOWN(MLIN0), IUPN(MLIN0), IJCONT(MLIN0)
INTEGER :: INDLIN(MLIN), INDLIP(MLIN)
INTEGER :: NLIN0, NLIN, IRLIST, NNLT, NGRIEM
!==========================================================================
! 公共变量块 - 分子谱线 (MOLTOT)
!==========================================================================
REAL(dp) :: FREQM(MLINM0,MMLIST)
INTEGER :: INDATM(MLINM0,MMLIST)
INTEGER :: INMLIN(MLINM,MMLIST), INMLIP(MLINM,MMLIST)
INTEGER :: NLINM0(MMLIST), NLINML(MMLIST), NLINMT(MMLIST)
INTEGER :: IUNITM(MMLIST), INACTM(MMLIST), IVDWLI(MMLIST)
INTEGER :: NMLIST
CHARACTER*40 :: AMLIST(0:MMLIST)
!==========================================================================
! 公共变量块 - 线表参数 (LISPAR)
!==========================================================================
INTEGER :: IBIN(0:MMLIST)
!==========================================================================
! 公共变量块 - 谱线轮廓 (LINPRF)
!==========================================================================
INTEGER :: IPRF0(MPRF), ISPRF(MPRF), IGRIEM(MPRF)
INTEGER :: ISP0(MSPHE2), NSP
!==========================================================================
! 公共变量块 - NLTE 谱线 (LINNLT)
!==========================================================================
REAL(dp) :: ABCENT(MNLT,MDEPTH), SLIN(MNLT,MDEPTH)
!==========================================================================
! 公共变量块 - 线深度 (LINDEP)
!==========================================================================
REAL(dp) :: PLAN(MDEPTH), STIM(MDEPTH), EXHK(MDEPTH)
!==========================================================================
! 公共变量块 - 线中心 (LINCTR)
!==========================================================================
REAL(dp) :: DFRCON
INTEGER :: IJCNTR(MLIN), IJCMTR(MLINM,MMLIST)
!==========================================================================
! 公共变量块 - 分子线读取 (MLINRE)
!==========================================================================
REAL(dp) :: FRLASM(MMLIST), ALASTM(MMLIST), TMLIM(MMLIST)
INTEGER :: NXTSEM(MMLIST), IPRSEM(MMLIST), IREADM(MMLIST)
END MODULE lindat_module
+58
View File
@@ -0,0 +1,58 @@
MODULE modelp_module
!==============================================================================
! SYNSPEC 模型参数模块
! 原始文件:MODELP.FOR
!
! 包含模型大气的基本参数
!==============================================================================
USE params_module
IMPLICIT NONE
!==========================================================================
! 公共变量块 - 模型参数 (MODELP)
!==========================================================================
REAL(dp) :: DM(MDEPTH), TEMP(MDEPTH), ELEC(MDEPTH), DENS(MDEPTH)
REAL(dp) :: ZD(MDEPTH)
REAL(dp) :: VTURB(MDEPTH), VTB
REAL(dp) :: ABSTD(MDEPTH), ABSTDW(MFREQC,MDEPTH)
REAL(dp) :: POPUL(MLEVEL,MDEPTH), POPREL(MLEVEL,MDEPTH)
REAL(dp) :: DMR0(MDEPTH), DMRP(MDEPTH)
REAL(dp) :: SBF(MLEVEL)
REAL(dp) :: USUM(MIOEX)
REAL(dp) :: WOP(MLEVEL,MDEPTH)
REAL(dp) :: WNHINT(NLMX,MDEPTH), WNHE2(NLMX,MDEPTH)
REAL(dp) :: RRR(MDEPTH,MION,MATOM)
REAL(dp) :: JT(MDEPTH), TI0(MDEPTH), TI1(MDEPTH), TI2(MDEPTH)
CHARACTER*8 :: cmol(m molec)
REAL(dp) :: RRMOL(MMOLEC,MDEPTH), DOPMOL(MMOLEC,MDEPTH)
REAL(dp) :: AMMOL(MMOLEC)
REAL(dp) :: anh2(mdepth), anch(mdepth), anoh(mdepth), anhm(mdepth)
!==========================================================================
! 公共变量块 - 原子不透明度 (OPACAT)
!==========================================================================
REAL(dp) :: OPATM(MATOM,MFREQ,MDEPTH), EMATM(MATOM,MFREQ,MDEPTH)
REAL(dp) :: OPATML(MATOM,MFREQ)
REAL(dp) :: GRADAT(MATOM,MDEPTH), GRADFA(MATOM,MDEPTH)
REAL(dp) :: POPAT(MATOM,MDEPTH)
REAL(dp) :: DGRAD0(MATOM,MATOM,MDEPTH), DGRADP(MATOM,MATOM,MDEPTH)
!==========================================================================
! 公共变量块 - 辐射场 (RADFLD)
!==========================================================================
REAL(dp) :: RAD(MFREQ,MDEPTH), RAD0(MFREQ,MDEPTH)
REAL(dp) :: FLX0(MFREQ,MDEPTH), flxt(mdepth), flxi(mdepth)
!==========================================================================
! 公共变量块 - Xenon 谱线轮廓 (XENPRF)
!==========================================================================
REAL(dp) :: PRFXB(MLINH,MHWL,MHT,MHE), PRFXR(MLINH,MHWL,MHT,MHE)
REAL(dp) :: PRFB(MLINH,MDEPTH,MHWL), PRFR(MLINH,MDEPTH,MHWL)
REAL(dp) :: ALXEN(MLINH,MHWL), XTXEN(MHT,MLINH), XNEXEN(MHE,MLINH)
REAL(dp) :: XNEMIN
INTEGER :: NWLXEN(MLINH), NTHXEN(MLINH), NEHXEN(MLINH)
INTEGER :: ILXEN(4,22), IHXENB
END MODULE modelp_module
+20
View File
@@ -0,0 +1,20 @@
MODULE optpar_module
!==============================================================================
! SYNSPEC 不透明度参数模块
! 原始文件:OPTPAR.FOR
!
! 包含不透明度表的维度参数
!==============================================================================
USE params_module
IMPLICIT NONE
!==========================================================================
! 不透明度表参数
!==========================================================================
INTEGER, PARAMETER :: MFRTAB = 100000
INTEGER, PARAMETER :: MTTAB = 20
INTEGER, PARAMETER :: MRTAB = 20
REAL*8, PARAMETER :: MSFTAB = 2000000.0
END MODULE optpar_module
+275
View File
@@ -0,0 +1,275 @@
MODULE params_module
!==============================================================================
! SYNSPEC 参数和常量模块
! 原始文件:PARAMS.FOR
!
! 包含数组维度参数、物理常数和公共变量块
!==============================================================================
IMPLICIT NONE
! 定义双精度类型别名
INTEGER, PARAMETER :: dp = KIND(1.0D0)
!==========================================================================
! 数组维度参数
!==========================================================================
INTEGER, PARAMETER :: MATEX = 30
INTEGER, PARAMETER :: MIOEX = 90
INTEGER, PARAMETER :: MLEVEL = 1650
INTEGER, PARAMETER :: MDEPTH = 100
INTEGER, PARAMETER :: MDEPF = 500
INTEGER, PARAMETER :: MFREQ = 2000
INTEGER, PARAMETER :: MFREQC = 2000
INTEGER, PARAMETER :: MFRQ = 2000
INTEGER, PARAMETER :: MOPAC = MFRQ
INTEGER, PARAMETER :: MMU = 20
INTEGER, PARAMETER :: MCROSS = MLEVEL
INTEGER, PARAMETER :: MFIT = 1650
INTEGER, PARAMETER :: MFCRA = 1200
INTEGER, PARAMETER :: MTRAD = 3
INTEGER, PARAMETER :: MATOM = 99
INTEGER, PARAMETER :: MATOMBIG = 99
INTEGER, PARAMETER :: MION = 90
INTEGER, PARAMETER :: MION0 = 9
INTEGER, PARAMETER :: MMOLEC = 500
INTEGER, PARAMETER :: MPHOT = 10
INTEGER, PARAMETER :: MZZ = 2
INTEGER, PARAMETER :: MMER = 2
INTEGER, PARAMETER :: NLMX = 80
INTEGER, PARAMETER :: MI1 = MION0-1
INTEGER, PARAMETER :: MLINH = 78
INTEGER, PARAMETER :: MHT = 7
INTEGER, PARAMETER :: MHE = 20
INTEGER, PARAMETER :: MHWL = 55
INTEGER, PARAMETER :: MFGRID = 100000
INTEGER, PARAMETER :: MTTAB = 21
INTEGER, PARAMETER :: MRTAB = 20
INTEGER, PARAMETER :: MSFTAB = 6000000
INTEGER, PARAMETER :: mfhtab = 1000
INTEGER, PARAMETER :: mtabth = 10
INTEGER, PARAMETER :: mtabeh = 10
!==========================================================================
! 物理常数
!==========================================================================
REAL(dp), PARAMETER :: H = 6.6256D-27
REAL(dp), PARAMETER :: CL = 2.997925D10
REAL(dp), PARAMETER :: BOLK = 1.38054D-16
REAL(dp), PARAMETER :: HK = 4.79928144D-11
REAL(dp), PARAMETER :: EH = 2.17853041D-11
REAL(dp), PARAMETER :: BN = 1.4743D-2
REAL(dp), PARAMETER :: SIGE = 6.6516D-25
REAL(dp), PARAMETER :: PI4H = 1.8966D27
REAL(dp), PARAMETER :: HMASS = 1.67333D-24
!==========================================================================
! 单元编号
!==========================================================================
INTEGER, PARAMETER :: IBUFF = 95
!==========================================================================
! 量子数限制变量
!==========================================================================
INTEGER*4 :: SQUANT1(MLEVEL), SQUANT2(MLEVEL)
INTEGER*4 :: LQUANT1(MLEVEL), LQUANT2(MLEVEL)
INTEGER*4 :: PQUANT1(MLEVEL), PQUANT2(MLEVEL)
!==========================================================================
! 公共变量块 - 基本数值 (BASNUM)
!==========================================================================
INTEGER :: NATOM, NION, NLEVEL, ND, NDSTEP
INTEGER :: NFREQ, NFROBS, NFREQC, NFREQS, NMU
!==========================================================================
! 公共变量块 - LTE 设置 (LTESET)
!==========================================================================
LOGICAL :: LTE, LTEGR
!==========================================================================
! 公共变量块 - 输入参数 (INPPAR)
!==========================================================================
REAL(dp) :: TEFF, GRAV
REAL(dp) :: YTOT(MDEPTH), WMM(MDEPTH), WMY(MDEPTH)
REAL(dp) :: vaclim
REAL(dp) :: ATTOT(MATOM,MDEPTH)
!==========================================================================
! 公共变量块 - 基本模式 (BASICM)
!==========================================================================
INTEGER :: IMODE, IMODE0, IFREQ, INLTE, IDSTD, IFWIN, IFEOS, IBFAC
!==========================================================================
! 公共变量块 - 输入关键字 (INTKEY)
!==========================================================================
INTEGER :: INMOD, INTRPL, ICHANG, ICHEMC, IATREF, ICONTL
!==========================================================================
! 公共变量块 - 空白标记 (LBLANK)
!==========================================================================
INTEGER :: IBLANK, NBLANK
!==========================================================================
! 公共变量块 - 下一步初始化 (NXTINI)
!==========================================================================
REAL(dp) :: ALM00, ALST00
INTEGER :: NXTSET, INLIST
REAL(dp) :: ALAMBE, DLAMLO
!==========================================================================
! 公共变量块 - 打印控制 (IPRNTR)
!==========================================================================
INTEGER :: IPRIN
!==========================================================================
! 公共变量块 - 原子参数 (ATOPAR)
!==========================================================================
REAL(dp) :: AMASS(MATEX)
REAL(dp) :: ABUND(MATEX,MDEPTH)
REAL(dp) :: RELAB(MATEX,MDEPTH)
INTEGER :: NUMAT(MATEX), N0A(MATEX), NKA(MATEX)
REAL(dp) :: SABND(MATEX)
!==========================================================================
! 公共变量块 - 离子参数 (IONPAR)
!==========================================================================
REAL(dp) :: FF(MIOEX)
INTEGER :: NFIRST(MIOEX), NLAST(MIOEX), NNEXT(MIOEX)
INTEGER :: IUPSUM(MIOEX), IZ(MIOEX), IFREE(MIOEX)
INTEGER :: INBFCS(MIOEX), ILIMITS(MIOEX)
!==========================================================================
! 公共变量块 - 能级参数 (LEVPAR)
!==========================================================================
REAL(dp) :: ENION(MLEVEL), G(MLEVEL)
INTEGER :: NQUANT(MLEVEL), IATM(MLEVEL), IEL(MLEVEL), ILK(MLEVEL)
INTEGER :: ifwop(mlevel), isemex(matom)
!==========================================================================
! 公共变量块 - 能级限制 (LEVLIMITS)
!==========================================================================
REAL(dp) :: ENION1(MLEVEL), ENION2(MLEVEL)
!==========================================================================
! 公共变量块 - 跃迁参数 (TRAPAR)
!==========================================================================
INTEGER :: IBF(MLEVEL)
REAL(dp) :: S0BF(MLEVEL), ALFBF(MLEVEL), BETBF(MLEVEL), GAMBF(MLEVEL)
!==========================================================================
! 公共变量块 - 合并参数 (MRGPAR)
!==========================================================================
REAL(dp) :: SGM0(MMER), FRCH(MMER)
REAL(dp) :: SGEXT1(MMER,MDEPTH), GMER(MMER,MDEPTH)
REAL(dp) :: SGMSUM(NLMX,MMER,MDEPTH), SGMG(MMER,MDEPTH)
INTEGER :: IMRG(MLEVEL), IIMER(MMER)
!==========================================================================
! 公共变量块 - 向下跃迁参数 (DWNPAR)
!==========================================================================
REAL(dp) :: ELEC23(MDEPTH), Z3(MZZ)
REAL(dp) :: DWC1(MZZ,MDEPTH), DWC2(MDEPTH)
!==========================================================================
! 公共变量块 - 附加不透明度 (OPCPAR)
!==========================================================================
INTEGER :: IOPADD, IOPHMI, IOPH2P, IOPHEM, IOPCH, IOPOH
INTEGER :: IOPH2M, IOH2H2, IOH2HE, IOH2H1, IOHHE
INTEGER :: IOPHLI, IRSCT, IRSCHE, IRSCH2
!==========================================================================
! 公共变量块 - 辅助索引 (AUXIND)
!==========================================================================
INTEGER :: IATH, IELH, IELHM, N0H, N1H, NKH, N0HN, N0M
INTEGER :: IATHE, IELHE1, IELHE2
!==========================================================================
! 公共变量块 - 分子标记 (MOLFLG)
!==========================================================================
REAL(dp) :: TMOLIM
INTEGER :: MOLIND(11000), NMOLEC, IFMOL
INTEGER :: MOLTAB, IRWTAB, IIRWIN, IPFEXO
!==========================================================================
! 公共变量块 - 质量标志 (QFLAGS)
!==========================================================================
REAL(dp) :: ERANGE
INTEGER :: ISPICK, ILPICK, IPPICK
!==========================================================================
! 公共变量块 - 线展宽不透明度原子 (ATOBLN)
!==========================================================================
LOGICAL :: LGR(MATOM), LRM(MATOM)
REAL(dp) :: ENEV(MATOM,MI1), AMAS(MATOM), ABND(MATOM)
REAL(dp) :: ABNDD(MATOM,MDEPTH), ABNREF(MDEPTH)
CHARACTER*4 :: TYPAT(MATOM)
INTEGER :: IATEX(MATOM), INPOT(MATOM,MION0)
!==========================================================================
! 公共变量块 - 原子初始化 (ATOINI)
!==========================================================================
INTEGER :: NATOMS, IONIZ(MATOM)
!==========================================================================
! 公共变量块 - 标准光球丰度 (PFSTDS)
!==========================================================================
REAL(dp) :: PFSTD(MION,MATOM)
INTEGER :: MODPF(MATOM)
!==========================================================================
! 公共变量块 - 附加布居 (ADDPOP)
!==========================================================================
REAL(dp) :: RR(MATOM,MION)
!==========================================================================
! 公共变量块 - 氢 Stark 加宽表 (HYDPRF)
!==========================================================================
REAL(dp) :: PRFHYD(MLINH,MDEPTH,MHWL), WLHYD(MLINH,MHWL)
INTEGER :: NWLHYD(MLINH)
REAL(dp) :: WL(MHWL,MLINH), XT(MHT,MLINH), XNE(MHE,MLINH)
REAL(dp) :: PRF(MHWL,MHT,MHE,MLINH)
REAL(dp) :: WLINE(4,22)
INTEGER :: NWLH(MLINH), NTH(MLINH), NEH(MLINH)
INTEGER :: ILIN0(4,22), ILEMKE, NLIHYD
!==========================================================================
! 公共变量块 - 氢辅助 (AUXHYD)
!==========================================================================
REAL(dp) :: XK, FXK, BETAD, DBETA, BERGFC, CUTLYM, CUTBAL
!==========================================================================
! 公共变量块 - H/He 谱线轮廓 (HHEPRF)
!==========================================================================
INTEGER :: IHYDPR, IHE1PR, IHE2PR
!==========================================================================
! 公共变量块 - 氢线参数 (HYLPAR)
!==========================================================================
INTEGER :: IHYL, ILOWH, M10, M20
!==========================================================================
! 公共变量块 - 氢线角度权重 (HYLPAW)
!==========================================================================
INTEGER :: IHYLW(MFREQ), ILOWHW(MFREQ)
INTEGER :: M10W(MFREQ), M20W(MFREQ)
!==========================================================================
! 公共变量块 - HeII 线参数 (HE2PAR)
!==========================================================================
INTEGER :: IFHE2, IHE2L, ILWHE2, MHE10, MHE20
!==========================================================================
! 公共变量块 - HeII 线角度权重 (HE2PAW)
!==========================================================================
INTEGER :: IHE2LW(MFREQ), ILWHEW(MFREQ)
INTEGER :: MHE10W(MFREQ), MHE20W(MFREQ)
!==========================================================================
! 公共变量块 - 速度场参数 (VELPAR)
!==========================================================================
REAL(dp) :: ANGL(MMU), WANGL(MMU), VELC(MDEPTH)
INTEGER :: NMU0, IFLUX
END MODULE params_module
+36
View File
@@ -0,0 +1,36 @@
MODULE synthp_module
!==============================================================================
! SYNSPEC 光谱合成参数模块
! 原始文件:SYNTHP.FOR
!
! 包含光谱合成相关的频率和交叉截面参数
!==============================================================================
USE params_module
IMPLICIT NONE
!==========================================================================
! 公共变量块 - 频率 (FREQSY)
!==========================================================================
REAL(dp) :: FREQ(MFREQ), W(MFREQ), WLAM(MFREQ)
REAL(dp) :: FRX1(MFREQ), FRX2(MFREQ), BNUE(MFREQ)
REAL(dp) :: FRQOBS(MFREQ), WLOBS(MFREQ)
REAL(dp) :: FREQC(MFREQC), WLAMC(MFREQC)
INTEGER :: IJCINT(MFREQ)
!==========================================================================
! 公共变量块 - 平均截面 (CRSAVG)
!==========================================================================
REAL(dp) :: FRECR(MCROSS,MFCRA), CROSR(MCROSS,MFCRA)
REAL(dp) :: CRMX(MCROSS)
INTEGER :: NFCR(MCROSS), IASV
!==========================================================================
! 公共变量块 - 平均 Q (CRSAVQ)
!==========================================================================
REAL(dp) :: FRECQ(MPHOT,MFCRA), QHOT(MPHOT,MFCRA)
REAL(dp) :: AQHT(MPHOT), EQHT(MPHOT), GQHT(MPHOT)
REAL(dp) :: CRMY(MPHOT)
INTEGER :: NFQHT(MPHOT), NQHT
END MODULE synthp_module
+57
View File
@@ -0,0 +1,57 @@
MODULE wincom_module
!==============================================================================
! SYNSPEC 窗口通用变量模块
! 原始文件:WINCOM.FOR
!
! 包含角度、半径和扩展模型参数
!==============================================================================
USE params_module
IMPLICIT NONE
!==========================================================================
! 窗口参数
!==========================================================================
INTEGER, PARAMETER :: MRCORE = 20
INTEGER, PARAMETER :: MKU = MDEPTH + MRCORE
INTEGER, PARAMETER :: MEXT = MKU
!==========================================================================
! 公共变量块 - 角度 (COMANG)
!==========================================================================
REAL(dp) :: BMU(MKU,MDEPTH), WMUJ(MKU,MDEPTH), WMUH(MKU)
!==========================================================================
! 公共变量块 - 共动半径 (CORADI)
!==========================================================================
REAL(dp) :: RD(MDEPTH), RCORE, RFNORM, PIM(MKU)
REAL(dp) :: RAD1(MDEPTH), DELZ(MKU,MDEPTH)
REAL(dp) :: NUD(MKU), NUDF(MKU)
INTEGER :: KMU, NREXT, NRCORE, NFIRY, NDF
!==========================================================================
! 公共变量块 - 共动频率 (CORAF)
!==========================================================================
REAL(dp) :: DELZF(MEXT,MDEPF), DFRQF(MEXT,2*MDEPF)
!==========================================================================
! 公共变量块 - 共动速度 (COVEL)
!==========================================================================
REAL(dp) :: VEL(MDEPTH), DFRQ(MKU,2*MDEPTH), DVD(MDEPTH)
REAL(dp) :: XMDOT, XMD4, BETAV, VINF
!==========================================================================
! 公共变量块 - 扩展模型 (EXTMOD)
!==========================================================================
REAL(dp) :: FFQ(MOPAC), FFQV(MOPAC), RDF(MDEPF)
REAL(dp) :: DENSF(MDEPF), VELF(MEXT,MDEPF)
REAL(dp) :: DRAY(MEXT,2*MDEPF), KRAY(MEXT,2*MDEPF)
INTEGER :: NOPAC
!==========================================================================
! 公共变量块 - 不透明度平均 (OPAVEL)
!==========================================================================
REAL(dp) :: WDIL(MDEPTH), PLANW(MDEPTH)
REAL(dp) :: TRAD(MTRAD,MDEPTH), DENSCON(MDEPTH)
END MODULE wincom_module