Jelajahi Sumber

adflow 求解

huangxingxing 5 bulan lalu
induk
melakukan
e5278ce578

+ 19 - 13
src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java

@@ -155,7 +155,11 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 		SurromdaoFileListener t= new SurromdaoFileListener(pid);
 		surrMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0", t);
 		surrMonitor.start();
-//
+		FileMonitor crmMonitor = new FileMonitor(1000);
+		CRMFileListener crml = new CRMFileListener(pid);
+		crmMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0/ADflow/results/aerodynamic", crml);
+		crmMonitor.start();
+		//
 //		FileMonitor aifoilMonitor = new FileMonitor(1000);
 //		AirfoilFileListener airfoilFileListener= new AirfoilFileListener(pid);
 //		aifoilMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0/xfoil", airfoilFileListener);
@@ -175,30 +179,30 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 			DockerExe.getDockerLogs(pid,new ResultCallback.Adapter<Frame>() {
 				@Override
 				public void onNext(Frame frame) {
-					if(con[0] <100){
-						line[0]+=new String(frame.getPayload());
-						con[0]++;
-					}else{
-						LogService.addLog(pid, line[0]);
-						line[0]="";
-						con[0] =0;
-					}
-					LogService.addLog(pid, new String(frame.getPayload()));
-					System.out.print(new String(frame.getPayload()));
+//					if(con[0] <100){
+//						line[0]+=new String(frame.getPayload());
+//						con[0]++;
+//					}else{
+////						LogService.addLog(pid, line[0]);
+//						line[0]="";
+//						con[0] =0;
+//					}
+//					LogService.addLog(pid, new String(frame.getPayload()));
+//					System.out.print(new String(frame.getPayload()));
 					super.onNext(frame);
 				}
 
 				@Override
 				public void onError(Throwable throwable) {
 					System.err.println("日志获取失败");
-					LogService.addLog(pid, line[0]);
+//					LogService.addLog(pid, line[0]);
 					throwable.printStackTrace();
 					super.onError(throwable);
 				}
 				@Override
 				public void onComplete() {
 					System.out.println("日志获取完成");
-					LogService.addLog(pid, line[0]);
+//					LogService.addLog(pid, line[0]);
 					super.onComplete();
 				}
 			});
@@ -212,6 +216,8 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 			try {
 				surrMonitor.stop();
 				SurromdaoFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/surromdao_history_all.dat"),pid);
+				crmMonitor.stop();
+				CRMFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/ADflow/results/aerodynamic/CRM_final_000_slices.dat"),pid);
 //				aifoilMonitor.stop();
 //				AirfoilFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/xfoil/airfoil.dat"),pid);
 //				cpMonitor.stop();

+ 41 - 0
src/main/java/com/miniframe/tools/file/CRMFileListener.java

@@ -0,0 +1,41 @@
+package com.miniframe.tools.file;
+
+import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
+
+import java.io.File;
+
+public class CRMFileListener extends FileAlterationListenerAdaptor {
+    private String filename ="CRM_final_000_slices.dat";
+    private String pid ;
+    private String line1;
+
+
+    public CRMFileListener(String pid) {
+        this.pid = pid;
+    }
+
+    @Override
+    public void onFileChange(File file) {
+        String compressedPath = file.getAbsolutePath();
+        if(filename.equals(file.getName())){
+            CRMFileRead.readFile(file,pid);
+        }
+    }
+
+
+
+    @Override
+    public void onFileCreate(File file) {
+        String compressedPath = file.getAbsolutePath();
+        if(filename.equals(file.getName())){
+
+        }
+    }
+    public String getFilename() {
+        return filename;
+    }
+
+    public void setFilename(String filename) {
+        this.filename = filename;
+    }
+}

+ 87 - 0
src/main/java/com/miniframe/tools/file/CRMFileRead.java

@@ -0,0 +1,87 @@
+package com.miniframe.tools.file;
+
+import com.google.gson.Gson;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.model.mdo.MdoProComval;
+import com.miniframe.model.mdo.MdoProComvalSQLBuilder;
+import com.miniframe.model.mdo.dao.MdoProComvalMapper;
+import com.miniframe.websocket.WebsocketEndPoint;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.List;
+
+public class CRMFileRead {
+
+    public static void readFile(File file, String pid) {
+        String line1="";
+        MdoProComvalMapper comvalDao = UtilTools.getBean(MdoProComvalMapper.class);
+        MdoProComvalSQLBuilder sb =new MdoProComvalSQLBuilder();
+        MdoProComvalSQLBuilder.Criteria sc = sb.createCriteria();
+        sc.andPidEqualTo(pid);
+        sc.andTypeEqualTo(2);
+        sb.setOrderByClause("step asc");
+        List<MdoProComval> comvals =comvalDao.selectByExample(sb);
+        int con =0;
+        if(comvals!=null||!comvals.isEmpty()){
+            con=comvals.size();
+        }
+        int i= 0;
+        String line;
+        // 使用try-with-resources语句确保资源被正确关闭
+        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+            int size=0;
+            // 逐行读取,直到文件末尾
+            while ((line = br.readLine()) != null) {
+                line=line.trim().replaceAll("\\s+"," ");//替换多个空格为一个空格
+                if(line.startsWith("Zone")||line.startsWith("Title")){
+                    continue;
+                }
+                if(line.startsWith("Variables")){
+//                    line=line.replace("\"","");
+//                    line=line.replace("Variables =","").trim();
+                    continue;
+                }
+                if(line.startsWith("Nodes")){
+//                    line=line.replace("Nodes = ","").trim();
+                    size =Integer.valueOf(line.split(" ")[0]);
+                    continue;
+                }
+                if(i>con && i<size){
+                    String tvals=line.trim().replaceAll("\\s+"," ");//替换多个空格为一个空格
+                    String[] vals = tvals.split(" ");
+                    MdoProComval comval =new MdoProComval();
+                    comval.setId(UtilTools.getUUid());
+                    comval.setPid(pid);
+                    comval.setStep(i);
+                    comval.setVars("v1 v2");
+                    comval.setVals(vals[0]+" "+vals[1]);
+                    comval.setType(2);//"1-列表数据 2-几何数据 3-压力数据"
+                    comvalDao.insert(comval);
+                    WebsocketEndPoint webs =  (WebsocketEndPoint) UtilTools.getBean("websocketEndPoint");
+                    Gson gson = new Gson();
+                    webs.sendMessageToUser(String.valueOf(pid),gson.toJson(comval));
+
+                    MdoProComval comval2 =new MdoProComval();
+                    comval2.setId(UtilTools.getUUid());
+                    comval2.setPid(pid);
+                    comval2.setStep(i);
+                    comval2.setVars("v1 v2");
+                    comval2.setVals(vals[0]+" "+vals[9]);
+                    comval2.setType(3);//"1-列表数据 2-几何数据 3-压力数据"
+                    comvalDao.insert(comval2);
+
+                    webs.sendMessageToUser(String.valueOf(pid),gson.toJson(comval2));
+                    i++;
+                }
+
+
+            }
+        } catch (IOException e) {
+            // 异常处理
+            e.printStackTrace();
+        }
+    }
+}