33 #error test_structure cannot be compiled in 2D
36 #include <Epetra_ConfigDefs.h> 39 #include <Epetra_MpiComm.h> 41 #include <Epetra_SerialComm.h> 44 #include <lifev/core/LifeV.hpp> 46 #include <lifev/core/array/MapEpetra.hpp> 48 #include <lifev/core/mesh/MeshData.hpp> 49 #include <lifev/core/mesh/MeshPartitioner.hpp> 50 #include <lifev/core/filter/PartitionIO.hpp> 52 #include <lifev/structure/solver/StructuralConstitutiveLawData.hpp> 53 #include <lifev/structure/solver/StructuralConstitutiveLaw.hpp> 54 #include <lifev/structure/solver/StructuralOperator.hpp> 55 #include <lifev/structure/fem/ExpressionDefinitions.hpp> 57 #include <lifev/structure/solver/isotropic/ExponentialMaterialNonLinear.hpp> 61 #include <lifev/core/array/MatrixSmall.hpp> 62 #include <lifev/eta/expression/Evaluate.hpp> 64 #include <lifev/core/filter/ExporterEnsight.hpp> 66 #include <lifev/core/filter/ExporterHDF5.hpp> 68 #include <lifev/core/filter/ExporterEmpty.hpp> 73 using namespace LifeV;
79 std::string stringList = list;
80 std::set<UInt> setList;
86 while ( commaPos != std::string::npos )
88 commaPos = stringList.find (
"," );
89 setList.insert ( atoi ( stringList.substr ( 0, commaPos ).c_str() ) );
90 stringList = stringList.substr ( commaPos + 1 );
92 setList.insert ( atoi ( stringList.c_str() ) );
123 std::shared_ptr<Epetra_Comm> structComm );
181 std::shared_ptr<Epetra_Comm> structComm) :
185 std::string data_file_name = command_line.follow (
"data", 2,
"-f",
"--file");
186 GetPot dataFile ( data_file_name );
187 parameters->data_file_name = data_file_name;
189 parameters->comm = structComm;
190 int ntasks = parameters->comm->NumProc();
192 if (!parameters->comm->MyPID() )
194 std::cout <<
"My PID = " << parameters->comm->MyPID() <<
" out of " << ntasks <<
" running." << std::endl;
203 std::cout <<
"2D cylinder test case is not available yet\n";
211 typedef std::shared_ptr<VectorEpetra> vectorPtr_Type;
215 typedef std::function<Real ( Real
const&, Real
const&, Real
const&, Real
const&, ID
const& ) > fiberFunction_Type;
216 typedef std::shared_ptr<fiberFunction_Type> fiberFunctionPtr_Type;
218 typedef std::vector<fiberFunctionPtr_Type> vectorFiberFunction_Type;
219 typedef std::shared_ptr<vectorFiberFunction_Type> vectorFiberFunctionPtr_Type;
221 typedef std::vector<vectorPtr_Type> listOfFiberDirections_Type;
224 typedef StructuralOperator<mesh_Type >::vector_Type vector_Type;
225 typedef std::shared_ptr<vector_Type> vectorPtr_Type;
227 typedef std::shared_ptr<solidFESpace_Type> solidFESpacePtr_Type;
229 typedef ETFESpace< RegionMesh<LinearTetra>, MapEpetra, 3, 3 > solidETFESpace_Type;
230 typedef std::shared_ptr<solidETFESpace_Type> solidETFESpacePtr_Type;
232 typedef ETFESpace< RegionMesh<LinearTetra>, MapEpetra, 3, 1 > scalarETFESpace_Type;
233 typedef std::shared_ptr<scalarETFESpace_Type> scalarETFESpacePtr_Type;
235 bool verbose = (parameters->comm->MyPID() == 0);
238 GetPot dataFile ( parameters->data_file_name.c_str() );
239 std::shared_ptr<StructuralConstitutiveLawData> dataStructure (
new StructuralConstitutiveLawData( ) );
240 dataStructure->setup (dataFile);
242 dataStructure->showMe();
246 meshData.setup (dataFile,
"solid/space_discretization");
249 const std::string partitioningMesh = dataFile (
"partitioningOffline/loadMesh",
"no");
252 std::shared_ptr<MeshPartitioner<mesh_Type> > meshPart;
253 std::shared_ptr<mesh_Type> pointerToMesh;
255 if ( ! (partitioningMesh.compare (
"no") ) )
257 std::shared_ptr<mesh_Type > fullMeshPtr (
new mesh_Type ( ( parameters->comm ) ) );
260 meshData.setup (dataFile,
"solid/space_discretization");
261 readMesh (*fullMeshPtr, meshData);
263 meshPart.reset (
new MeshPartitioner<mesh_Type> (fullMeshPtr, parameters->comm ) );
265 pointerToMesh = meshPart->meshPartition();
270 const std::string partsFileName (dataFile (
"partitioningOffline/hdf5_file_name",
"NO_DEFAULT_VALUE.h5") );
272 std::shared_ptr<Epetra_MpiComm> mpiComm =
273 std::dynamic_pointer_cast<Epetra_MpiComm>(parameters->comm);
274 PartitionIO<mesh_Type> partitionIO (partsFileName, mpiComm);
276 partitionIO.read (pointerToMesh);
282 std::string dOrder = dataFile (
"solid/space_discretization/order",
"P1");
283 solidFESpacePtr_Type dFESpace (
new solidFESpace_Type (pointerToMesh, dOrder, 3, parameters->comm) );
284 solidETFESpacePtr_Type dETFESpace (
new solidETFESpace_Type (pointerToMesh, & (dFESpace->refFE() ), & (dFESpace->fe().geoMap() ), parameters->comm) );
287 solidFESpacePtr_Type dScalarFESpace (
new solidFESpace_Type (pointerToMesh, dOrder, 1, parameters->comm) );
288 scalarETFESpacePtr_Type dScalarETFESpace (
new scalarETFESpace_Type (pointerToMesh, & (dFESpace->refFE() ), & (dFESpace->fe().geoMap() ), parameters->comm) );
291 vectorFiberFunctionPtr_Type pointerToVectorOfFamilies(
new vectorFiberFunction_Type( ) );
292 (*pointerToVectorOfFamilies).resize( dataStructure->numberFibersFamilies( ) );
295 std::vector<vectorPtr_Type> vectorInterpolated(0);
296 vectorPtr_Type referenceDirectionVector;
299 vectorInterpolated.resize( (*pointerToVectorOfFamilies).size() );
302 setOfFiberFunctions.setupFiberDefinitions( dataStructure->numberFibersFamilies( ) );
304 if( !dataStructure->constitutiveLaw().compare(
"anisotropic") )
308 std::cout <<
"Number of families: " << (*pointerToVectorOfFamilies).size() << std::endl;
311 for( UInt k(1); k <= pointerToVectorOfFamilies->size( ); k++ )
314 std::string family=
"Family";
316 std::string familyNumber;
317 std::ostringstream number;
319 familyNumber = number.str();
322 std::string creationString = family + familyNumber;
323 (*pointerToVectorOfFamilies)[ k-1 ].reset(
new fiberFunction_Type() );
324 (*pointerToVectorOfFamilies)[ k-1 ] = setOfFiberFunctions.fiberDefinition( creationString );
328 for( UInt k(0); k < (*pointerToVectorOfFamilies).size(); k++ )
330 vectorInterpolated[ k ].reset(
new vector_Type( dFESpace->map() ) );
331 dFESpace->interpolate ( *( ( *(pointerToVectorOfFamilies) )[ k ] ) ,
332 * ( ( vectorInterpolated )[ k ] ),
336 referenceDirectionVector.reset(
new vector_Type( dFESpace->map() ) );
337 dFESpace->interpolate (
static_cast<solidFESpace_Type::function_Type> ( referenceDirection ),
338 * ( referenceDirectionVector ),
344 std::string
const filename = dataFile (
"importer/filename",
"structure");
345 std::string
const importerType = dataFile (
"importer/type",
"hdf5");
348 std::string readType = dataFile (
"importer/analysis",
"instant");
353 if( !readType.compare(
"instant") )
356 ASSERT( numberOfSol,
"You did not set any solution to read!! ");
360 start = dataFile
( "importer/iterationStart" , 0
);
361 end = dataFile
( "importer/iterationEnd" , 0
);
362 numberOfSol = end - start;
364 ASSERT( numberOfSol,
"You did not set any solution to read!! ");
368 std::cout <<
"The filename is : " << filename << std::endl;
369 std::cout <<
"The importerType is: " << importerType << std::endl;
373 if (importerType.compare (
"hdf5") == 0)
375 M_importer.reset (
new hdf5Filter_Type (dataFile, filename) );
380 if (importerType.compare (
"none") == 0)
382 M_importer.reset (
new emptyFilter_Type ( dataFile, dFESpace->mesh(),
"solid", dFESpace->map().comm().MyPID() ) );
386 M_importer.reset (
new ensightFilter_Type ( dataFile, filename ) );
389 M_importer->setMeshProcId (dFESpace->mesh(), dFESpace->map().comm().MyPID() );
392 std::shared_ptr< Exporter<RegionMesh<LinearTetra> > > exporter;
394 std::string
const exporterType = dataFile (
"exporter/type",
"hdf5");
395 std::string
const nameExporter = dataFile (
"exporter/name",
"jacobian");
398 if (exporterType.compare (
"hdf5") == 0)
400 exporter.reset (
new hdf5Filter_Type ( dataFile, nameExporter) );
405 if (exporterType.compare (
"none") == 0)
407 exporter.reset (
new emptyFilter_Type ( dataFile, pointerToMesh, nameExporter, parameters->comm->MyPID() ) ) ;
412 exporter.reset (
new ensightFilter_Type ( dataFile, pointerToMesh, nameExporter, parameters->comm->MyPID() ) ) ;
415 exporter->setMeshProcId (dFESpace->mesh(), dFESpace->map().comm().MyPID() );
418 vectorPtr_Type patchAreaVector;
419 vectorPtr_Type patchAreaVectorScalar;
420 vectorPtr_Type jacobianF;
423 vectorPtr_Type dispRead;
425 vectorPtr_Type family1;
426 vectorPtr_Type family2;
427 vectorPtr_Type family1Read;
428 vectorPtr_Type family2Read;
429 vectorPtr_Type family1Computed;
430 vectorPtr_Type family2Computed;
432 std::vector< vectorPtr_Type > activationFunction(0);
433 std::vector< vectorPtr_Type > stretch(0);
434 std::vector< vectorPtr_Type > deformedVector(0);
435 std::vector< vectorPtr_Type > characteristicAngle(0);
436 std::vector< vectorPtr_Type > referenceAngle(0);
447 if( !dataStructure->constitutiveLaw().compare(
"anisotropic") )
449 activationFunction.resize( dataStructure->numberFibersFamilies( ) );
450 stretch.resize( dataStructure->numberFibersFamilies( ) );
451 deformedVector.resize( dataStructure->numberFibersFamilies( ) );
452 characteristicAngle.resize( dataStructure->numberFibersFamilies( ) );
453 referenceAngle.resize( dataStructure->numberFibersFamilies( ) );
455 family1.reset(
new vector_Type( dFESpace->map() ) );
456 family2.reset(
new vector_Type( dFESpace->map() ) );
457 family1Computed.reset(
new vector_Type( dFESpace->map() ) );
458 family2Computed.reset(
new vector_Type( dFESpace->map() ) );
460 family1Read.reset(
new vector_Type( dFESpace->map() ) );
461 family2Read.reset(
new vector_Type( dFESpace->map() ) );
464 patchAreaVector.reset (
new vector_Type ( dETFESpace->map() ) );
465 patchAreaVectorScalar.reset (
new vector_Type ( dScalarETFESpace->map() ) );
466 jacobianF.reset (
new vector_Type ( dScalarETFESpace->map() ) );
468 disp.reset(
new vector_Type( dFESpace->map() ) );
469 dispRead.reset(
new vector_Type( dFESpace->map() ) );
479 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::VectorField,
"displacement",
480 dFESpace, dispRead, UInt (0) );
500 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::ScalarField,
"jacobianF",
501 dScalarFESpace, jacobianF, UInt (0) );
503 if( !dataStructure->constitutiveLaw().compare(
"anisotropic") )
505 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::VectorField,
"family1",
506 dFESpace, family1Read, UInt (0) );
508 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::VectorField,
"family2",
509 dFESpace, family2Read, UInt (0) );
511 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::VectorField,
"family1Computed",
512 dFESpace, family1Computed, UInt (0) );
514 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::VectorField,
"family2Computed",
515 dFESpace, family2Computed, UInt (0) );
517 for( UInt i(0); i < dataStructure->numberFibersFamilies( ); i++ )
519 std::string familyNumber;
520 std::ostringstream number;
522 familyNumber = number.str();
524 activationFunction[ i ].reset(
new vector_Type( dScalarFESpace->map() ) );
525 stretch[ i ].reset(
new vector_Type( dScalarFESpace->map() ) );
526 deformedVector[ i ].reset(
new vector_Type( dFESpace->map() ) );
527 characteristicAngle[ i ].reset(
new vector_Type( dScalarFESpace->map() ) );
528 referenceAngle[ i ].reset(
new vector_Type( dScalarFESpace->map() ) );
530 std::string stringNameA(
"activation");
531 std::string stringNameS(
"stretch");
532 std::string deformedName(
"deformed");
533 std::string angleName(
"angle");
534 std::string refAngleName(
"refAngle");
536 stringNameA +=
"-"; stringNameA += familyNumber;
537 stringNameS +=
"-"; stringNameS += familyNumber;
538 deformedName +=
"-"; deformedName += familyNumber;
539 angleName +=
"-"; angleName += familyNumber;
540 refAngleName +=
"-"; refAngleName += familyNumber;
542 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::ScalarField, stringNameA,
543 dScalarFESpace, activationFunction[ i ], UInt (0) );
545 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::ScalarField, stringNameS,
546 dScalarFESpace, stretch[ i ], UInt (0) );
548 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::VectorField, deformedName,
549 dFESpace, deformedVector[ i ], UInt (0) );
551 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::ScalarField, angleName,
552 dScalarFESpace, characteristicAngle[ i ], UInt (0) );
554 exporter->addVariable ( ExporterData<RegionMesh<LinearTetra> >::ScalarField, refAngleName,
555 dScalarFESpace, referenceAngle[ i ], UInt (0) );
559 *family1Computed = *(vectorInterpolated[ 0 ] );
560 *family2Computed = *(vectorInterpolated[ 1 ] );
564 exporter->postProcess ( 0.0 );
570 MPI_Barrier (MPI_COMM_WORLD);
574 Real refElemArea (0);
576 for (UInt iq = 0; iq < dFESpace->qr().nbQuadPt(); iq++)
578 refElemArea += dFESpace->qr().weight (iq);
581 Real wQuad (refElemArea / dFESpace->refFE().nbDof() );
584 std::vector<GeoVector> coords = dFESpace->refFE().refCoor();
585 std::vector<Real> weights (dFESpace->fe().nbFEDof(), wQuad);
586 fakeQuadratureRule.setDimensionShape ( shapeDimension (dFESpace->refFE().shape() ), dFESpace->refFE().shape() );
587 fakeQuadratureRule.setPoints (coords, weights);
593 MatrixSmall<3,3> identity;
594 identity (0, 0) = 1.0;
595 identity (0, 1) = 0.0;
596 identity (0, 2) = 0.0;
597 identity (1, 0) = 0.0;
598 identity (1, 1) = 1.0;
599 identity (1, 2) = 0.0;
600 identity (2, 0) = 0.0;
601 identity (2, 1) = 0.0;
602 identity (2, 2) = 1.0;
605 evaluateNode( elements ( dScalarETFESpace->mesh() ),
609 ) >> patchAreaVectorScalar;
610 patchAreaVectorScalar->globalAssemble();
613 evaluateNode( elements ( dETFESpace->mesh() ),
617 ) >> patchAreaVector;
618 patchAreaVector->globalAssemble();
620 std::string
const nameField = dataFile (
"importer/nameField",
"displacement");
623 for( i=0,k =0; i < numberOfSol; i++, k++ )
635 if( !dataStructure->constitutiveLaw().compare(
"anisotropic") )
645 if( !readType.compare(
"interval") )
651 current = dataFile
( "importer/iteration" , 100000
, i );
654 std::string iterationString;
655 std::ostringstream number;
657 number << std::setw (5) << ( current );
658 iterationString = number.str();
659 std::string fam1 =
"Family-1";
660 std::string fam2 =
"Family-2";
662 std::cout <<
"Current reading: " << iterationString << std::endl;
665 LifeV::ExporterData<
mesh_Type> solutionDispl (LifeV::ExporterData<mesh_Type>::VectorField,nameField +
"." + iterationString,
666 dFESpace, disp, UInt (0), LifeV::ExporterData<mesh_Type>::UnsteadyRegime );
670 M_importer->readVariable (solutionDispl);
680 ExpressionDefinitions::deformationGradient ( dETFESpace, *disp, 0, identity );
684 ExpressionDefinitions::tensorC( transpose(F), F );
688 ExpressionDefinitions::determinantF( F );
692 ExpressionDefinitions::powerExpression( J , (-2.0/3.0) );
724 evaluateNode( elements ( dETFESpace->mesh() ),
729 jacobianF->globalAssemble();
730 *jacobianF = *jacobianF / *patchAreaVectorScalar;
732 if( !dataStructure->constitutiveLaw().compare(
"anisotropic") )
734 LifeV::ExporterData<
mesh_Type> family1Data (LifeV::ExporterData<mesh_Type>::VectorField,fam1 +
"." + iterationString,
735 dFESpace, family1, UInt (0), LifeV::ExporterData<mesh_Type>::UnsteadyRegime );
737 LifeV::ExporterData<
mesh_Type> family2Data (LifeV::ExporterData<mesh_Type>::VectorField,fam2 +
"." + iterationString,
738 dFESpace, family2, UInt (0), LifeV::ExporterData<mesh_Type>::UnsteadyRegime );
740 M_importer->readVariable (family2Data);
741 M_importer->readVariable (family1Data);
743 *family1Read = *family1;
744 *family2Read = *family2;
747 for( UInt j(0); j < dataStructure->numberFibersFamilies( ); j++ )
750 ExpressionDefinitions::interpolatedValue_Type fiberIth =
751 ExpressionDefinitions::interpolateFiber( dETFESpace, *(vectorInterpolated[ j ] ) );
754 ExpressionDefinitions::outerProduct_Type Mith = ExpressionDefinitions::fiberTensor( fiberIth );
757 ExpressionDefinitions::stretch_Type IVith = ExpressionDefinitions::fiberStretch( C, Mith );
760 ExpressionDefinitions::isochoricStretch_Type IVithBar =
761 ExpressionDefinitions::isochoricFourthInvariant( Jel, IVith );
763 *stretch[ j ] *= 0.0;
764 *activationFunction[ j ] *= 0.0;
765 *deformedVector[ j ] *= 0.0;
767 evaluateNode( elements ( dScalarETFESpace->mesh() ),
770 meas_K * IVithBar * phi_i
772 stretch[ j ]->globalAssemble();
773 *(stretch[ j ]) = *(stretch[ j ]) / *patchAreaVectorScalar;
775 Real stretch = dataStructure->ithCharacteristicStretch( j ) * dataStructure->ithCharacteristicStretch( j );
776 evaluateNode( elements ( dScalarETFESpace->mesh() ),
779 meas_K * atan( IVithBar - value( stretch ) , dataStructure->smoothness() , ( 1 / 3.14159265359 ), ( 1.0/2.0 ) ) * phi_i
780 ) >> activationFunction[ j ];
781 activationFunction[ j ]->globalAssemble();
782 *(activationFunction[ j ]) = *(activationFunction[ j ]) / *patchAreaVectorScalar;
784 evaluateNode( elements ( dETFESpace->mesh() ),
787 meas_K * dot( ( F * value( dETFESpace ,*vectorInterpolated[ j ] ) ) , phi_i )
788 ) >> deformedVector[ j ];
789 deformedVector[ j ]->globalAssemble();
790 *deformedVector[ j ] = *deformedVector[ j ] / *patchAreaVector;
792 evaluateNode( elements ( dScalarETFESpace->mesh() ),
795 meas_K * dot( normalize( value( dETFESpace, *deformedVector[j] ) ) , value( dETFESpace, *referenceDirectionVector ) ) * phi_i
796 ) >> characteristicAngle[ j ];
797 characteristicAngle[ j ]->globalAssemble();
798 *(characteristicAngle[ j ]) = *(characteristicAngle[ j ]) / *patchAreaVectorScalar;
800 evaluateNode( elements ( dScalarETFESpace->mesh() ),
803 meas_K * dot( normalize( value( dETFESpace, *vectorInterpolated[j] ) ) , value( dETFESpace, *referenceDirectionVector ) ) * phi_i
804 ) >> referenceAngle[ j ];
805 referenceAngle[ j ]->globalAssemble();
806 *(referenceAngle[ j ]) = *(referenceAngle[ j ]) / *patchAreaVectorScalar;
811 exporter->postProcess( dataStructure->dataTime()->initialTime() + k * dataStructure->dataTime()->timeStep() );
817 std::cout <<
"Analysis Completed!" << std::endl;
821 exporter->closeFile( );
822 M_importer->closeFile( );
824 MPI_Barrier (MPI_COMM_WORLD);
833 MPI_Init (&argc, &argv);
834 std::shared_ptr<Epetra_MpiComm> Comm (
new Epetra_MpiComm ( MPI_COMM_WORLD ) );
835 if ( Comm->MyPID() == 0 )
837 std::cout <<
"% using MPI" << std::endl;
840 std::shared_ptr<Epetra_SerialComm> Comm (
new Epetra_SerialComm() );
841 std::cout <<
"% using serial Version" << std::endl;
844 Structure structure ( argc, argv, Comm );
std::shared_ptr< Epetra_Comm > comm
void assignFunction(bcBase_Type &base)
Assign the function to the base of the BCHandler.
Structure(int argc, char **argv, std::shared_ptr< Epetra_Comm > structComm)
class ExpressionEmult Class for representing the transpose operation of an expression ...
std::shared_ptr< emptyFilter_Type > emptyFilterPtr_Type
FESpace - Short description here please!
int main(int argc, char **argv)
GetPot(const int argc_, char **argv_, const char *FieldSeparator=0x0)
std::function< Real(Real const &, Real const &, Real const &, Real const &, ID const &) > fct_type
LifeV::ExporterEnsight< mesh_Type > ensightFilter_Type
LifeV::Exporter< mesh_Type > filter_Type
std::shared_ptr< hdf5Filter_Type > hdf5FilterPtr_Type
filterPtr_Type M_importer
LifeV::ExporterEmpty< mesh_Type > emptyFilter_Type
Epetra_Import const & importer()
Getter for the Epetra_Import.
void run3d()
run the 3D driven cylinder simulation
LifeV::RegionMesh< LinearTetra > mesh_Type
ExpressionProduct< ExpressionTranspose< ExpressionAddition< ExpressionInterpolateGradient< MeshType, MapEpetra, 3, 3 >, ExpressionMatrix< 3, 3 > > >, ExpressionAddition< ExpressionInterpolateGradient< MeshType, MapEpetra, 3, 3 >, ExpressionMatrix< 3, 3 > > > rightCauchyGreenTensor_Type
std::string data_file_name
void run2d()
run the 2D driven cylinder simulation
std::shared_ptr< ensightFilter_Type > ensightFilterPtr_Type
MeshData - class for handling spatial discretization.
std::shared_ptr< Private > parameters
ExpressionMeas - Expression for the measure of the element.
double Real
Generic real data.
ExpressionAddition< ExpressionInterpolateGradient< MeshType, MapEpetra, 3, 3 >, ExpressionMatrix< 3, 3 > > deformationGradient_Type
std::set< UInt > parseList(const std::string &list)
int operator()(const char *VarName, int Default, unsigned Idx) const
int operator()(const char *VarName, int Default) const
std::shared_ptr< LifeV::Exporter< mesh_Type > > filterPtr_Type
ExpressionDeterminant< ExpressionAddition< ExpressionInterpolateGradient< MeshType, MapEpetra, 3, 3 >, ExpressionMatrix< 3, 3 > > > determinantTensorF_Type
QuadratureRule - The basis class for storing and accessing quadrature rules.
ExpressionPower< ExpressionDeterminant< ExpressionAddition< ExpressionInterpolateGradient< MeshType, MapEpetra, 3, 3 >, ExpressionMatrix< 3, 3 > > > > powerExpression_Type
uint32_type UInt
generic unsigned integer (used mainly for addressing)
unsigned vector_variable_size(const char *VarName) const