Commit da24996b authored by Andrew J. Burns (Cont's avatar Andrew J. Burns (Cont

XdmfFunction read legacy files, small fortran changes

parent 6a2647c0
...@@ -107,6 +107,10 @@ XdmfAttribute::populateItem(const std::map<std::string, std::string> & itemPrope ...@@ -107,6 +107,10 @@ XdmfAttribute::populateItem(const std::map<std::string, std::string> & itemPrope
++iter) { ++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) { if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
this->swap(array); this->swap(array);
if (array->getReference()) {
this->setReference(array->getReference());
this->setReadMode(XdmfArray::Reference);
}
break; break;
} }
} }
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "XdmfGeometry.hpp" #include "XdmfGeometry.hpp"
#include "XdmfGeometryType.hpp" #include "XdmfGeometryType.hpp"
#include "XdmfError.hpp" #include "XdmfError.hpp"
#include "XdmfFunction.hpp"
shared_ptr<XdmfGeometry> XdmfGeometry::New() shared_ptr<XdmfGeometry> XdmfGeometry::New()
{ {
...@@ -78,15 +79,91 @@ XdmfGeometry::populateItem(const std::map<std::string, std::string> & itemProper ...@@ -78,15 +79,91 @@ XdmfGeometry::populateItem(const std::map<std::string, std::string> & itemProper
const XdmfCoreReader * const reader) const XdmfCoreReader * const reader)
{ {
XdmfItem::populateItem(itemProperties, childItems, reader); XdmfItem::populateItem(itemProperties, childItems, reader);
mType = XdmfGeometryType::New(itemProperties); std::map<std::string, std::string>::const_iterator type =
for(std::vector<shared_ptr<XdmfItem> >::const_iterator iter = itemProperties.find("Type");
childItems.begin(); if(type == itemProperties.end()) {
iter != childItems.end(); type = itemProperties.find("GeometryType");
++iter) { }
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
this->swap(array); if (type != itemProperties.end()) {
break; if(type->second.compare("X_Y_Z") == 0) {
mType = XdmfGeometryType::XYZ();
// Building Function equivalent
std::vector<std::string> dimensionIDVector;
dimensionIDVector.push_back("X");
dimensionIDVector.push_back("Y");
dimensionIDVector.push_back("Z");
std::map<std::string, shared_ptr<XdmfArray> > dimensionMap;
unsigned int dimensionIDIndex = 0;
// Find X, Y, and Z Arrays
for(std::vector<shared_ptr<XdmfItem> >::const_iterator iter =
childItems.begin();
iter != childItems.end() && dimensionIDIndex < dimensionIDVector.size();
++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
dimensionMap[dimensionIDVector[dimensionIDIndex]] = array;
dimensionIDIndex++;
}
}
shared_ptr<XdmfFunction> geoFunction = XdmfFunction::New("X#Y#Z", dimensionMap);
this->setReference(geoFunction);
this->setReadMode(XdmfArray::Reference);
} }
else if(type->second.compare("X_Y") == 0) {
mType = XdmfGeometryType::XY();
// Building Function equivalent
std::vector<std::string> dimensionIDVector;
dimensionIDVector.push_back("X");
dimensionIDVector.push_back("Y");
std::map<std::string, shared_ptr<XdmfArray> > dimensionMap;
unsigned int dimensionIDIndex = 0;
// Find X, Y, and Z Arrays
for(std::vector<shared_ptr<XdmfItem> >::const_iterator iter =
childItems.begin();
iter != childItems.end() && dimensionIDIndex < dimensionIDVector.size();
++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
dimensionMap[dimensionIDVector[dimensionIDIndex]] = array;
dimensionIDIndex++;
}
}
shared_ptr<XdmfFunction> geoFunction = XdmfFunction::New("X#Y", dimensionMap);
this->setReference(geoFunction);
this->setReadMode(XdmfArray::Reference);
}
else {
mType = XdmfGeometryType::New(itemProperties);
for(std::vector<shared_ptr<XdmfItem> >::const_iterator iter =
childItems.begin();
iter != childItems.end();
++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
this->swap(array);
if (array->getReference()) {
this->setReference(array->getReference());
this->setReadMode(XdmfArray::Reference);
}
break;
}
}
}
}
else {
XdmfError::message(XdmfError::FATAL,
"Neither 'Type' nor 'GeometryType' in itemProperties "
"in XdmfGeometry::populateItem");
} }
} }
......
...@@ -99,7 +99,12 @@ XdmfSet::populateItem(const std::map<std::string, std::string> & itemProperties, ...@@ -99,7 +99,12 @@ XdmfSet::populateItem(const std::map<std::string, std::string> & itemProperties,
else if(shared_ptr<XdmfArray> array = else if(shared_ptr<XdmfArray> array =
shared_dynamic_cast<XdmfArray>(*iter)) { shared_dynamic_cast<XdmfArray>(*iter)) {
this->swap(array); this->swap(array);
if (array->getReference()) {
this->setReference(array->getReference());
this->setReadMode(XdmfArray::Reference);
}
// TODO: If multiple dataitems. // TODO: If multiple dataitems.
break;
} }
} }
} }
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <sstream> #include <sstream>
#include <utility> #include <utility>
#include "XdmfError.hpp" #include "XdmfError.hpp"
#include "XdmfFunction.hpp"
#include "XdmfTopology.hpp" #include "XdmfTopology.hpp"
#include "XdmfTopologyType.hpp" #include "XdmfTopologyType.hpp"
...@@ -127,8 +128,29 @@ XdmfTopology::populateItem(const std::map<std::string, std::string> & itemProper ...@@ -127,8 +128,29 @@ XdmfTopology::populateItem(const std::map<std::string, std::string> & itemProper
++iter) { ++iter) {
if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) { if(shared_ptr<XdmfArray> array = shared_dynamic_cast<XdmfArray>(*iter)) {
this->swap(array); this->swap(array);
if (array->getReference()) {
this->setReference(array->getReference());
this->setReadMode(XdmfArray::Reference);
}
break;
} }
} }
std::map<std::string, std::string>::const_iterator type =
itemProperties.find("Offset");
if (type != itemProperties.end()) {
// Convert to double
double offset = atof(type->second.c_str());
std::stringstream expressionStream;
expressionStream << offset << "+X";
std::map<std::string, shared_ptr<XdmfArray> > offsetMap;
shared_ptr<XdmfArray> offsetBase = XdmfArray::New();
this->swap(offsetBase);
offsetMap["X"] = offsetBase;
shared_ptr<XdmfFunction> offsetFunction = XdmfFunction::New(expressionStream.str(), offsetMap);
this->setReference(offsetFunction);
this->setReadMode(XdmfArray::Reference);
}
} }
void void
......
This diff is collapsed.
This diff is collapsed.
...@@ -130,6 +130,8 @@ public: ...@@ -130,6 +130,8 @@ public:
static const std::string ItemTag; static const std::string ItemTag;
static shared_ptr<XdmfArray> abs(std::vector<shared_ptr<XdmfArray> > values);
/* /*
* Adds a specified function to the list of functions used while * Adds a specified function to the list of functions used while
* evaluating strings * evaluating strings
...@@ -277,6 +279,14 @@ public: ...@@ -277,6 +279,14 @@ public:
shared_ptr<XdmfOperationInternal> newOperation, shared_ptr<XdmfOperationInternal> newOperation,
int priority); int priority);
static shared_ptr<XdmfArray> addition(shared_ptr<XdmfArray> val1, shared_ptr<XdmfArray> val2);
static shared_ptr<XdmfArray> arcsin(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> arccos(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> arctan(std::vector<shared_ptr<XdmfArray> > values);
/** /**
* Averages the values contained in all the provided arrays. * Averages the values contained in all the provided arrays.
* *
...@@ -334,6 +344,12 @@ public: ...@@ -334,6 +344,12 @@ public:
chunk(shared_ptr<XdmfArray> val1, chunk(shared_ptr<XdmfArray> val1,
shared_ptr<XdmfArray> val2); shared_ptr<XdmfArray> val2);
static shared_ptr<XdmfArray> cos(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> division(shared_ptr<XdmfArray> val1, shared_ptr<XdmfArray> val2);
static shared_ptr<XdmfArray> exponent(std::vector<shared_ptr<XdmfArray> > values);
/** /**
* Evaluates an expression based on the list of variables provided. * Evaluates an expression based on the list of variables provided.
* A list of valid operations is retrievable from the getSupportedOperations * A list of valid operations is retrievable from the getSupportedOperations
...@@ -751,6 +767,12 @@ public: ...@@ -751,6 +767,12 @@ public:
*/ */
void insertVariable(std::string key, shared_ptr<XdmfArray> value); void insertVariable(std::string key, shared_ptr<XdmfArray> value);
static shared_ptr<XdmfArray> join(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> log(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> multiplication(shared_ptr<XdmfArray> val1, shared_ptr<XdmfArray> val2);
/** /**
* Parses the expression that the function contains and generates an array * Parses the expression that the function contains and generates an array
* containing the values that the function produces. * containing the values that the function produces.
...@@ -829,6 +851,12 @@ public: ...@@ -829,6 +851,12 @@ public:
*/ */
void setExpression(std::string newExpression); void setExpression(std::string newExpression);
static shared_ptr<XdmfArray> sin(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> sqrt(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> subtraction(shared_ptr<XdmfArray> val1, shared_ptr<XdmfArray> val2);
/** /**
* Adds together all the values contained in the provided arrays. * Adds together all the values contained in the provided arrays.
* *
...@@ -857,6 +885,8 @@ public: ...@@ -857,6 +885,8 @@ public:
static shared_ptr<XdmfArray> static shared_ptr<XdmfArray>
sum(std::vector<shared_ptr<XdmfArray> > values); sum(std::vector<shared_ptr<XdmfArray> > values);
static shared_ptr<XdmfArray> tan(std::vector<shared_ptr<XdmfArray> > values);
void traverse(const shared_ptr<XdmfBaseVisitor> visitor); void traverse(const shared_ptr<XdmfBaseVisitor> visitor);
protected: protected:
......
...@@ -32,6 +32,7 @@ class XdmfArrayType; ...@@ -32,6 +32,7 @@ class XdmfArrayType;
#include "XdmfCore.hpp" #include "XdmfCore.hpp"
#include <string> #include <string>
#include <vector> #include <vector>
#include <map>
#include "XdmfSharedPtr.hpp" #include "XdmfSharedPtr.hpp"
/** /**
......
...@@ -212,7 +212,7 @@ int main(int argc, char *argv[]) ...@@ -212,7 +212,7 @@ int main(int argc, char *argv[])
{ {
// Controllers are accessed like this since the writer removes them and creates its own. // Controllers are accessed like this since the writer removes them and creates its own.
shared_dynamic_cast<XdmfHDF5ControllerDSM>(readArray->getHeavyDataController(0))->setWorkerComm(readComm); shared_dynamic_cast<XdmfHDF5ControllerDSM>(readArray->getHeavyDataController(0))->setWorkerComm(readComm);
printf("read on core %d\n", id); std::cout << "read on core" << id << std::endl;
readArray->read(); readArray->read();
MPI_Barrier(readComm); MPI_Barrier(readComm);
......
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
#include "XdmfReader.hpp" #include "XdmfReader.hpp"
#include <map> #include <map>
#include <iostream> #include <iostream>
#include <cmath>
#include <string.h>
#include <stdio.h>
shared_ptr<XdmfArray> maximum(std::vector<shared_ptr<XdmfArray> > values); shared_ptr<XdmfArray> maximum(std::vector<shared_ptr<XdmfArray> > values);
...@@ -79,6 +82,83 @@ int main(int, char **) ...@@ -79,6 +82,83 @@ int main(int, char **)
assert(readFunctionHolder->getValuesString().compare(functionHolder->getValuesString()) == 0); assert(readFunctionHolder->getValuesString().compare(functionHolder->getValuesString()) == 0);
// Testing individual Functions/Operations
shared_ptr<XdmfArray> valArray1 = XdmfArray::New();
valArray1->pushBack(-0.5);
shared_ptr<XdmfArray> valArray2 = XdmfArray::New();
valArray2->pushBack(-0.25);
shared_ptr<XdmfArray> valArray3 = XdmfArray::New();
valArray3->pushBack((double)2);
std::map<std::string, shared_ptr<XdmfArray> > testVals;
testVals["A"] = valArray1;
testVals["B"] = valArray2;
testVals["C"] = valArray3;
assert(strcmp(XdmfFunction::evaluateExpression("ABS(A)", testVals)->getValuesString().c_str(), "0.5") == 0);
printf("ARCCOS(-0.5) = %lf\n", std::acos((double)-0.5));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("ARCCOS(A)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("ARCCOS(A)", testVals)->getValuesString().c_str(), "2.0943951023931957") == 0);
printf("ARCSIN(-0.5) = %lf\n", std::asin((double)-0.5));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("ARCSIN(A)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("ARCSIN(A)", testVals)->getValuesString().c_str(), "-0.52359877559829893") == 0);
printf("ARCTAN(-0.5) = %lf\n", std::atan((double)-0.5));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("ARCTAN(A)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("ARCTAN(A)", testVals)->getValuesString().c_str(), "-0.46364760900080609") == 0);
printf("EXP(-0.5, 2) = %lf\n", std::pow((double)-0.5, 2));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("EXP(A, C)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("EXP(A, C)", testVals)->getValuesString().c_str(), "0.25") == 0);
printf("COS(-0.5) = %lf\n", std::cos((double)-0.5));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("COS(A)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("COS(A)", testVals)->getValuesString().c_str(), "0.87758256189037276") == 0);
printf("LOG(2) = %lf\n", std::log((double)2));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("LOG(C)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("LOG(C)", testVals)->getValuesString().c_str(), "0.69314718055994529") == 0);
printf("LOG(2, 4) = %lf\n", std::log((double)2)/std::log(4));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("LOG(C, 4)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("LOG(C, 4)", testVals)->getValuesString().c_str(), "0.5") == 0);
printf("SQRT(2) = %lf\n", std::sqrt((double)2));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("SQRT(C)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("SQRT(C)", testVals)->getValuesString().c_str(), "1.4142135623730951") == 0);
printf("SIN(-0.5) = %lf\n", std::sin((double)-0.5));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("SIN(A)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("SIN(A)", testVals)->getValuesString().c_str(), "-0.47942553860420301") == 0);
printf("TAN(-0.5) = %lf\n", std::tan((double)-0.5));
printf("array contains: %s\n", XdmfFunction::evaluateExpression("TAN(A)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("TAN(A)", testVals)->getValuesString().c_str(), "-0.54630248984379048") == 0);
printf("JOIN(A, B, C)");
printf("array contains: %s\n", XdmfFunction::evaluateExpression("JOIN(A, B, C)", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("JOIN(A, B, C)", testVals)->getValuesString().c_str(), "-0.5 -0.25 2") == 0);
printf("A + B = %lf\n", -0.5 + -0.25);
printf("array contains: %s\n", XdmfFunction::evaluateExpression("A+B", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("A+B", testVals)->getValuesString().c_str(), "-0.75") == 0);
printf("A - B = %lf\n", -0.5 - -0.25);
printf("array contains: %s\n", XdmfFunction::evaluateExpression("A-B", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("A-B", testVals)->getValuesString().c_str(), "-0.25") == 0);
printf("A * B = %lf\n", -0.5 * -0.25);
printf("array contains: %s\n", XdmfFunction::evaluateExpression("A*B", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("A*B", testVals)->getValuesString().c_str(), "0.125") == 0);
printf("A / B = %lf\n", -0.5 / -0.25);
printf("array contains: %s\n", XdmfFunction::evaluateExpression("A/B", testVals)->getValuesString().c_str());
assert(strcmp(XdmfFunction::evaluateExpression("A/B", testVals)->getValuesString().c_str(), "2") == 0);
return 0; return 0;
} }
......
...@@ -7205,12 +7205,14 @@ XdmfFortran::retrieveInformationPropertyByKey(const int index, ...@@ -7205,12 +7205,14 @@ XdmfFortran::retrieveInformationPropertyByKey(const int index,
void void
XdmfFortran::addInformationArray(const int index, XdmfFortran::addInformationArray(const int index,
char * name,
void * values, void * values,
const int numValues, const int numValues,
const int arrayType) const int arrayType)
{ {
if (index < (int)mInformations.size()) { if (index < (int)mInformations.size()) {
shared_ptr<XdmfArray> newArray = XdmfArray::New(); shared_ptr<XdmfArray> newArray = XdmfArray::New();
newArray->setName(name);
writeToArray(newArray, numValues, arrayType, values); writeToArray(newArray, numValues, arrayType, values);
mInformations[index]->insert(newArray); mInformations[index]->insert(newArray);
} }
...@@ -9724,10 +9726,10 @@ extern "C" ...@@ -9724,10 +9726,10 @@ extern "C"
} }
void void
XdmfAddInformationArray(long * pointer, int * index, void * values, int * numValues, int * arrayType) XdmfAddInformationArray(long * pointer, int * index, char * name, void * values, int * numValues, int * arrayType)
{ {
XdmfFortran * xdmfFortran = reinterpret_cast<XdmfFortran *>(*pointer); XdmfFortran * xdmfFortran = reinterpret_cast<XdmfFortran *>(*pointer);
xdmfFortran->addInformationArray(*index, values, *numValues, *arrayType); xdmfFortran->addInformationArray(*index, name, values, *numValues, *arrayType);
} }
void void
......
...@@ -2762,6 +2762,7 @@ public: ...@@ -2762,6 +2762,7 @@ public:
* @param arrayType The data type that the array will consist of. * @param arrayType The data type that the array will consist of.
*/ */
void addInformationArray(const int index, void addInformationArray(const int index,
char * name,
void * values, void * values,
const int numValues, const int numValues,
const int arrayType); const int arrayType);
......
...@@ -30,7 +30,18 @@ ADD_TEST_FORTRAN(OutputTestXdmfFortran) ...@@ -30,7 +30,18 @@ ADD_TEST_FORTRAN(OutputTestXdmfFortran)
ADD_TEST_FORTRAN(EditTestXdmfFortran) ADD_TEST_FORTRAN(EditTestXdmfFortran)
ADD_TEST_FORTRAN(TestXdmfFortran) ADD_TEST_FORTRAN(TestXdmfFortran)
ADD_TEST_FORTRAN(NestedInfoFortran) ADD_TEST_FORTRAN(NestedInfoFortran)
SET_SOURCE_FILES_PROPERTIES(FixedOutputTestXdmfFortran.f90 PROPERTIES COMPILE_FLAGS -ffixed-form) #if GCC
STRING(REGEX MATCH "gfortran" IS_GCC "${CMAKE_Fortran_COMPILER}")
IF ("${IS_GCC}" STREQUAL "gfortran")
SET_SOURCE_FILES_PROPERTIES(FixedOutputTestXdmfFortran.f90 PROPERTIES
COMPILE_FLAGS "-ffixed-form")
ENDIF ("${IS_GCC}" STREQUAL "gfortran")
#if Intel
STRING(REGEX MATCH "ifort" IS_INTEL "${CMAKE_Fortran_COMPILER}")
IF ("${IS_INTEL}" STREQUAL "ifort")
SET_SOURCE_FILES_PROPERTIES(FixedOutputTestXdmfFortran.f90 PROPERTIES
COMPILE_FLAGS "-fixed")
ENDIF ("${IS_INTEL}" STREQUAL "ifort")
ADD_TEST_FORTRAN(FixedOutputTestXdmfFortran -ffixed-form) ADD_TEST_FORTRAN(FixedOutputTestXdmfFortran -ffixed-form)
# Add any cxx cleanup here: # Add any cxx cleanup here:
......
...@@ -179,8 +179,8 @@ ...@@ -179,8 +179,8 @@
& 'This is Grid 1'//CHAR(0)) & 'This is Grid 1'//CHAR(0))
tempID = XDMFADDINFORMATION(obj, 'SubInformation'//CHAR(0), & tempID = XDMFADDINFORMATION(obj, 'SubInformation'//CHAR(0), &
& 'This is an information inside an information'//CHAR(0)) & 'This is an information inside an information'//CHAR(0))
CALL XDMFADDINFORMATIONARRAY(obj, 1, myBrick, 3, & CALL XDMFADDINFORMATIONARRAY(obj, 1, "Array"//CHAR(0), myBrick, &
& XDMF_ARRAY_TYPE_FLOAT64) & 3, XDMF_ARRAY_TYPE_FLOAT64)
CALL XDMFMODIFYINFORMATIONARRAY(obj, 1, 0, myBrick, & CALL XDMFMODIFYINFORMATIONARRAY(obj, 1, 0, myBrick, &
& XDMF_ARRAY_TYPE_FLOAT64, 3, 3, 1, 1) & XDMF_ARRAY_TYPE_FLOAT64, 3, 3, 1, 1)
CALL XDMFINSERTINFORMATIONINTOINFORMATION(obj, 0, 1, .TRUE.) CALL XDMFINSERTINFORMATIONINTOINFORMATION(obj, 0, 1, .TRUE.)
......
...@@ -163,7 +163,7 @@ PROGRAM XdmfFortranExample ...@@ -163,7 +163,7 @@ PROGRAM XdmfFortranExample
PRINT *, 'Node Attribute ID: ', nodeSmallAttributeId PRINT *, 'Node Attribute ID: ', nodeSmallAttributeId
tempID = XDMFADDINFORMATION(obj, 'Grid1'//CHAR(0), 'This is Grid 1'//CHAR(0)) tempID = XDMFADDINFORMATION(obj, 'Grid1'//CHAR(0), 'This is Grid 1'//CHAR(0))
tempID = XDMFADDINFORMATION(obj, 'SubInformation'//CHAR(0), 'This is an information inside an information'//CHAR(0)) tempID = XDMFADDINFORMATION(obj, 'SubInformation'//CHAR(0), 'This is an information inside an information'//CHAR(0))
CALL XDMFADDINFORMATIONARRAY(obj, 1, myBrick, 3, XDMF_ARRAY_TYPE_FLOAT64) CALL XDMFADDINFORMATIONARRAY(obj, 1, "Array"//CHAR(0), myBrick, 3, XDMF_ARRAY_TYPE_FLOAT64)
CALL XDMFMODIFYINFORMATIONARRAY(obj, 1, 0, myBrick, XDMF_ARRAY_TYPE_FLOAT64, 3, 3, 1, 1) CALL XDMFMODIFYINFORMATIONARRAY(obj, 1, 0, myBrick, XDMF_ARRAY_TYPE_FLOAT64, 3, 3, 1, 1)
CALL XDMFINSERTINFORMATIONINTOINFORMATION(obj, 0, 1, .TRUE.) CALL XDMFINSERTINFORMATIONINTOINFORMATION(obj, 0, 1, .TRUE.)
CALL XDMFADDGRID(obj, 'TestGrid'//CHAR(0), .FALSE.) CALL XDMFADDGRID(obj, 'TestGrid'//CHAR(0), .FALSE.)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment