diff --git a/Fortran/1.json b/Fortran/1.json index efd557d..c80519e 100644 --- a/Fortran/1.json +++ b/Fortran/1.json @@ -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 diff --git a/Fortran/1.xlsx b/Fortran/1.xlsx index abe21a4..5b820c2 100644 Binary files a/Fortran/1.xlsx and b/Fortran/1.xlsx differ diff --git a/Fortran/SUB_XAJMX.f90 b/Fortran/SUB_XAJMX.f90 index 033ccb4..3ad3cdc 100644 --- a/Fortran/SUB_XAJMX.f90 +++ b/Fortran/SUB_XAJMX.f90 @@ -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 ! vbC5˫ȳ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 diff --git a/Fortran/XAJMX.f90 b/Fortran/XAJMX.f90 index 99c429e..e02399e 100644 --- a/Fortran/XAJMX.f90 +++ b/Fortran/XAJMX.f90 @@ -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