35 MatrixDouble &coords, boost::shared_ptr<MatrixDouble> u_ptr,
36 boost::shared_ptr<MatrixDouble> stress_ptr,
37 boost::shared_ptr<MatrixDouble> strain_ptr,
38 boost::shared_ptr<VectorDouble> o_ptr,
bool symmetrize =
true) = 0;
42 MatrixDouble &coords, boost::shared_ptr<MatrixDouble> u_ptr,
43 boost::shared_ptr<MatrixDouble> stress_ptr,
44 boost::shared_ptr<MatrixDouble> strain_ptr,
45 boost::shared_ptr<MatrixDouble> o_ptr,
bool symmetrize =
true) = 0;
49 MatrixDouble &coords, boost::shared_ptr<MatrixDouble> u_ptr,
50 boost::shared_ptr<MatrixDouble> stress_ptr,
51 boost::shared_ptr<MatrixDouble> strain_ptr,
52 boost::shared_ptr<MatrixDouble> o_ptr,
bool symmetrize =
true) = 0;
56 MatrixDouble &coords, boost::shared_ptr<MatrixDouble> u_ptr,
57 boost::shared_ptr<MatrixDouble> stress_ptr,
58 boost::shared_ptr<MatrixDouble> strain_ptr,
59 boost::shared_ptr<MatrixDouble> o_ptr,
bool symmetrize =
true) = 0;
62 MatrixDouble &coords, boost::shared_ptr<MatrixDouble> u_ptr,
63 boost::shared_ptr<MatrixDouble> t_ptr,
64 boost::shared_ptr<VectorDouble> o_ptr,
bool symmetrize =
true) = 0;
68 MatrixDouble &coords, boost::shared_ptr<MatrixDouble> u_ptr,
69 boost::shared_ptr<MatrixDouble> t_ptr,
70 boost::shared_ptr<MatrixDouble> o_ptr) = 0;
73 MatrixDouble &coords, boost::shared_ptr<MatrixDouble> u_ptr,
74 boost::shared_ptr<MatrixDouble> t_ptr,
75 boost::shared_ptr<MatrixDouble> o_ptr) = 0;
81 virtual MoFEMErrorCode
blockModes(
int block_id, MatrixDouble &coords,
82 std::array<double, 3> ¢roid,
83 std::array<double, 6> &bbox,
84 MatrixDouble &o_ptr) = 0;
virtual MoFEMErrorCode evalInteriorObjectiveFunction(MatrixDouble &coords, boost::shared_ptr< MatrixDouble > u_ptr, boost::shared_ptr< MatrixDouble > stress_ptr, boost::shared_ptr< MatrixDouble > strain_ptr, boost::shared_ptr< VectorDouble > o_ptr, bool symmetrize=true)=0
Evaluate objective function f(coords, u, stress, strain)
virtual MoFEMErrorCode evalInteriorObjectiveGradientStress(MatrixDouble &coords, boost::shared_ptr< MatrixDouble > u_ptr, boost::shared_ptr< MatrixDouble > stress_ptr, boost::shared_ptr< MatrixDouble > strain_ptr, boost::shared_ptr< MatrixDouble > o_ptr, bool symmetrize=true)=0
Evaluate gradient of objective function w.r.t. stress: ∂f/∂σ
virtual MoFEMErrorCode evalBoundaryObjectiveGradientTraction(MatrixDouble &coords, boost::shared_ptr< MatrixDouble > u_ptr, boost::shared_ptr< MatrixDouble > t_ptr, boost::shared_ptr< MatrixDouble > o_ptr)=0
Evaluate gradient of objective function w.r.t. traction-like vector field.
virtual MoFEMErrorCode evalInteriorObjectiveGradientStrain(MatrixDouble &coords, boost::shared_ptr< MatrixDouble > u_ptr, boost::shared_ptr< MatrixDouble > stress_ptr, boost::shared_ptr< MatrixDouble > strain_ptr, boost::shared_ptr< MatrixDouble > o_ptr, bool symmetrize=true)=0
Evaluate gradient of objective function w.r.t. strain: ∂f/∂ε
virtual MoFEMErrorCode evalInteriorObjectiveGradientU(MatrixDouble &coords, boost::shared_ptr< MatrixDouble > u_ptr, boost::shared_ptr< MatrixDouble > stress_ptr, boost::shared_ptr< MatrixDouble > strain_ptr, boost::shared_ptr< MatrixDouble > o_ptr, bool symmetrize=true)=0
Evaluate gradient of objective function w.r.t. displacement: ∂f/∂u.
virtual MoFEMErrorCode blockModes(int block_id, MatrixDouble &coords, std::array< double, 3 > ¢roid, std::array< double, 6 > &bbox, MatrixDouble &o_ptr)=0
Define spatial modes for topology optimization.