huangxingxing 1 rok temu
rodzic
commit
f53e25805a

+ 31 - 2
src/main/java/com/miniframe/bisiness/system/D00008Service.java

@@ -31,13 +31,42 @@ public class D00008Service extends D00008BaseModel implements ExecProcessFlow {
 			TemplateGenerator.createFireControl(aid);
 			TemplateGenerator.createFireRunsh(aid);
 			TemplateGenerator.createFireInit(aid);
-			exeFier(aid);
+			exeFire(aid);
+		}
+		if(stype.equals("Water")){
+			TemplateGenerator.createWaterControl(aid);
+			TemplateGenerator.createWaterRunsh(aid);
+			TemplateGenerator.createWaterInit(aid);
+			exeWater(aid);
 		}
 
 	}
 	//异步执行
 	@SneakyThrows
-	public void exeFier(Integer aid) throws Exception{
+	public void exeWater(Integer aid) throws Exception{
+		CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()->{
+			try {
+				Runtime runtime = Runtime.getRuntime();
+				Process p =null;
+				p= runtime.exec("sh "+TemplateGenerator.BPATH+"/"+aid+"/water"+"/"+"runWater.sh");
+				InputStream fis = p.getInputStream();
+				InputStreamReader isr = new InputStreamReader(fis);
+				BufferedReader br = new BufferedReader(isr);
+				String line = null;
+				while ((line = br.readLine()) != null) {
+					System.out.println(line);
+				}
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			return null;
+		});
+
+	}
+
+	//异步执行
+	@SneakyThrows
+	public void exeFire(Integer aid) throws Exception{
 		CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()->{
 			try {
 			Runtime runtime = Runtime.getRuntime();

+ 108 - 6
src/main/java/com/miniframe/template/TemplateGenerator.java

@@ -22,6 +22,113 @@ import java.util.Map;
 public class TemplateGenerator {
     public static final String BPATH="/cephfs/disaster";
 
+    public static void createWaterControl(Integer aid) throws IOException, TemplateException {
+        Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
+        // 设置模板所在目录
+        cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
+        // 获取模板对象
+        Template template = cfg.getTemplate("waterControl.ftl");
+        // 定义数据模型(Map)
+        Map<String, Object> dataModel = new HashMap<>();
+        //几何文件路径
+        dataModel.put("geoFilePath", "/home/disaster/Water/Geometry");
+        //initFile 文件路径
+        dataModel.put("initFilePath", BPATH+"/"+aid+"/water"+"/"+"water.init");
+
+        //midPath
+        dataModel.put("midPath", BPATH+"/"+aid+"/water"+"/mid");
+        //outPath
+        dataModel.put("outPath", BPATH+"/"+aid+"/water"+"/out");
+
+
+        // 将数据模型传入模板进行处理
+        StringWriter writer = new StringWriter();
+        template.process(dataModel, writer);
+        XIFileUtils.mkdir(BPATH);
+        XIFileUtils.mkdir(BPATH+"/"+aid);
+        XIFileUtils.mkdir(BPATH+"/"+aid+"/water");
+        XIFileUtils.mkdir(BPATH+"/"+aid+"/water"+"/mid");
+        XIFileUtils.mkdir(BPATH+"/"+aid+"/water"+"/out");
+
+        FileWriter fileWriter =new FileWriter(BPATH+"/"+aid+"/"+"/water"+"/water.control");
+        fileWriter.write(writer.toString());
+        fileWriter.close();
+    }
+
+    public static void createWaterRunsh(Integer aid) throws IOException, TemplateException {
+        Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
+        // 设置模板所在目录
+        cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
+        // 获取模板对象
+        Template template = cfg.getTemplate("waterRunsh.ftl");
+        // 定义数据模型(Map)
+        Map<String, Object> dataModel = new HashMap<>();
+        //几何文件路径
+        dataModel.put("waterControlPath", BPATH+"/"+aid+"/water"+"/water.control");
+        // 将数据模型传入模板进行处理
+        StringWriter writer = new StringWriter();
+        template.process(dataModel, writer);
+        FileWriter fileWriter =new FileWriter(BPATH+"/"+aid+"/water"+"/"+"runWater.sh");
+        fileWriter.write(writer.toString());
+        fileWriter.close();
+    }
+    public static void createWaterInit(Integer aid) throws IOException, TemplateException {
+        FireInitVo vo =new FireInitVo();
+
+        DNodeValMapper dnvm= UtilTools.getBean(DNodeValMapper.class);
+        DNodeValSQLBuilder dns = new DNodeValSQLBuilder();
+        DNodeValSQLBuilder.Criteria dnsc= dns.createCriteria();
+        dnsc.andAidEqualTo(aid);
+        List<DNodeVal> nodeVals=dnvm.selectByExample(dns);
+        vo.setNodeVals(nodeVals);
+
+        DSourceMapper dsm =UtilTools.getBean(DSourceMapper.class);
+        DSourceSQLBuilder dss= new DSourceSQLBuilder();
+        DSourceSQLBuilder.Criteria dssc = dss.createCriteria();
+        dssc.andAidEqualTo(aid);
+        dssc.andSTypeEqualTo("Water");
+        List<DSource>  dources =dsm.selectByExample(dss);
+
+
+        DSourceValMapper dsvm =UtilTools.getBean(DSourceValMapper.class);
+        DSourceValSQLBuilder dsvs =new DSourceValSQLBuilder();
+
+        List<DSourceVo>  dourceVos = new ArrayList<>();
+        for (DSource ds:dources) {
+            DSourceValSQLBuilder.Criteria dsvc = dsvs.createCriteria();
+            dsvc.andSidEqualTo(ds.getId());
+            List<DSourceVal> dSourceVals = dsvm.selectByExample(dsvs);
+
+            DSourceVo dsourcevo =new DSourceVo();
+            dsourcevo.setDsource(ds);
+            dsourcevo.setDsourceVals(dSourceVals);
+            dourceVos.add(dsourcevo);
+            dsvs.clear();
+        }
+        vo.setDourceVos(dourceVos);
+
+
+        Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
+        // 设置模板所在目录
+        cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
+        // 获取模板对象
+        Template template = cfg.getTemplate("waterInit.ftl");
+        // 定义数据模型(Map)
+        Map<String, Object> dataModel = new HashMap<>();
+        //几何文件路径
+        dataModel.put("vo", vo);
+        // 将数据模型传入模板进行处理
+        StringWriter writer = new StringWriter();
+        template.process(dataModel, writer);
+        // 输出结果到控制台或保存为文件
+        System.out.println(writer.toString());
+
+        FileWriter fileWriter =new FileWriter(BPATH+"/"+aid+"/water"+"/"+"water.init");
+        fileWriter.write(writer.toString());
+        fileWriter.close();
+    }
+
+
     public static void createFireControl(Integer aid) throws IOException, TemplateException {
         Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
         // 设置模板所在目录
@@ -137,11 +244,6 @@ public class TemplateGenerator {
     }
 
     public static void main(String[] args) throws Exception {
-
-//        TemplateGenerator.createFireControl(5);
-        XIFileUtils.mkdir(BPATH);
-        XIFileUtils.mkdir(BPATH+"/"+5);
-        XIFileUtils.mkdir(BPATH+"/"+5+"/mid");
-        XIFileUtils.mkdir(BPATH+"/"+5+"/out");
+        TemplateGenerator.createWaterRunsh(5);
     }
 }

+ 10 - 0
src/main/resources/templates/waterControl.ftl

@@ -0,0 +1,10 @@
+geoFile : ${geoFilePath}
+initFile : ${initFilePath}
+midPath : ${midPath}
+outPath : ${outPath}
+totaltime: 7200
+report step: 60
+interactionstep : 300
+dt : 5
+dx : 5
+

+ 19 - 0
src/main/resources/templates/waterInit.ftl

@@ -0,0 +1,19 @@
+<#setting number_format="0.##">
+#nodes
+<#list vo.nodeVals as nval>
+${nval.nname},${nval.ntype} ,${nval.val1} ,${nval.val2} ,${nval.val3} ,${nval.val4}
+</#list>
+#end
+#boundaries Inlet
+nodes33 ,massflow ,10,300,0.0,0.0
+nodes35 ,Pressure ,10,300,0.0,0.0
+nodes36 ,pressure ,10,300,0.0,0.0
+#end
+#waters
+<#list vo.dourceVos as d>
+water ${d.dsource.pname} ${d.dsource.pname} ${d.dsource.site} ${d.dsourceVals?size}
+<#list d.dsourceVals as dv>
+${dv.timeline}  ${dv.val1}  ${dv.val2}  ${dv.val3}
+</#list>
+</#list>
+#end

+ 5 - 0
src/main/resources/templates/waterRunsh.ftl

@@ -0,0 +1,5 @@
+cd /home/disaster/Water
+./pre   ${waterControlPath}
+./Water ${waterControlPath}
+./Water ${waterControlPath} restart
+./Water ${waterControlPath} restart

+ 6 - 3
src/test/java/com/miniframe/ApplicationTests.java

@@ -16,9 +16,12 @@ class ApplicationTests {
 
     @Test
     void contextLoads() throws IOException, TemplateException {
-        TemplateGenerator.createFireControl(5);
-        TemplateGenerator.createFireRunsh(5);
-        TemplateGenerator.createFireInit(5);
+//        TemplateGenerator.createFireControl(5);
+//        TemplateGenerator.createFireRunsh(5);
+//        TemplateGenerator.createFireInit(5);
+        TemplateGenerator.createWaterControl(5);
+        TemplateGenerator.createWaterRunsh(5);
+        TemplateGenerator.createWaterInit(5);
     }
 
     @Test