ComputeUpdateCoefficient::ComputeUpdateCoefficient ( const std::string& name ) : solver::Action(name), m_tolerance(1e-12) { mark_basic(); // options options().add("time_accurate", true) .description("Time Accurate") .pretty_name("Time Accurate") .mark_basic() .add_tag("time_accurate"); options().add("cfl", 1.) .description("Courant Number") .pretty_name("CFL") .mark_basic() .add_tag("cfl"); options().add(sdm::Tags::update_coeff(), m_update_coeff) .description("Update coefficient to multiply with residual") .pretty_name("Update Coefficient") .link_to(&m_update_coeff); options().add(sdm::Tags::wave_speed(), m_wave_speed) .description("Wave Speed multiplied divided by characteristic length") .pretty_name("Wave Speed") .link_to(&m_wave_speed); options().add(sdm::Tags::time(), m_time) .description("Time Tracking component") .pretty_name("Time") .link_to(&m_time); }
ActionDirector::ActionDirector ( const std::string& name ) : common::ActionDirector(name) { mark_basic(); // options options().add_option(Tags::solver(), m_solver) .description("Link to the solver discretizing the problem") .pretty_name("Solver") .mark_basic() .link_to(&m_solver); options().add_option("mesh", m_mesh) .description("Mesh the Discretization Method will be applied to") .pretty_name("Mesh") .mark_basic() .link_to(&m_mesh); options().add_option(Tags::physical_model(), m_physical_model) .description("Physical model") .pretty_name("Physical Model") .mark_basic() .link_to(&m_physical_model); options().add_option(Tags::time(), m_time) .description("Time tracking component") .pretty_name("Time") .mark_basic() .link_to(&m_time); }
IterativeSolver::IterativeSolver ( const std::string& name ) : CF::Solver::ActionDirector(name) { mark_basic(); // properties m_properties.add_property( "iteration", Uint(0) ); // static components m_pre_actions = create_static_component_ptr<CActionDirector>("PreActions"); m_update = create_static_component_ptr<CActionDirector>("Update"); m_post_actions = create_static_component_ptr<CActionDirector>("PostActions"); // dynamic components create_component<CCriterionMaxIterations>( "MaxIterations" ); CComputeLNorm& cnorm = post_actions().create_component<CComputeLNorm>( "ComputeNorm" ); post_actions().append( cnorm ); CPeriodicWriteMesh& cwriter = post_actions().create_component<CPeriodicWriteMesh>( "PeriodicWriter" ); post_actions().append( cwriter ); cnorm.configure_option("Scale", true); cnorm.configure_option("Order", 2u); }
UpdateSolution::UpdateSolution ( const std::string& name ) : solver::Action(name) { mark_basic(); // options options().add_option(sdm::Tags::solution(), m_solution) .description("Solution to update") .pretty_name("Solution") .link_to(&m_solution); options().add_option(sdm::Tags::update_coeff(), m_update_coeff) .description("Update coefficient") .pretty_name("Update Coefficient") .link_to(&m_update_coeff); options().add_option(sdm::Tags::residual(), m_residual) .description("Residual") .pretty_name("Residual") .link_to(&m_residual); options().add_option(sdm::Tags::jacob_det(), m_jacobian_determinant) .description("Jacobian determinant") .pretty_name("Jacobian Determinant") .link_to(&m_jacobian_determinant); }
IterativeSolver::IterativeSolver ( const std::string& name ) : cf3::solver::ActionDirector(name) { mark_basic(); // properties properties().add( "iteration", Uint(0) ); // static components m_pre_actions = create_static_component<ActionDirector>("PreActions"); m_update = create_static_component<ActionDirector>("Update"); m_post_actions = create_static_component<ActionDirector>("PostActions"); // dynamic components create_component<CriterionMaxIterations>( "MaxIterations" ); ComputeLNorm& cnorm = *post_actions().create_component<ComputeLNorm>( "ComputeNorm" ); post_actions().create_component<PrintIterationSummary>( "IterationSummary" ); post_actions().create_component<PeriodicWriteMesh>( "PeriodicWriter" ); cnorm.options().set("scale", true); cnorm.options().set("order", 2u); }
OutputIterationInfo::OutputIterationInfo ( const std::string& name ) : Solver::Action(name) { mark_basic(); // options m_options.add_option(OptionComponent<CField>::create(FlowSolver::Tags::residual(), &m_residual)) ->description("Residual") ->pretty_name("Residual"); }
FwdEuler::FwdEuler ( const std::string& name ) : cf3::solver::Action(name) { mark_basic(); options().add_option( "cfl", 1.0 ) .pretty_name("CFL") .description("Courant-Fredrichs-Levy stability number"); }
InitialConditions::InitialConditions ( const std::string& name ) : cf3::solver::ActionDirector(name) { mark_basic(); // signals regist_signal( "create_initial_condition" ) .connect ( boost::bind( &InitialConditions::signal_create_initial_condition, this, _1 ) ) .signature( boost::bind( &InitialConditions::signature_signal_create_initial_condition, this, _1)) .description("creates an initial condition for the solution") .pretty_name("Create Initial Condition"); }
ImposeCFL::ImposeCFL ( const std::string& name ) : TimeStepComputer(name), m_cfl(0.) { mark_basic(); // options options().add("cfl", std::string("1.") ) .description("Courant Number") .pretty_name("CFL") .mark_basic() .attach_trigger( boost::bind( &ImposeCFL::parse_cfl, this) ); parse_cfl(); }
BoundaryTerm::BoundaryTerm ( const std::string& name ) : CF::Solver::Action(name) { mark_basic(); m_options.add_option(OptionComponent<CField>::create( RDM::Tags::solution(), &m_solution)) ->pretty_name("Solution Field"); m_options.add_option(OptionComponent<CField>::create( RDM::Tags::wave_speed(), &m_wave_speed)) ->pretty_name("Wave Speed Field"); m_options.add_option(OptionComponent<CField>::create( RDM::Tags::residual(), &m_residual)) ->pretty_name("Residual Field"); }
PrepareMesh::PrepareMesh ( const std::string& name ) : cf3::solver::ActionDirector(name) { mark_basic(); // Build faces and cell2face and face2cell connectivities create_component<BuildFaces>("build_inner_faces")->options().configure_option("store_cell2face",true); // renumber elements because of the faces (not strictly necessary) // create_component<GlobalNumbering>("renumber"); // Create fields specifically for SD create_component<CreateSDFields>("create_sfd_fields"); }
DomainDiscretization::DomainDiscretization ( const std::string& name ) : cf3::solver::ActionDirector(name) { mark_basic(); // signals regist_signal( "create_term" ) .connect ( boost::bind( &DomainDiscretization::signal_create_term, this, _1 ) ) .signature( boost::bind( &DomainDiscretization::signature_signal_create_term, this, _1)) .description("creates a discretization term for cells") .pretty_name("Create Cell Term"); m_terms = create_static_component<ActionDirector>("Terms"); }
BoundaryTerm::BoundaryTerm ( const std::string& name ) : cf3::solver::Action(name) { mark_basic(); options().add(RDM::Tags::solution(), m_solution) .pretty_name("Solution Field") .link_to(&m_solution); options().add(RDM::Tags::wave_speed(), m_wave_speed) .pretty_name("Wave Speed Field") .link_to(&m_wave_speed); options().add(RDM::Tags::residual(), m_residual) .pretty_name("Residual Field") .link_to(&m_residual); }
BoundaryConditions::BoundaryConditions ( const std::string& name ) : cf3::solver::ActionDirector(name) { mark_basic(); // subcomponents m_weak_bcs = create_static_component<ActionDirector>("WeakBCs"); m_strong_bcs = create_static_component<ActionDirector>("StrongBCs"); // signals regist_signal( "create_boundary_condition" ) .connect ( boost::bind( &BoundaryConditions::signal_create_boundary_condition, this, _1 ) ) .signature( boost::bind( &BoundaryConditions::signature_signal_create_boundary_condition, this, _1)) .description("creates a boundary condition for the solution") .pretty_name("Create Boundary Condition"); }
Term::Term ( const std::string& name ) : CF::Solver::Action(name) { mark_basic(); m_options.add_option(OptionComponent<Field>::create( SFDM::Tags::solution(), &m_solution)) ->pretty_name("Solution Field"); m_options.add_option(OptionComponent<Field>::create( SFDM::Tags::wave_speed(), &m_wave_speed)) ->pretty_name("Wave Speed Field"); m_options.add_option(OptionComponent<Field>::create( SFDM::Tags::residual(), &m_residual)) ->pretty_name("Residual Field"); m_options.add_option(OptionComponent<Field>::create( SFDM::Tags::jacob_det(), &m_jacob_det)) ->pretty_name("Jacobian Determinant Field"); }
UpdateSolution::UpdateSolution ( const std::string& name ) : CAction(name) { mark_basic(); // options m_options.add_option(OptionComponent<CField>::create("solution", &m_solution)) ->description("Solution to update") ->pretty_name("Solution"); m_options.add_option(OptionComponent<CField>::create("update_coeff", &m_update_coeff)) ->description("Update coefficient") ->pretty_name("Update coefficient"); m_options.add_option(OptionComponent<CField>::create("residual", &m_residual)) ->description("Residual") ->pretty_name("Residual"); }
RK::RK ( const std::string& name ) : cf3::solver::Action(name) { mark_basic(); // options options().add_option(RDM::Tags::solution(), m_solution).link_to(&m_solution); options().add_option(RDM::Tags::dual_area(), m_dual_area).link_to(&m_dual_area); options().add_option(RDM::Tags::residual(), m_residual).link_to(&m_residual); options().add_option( "cfl", 1.0 ) .pretty_name("CFL") .description("Courant-Fredrichs-Levy stability number"); options().add_option( "rkorder", 1u ) .pretty_name("RK Order") .description("Order of the Runge-Kutta step"); }
RK::RK ( const std::string& name ) : CF::Solver::Action(name) { mark_basic(); // options options().add_option( Common::OptionComponent<Mesh::CField>::create( RDM::Tags::solution(), &m_solution)); options().add_option( Common::OptionComponent<Mesh::CField>::create( RDM::Tags::dual_area(), &m_dual_area)); options().add_option( Common::OptionComponent<Mesh::CField>::create( RDM::Tags::residual(), &m_residual)); options().add_option< OptionT<Real> >( "cfl", 1.0 ) ->pretty_name("CFL") ->description("Courant-Fredrichs-Levy stability number"); options().add_option< OptionT<Real> >( "rkorder", 1u ) ->pretty_name("RK Order") ->description("Order of the Runge-Kutta step"); }
DomainDiscretization::DomainDiscretization ( const std::string& name ) : CF::Solver::ActionDirector(name) { mark_basic(); // signals regist_signal( "create_cell_term" ) ->connect ( boost::bind( &DomainDiscretization::signal_create_cell_term, this, _1 ) ) ->signature( boost::bind( &DomainDiscretization::signature_signal_create_cell_term, this, _1)) ->description("creates a discretization term for cells") ->pretty_name("Create Cell Term"); regist_signal( "create_face_term" ) ->connect ( boost::bind( &DomainDiscretization::signal_create_face_term, this, _1 ) ) ->signature( boost::bind( &DomainDiscretization::signature_signal_create_face_term, this, _1)) ->description("creates a discretization term for faces") ->pretty_name("Create Cell Term"); m_face_terms = create_static_component_ptr<CActionDirector>("FaceTerms"); m_cell_terms = create_static_component_ptr<CActionDirector>("CellTerms"); }