This commit is contained in:
tp 2025-06-09 15:40:48 +08:00
parent 6c7785fc6c
commit d043f8e979
4 changed files with 264 additions and 137 deletions

View File

@ -1,8 +1,9 @@
{ {
"fortranSourceFile": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\dll\\\u65B0\u5B89\u6C5F\u6A21\u578B\\XAJMX\\XAJMX\\XAJMX.f90", "fortranSourceFile": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\dll\\\u65B0\u5B89\u6C5F\u6A21\u578B\\XAJMX\\XAJMX\\XAJMX - \u526F\u672C.f90",
"fortranFunctionName": "XAJMX", "fortranFunctionName": "XAJMX",
"projectName": "FortranWebApi", "projectName": "FortranWebApi",
"outputDirectory": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\\u8F93\u51FA\u5E93\\\u65B0\u5B89\u6C5F\u6A21\u578B", "outputDirectory": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\\u8F93\u51FA\u5E93\\\u65B0\u5B89\u6C5F\u6A21\u578B",
"cmbLanguage": "Fortran",
"parameters": [ "parameters": [
{ {
"name": "N", "name": "N",
@ -21,9 +22,105 @@
"isSelected": true "isSelected": true
}, },
{ {
"name": "PAR", "name": "WUM",
"dataType": "Float", "dataType": "Float",
"arrayType": "OneDimensional", "arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "W1",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "WDM",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "KC",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "C",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "B",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "IMP1",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "SM",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "EX",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "KG",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "KSS",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "KKG",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input",
"description": "",
"isSelected": true
},
{
"name": "KKSS",
"dataType": "Float",
"arrayType": "Scalar",
"direction": "Input", "direction": "Input",
"description": "", "description": "",
"isSelected": true "isSelected": true

Binary file not shown.

View File

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

View File

@ -1,41 +1,67 @@
subroutine XAJMX( N ,& subroutine XAJMX( N ,& ! //
M ,& M ,& ! //
PAR ,& WUM ,& ! wum //
AREA ,& W1 ,& ! wl //
UH ,& WDM ,& ! wdm //
DT ,& KC ,& !KC //
P ,& C ,& !c //
EP ,& B ,& !b //
W ,& IMP1 ,& !imp1 //
FR ,& SM ,& !sm //
S ,& EX ,& !ex //
QRSS0 ,& KG ,& !kg //
QRG0 ,& KSS ,& !kss //
QR )& KKG ,& !kkg //
BIND(C, NAME="XAJMX") KKSS ,& !kkss //
AREA ,& ! //
UH ,& ! 线 //
DT ,& ! //
P ,& ! //
EP ,& ! //
W ,& ! 1. 2. 3. //
FR ,& ! //
S ,& ! //
QRSS0 ,& ! //
QRG0 ,& ! //
QR )& ! //
BIND(C, NAME="XAJMX")
!DEC$ ATTRIBUTES DLLEXPORT::XAJMX !DEC$ ATTRIBUTES DLLEXPORT::XAJMX
IMPLICIT NONE IMPLICIT NONE
INTEGER::N ! INTEGER::N !
INTEGER::M ! INTEGER::M !
REAL::PAR(13) ! 1.wum 2.wl 3.wdm REAL::PAR(13) ! 1.wum 2.wl 3.wdm
! 4.kc 5.c 6.b ! 4.kc 5.c 6.b
! 7.imp1 8.sm 9.ex ! 7.imp1 8.sm 9.ex
!10.kg 11.kss 12.kkg !10.kg 11.kss 12.kkg
!13.kkss !13.kkss
REAL::AREA ! REAL::AREA !
REAL::UH(M) ! 线 REAL::UH(M) ! 线
REAL::DT ! REAL::DT !
REAL::P(N) ! REAL::P(N) !
REAL::EP(N) ! REAL::EP(N) !
REAL::QR(N) ! REAL::QR(N) !
REAL::W(3) ! 1. 2. 3. REAL::W(3) ! 1. 2. 3.
REAL::FR ! REAL::FR !
REAL::S ! REAL::S !
REAL::QRSS0 ! REAL::QRSS0 !
REAL::QRG0 ! REAL::QRG0 !
REAL::WUM !wum
REAL::W1 !wl
REAL::WDM ! wdm
REAL::KC !
REAL::C !
REAL::B !
REAL::IMP1 !
REAL::SM !
REAL::EX !
REAL::KG !
REAL::KSS !
REAL::KKG !
REAL::KKSS !
INTEGER::I INTEGER::I
INTEGER::YEAR1 INTEGER::YEAR1
@ -46,19 +72,31 @@ subroutine XAJMX( N ,&
INTEGER::ED INTEGER::ED
INTEGER::EH INTEGER::EH
CALL SUB_XAJMX( N ,& ! // CALL SUB_XAJMX( N ,& ! //
M ,& ! // M ,& ! //
PAR ,& ! // WUM ,& ! wum //
AREA ,& ! // W1 ,& ! wl //
UH ,& ! 线 // WDM ,& ! wdm //
DT ,& ! // KC ,& !KC //
P ,& ! // C ,& !c //
EP ,& ! // B ,& !b //
W ,& ! 1. 2. 3. // IMP1 ,& !imp1 //
FR ,& ! // SM ,& !sm //
S ,& ! // EX ,& !ex //
QRSS0 ,& ! // KG ,& !kg //
QRG0 ,& ! // KSS ,& !kss //
QR ) ! // KKG ,& !kkg //
KKSS ,& !kkss //
AREA ,& ! //
UH ,& ! 线 //
DT ,& ! //
P ,& ! //
EP ,& ! //
W ,& ! 1. 2. 3. //
FR ,& ! //
S ,& ! //
QRSS0 ,& ! //
QRG0 ,& ! //
QR ) ! //
end subroutine XAJMX end subroutine XAJMX