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",
"projectName": "FortranWebApi",
"outputDirectory": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\\u8F93\u51FA\u5E93\\\u65B0\u5B89\u6C5F\u6A21\u578B",
"cmbLanguage": "Fortran",
"parameters": [
{
"name": "N",
@ -21,9 +22,105 @@
"isSelected": true
},
{
"name": "PAR",
"name": "WUM",
"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",
"description": "",
"isSelected": true

Binary file not shown.

View File

@ -1,60 +1,74 @@
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 ,& ! //
WUM ,& ! wum //
W1 ,& ! wl //
WDM ,& ! wdm //
KC ,& !KC //
C ,& !c //
B ,& !b //
IMP1 ,& !imp1 //
SM ,& !sm //
EX ,& !ex //
KG ,& !kg //
KSS ,& !kss //
KKG ,& !kkg //
KKSS ,& !kkss //
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::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 !
!vb程序中未声明的变量
INTEGER::I ! //
INTEGER::J ! //
INTEGER::ICHECK !
!vb程序中未声明的变量
INTEGER::I ! //
INTEGER::J ! //
INTEGER::ICHECK !
INTEGER::NN
REAL(KIND=8),PARAMETER::C5=5.000000000
@ -89,30 +103,13 @@ SUBROUTINE SUB_XAJMX( N ,& ! 单元出流数组大小 //输入变量
REAL::QRG
REAL::QTR
!/////////////////////////////////////////////////////////////////////////////////////
!/////////////////////////////////////////////////////////////////////////////////////
!/////////////////////////////////////////////////////////////////////////////////////
!/////////////////////////////////////////////////////////////////////////////////////
!
!
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
QR(I) = 0.0
@ -126,8 +123,7 @@ 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
@ -145,11 +141,11 @@ SUBROUTINE SUB_XAJMX( N ,& ! 单元出流数组大小 //输入变量
END IF
EP(I) = EP(I) * KC
WM0 = WM(1) + WM(2) + WM(3)
WM0 = WUM + W1 + WDM
W0 = W(1) + W(2) + W(3)
PE = P(I) - EP(I)
!
!
R = 0.0
RIMP = 0.0
@ -163,15 +159,13 @@ 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
@ -192,9 +186,9 @@ SUBROUTINE SUB_XAJMX( N ,& ! 单元出流数组大小 //输入变量
ELSE
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(3) = 0.0
@ -218,15 +212,15 @@ SUBROUTINE SUB_XAJMX( N ,& ! 单元出流数组大小 //输入变量
W(2) = W(2) - E(2)
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(1) = WM(1)
W(2) = W(1) - WUM + W(2)
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(2) = WM(2)
W(3) = W(3) + W(2) - W1
W(2) = W1
END IF
@ -247,10 +241,9 @@ 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
@ -295,8 +288,7 @@ 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

View File

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