18 #include <stk_util/util/string_case_compare.hpp> 19 #include <stk_util/environment/ReportHandler.hpp> 21 #include <stk_mesh/fem/CoordinateSystems.hpp> 30 unsigned get_index(
const char *
const func ,
31 const unsigned number_names ,
32 const char *
const * names ,
34 const char *
const select )
36 unsigned index = size <= number_names ? 0 : size ;
38 for ( ; index < size &&
not_equal_case(select,names[index]) ; ++index );
40 ThrowErrorMsgIf( index == size,
41 func <<
", size = " << size <<
" label = " << select );
45 const char * get_string(
const char *
const func ,
46 const unsigned number_names ,
47 const char *
const * names ,
49 const unsigned index )
51 ThrowErrorMsgIf( size < number_names || size <= index,
52 func <<
", size = " << size <<
" index = " << index );
61 SHARDS_ARRAY_DIM_TAG_SIMPLE_IMPLEMENTATION( SimpleArrayTag )
68 const char * Cartesian2d::name()
const 69 {
static const char n[] =
"Cartesian2d" ;
return n ; }
72 const char *
const * Cartesian2d_label() {
73 static const char x[] =
"x" ;
74 static const char y[] =
"y" ;
75 static const char * label[] = { x , y };
79 std::string Cartesian2d::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 82 2 , Cartesian2d_label() , size , index ) );
85 shards::ArrayDimTag::size_type Cartesian2d::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 88 2 , Cartesian2d_label() , size , arg.c_str() );
96 const char * Cartesian3d::name()
const 97 {
static const char n[] =
"Cartesian3d" ;
return n ; }
100 const char *
const * Cartesian3d_label() {
101 static const char x[] =
"x" ;
102 static const char y[] =
"y" ;
103 static const char z[] =
"z" ;
104 static const char * label[] = { x , y , z };
108 std::string Cartesian3d::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 111 3 , Cartesian3d_label() , size , index ) );
114 shards::ArrayDimTag::size_type Cartesian::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 117 3 , Cartesian3d_label() , size , arg.c_str() );
125 const char * Cylindrical::name()
const 126 {
static const char n[] =
"Cylindrical" ;
return n ; }
129 const char *
const * Cylindrical_label() {
130 static const char r[] =
"r" ;
131 static const char a[] =
"a" ;
132 static const char z[] =
"z" ;
133 static const char * label[] = { r , a , z };
137 std::string Cylindrical::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 140 3 , Cylindrical_label() , size , index ) );
143 shards::ArrayDimTag::size_type Cylindrical::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 146 3 , Cylindrical_label() , size , arg.c_str() );
152 {
static const FullTensor self ;
return self ; }
154 const char * FullTensor::name()
const 155 {
static const char n[] =
"FullTensor" ;
return n ; }
158 const char *
const * FullTensor36_label() {
159 static const char xx[] =
"xx" ;
160 static const char yx[] =
"yx" ;
161 static const char zx[] =
"zx" ;
162 static const char xy[] =
"xy" ;
163 static const char yy[] =
"yy" ;
164 static const char zy[] =
"zy" ;
165 static const char xz[] =
"xz" ;
166 static const char yz[] =
"yz" ;
167 static const char zz[] =
"zz" ;
168 static const char * label[] = { xx , yy , zz ,
174 std::string FullTensor36::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 177 9 , FullTensor36_label() , size , index ) );
180 shards::ArrayDimTag::size_type FullTensor::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 183 9 , FullTensor36_label() , size , arg.c_str() );
191 const char * FullTensor22::name()
const 192 {
static const char n[] =
"FullTensor22" ;
return n ; }
195 const char *
const * FullTensor22_label() {
196 static const char xx[] =
"xx" ;
197 static const char yy[] =
"yy" ;
198 static const char xy[] =
"xy" ;
199 static const char yx[] =
"yx" ;
200 static const char * label[] = { xx, yy, xy, yx };
204 std::string FullTensor22::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 207 4 , FullTensor22_label() , size , index ) );
210 shards::ArrayDimTag::size_type FullTensor22::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 213 4 , FullTensor22_label() , size , arg.c_str() );
221 const char * SymmetricTensor::name()
const 222 {
static const char n[] =
"SymmetricTensor" ;
return n ; }
225 const char *
const * SymmetricTensor33_label() {
226 static const char xx[] =
"xx" ;
227 static const char yy[] =
"yy" ;
228 static const char zz[] =
"zz" ;
229 static const char xy[] =
"xy" ;
230 static const char yz[] =
"yz" ;
231 static const char xz[] =
"xz" ;
232 static const char * label[] = { xx , yy , zz , xy , yz , xz };
236 std::string SymmetricTensor33::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 239 6 , SymmetricTensor33_label() , size , index ) );
242 shards::ArrayDimTag::size_type SymmetricTensor33::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 245 6 , SymmetricTensor33_label() , size , arg.c_str() );
253 const char * SymmetricTensor31::name()
const 254 {
static const char n[] =
"SymmetricTensor31" ;
return n ; }
257 const char *
const * SymmetricTensor31_label() {
258 static const char rr[] =
"rr" ;
259 static const char zz[] =
"zz" ;
260 static const char rz[] =
"rz" ;
261 static const char zr[] =
"zr" ;
262 static const char * label[] = { rr, zz, rz, zr };
266 std::string SymmetricTensor31::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 269 4 , SymmetricTensor31_label() , size , index ) );
272 shards::ArrayDimTag::size_type SymmetricTensor31::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 275 4 , SymmetricTensor31_label() , size , arg.c_str() );
283 const char * SymmetricTensor21::name()
const 284 {
static const char n[] =
"SymmetricTensor21" ;
return n ; }
287 const char *
const * SymmetricTensor21_label() {
288 static const char xx[] =
"xx" ;
289 static const char yy[] =
"yy" ;
290 static const char xy[] =
"xy" ;
291 static const char * label[] = { xx, yy, xy };
295 std::string SymmetricTensor21::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 298 3 , SymmetricTensor21_label() , size , index ) );
301 shards::ArrayDimTag::size_type SymmetricTensor21::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 304 3 , SymmetricTensor21_label() , size , arg.c_str() );
312 const char * AsymmetricTensor03::name()
const 313 {
static const char n[] =
"AsymmetricTensor03" ;
return n ; }
316 const char *
const * AsymmetricTensor03_label() {
317 static const char yz[] =
"yz" ;
318 static const char xz[] =
"xz" ;
319 static const char xy[] =
"xy" ;
320 static const char * label[] = { xy, yz, xz };
324 std::string AsymmetricTensor03::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 327 3 , AsymmetricTensor03_label() , size , index ) );
330 shards::ArrayDimTag::size_type AsymmetricTensor03::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 333 3 , AsymmetricTensor03_label() , size , arg.c_str() );
339 {
static const Matrix22 self ;
return self ; }
341 const char * Matrix22::name()
const 342 {
static const char n[] =
"Matrix22" ;
return n ; }
345 const char *
const * Matrix22_label() {
346 static const char xx[] =
"xx" ;
347 static const char yx[] =
"yx" ;
348 static const char xy[] =
"xy" ;
349 static const char yy[] =
"yy" ;
350 static const char * label[] = { xx , yx, xy, yy };
354 std::string Matrix22::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 357 4 , Matrix22_label() , size , index ) );
360 shards::ArrayDimTag::size_type Matrix22::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 363 4 , Matrix22_label() , size , arg.c_str() );
369 {
static const Matrix33 self ;
return self ; }
371 const char * Matrix33::name()
const 372 {
static const char n[] =
"Matrix33" ;
return n ; }
375 const char *
const * Matrix33_label() {
376 static const char xx[] =
"xx" ;
377 static const char yx[] =
"yx" ;
378 static const char zx[] =
"zx" ;
379 static const char xy[] =
"xy" ;
380 static const char yy[] =
"yy" ;
381 static const char zy[] =
"zy" ;
382 static const char xz[] =
"xz" ;
383 static const char yz[] =
"yz" ;
384 static const char zz[] =
"zz" ;
385 static const char * label[] = { xx , yx , zx , xy , yy , zy , xz , yz , zz };
389 std::string Matrix33::to_string( shards::ArrayDimTag::size_type size , shards::ArrayDimTag::size_type index )
const 392 9 , Matrix33_label() , size , index ) );
395 shards::ArrayDimTag::size_type Matrix33::to_index( shards::ArrayDimTag::size_type size ,
const std::string & arg )
const 398 9 , Matrix33_label() , size , arg.c_str() );
static const Matrix22 & tag()
Singleton.
static const SymmetricTensor33 & tag()
Singleton.
static const SymmetricTensor31 & tag()
Singleton.
Implement an shards::ArrayDimTag for AsymmetricTensor.
static const Cartesian2d & tag()
Singleton.
Implement an shards::ArrayDimTag for FullTensor.
static const SymmetricTensor21 & tag()
Singleton.
Implement an shards::ArrayDimTag for SymmetricTensor.
static const FullTensor36 & tag()
Singleton.
Implement an shards::ArrayDimTag for SymmetricTensor.
bool not_equal_case(const char *lhs, const char *rhs)
Case-insensitive inequality compare.
static const Cartesian3d & tag()
Singleton.
Implement an shards::ArrayDimTag for Cylindrical coordinate dimensions.
Implement an shards::ArrayDimTag for Matrix.
static const AsymmetricTensor03 & tag()
Singleton.
Implement an shards::ArrayDimTag for Cartesian coordinate dimensions.
Implement an shards::ArrayDimTag for Matrix.
Implement an shards::ArrayDimTag for SymmetricTensor.
static const FullTensor22 & tag()
Singleton.
Implement an shards::ArrayDimTag for FullTensor.
static const Cylindrical & tag()
Singleton.
static const Matrix33 & tag()
Singleton.
Implement an shards::ArrayDimTag for Cartesian 2d coordinate dimensions.