52 std::string qoi_list = input(
"QoI/enabled_qois",
"none" );
54 std::vector<std::string> qoi_names;
56 if( qoi_list != std::string(
"none") )
63 if( !qoi_names.empty() )
65 for( std::vector<std::string>::const_iterator name = qoi_names.begin();
66 name != qoi_names.end(); ++name )
68 this->
add_qoi( input, *name, qois );
73 if( input(
"screen-options/echo_qoi",
false ) )
82 void QoIFactory::add_qoi(
const GetPot& ,
const std::string& qoi_name, SharedPtr<CompositeQoI>& qois )
113 libMesh::err <<
"Error: Invalid QoI name " << qoi_name << std::endl;
119 qois->add_qoi( *qoi );
125 const std::string& qoi_name )
127 int num_physics = input.vector_variable_size(
"Physics/enabled_physics");
130 libmesh_assert(num_physics > 0);
132 std::set<std::string> requested_physics;
133 std::set<std::string> required_physics;
136 for(
int i = 0; i < num_physics; i++ )
138 requested_physics.insert( input(
"Physics/enabled_physics",
"NULL", i ) );
156 std::cout <<
"==========================================================" << std::endl
157 <<
"List of Enabled QoIs:" << std::endl;
159 for(
unsigned int q = 0; q < qois->n_qois(); q++ )
161 std::cout << qois->get_qoi(q).name() << std::endl;
164 std::cout <<
"==========================================================" << std::endl;
170 const std::set<std::string>& required_physics,
171 const std::string& qoi_name )
173 bool physics_found =
false;
174 for( std::set<std::string>::const_iterator name = required_physics.begin();
175 name != required_physics.end();
178 if( requested_physics.find( (*name) ) != requested_physics.end() )
179 physics_found =
true;
189 const std::set<std::string>& required_physics )
191 libMesh::err <<
"================================================================" << std::endl
192 <<
"QoI " << qoi_name << std::endl
193 <<
"requires one of the following physics which were not found:" <<std::endl;
195 for( std::set<std::string>::const_iterator name = required_physics.begin();
196 name != required_physics.end();
199 libMesh::err << *name << std::endl;
202 libMesh::err <<
"================================================================" << std::endl;
virtual SharedPtr< CompositeQoI > build(const GetPot &input)
static PhysicsName heat_transfer()
virtual void check_qoi_physics_consistency(const GetPot &input, const std::string &qoi_name)
void consistency_error_msg(const std::string &qoi_name, const std::set< std::string > &required_physics)
static PhysicsName low_mach_navier_stokes()
const std::string avg_nusselt
const std::string vorticity
const std::string weighted_flux
const std::string parsed_boundary
void split_string(const std::string &input, const std::string &delimiter, std::vector< std::string > &results)
const std::string parsed_interior
virtual void echo_qoi_list(SharedPtr< CompositeQoI > &qois)
void consistency_helper(const std::set< std::string > &requested_physics, const std::set< std::string > &required_physics, const std::string &qoi_name)
virtual void add_qoi(const GetPot &input, const std::string &qoi_name, SharedPtr< CompositeQoI > &qois)