Commit 612a6e36 authored by Chris Cantwell's avatar Chris Cantwell
Browse files

Merge branch 'feature/FieldIO' of localhost:nektar

parents d3948e5b 26575e56
......@@ -55,7 +55,7 @@ int main(int argc, char *argv[])
exit(1);
}
StdRegions::ExpansionType regionShape = StdRegions::ePrism;
LibUtilities::ShapeType regionShape = LibUtilities::ePrism;
int bType_x_val = atoi(argv[1]);
int bType_y_val = atoi(argv[2]);
int bType_z_val = atoi(argv[3]);
......@@ -72,7 +72,7 @@ int main(int argc, char *argv[])
}
// Check to see that correct Expansions are used
if( regionShape == StdRegions::ePrism)
if( regionShape == LibUtilities::ePrism)
{
if( (bType_x == LibUtilities::eOrtho_B) || (bType_x == LibUtilities::eModified_B) ) {
NEKERROR(ErrorUtil::efatal, "Basis 1 cannot be of type Ortho_B or Modified_B");
......@@ -105,7 +105,7 @@ int main(int argc, char *argv[])
// Define a 3D expansion based on basis definition
StdRegions::StdExpansion3D *lpr = 0;
if( regionShape == StdRegions::ePrism )
if( regionShape == LibUtilities::ePrism )
{
// //////////////////////////////////////////////////////
// Set up Prism vertex coordinates
......@@ -197,7 +197,7 @@ int main(int argc, char *argv[])
Array<OneD, StdRegions::StdExpansion3DSharedPtr> xMap(3);
for(int i=0; i < 3; ++i){
xMap[i] = MemoryManager<StdRegions::StdPrismExp>::AllocateSharedPtr(basisKey_x, basisKey_y, basisKey_z);
xMap[i] = MemoryManager<StdRegions::StdPrismExp>::AllocateSharedPtr(basisKey_x, basisKey_y, basisKey_z);
}
......@@ -250,7 +250,8 @@ int main(int argc, char *argv[])
t[1] = 0.5;
t[2] = 0.2;
if( regionShape == StdRegions::ePrism ) {
if( regionShape == LibUtilities::ePrism )
{
solution[0] = Prism_sol( t[0], t[1], t[2], P, Q, R, bType_x, bType_y, bType_z );
}
......
......@@ -25,7 +25,7 @@ int main(int argc, char *argv[])
LibUtilities::PointsType Qtype1,Qtype2;
LibUtilities::BasisType btype1,btype2;
LibUtilities::PointsType NodalType;
StdRegions::ExpansionType regionshape;
LibUtilities::ShapeType regionshape;
StdRegions::StdExpansion2D *E;
Array<OneD, NekDouble> sol;
Array<OneD, NekDouble> coords(8);
......@@ -41,8 +41,8 @@ int main(int argc, char *argv[])
fprintf(stderr,"Where RegionShape is an integer value which "
"dictates the region shape:\n");
fprintf(stderr,"\t Triangle = 2\n");
fprintf(stderr,"\t Quadrilateral = 3\n");
fprintf(stderr,"\t Triangle = 3\n");
fprintf(stderr,"\t Quadrilateral = 4\n");
fprintf(stderr,"Where type is an integer value which "
"dictates the basis as:\n");
......@@ -64,10 +64,10 @@ int main(int argc, char *argv[])
exit(1);
}
regionshape = (StdRegions::ExpansionType) atoi(argv[1]);
regionshape = (LibUtilities::ShapeType) atoi(argv[1]);
// Check to see if 2D region
if((regionshape != StdRegions::eTriangle)&&(regionshape != StdRegions::eQuadrilateral))
if((regionshape != LibUtilities::eTriangle)&&(regionshape != LibUtilities::eQuadrilateral))
{
NEKERROR(ErrorUtil::efatal,"This shape is not a 2D region");
}
......@@ -99,7 +99,7 @@ int main(int argc, char *argv[])
// Check to see that correct Expansions are used
switch(regionshape)
{
case StdRegions::eTriangle:
case LibUtilities::eTriangle:
if((btype1 == LibUtilities::eOrtho_B)||(btype1 == LibUtilities::eModified_B))
{
NEKERROR(ErrorUtil::efatal,
......@@ -107,7 +107,7 @@ int main(int argc, char *argv[])
}
break;
case StdRegions::eQuadrilateral:
case LibUtilities::eQuadrilateral:
if((btype1 == LibUtilities::eOrtho_B)||(btype1 == LibUtilities::eOrtho_C)||
(btype1 == LibUtilities::eModified_B)||(btype1 == LibUtilities::eModified_C))
{
......@@ -145,7 +145,7 @@ int main(int argc, char *argv[])
if(btype2 != LibUtilities::eFourier)
{
if (regionshape == StdRegions::eTriangle) {
if (regionshape == LibUtilities::eTriangle) {
Qtype2 = LibUtilities::eGaussRadauMAlpha1Beta0;
}
else
......@@ -163,9 +163,8 @@ int main(int argc, char *argv[])
switch(regionshape)
{
case StdRegions::eTriangle:
case LibUtilities::eTriangle:
{
coords[0] = atof(argv[8]);
coords[1] = atof(argv[9]);
coords[2] = atof(argv[10]);
......@@ -225,7 +224,7 @@ int main(int argc, char *argv[])
}
break;
case StdRegions::eQuadrilateral:
case LibUtilities::eQuadrilateral:
{
// Gather coordinates
coords[0] = atof(argv[8]);
......@@ -319,7 +318,7 @@ int main(int argc, char *argv[])
x[0] = (coords[0] + coords[2])*0.5;
x[1] = (coords[1] + coords[5])*0.5;
if(regionshape == StdRegions::eTriangle)
if(regionshape == LibUtilities::eTriangle)
{
sol[0] = Tri_sol(x[0],x[1],order1,order2);
}
......
......@@ -58,7 +58,7 @@ int main(int argc, char *argv[]){
PointsType Qtype1,Qtype2,Qtype3;
BasisType btype1,btype2,btype3;
ExpansionType regionshape;
ShapeType regionshape;
StdExpansion* E;
Array<OneD, NekDouble> sol;
......@@ -69,9 +69,9 @@ int main(int argc, char *argv[]){
"x3 y3 z3 [x4 y4 z4...]\n");
fprintf(stderr,"Where RegionShape is an integer value which "
"dictates the region shape:\n");
fprintf(stderr,"\t Tetrahedron = 4\n");
fprintf(stderr,"\t Prism = 6\n");
fprintf(stderr,"\t Hexahedron = 7\n");
fprintf(stderr,"\t Tetrahedron = 5\n");
fprintf(stderr,"\t Prism = 7\n");
fprintf(stderr,"\t Hexahedron = 8\n");
fprintf(stderr,"Where type is an integer value which "
......@@ -91,12 +91,12 @@ int main(int argc, char *argv[]){
exit(1);
}
regionshape = (StdRegions::ExpansionType) atoi(argv[1]);
regionshape = (LibUtilities::ShapeType) atoi(argv[1]);
// Check to see if 3D region
if (regionshape != StdRegions::eTetrahedron &&
regionshape != StdRegions::ePrism &&
regionshape != StdRegions::eHexahedron)
if (regionshape != LibUtilities::eTetrahedron &&
regionshape != LibUtilities::ePrism &&
regionshape != LibUtilities::eHexahedron)
{
NEKERROR(ErrorUtil::efatal,"This shape is not a 3D region");
}
......@@ -111,7 +111,7 @@ int main(int argc, char *argv[]){
// Check to see that correct Expansions are used
switch(regionshape)
{
case StdRegions::eTetrahedron:
case LibUtilities::eTetrahedron:
if((btype1 == eOrtho_B) || (btype1 == eOrtho_C)
|| (btype1 == eModified_B) || (btype1 == eModified_C))
{
......@@ -134,7 +134,7 @@ int main(int argc, char *argv[]){
"or Modified_B");
}
break;
case StdRegions::ePrism:
case LibUtilities::ePrism:
if((btype1 == eOrtho_B) || (btype1 == eOrtho_C)
|| (btype1 == eModified_B) || (btype1 == eModified_C))
{
......@@ -157,7 +157,7 @@ int main(int argc, char *argv[]){
"or Modified_C");
}
break;
case StdRegions::eHexahedron:
case LibUtilities::eHexahedron:
if((btype1 == eOrtho_B) || (btype1 == eOrtho_C)
|| (btype1 == eModified_B) || (btype1 == eModified_C))
{
......@@ -204,7 +204,7 @@ int main(int argc, char *argv[]){
if(btype2 != LibUtilities::eFourier)
{
if (regionshape == StdRegions::eTetrahedron) {
if (regionshape == LibUtilities::eTetrahedron) {
Qtype2 = LibUtilities::eGaussRadauMAlpha1Beta0;
}
else
......@@ -219,10 +219,11 @@ int main(int argc, char *argv[]){
if(btype3 != LibUtilities::eFourier)
{
if (regionshape == StdRegions::eTetrahedron) {
if (regionshape == LibUtilities::eTetrahedron)
{
Qtype3 = LibUtilities::eGaussRadauMAlpha2Beta0;
}
else if (regionshape == StdRegions::ePrism)
else if (regionshape == LibUtilities::ePrism)
{
Qtype3 = LibUtilities::eGaussRadauMAlpha1Beta0;
}
......@@ -251,7 +252,7 @@ int main(int argc, char *argv[]){
switch(regionshape)
{
case StdRegions::eTetrahedron:
case LibUtilities::eTetrahedron:
{
SpatialDomains::TetGeomSharedPtr geom = CreateTetGeom(argc, argv);
E = new LocalRegions::TetExp(Bkey1, Bkey2, Bkey3, geom);
......@@ -266,7 +267,7 @@ int main(int argc, char *argv[]){
//----------------------------------------------
}
break;
case StdRegions::ePrism:
case LibUtilities::ePrism:
{
SpatialDomains::PrismGeomSharedPtr geom = CreatePrismGeom(argc, argv);
E = new LocalRegions::PrismExp(Bkey1, Bkey2, Bkey3, geom);
......@@ -281,7 +282,7 @@ int main(int argc, char *argv[]){
//----------------------------------------------
}
break;
case StdRegions::eHexahedron:
case LibUtilities::eHexahedron:
{
SpatialDomains::HexGeomSharedPtr geom = CreateHexGeom(argc, argv);
E = new LocalRegions::HexExp(Bkey1, Bkey2, Bkey3, geom);
......
......@@ -35,7 +35,7 @@ int main(int argc, char *argv[])
LibUtilities::PointsType Qtype1,Qtype2;
LibUtilities::BasisType btype1,btype2;
LibUtilities::PointsType NodalType;
StdRegions::ExpansionType regionshape;
LibUtilities::ShapeType regionshape;
StdRegions::StdExpansion2D *E;
Array<OneD, NekDouble> sol,x,y,dx,dy;
Array<OneD, NekDouble> coords(8);
......@@ -51,8 +51,8 @@ int main(int argc, char *argv[])
fprintf(stderr,"Where RegionShape is an integer value which "
"dictates the region shape:\n");
fprintf(stderr,"\t Triangle = 2\n");
fprintf(stderr,"\t Quadrilateral = 3\n");
fprintf(stderr,"\t Triangle = 3\n");
fprintf(stderr,"\t Quadrilateral = 4\n");
fprintf(stderr,"Where type is an integer value which "
"dictates the basis as:\n");
......@@ -74,10 +74,11 @@ int main(int argc, char *argv[])
exit(1);
}
regionshape = (StdRegions::ExpansionType) atoi(argv[1]);
regionshape = (LibUtilities::ShapeType) atoi(argv[1]);
// Check to see if 2D region
if((regionshape != StdRegions::eTriangle)&&(regionshape != StdRegions::eQuadrilateral))
if((regionshape != LibUtilities::eTriangle)&&
(regionshape != LibUtilities::eQuadrilateral))
{
NEKERROR(ErrorUtil::efatal,"This shape is not a 2D region");
}
......@@ -110,35 +111,35 @@ int main(int argc, char *argv[])
// Check to see that correct Expansions are used
switch(regionshape)
{
case StdRegions::eTriangle:
if((btype1 == LibUtilities::eOrtho_B)||(btype1 == LibUtilities::eModified_B))
{
NEKERROR(ErrorUtil::efatal,
"Basis 1 cannot be of type Ortho_B or Modified_B");
}
case LibUtilities::eTriangle:
if((btype1 == LibUtilities::eOrtho_B)||(btype1 == LibUtilities::eModified_B))
{
NEKERROR(ErrorUtil::efatal,
"Basis 1 cannot be of type Ortho_B or Modified_B");
}
break;
case StdRegions::eQuadrilateral:
if((btype1 == LibUtilities::eOrtho_B)||(btype1 == LibUtilities::eOrtho_C)||
(btype1 == LibUtilities::eModified_B)||(btype1 == LibUtilities::eModified_C))
{
NEKERROR(ErrorUtil::efatal,
"Basis 1 is for 2 or 3D expansions");
}
if((btype2 == LibUtilities::eOrtho_B)||(btype2 == LibUtilities::eOrtho_C)||
(btype2 == LibUtilities::eModified_B)||(btype2 == LibUtilities::eModified_C))
{
NEKERROR(ErrorUtil::efatal,
"Basis 2 is for 2 or 3D expansions");
case LibUtilities::eQuadrilateral:
if((btype1 == LibUtilities::eOrtho_B)||(btype1 == LibUtilities::eOrtho_C)||
(btype1 == LibUtilities::eModified_B)||(btype1 == LibUtilities::eModified_C))
{
NEKERROR(ErrorUtil::efatal,
"Basis 1 is for 2 or 3D expansions");
}
if((btype2 == LibUtilities::eOrtho_B)||(btype2 == LibUtilities::eOrtho_C)||
(btype2 == LibUtilities::eModified_B)||(btype2 == LibUtilities::eModified_C))
{
NEKERROR(ErrorUtil::efatal,
"Basis 2 is for 2 or 3D expansions");
}
break;
default:
ASSERTL0(false, "Not a 2D expansion.");
break;
break;
default:
ASSERTL0(false, "Not a 2D expansion.");
break;
}
order1 = atoi(argv[4]);
order2 = atoi(argv[5]);
nq1 = atoi(argv[6]);
......@@ -161,7 +162,8 @@ int main(int argc, char *argv[])
if(btype2 != LibUtilities::eFourier)
{
if (regionshape == StdRegions::eTriangle) {
if (regionshape == LibUtilities::eTriangle)
{
Qtype2 = LibUtilities::eGaussRadauMAlpha1Beta0;
}
else
......@@ -179,9 +181,9 @@ int main(int argc, char *argv[])
switch(regionshape)
{
case StdRegions::eTriangle:
case LibUtilities::eTriangle:
{
coords[0] = atof(argv[8]);
coords[1] = atof(argv[9]);
coords[2] = atof(argv[10]);
......@@ -239,76 +241,76 @@ int main(int argc, char *argv[])
}
break;
case StdRegions::eQuadrilateral:
{
// Gather coordinates
coords[0] = atof(argv[8]);
coords[1] = atof(argv[9]);
coords[2] = atof(argv[10]);
coords[3] = atof(argv[11]);
coords[4] = atof(argv[12]);
coords[5] = atof(argv[13]);
coords[6] = atof(argv[14]);
coords[7] = atof(argv[15]);
// Set up coordinates
const int zero=0;
const int one=1;
const int two=2;
const int three=3;
const double dZero=0.0;
SpatialDomains::VertexComponentSharedPtr verts[4];
verts[0] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,zero,coords[0],coords[1],dZero);
verts[1] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,one,coords[2],coords[3],dZero);
verts[2] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,two,coords[4],coords[5],dZero);
verts[3] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,three,coords[6],coords[7],dZero);
// Set up Edges
SpatialDomains::SegGeomSharedPtr edges[4];
edges[0] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(zero,verts[0],verts[1]);
edges[1] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(one,verts[1],verts[2]);
edges[2] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(two,verts[2],verts[3]);
edges[3] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(three,verts[3],verts[0]);
StdRegions::Orientation eorient[4];
eorient[0] = edgeDir;
eorient[1] = edgeDir;
eorient[2] = edgeDir;
eorient[3] = edgeDir;
SpatialDomains::QuadGeomSharedPtr geom = MemoryManager<SpatialDomains::QuadGeom>::AllocateSharedPtr(zero,verts,edges,eorient);
geom->SetOwnData();
const LibUtilities::PointsKey Pkey1(nq1,Qtype1);
const LibUtilities::PointsKey Pkey2(nq2,Qtype2);
const LibUtilities::BasisKey Bkey1(btype1,order1,Pkey1);
const LibUtilities::BasisKey Bkey2(btype2,order2,Pkey2);
E = new LocalRegions::QuadExp(Bkey1,Bkey2,geom);
//----------------------------------------------
// Define solution to be projected
E->GetCoords(x,y);
for(i = 0; i < nq1*nq2; ++i)
case LibUtilities::eQuadrilateral:
{
sol[i] = Quad_sol(x[i],y[i],order1,order2,btype1,btype2);
// Gather coordinates
coords[0] = atof(argv[8]);
coords[1] = atof(argv[9]);
coords[2] = atof(argv[10]);
coords[3] = atof(argv[11]);
coords[4] = atof(argv[12]);
coords[5] = atof(argv[13]);
coords[6] = atof(argv[14]);
coords[7] = atof(argv[15]);
// Set up coordinates
const int zero=0;
const int one=1;
const int two=2;
const int three=3;
const double dZero=0.0;
SpatialDomains::VertexComponentSharedPtr verts[4];
verts[0] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,zero,coords[0],coords[1],dZero);
verts[1] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,one,coords[2],coords[3],dZero);
verts[2] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,two,coords[4],coords[5],dZero);
verts[3] = MemoryManager<SpatialDomains::VertexComponent>::AllocateSharedPtr(two,three,coords[6],coords[7],dZero);
// Set up Edges
SpatialDomains::SegGeomSharedPtr edges[4];
edges[0] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(zero,verts[0],verts[1]);
edges[1] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(one,verts[1],verts[2]);
edges[2] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(two,verts[2],verts[3]);
edges[3] = MemoryManager<SpatialDomains::SegGeom>::AllocateSharedPtr(three,verts[3],verts[0]);
StdRegions::Orientation eorient[4];
eorient[0] = edgeDir;
eorient[1] = edgeDir;
eorient[2] = edgeDir;
eorient[3] = edgeDir;
SpatialDomains::QuadGeomSharedPtr geom = MemoryManager<SpatialDomains::QuadGeom>::AllocateSharedPtr(zero,verts,edges,eorient);
geom->SetOwnData();
const LibUtilities::PointsKey Pkey1(nq1,Qtype1);
const LibUtilities::PointsKey Pkey2(nq2,Qtype2);
const LibUtilities::BasisKey Bkey1(btype1,order1,Pkey1);
const LibUtilities::BasisKey Bkey2(btype2,order2,Pkey2);
E = new LocalRegions::QuadExp(Bkey1,Bkey2,geom);
//----------------------------------------------
// Define solution to be projected
E->GetCoords(x,y);
for(i = 0; i < nq1*nq2; ++i)
{
sol[i] = Quad_sol(x[i],y[i],order1,order2,btype1,btype2);
}
//---------------------------------------------
}
//---------------------------------------------
}
break;
default:
ASSERTL0(false, "Not a 2D expansion.");
break;
default:
ASSERTL0(false, "Not a 2D expansion.");
break;
}
//--------------------------------------------
// Take the numerical derivative of the solution and add together in sol
E->PhysDeriv(sol,dx,dy);
Vmath::Vadd(nq1*nq2,dx,1,dy,1,sol,1);
//---------------------------------------------
//---------------------------------------------
// Project onto Expansion
E->FwdTrans(sol,E->UpdateCoeffs());
......@@ -323,7 +325,7 @@ int main(int argc, char *argv[])
// Define exact solution of differential
switch(regionshape)
{
case StdRegions::eTriangle:
case LibUtilities::eTriangle:
{
//----------------------------------------------
// Define solution to be differentiated
......@@ -334,7 +336,7 @@ int main(int argc, char *argv[])
//----------------------------------------------
}
break;
case StdRegions::eQuadrilateral:
case LibUtilities::eQuadrilateral:
{
for(i = 0; i < nq1*nq2; ++i)
{
......@@ -343,11 +345,11 @@ int main(int argc, char *argv[])
}
//---------------------------------------------
break;
default:
ASSERTL0(false, "Not a 2D expansion.");
break;
default:
ASSERTL0(false, "Not a 2D expansion.");
break;
}
//--------------------------------------------
// Write solution
ofstream outfile("ProjectFile2D.dat");
......
......@@ -73,7 +73,7 @@ int main(int argc, char *argv[]){
LibUtilities::PointsType Qtype1,Qtype2,Qtype3;
LibUtilities::BasisType btype1,btype2,btype3;
StdRegions::ExpansionType regionshape;
LibUtilities::ShapeType regionshape;
StdRegions::StdExpansion *E;
Array<OneD, NekDouble> x, y, z, sol, dx, dy, dz;
......@@ -85,9 +85,9 @@ int main(int argc, char *argv[]){
fprintf(stderr,"Where RegionShape is an integer value which "
"dictates the region shape:\n");
fprintf(stderr,"\t Tetrahedron = 4\n");
fprintf(stderr,"\t Prism = 6\n");
fprintf(stderr,"\t Hexahedron = 7\n");
fprintf(stderr,"\t Tetrahedron = 5\n");
fprintf(stderr,"\t Prism = 7\n");
fprintf(stderr,"\t Hexahedron = 8\n");
fprintf(stderr,"Where type is an integer value which "
"dictates the basis as:\n");
......@@ -106,12 +106,12 @@ int main(int argc, char *argv[]){
exit(1);
}
regionshape = (ExpansionType) atoi(argv[1]);
regionshape = (ShapeType) atoi(argv[1]);
// Check to see if 3D region
if (regionshape != StdRegions::eTetrahedron &&
regionshape != StdRegions::ePrism &&
regionshape != StdRegions::eHexahedron)
if (regionshape != LibUtilities::eTetrahedron &&
regionshape != LibUtilities::ePrism &&
regionshape != LibUtilities::eHexahedron)
{
NEKERROR(ErrorUtil::efatal,"This shape is not a 3D region");
}
......@@ -127,74 +127,74 @@ int main(int argc, char *argv[]){
// Check to see that correct Expansions are used
switch(regionshape)
{
case StdRegions::eTetrahedron:
if((btype1 == eOrtho_B) || (btype1 == eOrtho_C)
|| (btype1 == eModified_B) || (btype1 == eModified_C))
{
NEKERROR(ErrorUtil::efatal,
"Basis 1 cannot be of type Ortho_B, "
"Ortho_C, Modified_B or Modified_C");
}
if((btype2 == eOrtho_A) || (btype2 == eOrtho_C)
|| (btype2 == eModified_A) || (btype2 == eModified_C))
{
NEKERROR(ErrorUtil::efatal,
"Basis 2 cannot be of type Ortho_A, "
"Ortho_C, Modified_A or Modified_C");
}
if((btype3 == eOrtho_A) || (btype3 == eOrtho_B)
|| (btype3 == eModified_A) || (btype3 == eModified_B))
{
NEKERROR(ErrorUtil::efatal,