25 #ifndef GRINS_SYMMETRY_TYPE_BC_FACTORIES_H
26 #define GRINS_SYMMETRY_TYPE_BC_FACTORIES_H
32 #include "libmesh/zero_function.h"
53 virtual void trim_var_names( std::vector<std::string>& var_names ) =0;
56 virtual libMesh::UniquePtr<libMesh::FunctionBase<libMesh::Number> >
59 std::vector<std::string>& var_names,
63 return libMesh::UniquePtr<libMesh::FunctionBase<libMesh::Number> >(
new libMesh::ZeroFunction<libMesh::Number> );
79 if( var_names.size() !=3 )
80 libmesh_error_msg(
"ERROR: YZSymmetry requires 3 components in the Variable!");
86 libmesh_assert_equal_to(var_names.size(), 1);
101 if( var_names.size() < 2 )
102 libmesh_error_msg(
"ERROR: XZSymmetry requires at least 2 components in the Variable!");
105 if( var_names.size() == 3 )
106 var_names.pop_back();
109 var_names.erase(var_names.begin());
111 libmesh_assert_equal_to(var_names.size(), 1);
126 if( var_names.size() !=3 )
127 libmesh_error_msg(
"ERROR: XYSymmetry requires 3 components in the Variable!");
130 var_names.erase(var_names.begin());
131 var_names.erase(var_names.begin());
133 libmesh_assert_equal_to(var_names.size(), 1);
148 if( var_names.size() < 2 )
149 libmesh_error_msg(
"ERROR: RollerX requires at least 2 components in the Variable!");
152 var_names.erase(var_names.begin());
154 libmesh_assert_less_equal(var_names.size(), 2);
169 if( var_names.size() < 2 )
170 libmesh_error_msg(
"ERROR: RollerY requires at least 2 components in the Variable!");
173 var_names.erase(var_names.begin()+1);
175 libmesh_assert_less_equal(var_names.size(), 2);
190 if( var_names.size() !=3 )
191 libmesh_error_msg(
"ERROR: RollerZ requires 3 components in the Variable!");
194 var_names.pop_back();
196 libmesh_assert_equal_to(var_names.size(), 2);
212 if( var_names.size() !=2 )
213 libmesh_error_msg(
"ERROR: Axisymmetry requires 2 components in the Variable!");
216 var_names.pop_back();
218 libmesh_assert_equal_to(var_names.size(), 1);
224 #endif // GRINS_SYMMETRY_TYPE_BC_FACTORIES_H
virtual void trim_var_names(std::vector< std::string > &var_names)=0
Trim out the variables that are pinned.
virtual void trim_var_names(std::vector< std::string > &var_names)
Trim out the variables that are pinned.
RollerXBCFactory(const std::string &bc_type_name)
virtual void trim_var_names(std::vector< std::string > &var_names)
Trim out the variables that are pinned.
XZSymmetryBCFactory(const std::string &bc_type_name)
virtual void trim_var_names(std::vector< std::string > &var_names)
Trim out the variables that are pinned.
virtual libMesh::UniquePtr< libMesh::FunctionBase< libMesh::Number > > build_func(const GetPot &, MultiphysicsSystem &, std::vector< std::string > &var_names, const std::string &)
All the variables are 0, so just return 0 function.
Pins y-component of variable (symmetry about xz-plane)
SymmetryTypeBCFactories(const std::string &bc_type_name)
RollerZBCFactory(const std::string &bc_type_name)
YZSymmetryBCFactory(const std::string &bc_type_name)
Interface with libMesh for solving Multiphysics problems.
Pins y- and z-component of variable, so can "roll" in the x-direction.
Pins x- and y-component of variable, so can "roll" in the z-direction.
~SymmetryTypeBCFactories()
virtual void trim_var_names(std::vector< std::string > &var_names)
Trim out the variables that are pinned.
RollerYBCFactory(const std::string &bc_type_name)
Pins x-component of variable (symmetry about yz-plane)
Pins x- and z-component of variable, so can "roll" in the y-direction.
virtual void trim_var_names(std::vector< std::string > &var_names)
Trim out the variables that are pinned.
AxisymmetryBCFactory(const std::string &bc_type_name)
r-coordinate is assumed to be the x-coordinate in the axisymmetric case, so we need to pin the x-coor...
Pins z-component of variable (symmetry about xy-plane)
XYSymmetryBCFactory(const std::string &bc_type_name)
virtual void trim_var_names(std::vector< std::string > &var_names)
Trim out the variables that are pinned.
virtual void trim_var_names(std::vector< std::string > &var_names)
Trim out the variables that are pinned.