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_LAYOUTS_HPP 00008 #define ALBANY_LAYOUTS_HPP 00009 00010 #include <vector> 00011 #include <string> 00012 00013 #include "Teuchos_RCP.hpp" 00014 00015 #include "Phalanx.hpp" 00016 #include "Albany_DataTypes.hpp" 00017 00018 namespace Albany { 00022 struct Layouts { 00023 Layouts(int worksetSize, int numVertices, int numNodes, int numQPts, int numDim, int vecDim=-1, int numFace=0); 00025 Teuchos::RCP<PHX::DataLayout> node_scalar; 00027 Teuchos::RCP<PHX::DataLayout> qp_scalar; 00029 Teuchos::RCP<PHX::DataLayout> cell_scalar; 00031 Teuchos::RCP<PHX::DataLayout> cell_scalar2; 00033 Teuchos::RCP<PHX::DataLayout> face_scalar; 00035 Teuchos::RCP<PHX::DataLayout> node_vector; 00037 Teuchos::RCP<PHX::DataLayout> qp_vector; 00039 Teuchos::RCP<PHX::DataLayout> cell_vector; 00041 Teuchos::RCP<PHX::DataLayout> face_vector; 00043 Teuchos::RCP<PHX::DataLayout> node_gradient; 00045 Teuchos::RCP<PHX::DataLayout> qp_gradient; 00047 Teuchos::RCP<PHX::DataLayout> cell_gradient; 00049 Teuchos::RCP<PHX::DataLayout> face_gradient; 00051 Teuchos::RCP<PHX::DataLayout> node_tensor; 00053 Teuchos::RCP<PHX::DataLayout> qp_tensor; 00055 Teuchos::RCP<PHX::DataLayout> cell_tensor; 00057 Teuchos::RCP<PHX::DataLayout> face_tensor; 00059 Teuchos::RCP<PHX::DataLayout> node_vecgradient; 00061 Teuchos::RCP<PHX::DataLayout> qp_vecgradient; 00063 Teuchos::RCP<PHX::DataLayout> cell_vecgradient; 00065 Teuchos::RCP<PHX::DataLayout> face_vecgradient; 00067 Teuchos::RCP<PHX::DataLayout> node_tensor4; 00069 Teuchos::RCP<PHX::DataLayout> qp_tensor4; 00071 Teuchos::RCP<PHX::DataLayout> cell_tensor4; 00073 Teuchos::RCP<PHX::DataLayout> face_tensor4; 00075 Teuchos::RCP<PHX::DataLayout> vertices_vector; 00077 Teuchos::RCP<PHX::DataLayout> node_3vector; 00080 Teuchos::RCP<PHX::DataLayout> node_qp_scalar; 00082 Teuchos::RCP<PHX::DataLayout> node_qp_gradient; 00083 Teuchos::RCP<PHX::DataLayout> node_qp_vector; // Old, but incorrect name 00085 Teuchos::RCP<PHX::DataLayout> workset_scalar; 00087 Teuchos::RCP<PHX::DataLayout> workset_vector; 00089 Teuchos::RCP<PHX::DataLayout> workset_gradient; 00091 Teuchos::RCP<PHX::DataLayout> workset_tensor; 00093 Teuchos::RCP<PHX::DataLayout> workset_vecgradient; 00094 00096 Teuchos::RCP<PHX::DataLayout> node_node_scalar; 00098 Teuchos::RCP<PHX::DataLayout> node_node_vector; 00100 Teuchos::RCP<PHX::DataLayout> node_node_tensor; 00110 Teuchos::RCP<PHX::DataLayout> shared_param; 00111 Teuchos::RCP<PHX::DataLayout> dummy; 00112 00113 // For backward compatibility, and simplicitiy, we want to check if 00114 // the vector length is the same as the spatial dimension. This 00115 // assumption is hardwired in mechanics problems and we want to 00116 // test that it is a valide assumption with this bool. 00117 bool vectorAndGradientLayoutsAreEquivalent; 00118 }; 00119 } 00120 00121 #endif