00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "CuboidMeshConstructor.hpp"
00031 #include "UblasCustomFunctions.hpp"
00032
00033
00035
00037
00038
00039
00040 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00041 void CuboidMeshConstructor<ELEMENT_DIM, SPACE_DIM>::Construct(AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>& rMesh, unsigned meshRefinementNum, double meshWidth)
00042 {
00043
00044 assert(ELEMENT_DIM == SPACE_DIM || (ELEMENT_DIM == 1 && SPACE_DIM == 3));
00045
00046 mMeshWidth = meshWidth;
00047 assert(meshRefinementNum < 30);
00048
00049
00050 unsigned mesh_size = (unsigned) SmallPow(2, meshRefinementNum+2);
00051 double scaling = mMeshWidth/(double) mesh_size;
00052 rMesh.ConstructRegularSlabMesh(scaling, mMeshWidth, mMeshWidth, mMeshWidth);
00053 mNumElements = rMesh.GetNumElements();
00054 mNumNodes = rMesh.GetNumNodes();
00055 }
00056
00057 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00058 double CuboidMeshConstructor<ELEMENT_DIM, SPACE_DIM>::GetWidth()
00059 {
00060 return mMeshWidth;
00061 }
00062
00063 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00064 unsigned CuboidMeshConstructor<ELEMENT_DIM, SPACE_DIM>::GetNumElements()
00065 {
00066 return mNumElements;
00067 }
00068
00069 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00070 unsigned CuboidMeshConstructor<ELEMENT_DIM, SPACE_DIM>::GetNumNodes()
00071 {
00072 return mNumNodes;
00073 }
00074
00075
00076
00078
00080
00081 template class CuboidMeshConstructor<1>;
00082 template class CuboidMeshConstructor<2>;
00083 template class CuboidMeshConstructor<3>;
00084 template class CuboidMeshConstructor<1,3>;