• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

Albany_GenericSTKMeshStruct.hpp

Go to the documentation of this file.
00001 //*****************************************************************//
00002 //    Albany 2.0:  Copyright 2012 Sandia Corporation               //
00003 //    This Software is released under the BSD license detailed     //
00004 //    in the file "license.txt" in the top-level Albany directory  //
00005 //*****************************************************************//
00006 
00007 #ifndef ALBANY_GENERICSTKMESHSTRUCT_HPP
00008 #define ALBANY_GENERICSTKMESHSTRUCT_HPP
00009 
00010 #include "Albany_AbstractSTKMeshStruct.hpp"
00011 #include "Teuchos_ParameterList.hpp"
00012 #include "Epetra_Comm.h"
00013 
00014 // Refinement
00015 #ifdef ALBANY_STK_PERCEPT
00016 #include <stk_percept/PerceptMesh.hpp>
00017 #include <stk_adapt/UniformRefinerPattern.hpp>
00018 #endif
00019 
00020 
00021 namespace Albany {
00022 
00023 
00024   class GenericSTKMeshStruct : public AbstractSTKMeshStruct {
00025 
00026     public:
00027     virtual void setFieldAndBulkData(
00028                   const Teuchos::RCP<const Epetra_Comm>& comm,
00029                   const Teuchos::RCP<Teuchos::ParameterList>& params,
00030                   const unsigned int neq_,
00031                   const AbstractFieldContainer::FieldContainerRequirements& req,
00032                   const Teuchos::RCP<Albany::StateInfoStruct>& sis,
00033                   const unsigned int worksetSize) = 0;
00034 
00035     Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct> >& getMeshSpecs();
00036 
00037 #ifdef ALBANY_STK_PERCEPT
00038     Teuchos::RCP<stk::percept::PerceptMesh> getPerceptMesh(){ return eMesh; }
00039     Teuchos::RCP<stk::adapt::UniformRefinerPatternBase> getRefinerPattern(){ return refinerPattern; }
00040 #endif
00041 
00043     void rebalanceAdaptedMesh(const Teuchos::RCP<Teuchos::ParameterList>& params,
00044                               const Teuchos::RCP<const Epetra_Comm>& comm);
00045 
00046     bool useCompositeTet(){ return compositeTet; }
00047 
00049     void setupMeshBlkInfo();
00050 
00051     const Albany::DynamicDataArray<Albany::CellSpecs>::type& getMeshDynamicData() const
00052         { return meshDynamicData; }
00053 
00054     protected: 
00055     GenericSTKMeshStruct(
00056                   const Teuchos::RCP<Teuchos::ParameterList>& params,
00057                   const Teuchos::RCP<Teuchos::ParameterList>& adaptParams,
00058                   const int numDim=-1);
00059 
00060     void SetupFieldData(
00061                   const Teuchos::RCP<const Epetra_Comm>& comm,
00062                   const int neq_,
00063                   const AbstractFieldContainer::FieldContainerRequirements& req,
00064                   const Teuchos::RCP<Albany::StateInfoStruct>& sis,
00065                   const int worksetSize_);
00066 
00067     bool buildUniformRefiner();
00068 
00069     bool buildLocalRefiner();
00070 
00071     void printParts(stk::mesh::fem::FEMMetaData *metaData);
00072 
00073     void cullSubsetParts(std::vector<std::string>& ssNames,
00074         std::map<std::string, stk::mesh::Part*>& partVec);
00075 
00077     int computeWorksetSize(const int worksetSizeMax, const int ebSizeMax) const;
00078 
00080     void rebalanceInitialMesh(const Teuchos::RCP<const Epetra_Comm>& comm);
00081 
00083     bool buildEMesh;
00084     bool buildPerceptEMesh();
00085 
00087     void uniformRefineMesh(const Teuchos::RCP<const Epetra_Comm>& comm);
00088 
00090     void checkInput(std::string option, std::string value, std::string allowed_values);
00091 
00093     void computeAddlConnectivity();
00094 
00095     ~GenericSTKMeshStruct();
00096 
00097     Teuchos::RCP<Teuchos::ParameterList> getValidGenericSTKParameters(
00098          std::string listname = "Discretization Param Names") const;
00099 
00100     Teuchos::RCP<Teuchos::ParameterList> params;
00101 
00103     Teuchos::RCP<Teuchos::ParameterList> adaptParams;
00104 
00105     Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpecsStruct> > meshSpecs;
00106 
00107     // Information that changes when the mesh adapts
00108     Albany::DynamicDataArray<CellSpecs>::type meshDynamicData;
00109 
00110 #ifdef ALBANY_STK_PERCEPT
00111     Teuchos::RCP<stk::percept::PerceptMesh> eMesh;
00112     Teuchos::RCP<stk::adapt::UniformRefinerPatternBase> refinerPattern;
00113 #endif
00114 
00115     bool uniformRefinementInitialized;
00116 
00117     bool compositeTet;
00118 
00119   };
00120 
00121 }
00122 
00123 #endif

Generated on Wed Mar 26 2014 18:36:36 for Albany: a Trilinos-based PDE code by  doxygen 1.7.1