diff --git a/.gitignore b/.gitignore index 3bc6c04..da560f3 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,5 @@ /eLamX1Import/nbproject/private/ /ReducedInput/nbproject/private/ /ReducedInput/build/ +/sis-jhdf5-batteries_included/build/ +/HDF5BatchrunOutput/build/ diff --git a/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/genfiles.properties b/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/genfiles.properties index 83b01e0..958e66b 100644 --- a/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/genfiles.properties +++ b/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=9b43c779 +build.xml.data.CRC32=0a54973b build.xml.script.CRC32=45c01e36 -build.xml.stylesheet.CRC32=15ca8a54@2.95 +build.xml.stylesheet.CRC32=15ca8a54@2.96 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=9b43c779 +nbproject/build-impl.xml.data.CRC32=0a54973b nbproject/build-impl.xml.script.CRC32=efe92994 -nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.95 +nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.96 diff --git a/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/project.xml b/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/project.xml index a0e61f2..e6c380a 100644 --- a/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/project.xml +++ b/Classical_Laminated_Plate_Theory_Plate_UI/nbproject/project.xml @@ -6,6 +6,14 @@ de.elamx.clt.plateui + + ch.systemsx.cisd.hdf5 + + + + 1.0 + + com.ardor3d diff --git a/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingBatchRunServiceImpl.java b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingBatchRunServiceImpl.java index d549271..55891f3 100644 --- a/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingBatchRunServiceImpl.java +++ b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingBatchRunServiceImpl.java @@ -25,6 +25,7 @@ */ package de.elamx.clt.plateui.buckling.batchrun; +import ch.systemsx.cisd.hdf5.IHDF5Writer; import de.elamx.clt.CLT_Laminate; import de.elamx.clt.plate.Buckling; import de.elamx.clt.plate.BucklingResult; @@ -46,7 +47,7 @@ public class BucklingBatchRunServiceImpl implements BatchRunService{ @Override - public void performBatchTasksAndOutput(Laminat laminate, PrintStream ps, int outputType) { + public void performBatchTasksAndOutput(Laminat laminate, PrintStream ps, IHDF5Writer hdf5writer, int outputType) { Collection col = laminate.getLookup().lookupAll(BucklingModuleData.class); if (col.isEmpty()){ return; @@ -58,10 +59,19 @@ public void performBatchTasksAndOutput(Laminat laminate, PrintStream ps, int out List writerServices = new ArrayList<>(Lookup.getDefault().lookupAll(BucklingOutputWriterService.class)); BucklingOutputWriterService outputWriter = writerServices.get(Math.min(Math.max(outputType, 0),writerServices.size()-1)); - + + HDF5BucklingOutputWriterService hdf5OutputWriter = null; + if (hdf5writer != null) { + List hdf5WriterServices = new ArrayList<>(Lookup.getDefault().lookupAll(HDF5BucklingOutputWriterService.class)); + hdf5OutputWriter = hdf5WriterServices.get(Math.min(Math.max(outputType, 0), hdf5WriterServices.size() - 1)); + } + for (BucklingModuleData data : col){ BucklingResult result = Buckling.calc(clt_lam, data.getBucklingInput()); outputWriter.writeResults(ps, data, data.getLaminat(), result); + if (hdf5OutputWriter != null) { + hdf5OutputWriter.writeResults(hdf5writer, data, data.getLaminat(), result); + } } } } diff --git a/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingOutputWriterServiceImpl.java b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingOutputWriterServiceImpl.java index 3acc341..6e834ee 100644 --- a/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingOutputWriterServiceImpl.java +++ b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/BucklingOutputWriterServiceImpl.java @@ -26,14 +26,12 @@ package de.elamx.clt.plateui.buckling.batchrun; import de.elamx.clt.CLT_Laminate; -import de.elamx.clt.calculation.dmatrix.DMatrixPanel; import de.elamx.clt.plate.BucklingResult; import de.elamx.clt.plateui.buckling.BucklingModuleData; import de.elamx.laminate.Laminat; import de.elamx.utilities.Utilities; import java.io.PrintStream; import java.util.Locale; -import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; /** diff --git a/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/HDF5BucklingOutputWriterService.java b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/HDF5BucklingOutputWriterService.java new file mode 100644 index 0000000..57ed6f8 --- /dev/null +++ b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/HDF5BucklingOutputWriterService.java @@ -0,0 +1,39 @@ +/* + * This program developed in Java is based on the netbeans platform and is used + * to design and to analyse composite structures by means of analytical and + * numerical methods. + * + * Further information can be found here: + * http://www.elamx.de + * + * Copyright (C) 2021 Technische Universität Dresden - Andreas Hauffe + * + * This file is part of eLamX². + * + * eLamX² is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * eLamX² is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with eLamX². If not, see . + */ +package de.elamx.clt.plateui.buckling.batchrun; + +import ch.systemsx.cisd.hdf5.IHDF5Writer; +import de.elamx.clt.plate.BucklingResult; +import de.elamx.clt.plateui.buckling.BucklingModuleData; +import de.elamx.laminate.Laminat; + +/** + * + * @author Florian Dexl + */ +public interface HDF5BucklingOutputWriterService { + public void writeResults(IHDF5Writer hdf5writer, BucklingModuleData data, Laminat laminate, BucklingResult result); +} diff --git a/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/HDF5BucklingOutputWriterServiceImpl.java b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/HDF5BucklingOutputWriterServiceImpl.java new file mode 100644 index 0000000..148601b --- /dev/null +++ b/Classical_Laminated_Plate_Theory_Plate_UI/src/de/elamx/clt/plateui/buckling/batchrun/HDF5BucklingOutputWriterServiceImpl.java @@ -0,0 +1,80 @@ +/* + * This program developed in Java is based on the netbeans platform and is used + * to design and to analyse composite structures by means of analytical and + * numerical methods. + * + * Further information can be found here: + * http://www.elamx.de + * + * Copyright (C) 2021 Technische Universität Dresden - Andreas Hauffe + * + * This file is part of eLamX². + * + * eLamX² is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * eLamX² is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with eLamX². If not, see . + */ +package de.elamx.clt.plateui.buckling.batchrun; + +import ch.systemsx.cisd.hdf5.IHDF5Writer; +import de.elamx.clt.CLT_Laminate; +import de.elamx.clt.plate.BucklingResult; +import de.elamx.clt.plateui.buckling.BucklingModuleData; +import de.elamx.laminate.Laminat; +import org.openide.util.lookup.ServiceProvider; + +/** + * + * @author Florian Dexl + */ +@ServiceProvider(service=HDF5BucklingOutputWriterService.class, position=1) +public class HDF5BucklingOutputWriterServiceImpl implements HDF5BucklingOutputWriterService{ + + @Override + public void writeResults(IHDF5Writer hdf5writer, BucklingModuleData data, Laminat laminate, BucklingResult result){ + String bucklingGroup = "laminates/".concat(data.getLaminat().getName().concat("/buckling/")); + if (!hdf5writer.object().exists(bucklingGroup)) { + hdf5writer.object().createGroup(bucklingGroup); + } + String groupName = bucklingGroup.concat(data.getName()); + hdf5writer.object().createGroup(groupName); + + double [][] dmat; + String dMatrixOption; + if (data.getBucklingInput().isDtilde()) { + dmat = data.getLaminat().getLookup().lookup(CLT_Laminate.class).getDtildeMatrix(); + dMatrixOption = "D-tilde matrix"; + } else if(!data.getBucklingInput().isWholeD()) { + dmat = data.getLaminat().getLookup().lookup(CLT_Laminate.class).getDMatrixWithZeroD12D16(); + dMatrixOption = "D matrix with D_{16} = D_{26} = 0"; + } else { + dmat = data.getLaminat().getLookup().lookup(CLT_Laminate.class).getDMatrix(); + dMatrixOption = "Original D matrix"; + } + + hdf5writer.float64().createMatrix(groupName.concat("/D matrix used"), 3, 3); + hdf5writer.float64().writeMatrix(groupName.concat("/D matrix used"), dmat); + hdf5writer.string().setAttr(groupName.concat("/D matrix used"), "D matrix option", dMatrixOption); + + hdf5writer.object().createGroup(groupName.concat("/critical load")); + double[] ncrit = result.getN_crit(); + hdf5writer.float64().write(groupName.concat("/critical load/nx_crit"), ncrit[0]); + hdf5writer.float64().write(groupName.concat("/critical load/ny_crit"), ncrit[1]); + hdf5writer.float64().write(groupName.concat("/critical load/nxy_crit"), ncrit[2]); + + double[] eigenvalues = result.getEigenvalues_(); + int numberOfEigenvalues = eigenvalues.length; + hdf5writer.float64().createArray(groupName.concat("/eigenvalues"), numberOfEigenvalues); + hdf5writer.float64().writeArray(groupName.concat("/eigenvalues"), eigenvalues); + hdf5writer.int32().setAttr(groupName.concat("/eigenvalues"), "number of eigenvalues", numberOfEigenvalues); + } +} diff --git a/Classical_Laminated_Plate_Theory_UI/nbproject/genfiles.properties b/Classical_Laminated_Plate_Theory_UI/nbproject/genfiles.properties index fc5f7a0..c3bfe66 100644 --- a/Classical_Laminated_Plate_Theory_UI/nbproject/genfiles.properties +++ b/Classical_Laminated_Plate_Theory_UI/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=0204c774 +build.xml.data.CRC32=d065e83a build.xml.script.CRC32=4f56e485 -build.xml.stylesheet.CRC32=15ca8a54@2.95 +build.xml.stylesheet.CRC32=15ca8a54@2.96 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=0204c774 +nbproject/build-impl.xml.data.CRC32=d065e83a nbproject/build-impl.xml.script.CRC32=76228f8e -nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.95 +nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.96 diff --git a/Classical_Laminated_Plate_Theory_UI/nbproject/project.xml b/Classical_Laminated_Plate_Theory_UI/nbproject/project.xml index 60a268e..0ce8402 100644 --- a/Classical_Laminated_Plate_Theory_UI/nbproject/project.xml +++ b/Classical_Laminated_Plate_Theory_UI/nbproject/project.xml @@ -6,6 +6,14 @@ de.elamx.clt.calculation + + ch.systemsx.cisd.hdf5 + + + + 1.0 + + de.elamx.clt diff --git a/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/CalculationBatchRunServiceImpl.java b/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/CalculationBatchRunServiceImpl.java index a696db4..b0daaf8 100644 --- a/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/CalculationBatchRunServiceImpl.java +++ b/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/CalculationBatchRunServiceImpl.java @@ -25,6 +25,7 @@ */ package de.elamx.clt.calculation.batchrun; +import ch.systemsx.cisd.hdf5.IHDF5Writer; import de.elamx.clt.CLT_Calculator; import de.elamx.clt.CLT_Laminate; import de.elamx.clt.CLT_LayerResult; @@ -46,23 +47,33 @@ public class CalculationBatchRunServiceImpl implements BatchRunService { @Override - public void performBatchTasksAndOutput(Laminat laminate, PrintStream ps, int outputType) { + public void performBatchTasksAndOutput(Laminat laminate, PrintStream ps, IHDF5Writer hdf5writer, int outputType) { Collection col = laminate.getLookup().lookupAll(CalculationModuleData.class); - if (col.isEmpty()){ + if (col.isEmpty()) { return; } CLT_Laminate clt_lam = laminate.getLookup().lookup(CLT_Laminate.class); if (clt_lam == null) { clt_lam = new CLT_Laminate(laminate); } - + List writerServices = new ArrayList<>(Lookup.getDefault().lookupAll(CalculationOutputWriterService.class)); - CalculationOutputWriterService outputWriter = writerServices.get(Math.min(Math.max(outputType, 0),writerServices.size()-1)); - + CalculationOutputWriterService outputWriter = writerServices.get(Math.min(Math.max(outputType, 0), writerServices.size() - 1)); + + HDF5CalculationOutputWriterService hdf5OutputWriter = null; + if (hdf5writer != null) { + List hdf5WriterServices = new ArrayList<>(Lookup.getDefault().lookupAll(HDF5CalculationOutputWriterService.class)); + hdf5OutputWriter = hdf5WriterServices.get(Math.min(Math.max(outputType, 0), hdf5WriterServices.size() - 1)); + + } + for (CalculationModuleData data : col) { CLT_Calculator.determineValues(clt_lam, data.getDataHolder().getLoad(), data.getDataHolder().getStrains(), data.getDataHolder().isUseStrains()); CLT_LayerResult[] layerResults = CLT_Calculator.getLayerResults(data.getLaminat().getLookup().lookup(CLT_Laminate.class), data.getDataHolder().getLoad(), data.getDataHolder().getStrains()); outputWriter.writeResults(ps, data, data.getDataHolder().getLoad(), data.getDataHolder().getStrains(), layerResults); + if (hdf5OutputWriter != null) { + hdf5OutputWriter.writeResults(hdf5writer, data, data.getDataHolder().getLoad(), data.getDataHolder().getStrains(), layerResults); + } } } } diff --git a/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/HDF5CalculationOutputWriterService.java b/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/HDF5CalculationOutputWriterService.java new file mode 100644 index 0000000..316cb90 --- /dev/null +++ b/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/HDF5CalculationOutputWriterService.java @@ -0,0 +1,40 @@ +/* + * This program developed in Java is based on the netbeans platform and is used + * to design and to analyse composite structures by means of analytical and + * numerical methods. + * + * Further information can be found here: + * http://www.elamx.de + * + * Copyright (C) 2021 Technische Universität Dresden - Andreas Hauffe + * + * This file is part of eLamX². + * + * eLamX² is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * eLamX² is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with eLamX². If not, see . + */ +package de.elamx.clt.calculation.batchrun; + +import ch.systemsx.cisd.hdf5.IHDF5Writer; +import de.elamx.clt.CLT_LayerResult; +import de.elamx.clt.Loads; +import de.elamx.clt.Strains; +import de.elamx.clt.calculation.CalculationModuleData; + +/** + * + * @author Florian Dexl + */ +public interface HDF5CalculationOutputWriterService { + public void writeResults(IHDF5Writer hdf5writer, CalculationModuleData data, Loads loads, Strains strain, CLT_LayerResult[] results); +} diff --git a/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/HDF5CalculationOutputWriterServiceImpl.java b/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/HDF5CalculationOutputWriterServiceImpl.java new file mode 100644 index 0000000..495a851 --- /dev/null +++ b/Classical_Laminated_Plate_Theory_UI/src/de/elamx/clt/calculation/batchrun/HDF5CalculationOutputWriterServiceImpl.java @@ -0,0 +1,151 @@ +/* + * This program developed in Java is based on the netbeans platform and is used + * to design and to analyse composite structures by means of analytical and + * numerical methods. + * + * Further information can be found here: + * http://www.elamx.de + * + * Copyright (C) 2021 Technische Universität Dresden - Andreas Hauffe + * + * This file is part of eLamX². + * + * eLamX² is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * eLamX² is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with eLamX². If not, see . + */ +package de.elamx.clt.calculation.batchrun; + +import ch.systemsx.cisd.hdf5.IHDF5Writer; +import de.elamx.clt.CLT_LayerResult; +import de.elamx.clt.Loads; +import de.elamx.clt.Strains; +import de.elamx.clt.calculation.CalculationModuleData; +import org.openide.util.lookup.ServiceProvider; + +/** + * + * @author Florian Dexl + */ +@ServiceProvider(service = HDF5CalculationOutputWriterService.class, position = 1) +public class HDF5CalculationOutputWriterServiceImpl implements HDF5CalculationOutputWriterService { + + @Override + public void writeResults(IHDF5Writer hdf5writer, CalculationModuleData data, Loads loads, Strains strain, CLT_LayerResult[] results) { + String calculationGroup = "laminates/".concat(data.getLaminat().getName().concat("/calculation/")); + if (!hdf5writer.object().exists(calculationGroup)) { + hdf5writer.object().createGroup(calculationGroup); + } + String groupName = calculationGroup.concat(data.getName()); + hdf5writer.object().createGroup(groupName); + + double[] forces = loads.getForceMomentAsVector(); + + hdf5writer.object().createGroup(groupName.concat("/mechanical loads")); + hdf5writer.float64().write(groupName.concat("/mechanical loads/nxx"), forces[0]); + hdf5writer.float64().write(groupName.concat("/mechanical loads/nyy"), forces[1]); + hdf5writer.float64().write(groupName.concat("/mechanical loads/nxy"), forces[2]); + hdf5writer.float64().write(groupName.concat("/mechanical loads/mxx"), forces[3]); + hdf5writer.float64().write(groupName.concat("/mechanical loads/myy"), forces[4]); + hdf5writer.float64().write(groupName.concat("/mechanical loads/mxy"), forces[5]); + + hdf5writer.object().createGroup(groupName.concat("/hygrothermal loads")); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/nxx"), loads.getnT_x()); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/nyy"), loads.getnT_y()); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/nxy"), loads.getnT_xy()); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/mxx"), loads.getmT_x()); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/myy"), loads.getmT_y()); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/mxy"), loads.getmT_xy()); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/deltaT"), loads.getDeltaT()); + hdf5writer.float64().write(groupName.concat("/hygrothermal loads/deltac"), loads.getDeltaH()); + + double[] strains = strain.getEpsilonKappaAsVector(); + hdf5writer.object().createGroup(groupName.concat("/global strains")); + hdf5writer.float64().write(groupName.concat("/global strains/exx"), strains[0]); + hdf5writer.float64().write(groupName.concat("/global strains/eyy"), strains[1]); + hdf5writer.float64().write(groupName.concat("/global strains/gxy"), strains[2]); + hdf5writer.float64().write(groupName.concat("/global strains/kxx"), strains[3]); + hdf5writer.float64().write(groupName.concat("/global strains/kyy"), strains[4]); + hdf5writer.float64().write(groupName.concat("/global strains/kxy"), strains[5]); + + int layerResultsNum = results.length; + + hdf5writer.object().createGroup(groupName.concat("/local layer results")); + hdf5writer.object().createGroup(groupName.concat("/local layer results/upper")); + hdf5writer.object().createGroup(groupName.concat("/local layer results/lower")); + hdf5writer.int32().setAttr(groupName.concat("/local layer results/upper"), "number of layers", layerResultsNum); + hdf5writer.int32().setAttr(groupName.concat("/local layer results/lower"), "number of layers", layerResultsNum); + + double[] s11 = new double[layerResultsNum]; + double[] s22 = new double[layerResultsNum]; + double[] s12 = new double[layerResultsNum]; + double[] e11 = new double[layerResultsNum]; + double[] e12 = new double[layerResultsNum]; + double[] e22 = new double[layerResultsNum]; + double[] RF = new double[layerResultsNum]; + for (int ii = 0; ii < layerResultsNum; ii++) { + s11[ii] = results[ii].getSss_upper().getStress()[0]; + s22[ii] = results[ii].getSss_upper().getStress()[1]; + s12[ii] = results[ii].getSss_upper().getStress()[2]; + e11[ii] = results[ii].getSss_upper().getStrain()[0]; + e22[ii] = results[ii].getSss_upper().getStrain()[1]; + e12[ii] = results[ii].getSss_upper().getStrain()[2]; + RF[ii] = results[ii].getRr_upper().getMinimalReserveFactor(); + } + hdf5writer.float64().createArray(groupName.concat("/local layer results/upper/s11"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/upper/s11"), s11); + hdf5writer.float64().createArray(groupName.concat("/local layer results/upper/s12"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/upper/s12"), s12); + hdf5writer.float64().createArray(groupName.concat("/local layer results/upper/s22"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/upper/s22"), s22); + hdf5writer.float64().createArray(groupName.concat("/local layer results/upper/e11"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/upper/e11"), e11); + hdf5writer.float64().createArray(groupName.concat("/local layer results/upper/e22"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/upper/e22"), e22); + hdf5writer.float64().createArray(groupName.concat("/local layer results/upper/e12"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/upper/e12"), e12); + hdf5writer.float64().createArray(groupName.concat("/local layer results/upper/RF"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/upper/RF"), RF); + + s11 = new double[layerResultsNum]; + s22 = new double[layerResultsNum]; + s12 = new double[layerResultsNum]; + e11 = new double[layerResultsNum]; + e12 = new double[layerResultsNum]; + e22 = new double[layerResultsNum]; + for (int ii = 0; ii < layerResultsNum; ii++) { + s11[ii] = results[ii].getSss_lower().getStress()[0]; + s22[ii] = results[ii].getSss_lower().getStress()[1]; + s12[ii] = results[ii].getSss_lower().getStress()[2]; + e11[ii] = results[ii].getSss_lower().getStrain()[0]; + e22[ii] = results[ii].getSss_lower().getStrain()[1]; + e12[ii] = results[ii].getSss_lower().getStrain()[2]; + RF[ii] = results[ii].getRr_lower().getMinimalReserveFactor(); + } + hdf5writer.float64().createArray(groupName.concat("/local layer results/lower/s11"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/lower/s11"), s11); + hdf5writer.float64().createArray(groupName.concat("/local layer results/lower/s12"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/lower/s12"), s12); + hdf5writer.float64().createArray(groupName.concat("/local layer results/lower/s22"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/lower/s22"), s22); + hdf5writer.float64().createArray(groupName.concat("/local layer results/lower/e11"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/lower/e11"), e11); + hdf5writer.float64().createArray(groupName.concat("/local layer results/lower/e22"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/lower/e22"), e22); + hdf5writer.float64().createArray(groupName.concat("/local layer results/lower/e12"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/lower/e12"), e12); + hdf5writer.float64().createArray(groupName.concat("/local layer results/lower/RF"), layerResultsNum); + hdf5writer.float64().writeArray(groupName.concat("/local layer results/lower/RF"), RF); + + } + +} diff --git a/Core/nbproject/genfiles.properties b/Core/nbproject/genfiles.properties index fde8e21..de89420 100644 --- a/Core/nbproject/genfiles.properties +++ b/Core/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=82618a1a +build.xml.data.CRC32=08c045a6 build.xml.script.CRC32=40117fe5 -build.xml.stylesheet.CRC32=15ca8a54@2.74.1 +build.xml.stylesheet.CRC32=15ca8a54@2.96 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=82618a1a +nbproject/build-impl.xml.data.CRC32=08c045a6 nbproject/build-impl.xml.script.CRC32=de930c5d -nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.94 +nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.96 diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 04a9e9f..e41fa6b 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -6,6 +6,14 @@ de.elamx.core + + ch.systemsx.cisd.hdf5 + + + + 1.0 + + de.elamx.laminate @@ -24,6 +32,15 @@ 1.45.1 + + org.netbeans.modules.sendopts + + + + 2 + 2.60 + + org.openide.awt diff --git a/Core/src/de/elamx/core/BatchRunService.java b/Core/src/de/elamx/core/BatchRunService.java index dfe3934..6e82e33 100644 --- a/Core/src/de/elamx/core/BatchRunService.java +++ b/Core/src/de/elamx/core/BatchRunService.java @@ -25,6 +25,7 @@ */ package de.elamx.core; +import ch.systemsx.cisd.hdf5.IHDF5Writer; import de.elamx.laminate.Laminat; import java.io.PrintStream; @@ -33,5 +34,5 @@ * @author Andreas Hauffe */ public interface BatchRunService { - public void performBatchTasksAndOutput(Laminat laminate, PrintStream ps, int outputType); + public void performBatchTasksAndOutput(Laminat laminate, PrintStream ps, IHDF5Writer hdf5writer, int outputType); } diff --git a/Core/src/de/elamx/core/HDF5OutputWriterService.java b/Core/src/de/elamx/core/HDF5OutputWriterService.java new file mode 100644 index 0000000..a9bf108 --- /dev/null +++ b/Core/src/de/elamx/core/HDF5OutputWriterService.java @@ -0,0 +1,44 @@ +/* + * This program developed in Java is based on the netbeans platform and is used + * to design and to analyse composite structures by means of analytical and + * numerical methods. + * + * Further information can be found here: + * http://www.elamx.de + * + * Copyright (C) 2021 Technische Universität Dresden - Andreas Hauffe + * + * This file is part of eLamX². + * + * eLamX² is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * eLamX² is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with eLamX². If not, see . + */ +package de.elamx.core; + +import ch.systemsx.cisd.hdf5.IHDF5Writer; +import de.elamx.laminate.Laminat; +import de.elamx.laminate.Material; +import java.io.File; + +/** + * + * @author Florian Dexl + */ +public interface HDF5OutputWriterService { + + public void writeHeader(IHDF5Writer hdf5writer, File inputFile); + + public void writeLaminateInformation(IHDF5Writer hdf5writer, Laminat laminate); + + public void writeMaterialInformation(IHDF5Writer hdf5writer, Material material); +} diff --git a/HDF5BatchrunOutput/build.xml b/HDF5BatchrunOutput/build.xml new file mode 100644 index 0000000..1b496f0 --- /dev/null +++ b/HDF5BatchrunOutput/build.xml @@ -0,0 +1,8 @@ + + + + + + Builds, tests, and runs the project de.elamx.hdf5.output. + + diff --git a/HDF5BatchrunOutput/manifest.mf b/HDF5BatchrunOutput/manifest.mf new file mode 100644 index 0000000..4a750fe --- /dev/null +++ b/HDF5BatchrunOutput/manifest.mf @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +AutoUpdate-Show-In-Client: true +OpenIDE-Module: de.elamx.hdf5.output +OpenIDE-Module-Localizing-Bundle: de/elamx/hdf5/output/Bundle.properties +OpenIDE-Module-Specification-Version: 1.0 + diff --git a/HDF5BatchrunOutput/nbproject/build-impl.xml b/HDF5BatchrunOutput/nbproject/build-impl.xml new file mode 100644 index 0000000..89169f6 --- /dev/null +++ b/HDF5BatchrunOutput/nbproject/build-impl.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + You must set 'suite.dir' to point to your containing module suite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HDF5BatchrunOutput/nbproject/genfiles.properties b/HDF5BatchrunOutput/nbproject/genfiles.properties new file mode 100644 index 0000000..9ce0161 --- /dev/null +++ b/HDF5BatchrunOutput/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=7d36f5e8 +build.xml.script.CRC32=3129743c +build.xml.stylesheet.CRC32=15ca8a54@2.96 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=7d36f5e8 +nbproject/build-impl.xml.script.CRC32=d4213be3 +nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.96 diff --git a/HDF5BatchrunOutput/nbproject/project.properties b/HDF5BatchrunOutput/nbproject/project.properties new file mode 100644 index 0000000..234017c --- /dev/null +++ b/HDF5BatchrunOutput/nbproject/project.properties @@ -0,0 +1,2 @@ +javac.source=1.8 +javac.compilerargs=-Xlint -Xlint:-serial diff --git a/HDF5BatchrunOutput/nbproject/project.xml b/HDF5BatchrunOutput/nbproject/project.xml new file mode 100644 index 0000000..3b18525 --- /dev/null +++ b/HDF5BatchrunOutput/nbproject/project.xml @@ -0,0 +1,83 @@ + + + org.netbeans.modules.apisupport.project + + + de.elamx.hdf5.output + + + + ch.systemsx.cisd.hdf5 + + + + 1.0 + + + + de.elamx.clt + + + + 1 + 1.7.0 + + + + de.elamx.clt.calculation + + + + 1 + 1.7.0 + + + + de.elamx.clt.plate + + + + 1 + 1.7.0 + + + + de.elamx.clt.plateui + + + + 1 + 1.7.0 + + + + de.elamx.core + + + + 1 + 1.7.0 + + + + de.elamx.laminate + + + + 1 + 1.7.0 + + + + org.openide.util.lookup + + + + 8.58 + + + + + + + diff --git a/HDF5BatchrunOutput/nbproject/suite.properties b/HDF5BatchrunOutput/nbproject/suite.properties new file mode 100644 index 0000000..29d7cc9 --- /dev/null +++ b/HDF5BatchrunOutput/nbproject/suite.properties @@ -0,0 +1 @@ +suite.dir=${basedir}/.. diff --git a/HDF5BatchrunOutput/src/de/elamx/hdf5/output/Bundle.properties b/HDF5BatchrunOutput/src/de/elamx/hdf5/output/Bundle.properties new file mode 100644 index 0000000..15c6eeb --- /dev/null +++ b/HDF5BatchrunOutput/src/de/elamx/hdf5/output/Bundle.properties @@ -0,0 +1 @@ +OpenIDE-Module-Name=HDF5 Batchrun Output diff --git a/HDF5BatchrunOutput/src/de/elamx/hdf5/output/Bundle_de.properties b/HDF5BatchrunOutput/src/de/elamx/hdf5/output/Bundle_de.properties new file mode 100644 index 0000000..7e04c25 --- /dev/null +++ b/HDF5BatchrunOutput/src/de/elamx/hdf5/output/Bundle_de.properties @@ -0,0 +1 @@ +OpenIDE-Module-Name=HDF5 Batchrun Ausgabe diff --git a/HDF5BatchrunOutput/src/de/elamx/hdf5/output/HDF5OutputWriterServiceImpl.java b/HDF5BatchrunOutput/src/de/elamx/hdf5/output/HDF5OutputWriterServiceImpl.java new file mode 100644 index 0000000..73912c1 --- /dev/null +++ b/HDF5BatchrunOutput/src/de/elamx/hdf5/output/HDF5OutputWriterServiceImpl.java @@ -0,0 +1,173 @@ +/* + * This program developed in Java is based on the netbeans platform and is used + * to design and to analyse composite structures by means of analytical and + * numerical methods. + * + * Further information can be found here: + * http://www.elamx.de + * + * Copyright (C) 2021 Technische Universität Dresden - Andreas Hauffe + * + * This file is part of eLamX². + * + * eLamX² is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * eLamX² is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with eLamX². If not, see . + */ +package de.elamx.hdf5.output; + +import ch.systemsx.cisd.hdf5.IHDF5Writer; +import de.elamx.clt.CLT_Laminate; +import de.elamx.core.HDF5OutputWriterService; +import de.elamx.laminate.Laminat; +import de.elamx.laminate.Layer; +import de.elamx.laminate.Material; +import java.io.File; +import java.io.IOException; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.apache.commons.io.FileUtils; +import org.openide.util.lookup.ServiceProvider; + +/** + * + * @author Florian Dexl + */ +@ServiceProvider(service = HDF5OutputWriterService.class, position = 1000) +public class HDF5OutputWriterServiceImpl implements HDF5OutputWriterService { + + @Override + public void writeHeader(IHDF5Writer hdf5writer, File inputFile) { + hdf5writer.object().createGroup("materials"); + hdf5writer.object().createGroup("laminates"); + + if (inputFile != null) { + byte[] data = null; + try { + hdf5writer.string().write("input file", FileUtils.readFileToString(inputFile)); + data = FileUtils.readFileToByteArray(inputFile); + } catch (IOException ex) { + Logger.getLogger(HDF5OutputWriterServiceImpl.class.getName()).log(Level.SEVERE, null, ex); + } + byte[] hash = null; + try { + hash = MessageDigest.getInstance("MD5").digest(data); + } catch (NoSuchAlgorithmException ex) { + Logger.getLogger(HDF5OutputWriterServiceImpl.class.getName()).log(Level.SEVERE, null, ex); + } + String checksum = new BigInteger(1, hash).toString(16); + hdf5writer.string().setAttr("input file", "md5 checksum", checksum); + hdf5writer.string().setAttr("input file", "filename", inputFile.getName()); + hdf5writer.string().setAttr("input file", "absolute path", inputFile.getAbsolutePath()); + } + } + + @Override + public void writeLaminateInformation(IHDF5Writer hdf5writer, Laminat laminate) { + + CLT_Laminate clt_laminate = laminate.getLookup().lookup(CLT_Laminate.class); + if (clt_laminate == null) { + clt_laminate = new CLT_Laminate(laminate); + } + + String groupName = "laminates/".concat(laminate.getName()); + hdf5writer.object().createGroup(groupName); + + hdf5writer.bool().setAttr("/".concat(groupName), "symmetric", laminate.isSymmetric()); + hdf5writer.int32().setAttr("/".concat(groupName), "total number of layers", laminate.getNumberofLayers()); + hdf5writer.float64().setAttr("/".concat(groupName), "total thickness", clt_laminate.getTges()); + + hdf5writer.float64().createMatrix("/".concat(groupName).concat("/ABD-Matrix"), 6, 6); + hdf5writer.float64().writeMatrix("/".concat(groupName).concat("/ABD-Matrix"), clt_laminate.getABDMatrix()); + + hdf5writer.float64().createMatrix("/".concat(groupName).concat("/abd-Matrix"), 6, 6); + hdf5writer.float64().writeMatrix("/".concat(groupName).concat("/abd-Matrix"), clt_laminate.getInvABDMatrix()); + + hdf5writer.object().createGroup("/".concat(groupName).concat("/effective stiffness")); + hdf5writer.object().createGroup("/".concat(groupName).concat("/effective stiffness/with poisson effect")); + hdf5writer.object().createGroup("/".concat(groupName).concat("/effective stiffness/with poisson effect/membrane")); + + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/membrane/Exx"), clt_laminate.getExSimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/membrane/Eyy"), clt_laminate.getEySimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/membrane/Gxy"), clt_laminate.getGSimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/membrane/vxy"), clt_laminate.getNuxySimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/membrane/vyx"), clt_laminate.getNuyxSimple()); + + hdf5writer.object().createGroup("/".concat(groupName).concat("/effective stiffness/with poisson effect/flexural")); + + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/flexural/Exx"), clt_laminate.getExBendSimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/flexural/Eyy"), clt_laminate.getEyBendSimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/flexural/Gxy"), clt_laminate.getGBendSimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/flexural/vxy"), clt_laminate.getNuxyBendSimple()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/with poisson effect/flexural/vyx"), clt_laminate.getNuyxBendSimple()); + + hdf5writer.object().createGroup("/".concat(groupName).concat("/effective stiffness/without poisson effect")); + hdf5writer.object().createGroup("/".concat(groupName).concat("/effective stiffness/without poisson effect/membrane")); + + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/without poisson effect/membrane/Exx"), clt_laminate.getExFixed()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/without poisson effect/membrane/Eyy"), clt_laminate.getEyFixed()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/without poisson effect/membrane/Gxy"), clt_laminate.getGFixed()); + + hdf5writer.object().createGroup("/".concat(groupName).concat("/effective stiffness/without poisson effect/flexural")); + + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/without poisson effect/flexural/Exx"), clt_laminate.getExBendFixed()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/without poisson effect/flexural/Eyy"), clt_laminate.getEyBendFixed()); + hdf5writer.float64().write("/".concat(groupName).concat("/effective stiffness/without poisson effect/flexural/Gxy"), clt_laminate.getGBendFixed()); + + hdf5writer.object().createGroup("/".concat(groupName).concat("/layers")); + ArrayList layers = laminate.getLayers(); + int layerNum = layers.size(); + Layer l; + String layerGroupName; + for (int ii = 0; ii < layerNum; ii++) { + l = layers.get(ii); + layerGroupName = "layer " + (ii+1); + layerGroupName = "/".concat(groupName).concat("/layers/").concat(layerGroupName); + hdf5writer.object().createGroup(layerGroupName); + hdf5writer.int32().write(layerGroupName.concat("/number"), l.getNumber()); + hdf5writer.string().write(layerGroupName.concat("/name"), l.getName()); + hdf5writer.float64().write(layerGroupName.concat("/thickness"), l.getThickness()); + hdf5writer.float64().write(layerGroupName.concat("/angle"), l.getAngle()); + hdf5writer.string().write(layerGroupName.concat("/material"), l.getMaterial().getName()); + hdf5writer.string().write(layerGroupName.concat("/criterion"), l.getCriterion().getDisplayName()); + } + } + + @Override + public void writeMaterialInformation(IHDF5Writer hdf5writer, Material material) { + String groupName = "materials/".concat(material.getName()); + hdf5writer.object().createGroup(groupName); + + hdf5writer.float64().write("/".concat(groupName).concat("/E11"), material.getEpar()); + hdf5writer.float64().write("/".concat(groupName).concat("/E22"), material.getEnor()); + hdf5writer.float64().write("/".concat(groupName).concat("/v12"), material.getNue12()); + hdf5writer.float64().write("/".concat(groupName).concat("/v21"), material.getNue21()); + hdf5writer.float64().write("/".concat(groupName).concat("/G12"), material.getG()); + hdf5writer.float64().write("/".concat(groupName).concat("/rho"), material.getRho()); + hdf5writer.float64().write("/".concat(groupName).concat("/a11"), material.getAlphaTPar()); + hdf5writer.float64().write("/".concat(groupName).concat("/a22"), material.getAlphaTNor()); + hdf5writer.float64().write("/".concat(groupName).concat("/b11"), material.getBetaPar()); + hdf5writer.float64().write("/".concat(groupName).concat("/b22"), material.getBetaNor()); + hdf5writer.float64().write("/".concat(groupName).concat("/S11T"), material.getRParTen()); + hdf5writer.float64().write("/".concat(groupName).concat("/S22T"), material.getRNorTen()); + hdf5writer.float64().write("/".concat(groupName).concat("/S11C"), material.getRParCom()); + hdf5writer.float64().write("/".concat(groupName).concat("/S11C"), material.getRNorCom()); + hdf5writer.float64().write("/".concat(groupName).concat("/S12"), material.getRShear()); + for (String key : material.getAdditionalValueKeySet()) { + hdf5writer.float64().write("/".concat(groupName).concat("/").concat(material.getAdditionalValueDisplayName(key)), material.getAdditionalValue(key)); + } + } +} diff --git a/batchrun/nbproject/genfiles.properties b/batchrun/nbproject/genfiles.properties index e629f91..55db881 100644 --- a/batchrun/nbproject/genfiles.properties +++ b/batchrun/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=82b9afa0 +build.xml.data.CRC32=df887fb6 build.xml.script.CRC32=3615bead -build.xml.stylesheet.CRC32=15ca8a54@2.95 +build.xml.stylesheet.CRC32=15ca8a54@2.96 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=82b9afa0 +nbproject/build-impl.xml.data.CRC32=df887fb6 nbproject/build-impl.xml.script.CRC32=bdac5018 -nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.95 +nbproject/build-impl.xml.stylesheet.CRC32=49aa68b0@2.96 diff --git a/batchrun/nbproject/project.xml b/batchrun/nbproject/project.xml index 0472424..55186de 100644 --- a/batchrun/nbproject/project.xml +++ b/batchrun/nbproject/project.xml @@ -6,6 +6,14 @@ de.elamx.batchrun + + ch.systemsx.cisd.hdf5 + + + + 1.0 + + de.elamx.clt diff --git a/batchrun/src/de/elamx/batchrun/eLamXOptionProcessor.java b/batchrun/src/de/elamx/batchrun/eLamXOptionProcessor.java index e512fb8..5d237a5 100644 --- a/batchrun/src/de/elamx/batchrun/eLamXOptionProcessor.java +++ b/batchrun/src/de/elamx/batchrun/eLamXOptionProcessor.java @@ -25,11 +25,15 @@ */ package de.elamx.batchrun; +import ch.systemsx.cisd.hdf5.HDF5Factory; +import ch.systemsx.cisd.hdf5.IHDF5Writer; import de.elamx.reducedinput.ReducedInputHandler; import de.elamx.core.BatchRunService; import de.elamx.core.GeneralOutputWriterService; +import de.elamx.core.HDF5OutputWriterService; import de.elamx.filesupport.NewFileCreator; import de.elamx.laminate.Laminat; +import de.elamx.laminate.Material; import de.elamx.laminate.eLamXLookup; import java.io.File; import java.io.FileNotFoundException; @@ -67,6 +71,7 @@ public class eLamXOptionProcessor extends OptionProcessor { private final Option outputOption = Option.optionalArgument('o', "output"); private final Option outputTypeOption = Option.optionalArgument('t', "outputtype"); private final Option reducedInputOption = Option.optionalArgument('b', "reducedinput"); + private final Option hdf5OutputOption = Option.optionalArgument('h', "hdf5output"); @Override protected Set