7 #include "../NavierStokes.hpp"
9 #include <boost/bind.hpp>
10 #include <boost/function.hpp>
12 #include <boost/mpl/back_inserter.hpp>
13 #include <boost/mpl/copy.hpp>
32 #include "../NavierStokesSpecializations.hpp"
33 #include "../Tags.hpp"
38 using namespace common;
40 using namespace solver::actions;
41 using namespace solver::actions::Proto;
48 u(
"Velocity",
"navier_stokes_solution"),
49 p(
"Pressure",
"navier_stokes_solution"),
50 T(
"Temperature",
"scalar_advection_solution"),
51 u_adv(
"AdvectionVelocity",
"linearized_velocity"),
52 u1(
"AdvectionVelocity1",
"linearized_velocity"),
53 u2(
"AdvectionVelocity2",
"linearized_velocity"),
54 u3(
"AdvectionVelocity3",
"linearized_velocity"),
55 nu_eff(
"EffectiveViscosity",
"navier_stokes_viscosity"),
56 g(
"Force",
"body_force"),
58 nu(
"kinematic_viscosity"),
59 Tref(
"reference_temperature")
61 const std::vector<std::string> restart_field_tags = boost::assign::list_of(
"navier_stokes_solution")(
"linearized_velocity")(
"navier_stokes_viscosity");
65 .pretty_name(
"Use Specializations")
66 .description(
"Activate the use of specialized high performance code")
70 .pretty_name(
"SUPG Type")
71 .description(
"Type of computation for the stabilization coefficients.")
77 .description(
"Theta coefficient for the theta-method.")
83 create_component<math::LSS::ZeroLSS>(
"ZeroLSS")->
options().
set(
"reset_solution",
false);
89 m_assembly = create_component<solver::ActionDirector>(
"Assembly");
97 create_component<math::LSS::SolveLSS>(
"SolveLSS");
100 m_update = create_component<solver::ActionDirector>(
"UpdateActions");
115 const bool use_specializations =
options().
value<
bool>(
"use_specializations");
Handle< solver::ActionDirector > m_assembly
std::string name(ComponentWrapper &self)
const solver::actions::Proto::SolutionVector & solution
Proto placeholder for the solution vector.
Safe pointer to an object. This is the supported method for referring to components.
Helper class to create the Builder and place it in the factory.
void set_solution_tag(const std::string &tag)
Set the tag used to keep track of what field stores the solution to the LSS.
void configure_option_recursively(const std::string &optname, const boost::any &val)
FieldVariable< 3, VectorField > u1
Velocity at time n-1.
PropertyList & add(const std::string &name, const boost::any &value)
adds a property to the list
void set_tetra_assembly(const bool use_specialization)
virtual void on_initial_conditions_set(InitialConditions &initial_conditions)
Called when the initial condition manager is changed.
FieldVariable< 4, VectorField > u2
Velocity at time n-2.
Holds the Component class, as well as the ComponentIterator class plus some functions related to comp...
std::string solution_tag()
Access to the tag this component uses for finding its solution field.
void trigger_assembly()
Create the solver structure, based on the choice of specialized code.
ComponentBuilder< NavierStokes, LSSActionUnsteady, LibUFEM > NavierStokes_builder
PropertyList & properties()
InitialConditions for UFEM problems.
void set_triag_assembly(const bool use_specialization)
Helper functions to split the compilation over multiple units, to save memory. Each one is in a diffe...
Component & add_component(const boost::shared_ptr< Component > &subcomp)
Add the passed component as a subcomponent.
NavierStokes(const std::string &name)
Top-level namespace for coolfluid.
FieldVariable< 5, VectorField > u3
Velocity at time n-3.
const TYPE value(const std::string &opt_name) const
Get the value of the option with given name.
solver::actions::Proto::MakeSFOp< ComputeTauImpl >::stored_type data
FieldVariable< 7, ScalarField > T
Temperature field.
FieldVariable< 2, VectorField > u_adv
The linearized advection velocity.
FieldVariable< 1, ScalarField > p
The pressure solution field.
FieldVariable< 0, VectorField > u
The velocity solution field.
FieldVariable< 6, ScalarField > nu_eff
Effective viscosity field.
static boost::proto::terminal< ExpressionGroupTag >::type group
Use group(expr1, expr2, ..., exprN) to evaluate a group of expressions.
boost::shared_ptr< ProtoAction > create_proto_action(const std::string &name, const boost::shared_ptr< Expression > &expression)
Create a new ProtoAction, immediatly setting the expression.
boost::shared_ptr< NodesExpression< ExprT, boost::mpl::range_c< Uint, 1, 4 > > > nodes_expression(const ExprT &expr)
Handle< common::Action > m_initial_conditions
Handle< common::Action > create_initial_condition(const std::string &tag, const std::string &builder_name="cf3.UFEM.InitialConditionConstant")
SelectOptionType< T >::type & add(const std::string &name, const T &default_value=T())
Handle< solver::ActionDirector > m_update
void set(const std::string &pname, const boost::any &val)
bool is_not_null(T ptr)
predicate for comparison to nullptr
void set_prism_assembly()