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 extends BucklingModuleData> 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 extends CalculationModuleData> 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