Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F92131096
parabolic_program.hpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Nov 17, 15:25
Size
1 KB
Mime Type
text/x-c++
Expires
Tue, Nov 19, 15:25 (2 d)
Engine
blob
Format
Raw Data
Handle
22380594
Attached To
rSPECMICP SpecMiCP / ReactMiCP
parabolic_program.hpp
View Options
#ifndef SPECMICP_DFPMSOLVER_PARABOLICPROGRAM_HPP
#define SPECMICP_DFPMSOLVER_PARABOLICPROGRAM_HPP
#include "common.hpp"
#include <Eigen/Sparse>
#include "dfpm_program.hpp"
namespace specmicp {
namespace dfpmsolver {
//! Concept class for a program
template <class Derived>
class ParabolicProgram: DFPMProgram<ParabolicProgram<Derived>>
{
public:
Derived* derived() {static_cast<Derived*>(this);}
//! \brief Compute the residuals
void compute_residuals(const Vector& displacement,
const Vector& velocity,
Vector& residual
)
{
derived()->compute_residuals(displacement, velocity, residual);
}
//! \brief Compute the jacobian
void compute_jacobian(Vector& displacement,
Vector& velocity,
Eigen::SparseMatrix<scalar_t>& jacobian,
scalar_t alphadt
)
{
derived()->compute_jacobian(displacement, velocity, jacobian, alphadt);
}
//! \brief Update the solutions
void update_solution(const Vector& update,
scalar_t lambda,
scalar_t alpha_dt,
Vector& predictor,
Vector& displacement,
Vector& velocity)
{
derived()->update_solution(update, lambda, alpha_dt, predictor, displacement, velocity);
}
//! \brief Apply boundary conditions to the velocity vector
//!
//! by default do nothing.
void apply_bc(scalar_t dt,
const Vector& displacement,
Vector& velocity)
{}
};
} // end namespace dfpmsolver
} // end namespace specmicp
#endif // SPECMICP_DFPMSOLVER_PARABOLICPROGRAM_HPP
Event Timeline
Log In to Comment