FEMPath.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.miniframe.solverconfig.fem;
  2. import com.miniframe.constant.MFConstant;
  3. import com.miniframe.core.exception.BusinessException;
  4. import com.miniframe.core.ext.UtilTools;
  5. import com.miniframe.model.system.AdiModeling;
  6. import com.miniframe.model.system.AdiSolverConfig;
  7. import com.miniframe.model.system.AdiSolverJob;
  8. import com.miniframe.model.system.SysFile;
  9. import com.miniframe.model.system.dao.SysFileMapper;
  10. import com.miniframe.tools.XIFileUtils;
  11. import java.io.File;
  12. import java.io.IOException;
  13. import java.nio.file.Files;
  14. import java.nio.file.Path;
  15. import java.nio.file.Paths;
  16. import java.nio.file.StandardCopyOption;
  17. import java.util.ArrayList;
  18. import java.util.Collections;
  19. import java.util.List;
  20. /**
  21. * 对执行所需要的文件进行文件夹规整已满足求解
  22. */
  23. public class FEMPath {
  24. /**
  25. *
  26. * @param pid
  27. * @param step 步数
  28. * @return
  29. */
  30. public static List<File> getStepFiles(String pid , String step) throws BusinessException {
  31. String jobPath = XIFileUtils.getRootPathStr()+ MFConstant.separator+pid;
  32. String exePath = jobPath+ MFConstant.separator+"fem";
  33. String exeOutPath = exePath+ MFConstant.separator+"data_out";
  34. File exeOutDir = new File(exeOutPath);
  35. if(!exeOutDir.exists()){
  36. throw new BusinessException("EB4000017");
  37. }
  38. List<File> fileList =new ArrayList<>();
  39. File[] files =exeOutDir.listFiles();
  40. for (File sonFile: files) {
  41. if(sonFile.getName().indexOf("dynamicResponse-transient"+step+".vtk")>-1){
  42. fileList.add(sonFile);
  43. }
  44. }
  45. return fileList;
  46. }
  47. public static List<Integer> femTeps(String pid) throws BusinessException{
  48. String jobPath = XIFileUtils.getRootPathStr()+ MFConstant.separator+pid;
  49. String exePath = jobPath+ MFConstant.separator+"fem";
  50. String exeOutPath = exePath+ MFConstant.separator+"data_out";
  51. File exeOutDir = new File(exeOutPath);
  52. if(!exeOutDir.exists()){
  53. throw new BusinessException("EB4000017");
  54. }
  55. List<Integer> steps = new ArrayList<>();
  56. File[] files =exeOutDir.listFiles();
  57. for (File sonFile: files) {
  58. if(!"dynamicResponse-transient.vtk".equals(sonFile.getName())
  59. &&sonFile.getName().indexOf("dynamicResponse-transient")>-1){
  60. String stip=sonFile.getName().replace("dynamicResponse-transient","").replace(".vtk","");
  61. steps.add(Integer.valueOf(stip));
  62. }
  63. }
  64. Collections.sort(steps);
  65. return steps;
  66. }
  67. public static void femCreatePath(AdiModeling modeling,
  68. AdiSolverConfig config,
  69. AdiSolverJob job ) throws IOException {
  70. String jobPath = XIFileUtils.getRootPathStr()+ MFConstant.separator+job.getPid();
  71. System.out.println(jobPath);
  72. String exePath = jobPath+ MFConstant.separator+"fem";
  73. String exeInPath = exePath+ MFConstant.separator+"data_in";
  74. File exeInDir = new File(exeInPath);
  75. if(!exeInDir.exists()){
  76. exeInDir.mkdirs();
  77. }
  78. String exeOutPath = exePath+ MFConstant.separator+"data_out";
  79. File exeOutDir = new File(exeOutPath);
  80. if(!exeOutDir.exists()){
  81. exeOutDir.mkdirs();
  82. }
  83. SysFileMapper fileMapper = UtilTools.getBean(SysFileMapper.class);
  84. SysFile nmlFile= fileMapper.selectByPrimaryKey(config.getNmlFile());
  85. fileMove(nmlFile,exePath+MFConstant.separator+"fem_analysis.in");
  86. // SysFile mapbcFile= fileMapper.selectByPrimaryKey(config.getMapbcFile());
  87. // fileMove(mapbcFile,exeInPath+MFConstant.separator+"fem.bdf");
  88. SysFile grid= fileMapper.selectByPrimaryKey(modeling.getFemGridFile());
  89. fileMove(grid,exeInPath+MFConstant.separator+"fem.bdf");
  90. }
  91. /**
  92. * 文件移动
  93. * @param file
  94. * @param pathStr
  95. * @throws IOException
  96. */
  97. public static void fileMove(SysFile file ,String pathStr) throws IOException {
  98. Path path = Paths.get(pathStr);
  99. SysFileMapper fileMapper = UtilTools.getBean(SysFileMapper.class);
  100. Files.move(Paths.get( XIFileUtils.getRootPathStr()+ MFConstant.separator+file.getFilepath()),
  101. path, StandardCopyOption.REPLACE_EXISTING);
  102. String fielRelativePath = XIFileUtils.getRelativizePathStr(path);
  103. file.setFilepath(fielRelativePath);
  104. file.setFilename(path.getFileName().toString());
  105. fileMapper.updateByPrimaryKey(file);
  106. }
  107. }