This commit is contained in:
tp 2025-06-12 13:41:05 +08:00
parent 1613ff0bf3
commit 86977cdc23
9 changed files with 368 additions and 154 deletions

View File

@ -1,6 +1,10 @@
# ===== 第一阶段:构建阶段 ===== # ===== 第一阶段:构建阶段 =====
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
# 配置 NuGet 使用国内镜像源
RUN dotnet nuget add source https://mirrors.cloud.tencent.com/nuget/ \
&& dotnet nuget disable source nuget.org
# 配置 apt-get 使用 apt-cacher-ng 作为代理 # 配置 apt-get 使用 apt-cacher-ng 作为代理
RUN echo 'Acquire::http::Proxy "http://192.168.1.140:3142";' > /etc/apt/apt.conf.d/01proxy RUN echo 'Acquire::http::Proxy "http://192.168.1.140:3142";' > /etc/apt/apt.conf.d/01proxy

View File

@ -1,9 +1,9 @@
{ {
"fortranSourceFile": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\dll\\\u9A6C\u65AF\u4EAC\u8DDF\u6A21\u578B\\MSJGMX\\MSJGMX\\MSJGMX - \u526F\u672C.f90", "fortranSourceFile": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\dll\\\u9A6C\u65AF\u4EAC\u6839-\u65B0\u5B89\u6C5F\u6A21\u578B\\ceshi\\Console1\\Console1\\MSJGMX - \u526F\u672C.f90",
"fortranFunctionName": "MSJGMX", "fortranFunctionName": "MSJGMX",
"projectName": "FortranWebApi", "projectName": "FortranWebApi",
"outputDirectory": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\\u8F93\u51FA\u5E93\\\u9A6C\u65AF\u4EAC\u8DDF\u6A21\u578B", "outputDirectory": "D:\\\u5DE5\u4F5C2025\\\u7B97\u6CD5\u5E73\u53F0\\\u8F93\u51FA\u5E93\\\u9A6C\u65AF\u4EAC\u6839\u65B0\u5B89\u6C5F\u6A21\u578B",
"cmbLanguage": "", "cmbLanguage": "Fortran",
"parameters": [ "parameters": [
{ {
"name": "FILELEN", "name": "FILELEN",
@ -30,9 +30,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,28 +1,39 @@
subroutine MSJGMX( FILELEN ,& subroutine MSJGMX( FILELEN ,&
NODE ,& ! // NODE ,& ! //
M ,& ! // M ,& ! //
PAR ,& ! // WUM ,& ! wum //
NAREA ,& ! // W1 ,& ! wl //
AREA ,& ! // WDM ,& ! wdm //
UH ,& ! 线 // KC ,& !KC //
DT ,& ! // C ,& !c //
P ,& ! // B ,& !b //
EP ,& ! // IMP1 ,& !imp1 //
W ,& ! 1. 2. 3. // SM ,& !sm //
FR ,& ! // EX ,& !ex //
S ,& ! // KG ,& !kg //
QRSS0 ,& ! // KSS ,& !kss //
QRG0 ,& ! // KKG ,& !kkg //
Q20 ,& ! // KKSS ,& !kkss //
X ,& ! // NAREA ,& ! //
K ,& ! // AREA ,& ! //
DETAT ,& ! // UH ,& ! 线 //
C0 ,& ! // DT ,& ! //
C1 ,& ! // P ,& ! //
C2 ,& ! // EP ,& ! //
QOUT )& ! // W ,& ! 1. 2. 3. //
BIND(C, NAME="MSJGMX") FR ,& ! //
S ,& ! //
QRSS0 ,& ! //
QRG0 ,& ! //
Q20 ,& ! //
X ,& ! //
K ,& ! //
DETAT ,& ! //
C0 ,& ! //
C1 ,& ! //
C2 ,& ! //
QOUT )& ! //
BIND(C, NAME="MSJGMX")
! Expose subroutine MSJGMX to users of this DLL ! Expose subroutine MSJGMX to users of this DLL
!DEC$ ATTRIBUTES DLLEXPORT::MSJGMX !DEC$ ATTRIBUTES DLLEXPORT::MSJGMX
@ -44,48 +55,74 @@ subroutine MSJGMX( FILELEN ,&
INTEGER::NODE ! INTEGER::NODE !
INTEGER::M , I ! INTEGER::M , I !
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
INTEGER::NAREA ! REAL::WUM !wum
REAL::AREA(NAREA) ! REAL::W1 !wl
REAL::UH(M) ! 线 REAL::WDM ! wdm
REAL::DT ! REAL::KC !
REAL::P(NAREA,NODE) ! REAL::C !
REAL::EP(NAREA,NODE) ! REAL::B !
REAL::W(3) ! 1. 2. 3. REAL::IMP1 !
REAL::FR ! REAL::SM !
REAL::S ! REAL::EX !
REAL::QRSS0 ! REAL::KG !
REAL::QRG0 ! REAL::KSS !
REAL::KKG !
REAL::KKSS !
INTEGER::NAREA !
REAL::AREA(NAREA) !
REAL::UH(M) ! 线
REAL::DT !
REAL::P(NAREA,NODE) !
REAL::EP(NAREA,NODE) !
REAL::W(3) ! 1. 2. 3.
REAL::FR !
REAL::S !
REAL::QRSS0 !
REAL::QRG0 !
REAL::Q20(NAREA) REAL::Q20(NAREA)
REAL::QOUT(NAREA) REAL::QOUT(NODE)
CALL XAJ( FILELEN ,& CALL XAJ( FILELEN ,&
NODE ,& ! // NODE ,& ! //
M ,& ! // M ,& ! //
PAR ,& ! // WUM ,& ! wum //
NAREA ,& ! // W1 ,& ! wl //
AREA ,& ! // WDM ,& ! wdm //
UH ,& ! 线 // KC ,& !KC //
DT ,& ! // C ,& !c //
P ,& ! // B ,& !b //
EP ,& ! // IMP1 ,& !imp1 //
W ,& ! 1. 2. 3. // SM ,& !sm //
FR ,& ! // EX ,& !ex //
S ,& ! // KG ,& !kg //
QRSS0 ,& ! // KSS ,& !kss //
QRG0 ,& ! // KKG ,& !kkg //
Q20 ,& ! // KKSS ,& !kkss //
X ,& ! // NAREA ,& ! //
K ,& ! // AREA ,& ! //
DETAT ,& ! // UH ,& ! 线 //
C0 ,& ! // DT ,& ! //
C1 ,& ! // P ,& ! //
C2 ,& ! // EP ,& ! //
QOUT ) ! // W ,& ! 1. 2. 3. //
FR ,& ! //
S ,& ! //
QRSS0 ,& ! //
QRG0 ,& ! //
Q20 ,& ! //
X ,& ! //
K ,& ! //
DETAT ,& ! //
C0 ,& ! //
C1 ,& ! //
C2 ,& ! //
QOUT ) ! //
end subroutine MSJGMX end subroutine MSJGMX

View File

@ -11,17 +11,17 @@
! PURPOSE: Entry point for the console application. ! PURPOSE: Entry point for the console application.
! !
!**************************************************************************** !****************************************************************************
SUBROUTINE Mc_method( NFILENAME ,& ! // SUBROUTINE Mc_method( NFILENAME ,& ! //
N ,& ! // N ,& ! //
Q1 ,& ! // Q1 ,& ! //
Q20 ,& ! // Q20 ,& ! //
X ,& ! // X ,& ! //
K ,& ! // K ,& ! //
DETAT ,& ! // DETAT ,& ! //
C0 ,& ! // C0 ,& ! //
C1 ,& ! // C1 ,& ! //
C2 ,& ! // C2 ,& ! //
Q2 ) ! // Q2 ) ! //
INTEGER::NFILENAME INTEGER::NFILENAME
CHARACTER(LEN = NFILENAME)::FILENAME CHARACTER(LEN = NFILENAME)::FILENAME

View File

@ -1,26 +1,38 @@
SUBROUTINE XAJ(FILELEN ,& SUBROUTINE XAJ( FILELEN ,&
NODE ,& ! // NODE ,& ! //
M ,& ! // M ,& ! //
PAR ,& ! // WUM ,& ! wum //
NAREA ,& ! // W1 ,& ! wl //
AREA ,& ! // WDM ,& ! wdm //
UH ,& ! 线 // KC ,& !KC //
DT ,& ! // C ,& !c //
P ,& ! // B ,& !b //
EP ,& ! // IMP1 ,& !imp1 //
W ,& ! 1. 2. 3. // SM ,& !sm //
FR ,& ! // EX ,& !ex //
S ,& ! // KG ,& !kg //
QRSS0 ,& ! // KSS ,& !kss //
QRG0 ,& ! // KKG ,& !kkg //
Q20 ,& ! // KKSS ,& !kkss //
X ,& ! // NAREA ,& ! //
K ,& ! // AREA ,& ! //
DETAT ,& ! // UH ,& ! 线 //
C0 ,& ! // DT ,& ! //
C1 ,& ! // P ,& ! //
C2 ,& ! // EP ,& ! //
QOUT ) ! // W ,& ! 1. 2. 3. //
FR ,& ! //
S ,& ! //
QRSS0 ,& ! //
QRG0 ,& ! //
Q20 ,& ! //
X ,& ! //
K ,& ! //
DETAT ,& ! //
C0 ,& ! //
C1 ,& ! //
C2 ,& ! //
QOUT ) ! //
IMPLICIT NONE IMPLICIT NONE
@ -42,6 +54,21 @@ SUBROUTINE XAJ(FILELEN ,&
! 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::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::NAREA ! // integer::NAREA ! //
REAL::AREA(NAREA) ! REAL::AREA(NAREA) !
REAL::Q1(NAREA,NODE) REAL::Q1(NAREA,NODE)
@ -69,7 +96,19 @@ SUBROUTINE XAJ(FILELEN ,&
CALL XAJMX( FILELEN ,& CALL XAJMX( FILELEN ,&
NODE ,& ! // NODE ,& ! //
M ,& ! // M ,& ! //
PAR ,& ! // 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(I) ,& ! // AREA(I) ,& ! //
UH ,& ! 线 // UH ,& ! 线 //
DT ,& ! // DT ,& ! //

View File

@ -1,7 +1,19 @@
SUBROUTINE XAJMX( FILELEN ,& SUBROUTINE XAJMX( FILELEN ,&
N ,& ! // N ,& ! //
M ,& ! // M ,& ! //
PAR ,& ! // 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 ,& ! // AREA ,& ! //
UH ,& ! 线 // UH ,& ! 线 //
DT ,& ! // DT ,& ! //
@ -24,6 +36,21 @@ SUBROUTINE XAJMX( FILELEN ,&
! 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::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 !
REAL::AREA ! REAL::AREA !
REAL::UH(M) ! 线 REAL::UH(M) ! 线
REAL::DT ! REAL::DT !
@ -41,16 +68,6 @@ SUBROUTINE XAJMX( FILELEN ,&
REAL::KGD REAL::KGD
REAL::E(3) REAL::E(3)
REAL::WM(3) REAL::WM(3)
REAL::KC !
REAL::C !
REAL::B !
REAL::IMP1 !
REAL::SM !
REAL::EX !
REAL::KG !
REAL::KSS !
REAL::KKG !
REAL::KKSS !
!vb程序中未声明的变量 !vb程序中未声明的变量
INTEGER::I ! // INTEGER::I ! //
@ -115,18 +132,8 @@ SUBROUTINE XAJMX( FILELEN ,&
KGD = 0.0 KGD = 0.0
do i = 1,3 do i = 1,3
E(I)=0.0 E(I)=0.0
WM(I) =0.0
END DO END DO
KC = 0.0
C = 0.0
B = 0.0
IMP1 = 0.0
SM = 0.0
EX = 0.0
KG = 0.0
KSS = 0.0
KKG = 0.0
KKSS = 0.0
U = 0.0 U = 0.0
CI = 0.0 CI = 0.0
CG = 0.0 CG = 0.0
@ -161,23 +168,6 @@ SUBROUTINE XAJMX( FILELEN ,&
! !
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
@ -210,7 +200,7 @@ SUBROUTINE XAJMX( FILELEN ,&
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)
@ -256,7 +246,7 @@ SUBROUTINE XAJMX( FILELEN ,&
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 * WM(2))) THEN
@ -282,15 +272,15 @@ SUBROUTINE XAJMX( FILELEN ,&
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

View File

@ -9,7 +9,19 @@ Content-Type: application/json
"text": "{\"FuncName\":\"calculate_main\",\"ClassName\":\"\",\"Par\":[ {"Name":"FILELEN","DataType":"0","ArrayType":"0","IsOut":"2","Data":0}, "text": "{\"FuncName\":\"calculate_main\",\"ClassName\":\"\",\"Par\":[ {"Name":"FILELEN","DataType":"0","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"NODE","DataType":"0","ArrayType":"0","IsOut":"2","Data":0}, {"Name":"NODE","DataType":"0","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"M","DataType":"0","ArrayType":"0","IsOut":"2","Data":0}, {"Name":"M","DataType":"0","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"PAR","DataType":"1","ArrayType":"1","IsOut":"2","Data":[]}, {"Name":"WUM","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"W1","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"WDM","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"KC","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"C","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"B","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"IMP1","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"SM","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"EX","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"KG","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"KSS","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"KKG","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"KKSS","DataType":"1","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"NAREA","DataType":"0","ArrayType":"0","IsOut":"2","Data":0}, {"Name":"NAREA","DataType":"0","ArrayType":"0","IsOut":"2","Data":0},
{"Name":"AREA","DataType":"1","ArrayType":"1","IsOut":"2","Data":[]}, {"Name":"AREA","DataType":"1","ArrayType":"1","IsOut":"2","Data":[]},
{"Name":"UH","DataType":"1","ArrayType":"1","IsOut":"2","Data":[]}, {"Name":"UH","DataType":"1","ArrayType":"1","IsOut":"2","Data":[]},

View File

@ -37,7 +37,19 @@ namespace FortranWebApi.Services
ref int FILELEN, ref int FILELEN,
ref int NODE, ref int NODE,
ref int M, ref int M,
float[] PAR, ref float WUM,
ref float W1,
ref float WDM,
ref float KC,
ref float C,
ref float B,
ref float IMP1,
ref float SM,
ref float EX,
ref float KG,
ref float KSS,
ref float KKG,
ref float KKSS,
ref int NAREA, ref int NAREA,
float[] AREA, float[] AREA,
float[] UH, float[] UH,
@ -85,7 +97,19 @@ namespace FortranWebApi.Services
int FILELEN = GetIntParameter(parameters, "FILELEN"); int FILELEN = GetIntParameter(parameters, "FILELEN");
int NODE = GetIntParameter(parameters, "NODE"); int NODE = GetIntParameter(parameters, "NODE");
int M = GetIntParameter(parameters, "M"); int M = GetIntParameter(parameters, "M");
float[] PAR = GetFloatArrayParameter(parameters, "PAR"); float WUM = GetFloatParameter(parameters, "WUM");
float W1 = GetFloatParameter(parameters, "W1");
float WDM = GetFloatParameter(parameters, "WDM");
float KC = GetFloatParameter(parameters, "KC");
float C = GetFloatParameter(parameters, "C");
float B = GetFloatParameter(parameters, "B");
float IMP1 = GetFloatParameter(parameters, "IMP1");
float SM = GetFloatParameter(parameters, "SM");
float EX = GetFloatParameter(parameters, "EX");
float KG = GetFloatParameter(parameters, "KG");
float KSS = GetFloatParameter(parameters, "KSS");
float KKG = GetFloatParameter(parameters, "KKG");
float KKSS = GetFloatParameter(parameters, "KKSS");
int NAREA = GetIntParameter(parameters, "NAREA"); int NAREA = GetIntParameter(parameters, "NAREA");
float[] AREA = GetFloatArrayParameter(parameters, "AREA"); float[] AREA = GetFloatArrayParameter(parameters, "AREA");
float[] UH = GetFloatArrayParameter(parameters, "UH"); float[] UH = GetFloatArrayParameter(parameters, "UH");
@ -115,7 +139,19 @@ namespace FortranWebApi.Services
ref FILELEN, ref FILELEN,
ref NODE, ref NODE,
ref M, ref M,
PAR, ref WUM,
ref W1,
ref WDM,
ref KC,
ref C,
ref B,
ref IMP1,
ref SM,
ref EX,
ref KG,
ref KSS,
ref KKG,
ref KKSS,
ref NAREA, ref NAREA,
AREA, AREA,
UH, UH,