41 #ifndef DTK_PROJECTIONPRIMITIVENONLINEARPROBLEMS_HPP 42 #define DTK_PROJECTIONPRIMITIVENONLINEARPROBLEMS_HPP 48 #include <Teuchos_RCP.hpp> 50 #include <Shards_CellTopology.hpp> 52 #include <Intrepid_Basis.hpp> 53 #include <Intrepid_FieldContainer.hpp> 69 typedef typename Intrepid::FieldContainer<double>::scalar_type Scalar;
74 Intrepid::Basis<Scalar, Intrepid::FieldContainer<double>>>
76 const Intrepid::FieldContainer<double> &point,
77 const Intrepid::FieldContainer<double> &face_nodes,
78 const Intrepid::FieldContainer<double> &face_node_normals );
81 void updateState(
const Intrepid::FieldContainer<double> &u );
85 Intrepid::FieldContainer<double> &F )
const;
89 Intrepid::FieldContainer<double> &J )
const;
93 Teuchos::RCP<Intrepid::Basis<Scalar, Intrepid::FieldContainer<double>>>
97 Intrepid::FieldContainer<double> d_point;
100 Intrepid::FieldContainer<double> d_face_nodes;
103 Intrepid::FieldContainer<double> d_face_node_normals;
115 Intrepid::FieldContainer<double> d_basis_evals;
118 Intrepid::FieldContainer<double> d_grad_evals;
121 Intrepid::FieldContainer<double> d_eval_points;
134 typedef typename nonlinear_problem_type::md_array_type MDArray;
136 typedef typename nonlinear_problem_type::Scalar Scalar;
138 static inline void updateState( nonlinear_problem_type &problem,
139 const Intrepid::FieldContainer<double> &u )
141 problem.updateState( u );
146 const Intrepid::FieldContainer<double> &u,
147 Intrepid::FieldContainer<double> &F )
149 problem.evaluateResidual( u, F );
154 const Intrepid::FieldContainer<double> &u,
155 Intrepid::FieldContainer<double> &J )
157 problem.evaluateJacobian( u, J );
174 typedef typename Intrepid::FieldContainer<double>::scalar_type Scalar;
178 const Intrepid::FieldContainer<double> &point,
179 const Intrepid::FieldContainer<double> &face_edge_nodes,
180 const Intrepid::FieldContainer<double> &face_edge_node_normals,
184 void updateState(
const Intrepid::FieldContainer<double> &u );
188 Intrepid::FieldContainer<double> &F )
const;
192 Intrepid::FieldContainer<double> &J )
const;
196 Intrepid::FieldContainer<double> d_point;
200 Intrepid::FieldContainer<double> d_face_edge_nodes;
204 Intrepid::FieldContainer<double> d_face_edge_node_normals;
219 Intrepid::FieldContainer<double> d_basis_evals;
222 Intrepid::FieldContainer<double> d_grad_evals;
225 Intrepid::FieldContainer<double> d_eval_points;
228 Intrepid::FieldContainer<double> d_proj_normal;
231 Intrepid::FieldContainer<double> d_face_normal_nodes;
244 typedef typename nonlinear_problem_type::md_array_type MDArray;
246 typedef typename nonlinear_problem_type::Scalar Scalar;
248 static inline void updateState( nonlinear_problem_type &problem,
249 const Intrepid::FieldContainer<double> &u )
251 problem.updateState( u );
256 const Intrepid::FieldContainer<double> &u,
257 Intrepid::FieldContainer<double> &F )
259 problem.evaluateResidual( u, F );
264 const Intrepid::FieldContainer<double> &u,
265 Intrepid::FieldContainer<double> &J )
267 problem.evaluateJacobian( u, J );
283 typedef typename Intrepid::FieldContainer<double>::scalar_type Scalar;
287 const Intrepid::FieldContainer<double> &point,
288 const Intrepid::FieldContainer<double> &edge_nodes,
289 const Intrepid::FieldContainer<double> &edge_node_normals,
290 const Intrepid::FieldContainer<double> &edge_node_binormals );
293 void updateState(
const Intrepid::FieldContainer<double> &u );
297 Intrepid::FieldContainer<double> &F )
const;
301 Intrepid::FieldContainer<double> &J )
const;
305 Intrepid::FieldContainer<double> d_point;
308 Intrepid::FieldContainer<double> d_edge_nodes;
311 Intrepid::FieldContainer<double> d_edge_node_normals;
314 Intrepid::FieldContainer<double> d_edge_node_binormals;
329 nonlinear_problem_type;
331 typedef typename nonlinear_problem_type::md_array_type MDArray;
333 typedef typename nonlinear_problem_type::Scalar Scalar;
335 static inline void updateState( nonlinear_problem_type &problem,
336 const Intrepid::FieldContainer<double> &u )
338 problem.updateState( u );
343 const Intrepid::FieldContainer<double> &u,
344 Intrepid::FieldContainer<double> &F )
346 problem.evaluateResidual( u, F );
351 const Intrepid::FieldContainer<double> &u,
352 Intrepid::FieldContainer<double> &J )
354 problem.evaluateJacobian( u, J );
364 #endif // end DTK_PROJECTIONPRIMITIVENONLINEARPROBLEMS_HPP Nonlinear problem struct for ProjectBlueFeatureToGreenFeature. This problem projects a feature point ...
ProjectPointToFaceNonlinearProblem(const Teuchos::RCP< Intrepid::Basis< Scalar, Intrepid::FieldContainer< double >>> &face_basis, const Intrepid::FieldContainer< double > &point, const Intrepid::FieldContainer< double > &face_nodes, const Intrepid::FieldContainer< double > &face_node_normals)
Constructor.
Nonlinear problem for projecting a point into the reference frame of a face.
Intrepid::FieldContainer< double > md_array_type
Multidimensional array typedefs.
void evaluateResidual(const Intrepid::FieldContainer< double > &u, Intrepid::FieldContainer< double > &F) const
Evaluate the nonlinear residual.
Intrepid::FieldContainer< double > md_array_type
Multidimensional array typedefs.
Nonlinear problem struct for pointInFaceVolumeOfInfluence. This problem projects a point onto the sur...
void evaluateJacobian(const Intrepid::FieldContainer< double > &u, Intrepid::FieldContainer< double > &J) const
Evaluate the jacobian.
Traits/policy class for nonlinear problems.
void updateState(const Intrepid::FieldContainer< double > &u)
Update the state of the problem given the new solution vector.
Intrepid::FieldContainer< double > md_array_type
Multidimensional array typedefs.
Traits class for nonlinear problems.