更新 Fortran/SUB_XAJMX.f90

This commit is contained in:
zzx 2025-05-09 13:45:09 +08:00
parent 7835711048
commit 6c7785fc6c

View File

@ -1,60 +1,60 @@
SUBROUTINE SUB_XAJMX( N ,& ! //
M ,& ! //
PAR ,& ! //
AREA ,& ! //
UH ,& ! 线 //
DT ,& ! //
P ,& ! //
EP ,& ! //
W ,& ! 1. 2. 3. //
FR ,& ! //
S ,& ! //
QRSS0 ,& ! //
QRG0 ,& ! //
QR ) ! //
SUBROUTINE SUB_XAJMX( N ,& ! //
M ,& ! //
PAR ,& ! //
AREA ,& ! //
UH ,& ! 线 //
DT ,& ! //
P ,& ! //
EP ,& ! //
W ,& ! 1. 2. 3. //
FR ,& ! //
S ,& ! //
QRSS0 ,& ! //
QRG0 ,& ! //
QR ) ! //
IMPLICIT NONE
!/////////////////////////////////////////////////////////////////////////////////////
!/////////////////////////////////////////////////////////////////////////////////////
INTEGER::N !
INTEGER::M !
REAL::PAR(13) ! 1.wum 2.wl 3.wdm
! 4.KC.c 6.b
! 7.imp1 8.sm 9.ex
!10.kg 11.kss 12.kkg
!13.kkss
REAL::AREA !
REAL::UH(M) ! 线
REAL::DT !
REAL::P(N) !
REAL::EP(N) !
REAL::QR(N) !
REAL::W(3) ! 1. 2. 3.
REAL::FR !
REAL::S !
REAL::QRSS0 !
REAL::QRG0 !
REAL::PAR(13) ! 1.wum 2.wl 3.wdm
! 4.KC.c 6.b
! 7.imp1 8.sm 9.ex
!10.kg 11.kss 12.kkg
!13.kkss
REAL::AREA !
REAL::UH(M) ! 线
REAL::DT !
REAL::P(N) !
REAL::EP(N) !
REAL::QR(N) !
REAL::W(3) ! 1. 2. 3.
REAL::FR !
REAL::S !
REAL::QRSS0 !
REAL::QRG0 !
INTEGER::D
REAL::KSSD
REAL::KGD
REAL::E(3)
REAL::WM(3)
REAL::KC !
REAL::C !
REAL::B !
REAL::IMP1 !
REAL::SM !
REAL::EX !
REAL::KG !
REAL::KSS !
REAL::KKG !
REAL::KKSS !
REAL::KC !
REAL::C !
REAL::B !
REAL::IMP1 !
REAL::SM !
REAL::EX !
REAL::KG !
REAL::KSS !
REAL::KKG !
REAL::KKSS !
!vb程序中未声明的变量
INTEGER::I ! //
INTEGER::J ! //
INTEGER::ICHECK !
!vb程序中未声明的变量
INTEGER::I ! //
INTEGER::J ! //
INTEGER::ICHECK !
INTEGER::NN
REAL(KIND=8),PARAMETER::C5=5.000000000
@ -89,11 +89,11 @@ SUBROUTINE SUB_XAJMX( N ,& !
REAL::QRG
REAL::QTR
!/////////////////////////////////////////////////////////////////////////////////////
!/////////////////////////////////////////////////////////////////////////////////////
!/////////////////////////////////////////////////////////////////////////////////////
!/////////////////////////////////////////////////////////////////////////////////////
!
!
ICHECK = 1
DO I = 1, 3
@ -126,7 +126,8 @@ SUBROUTINE SUB_XAJMX( N ,& !
D = 24 / DT
CI = KKSS ** (1.0 / D)
CG = KKG ** (1.0 / D)
KSSD = (1.0 - (1.0 - (KG + KSS)) ** (1.0 / D)) / (1.0 + KG / KSS)
KSSD = (1.0 - (1.0 - (KG + KSS)) ** (1.0 / D)) &
/ (1.0 + KG / KSS)
KGD = KSSD * KG / KSS
ELSE
@ -148,7 +149,7 @@ SUBROUTINE SUB_XAJMX( N ,& !
W0 = W(1) + W(2) + W(3)
PE = P(I) - EP(I)
!
!
R = 0.0
RIMP = 0.0
@ -162,13 +163,15 @@ SUBROUTINE SUB_XAJMX( N ,& !
ELSE
A = WMM * (1.0 - (1.0 - W0 / WM0) ** (1.0 / (1.0 + B)))
A = WMM * (1.0 - (1.0 - W0 / WM0) **&
(1.0 / (1.0 + B)))
END IF
IF ((PE + A) .LT. WMM) THEN
R = PE - WM0 + W0 + WM0 * ((1.0 - (PE + A) / WMM) ** (1.0 + B))
R = PE - WM0 + W0 + WM0 * ((1.0 - (PE + A) /&
WMM) ** (1.0 + B))
ELSE
@ -244,9 +247,10 @@ SUBROUTINE SUB_XAJMX( N ,& !
S = X * S / FR
SS = S
Q = R / FR
NN = INT(Q / C5) + 1 ! vb程序中C5是双精度常数5
NN = INT(Q / C5) + 1 ! vb程序中C5是双精度常数5
Q = Q / NN
KSSDD = (1.0 - (1.0 - (KGD + KSSD)) ** (1.0 / NN)) / (1.0 + KGD / KSSD)
KSSDD = (1.0 - (1.0 - (KGD + KSSD)) ** (1.0 / NN))&
/ (1.0 + KGD / KSSD)
KGDD = KSSDD * KGD / KSSD
RS = 0.0
RSS = 0.0
@ -291,7 +295,8 @@ SUBROUTINE SUB_XAJMX( N ,& !
ELSE IF ((Q + AU) .LT. SMMF) THEN
RSD = (Q - SMF + S + SMF * (1.0 - (Q + AU) / SMMF) ** (1.0 + EX)) * FR
RSD = (Q - SMF + S + SMF * (1.0 - (Q + AU)&
/ SMMF) ** (1.0 + EX)) * FR
RSSD = (S + Q - RSD / FR) * KSSDD * FR
RGD = (S + Q - RSD / FR) * KGDD * FR
S = S + Q - (RSD + RSSD + RGD) / FR