Skip to content
Snippets Groups Projects
AnalyticalJacobianAssembler.h 1.96 KiB
Newer Older
  • Learn to ignore specific revisions
  •  * Copyright (c) 2012-2020, OpenGeoSys Community (http://www.opengeosys.org)
    
     *            Distributed under a Modified BSD License.
     *              See accompanying file LICENSE.txt or
     *              http://www.opengeosys.org/project/license
     *
     */
    
    
    
    #include "AbstractJacobianAssembler.h"
    
    namespace BaseLib
    {
    class ConfigTree;
    }
    
    namespace ProcessLib
    {
    
    //! Assembles the Jacobian matrix using a provided "analytical" method from the
    //! local assembler.
    
    class AnalyticalJacobianAssembler final : public AbstractJacobianAssembler
    {
    public:
    
        //! Assembles the Jacobian, the matrices \f$M\f$ and \f$K\f$, and the vector
        //! \f$b\f$.
        //! In this implementation the call is only forwarded to the respective
        //! method of the given \c local_assembler.
    
        void assembleWithJacobian(LocalAssemblerInterface& local_assembler,
                                  double const t, double const dt,
                                  std::vector<double> const& local_x,
                                  std::vector<double> const& local_xdot,
                                  const double dxdot_dx, const double dx_dx,
                                  std::vector<double>& local_M_data,
                                  std::vector<double>& local_K_data,
                                  std::vector<double>& local_b_data,
                                  std::vector<double>& local_Jac_data) override;
    
        void assembleWithJacobianForStaggeredScheme(
    
            LocalAssemblerInterface& local_assembler, double const t,
    
            double const dt, Eigen::VectorXd const& local_x,
            std::vector<double> const& local_xdot, const double dxdot_dx,
            const double dx_dx, int const process_id,
    
            std::vector<double>& local_M_data, std::vector<double>& local_K_data,
            std::vector<double>& local_b_data, std::vector<double>& local_Jac_data,
            LocalCoupledSolutions const& local_coupled_solutions) override;
    
    Dmitri Naumov's avatar
    Dmitri Naumov committed
    }  // namespace ProcessLib