void NavierStokesManual::on_initial_conditions_set(InitialConditions& initial_conditions) { // Use proto to add an initial condition on the viscosity, setting it equal to the molecular viscosity FieldVariable<0, ScalarField> nu_eff("EffectiveViscosity", "navier_stokes_viscosity"); PhysicsConstant nu("kinematic_viscosity"); Handle<ProtoAction> visc_ic(initial_conditions.create_initial_condition("navier_stokes_viscosity", "cf3.solver.ProtoAction")); visc_ic->set_expression(nodes_expression(nu_eff = nu)); }
Handle< common::Action > BoundaryConditions::add_function_bc(const std::string& region_name, const std::string& variable_name) { Handle<ParsedFunctionExpression> result = create_component<ParsedFunctionExpression>("BC"+region_name+variable_name); MeshTerm<0, VectorField> var(variable_name, m_implementation->m_solution_tag); result->set_expression( nodes_expression( m_implementation->dirichlet(var) = result->function() ) ); m_implementation->configure_bc(*result, region_name); return result; }
Handle< common::Action > BoundaryConditions::add_constant_component_bc(const std::string& region_name, const std::string& variable_name, const Uint component_idx, const Real default_value) { MeshTerm<0, VectorField> var(variable_name, m_implementation->m_solution_tag); ConfigurableConstant<Real> value("value", "Value for constant boundary condition", default_value); boost::shared_ptr< common::Action > result = create_proto_action("BC"+region_name+variable_name, nodes_expression(m_implementation->dirichlet(var[component_idx]) = value)); add_component(result); m_implementation->configure_bc(*result, region_name); return Handle<common::Action>(result); }
void set_vector_function_expression(const std::string& variable_name, ParsedFunctionExpression& func) { FieldVariable<0, VectorField> var(variable_name, m_solution_tag); func.set_expression( nodes_expression( dirichlet(var) = func.vector_function() ) ); }