124 virtual LinearType
linear(
const int layer_id = -1)
const {
return yes; }
134 virtual bool isotropic(
const int layer_id = -1)
const {
return true; }
154 virtual int number_of_layer()
const {
return 1; }
156 virtual void laminate(
157 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
158 T& laminate_begin, T& laminate_end)
const {
162 T laminate_thickness(
163 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation)
const {
164 T laminate_begin, laminate_end;
165 laminate(nodes_interpolation, laminate_begin, laminate_end);
166 return laminate_end - laminate_begin;
170 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
171 const int layer_id, T& layer_begin, T& layer_end)
const {
176 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation)
const {
177 T layer_begin, layer_end;
178 layer(nodes_interpolation, layer_begin, layer_end);
179 return layer_end - layer_begin;
182 virtual T get_density(
const int layer_id)
const {
187 virtual void get_stress(
188 Model* model,
const bool linear,
const EquilibriumSolution equilibrium_solution,
189 const double time,
const double delta_time, GradientContainer* gradient_container,
190 SolverHints* solver_hints,
const Element* element,
const double el_coordinates[3],
192 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
193 const T bg_coordinates[3],
const T covariant_base[3][3],
const bool use_covariant_base,
194 const T volume,
const T displacement_gradient[3][3],
const T strain[6],
195 const T strain_dot[6],
const T velocity[3],
const T acceleration[3], T stress[6],
196 T d_stress_d_strain[21], T d_stress_d_strain_dot[21], T d_stress_d_time[6],
197 T inertia_force[3], T& density) {
201 virtual void get_static_linear_stress(
202 Model* model,
const double time,
const double delta_time,
203 GradientContainer* gradient_container, SolverHints* solver_hints,
const Element* element,
204 const double el_coordinates[3],
const int layer_id,
205 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
206 const T bg_coordinates[3],
const T covariant_base[3][3],
const bool use_covariant_base,
207 const T volume,
const T displacement_gradient[3][3],
const T strain[6], T stress[6],
208 T d_stress_d_strain[21], T d_stress_d_time[6]) {
214 time, delta_time, gradient_container, solver_hints, element, el_coordinates, layer_id,
215 nodes_interpolation, bg_coordinates, covariant_base, use_covariant_base, volume,
216 displacement_gradient, strain,
220 stress, d_stress_d_strain,
227 virtual void get_static_nonlinear_stress(
228 Model* model,
const EquilibriumSolution equilibrium_solution,
const double time,
229 const double delta_time, GradientContainer* gradient_container, SolverHints* solver_hints,
230 const Element* element,
const double el_coordinates[3],
const int layer_id,
231 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
232 const T bg_coordinates[3],
const T covariant_base[3][3],
const bool use_covariant_base,
233 const T volume,
const T displacement_gradient[3][3],
const T strain[6], T stress[6],
234 T d_stress_d_strain[21], T d_stress_d_time[6]) {
239 equilibrium_solution, time, delta_time, gradient_container, solver_hints, element,
240 el_coordinates, layer_id, nodes_interpolation, bg_coordinates, covariant_base,
241 use_covariant_base, volume, displacement_gradient, strain,
245 stress, d_stress_d_strain,
252 virtual void get_dynamic_linear_stress(
253 Model* model,
const double time,
const double delta_time,
254 GradientContainer* gradient_container, SolverHints* solver_hints,
const Element* element,
255 const double el_coordinates[3],
const int layer_id,
256 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
257 const T bg_coordinates[3],
const T covariant_base[3][3],
const bool use_covariant_base,
258 const T volume,
const T displacement_gradient[3][3],
const T strain[6],
259 const T strain_dot[6],
const T velocity[3],
const T acceleration[3], T stress[6],
260 T d_stress_d_strain[21], T d_stress_d_strain_dot[21], T d_stress_d_time[6],
261 T inertia_force[3], T& density) {
266 time, delta_time, gradient_container, solver_hints, element, el_coordinates, layer_id,
267 nodes_interpolation, bg_coordinates, covariant_base, use_covariant_base, volume,
268 displacement_gradient, strain, strain_dot, velocity, acceleration, stress,
269 d_stress_d_strain, d_stress_d_strain_dot, d_stress_d_time, inertia_force, density);
272 virtual void get_dynamic_nonlinear_stress(
273 Model* model,
const EquilibriumSolution equilibrium_solution,
const double time,
274 const double delta_time, GradientContainer* gradient_container, SolverHints* solver_hints,
275 const Element* element,
const double el_coordinates[3],
const int layer_id,
276 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
277 const T bg_coordinates[3],
const T covariant_base[3][3],
const bool use_covariant_base,
278 const T volume,
const T displacement_gradient[3][3],
const T strain[6],
279 const T strain_dot[6],
const T velocity[3],
const T acceleration[3], T stress[6],
280 T d_stress_d_strain[21], T d_stress_d_strain_dot[21], T d_stress_d_time[6],
281 T inertia_force[3], T& density) {
285 equilibrium_solution, time, delta_time, gradient_container, solver_hints, element,
286 el_coordinates, layer_id, nodes_interpolation, bg_coordinates, covariant_base,
287 use_covariant_base, volume, displacement_gradient, strain, strain_dot, velocity,
288 acceleration, stress, d_stress_d_strain, d_stress_d_strain_dot, d_stress_d_time,
289 inertia_force, density);
292 virtual void get_static_linear_cross_section_gradient(
293 const T covariant_base[3][3],
const T strain[6],
const T stress[6],
294 GradientContainer* gradient_container) {
324 virtual LinearType
linear(
const int layer_id = -1)
const {
return yes; }
334 virtual bool isotropic(
const int layer_id = -1)
const {
return true; }
355 virtual int number_of_layer()
const {
return 1; }
357 virtual void laminate(
358 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
359 T& laminate_begin, T& laminate_end)
const {
363 T laminate_thickness(
364 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation)
const {
365 T laminate_begin, laminate_end;
366 laminate(nodes_interpolation, laminate_begin, laminate_end);
367 return laminate_end - laminate_begin;
371 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
372 const int layer_id, T& layer_begin, T& layer_end)
const {
377 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation)
const {
378 T layer_begin, layer_end;
379 layer(nodes_interpolation, layer_begin, layer_end);
380 return layer_end - layer_begin;
383 virtual T get_density(
const int layer_id)
const {
388 virtual void get_stress(
389 Model* model,
const bool linear,
const EquilibriumSolution equilibrium_solution,
390 const double time,
const double delta_time, GradientContainer* gradient_container,
391 SolverHints* solver_hints,
const Element* element,
const double el_coordinates[3],
393 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
394 const double thickness_interpolation[2],
const T bg_coordinates[3],
395 const T covariant_base[3][3],
const bool use_covariant_base,
const T volume,
396 const T displacement_gradient[3][3],
const T strain[6],
const T strain_dot[6],
397 const T velocity[3],
const T acceleration[3], T stress[6], T d_stress_d_strain[21],
398 T d_stress_d_strain_dot[21], T d_stress_d_time[6], T inertia_force[3], T& density) {
402 virtual void get_static_linear_stress(
403 Model* model,
const double time,
const double delta_time,
404 GradientContainer* gradient_container, SolverHints* solver_hints,
const Element* element,
405 const double el_coordinates[3],
const int layer_id,
406 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
407 const double thickness_interpolation[2],
const T bg_coordinates[3],
408 const T covariant_base[3][3],
const bool use_covariant_base,
const T volume,
409 const T displacement_gradient[3][3],
const T strain[6], T stress[6],
410 T d_stress_d_strain[21], T d_stress_d_time[6]) {
416 time, delta_time, gradient_container, solver_hints, element, el_coordinates, layer_id,
417 nodes_interpolation, thickness_interpolation, bg_coordinates, covariant_base,
418 use_covariant_base, volume, displacement_gradient, strain,
422 stress, d_stress_d_strain,
429 virtual void get_static_nonlinear_stress(
430 Model* model,
const EquilibriumSolution equilibrium_solution,
const double time,
431 const double delta_time, GradientContainer* gradient_container, SolverHints* solver_hints,
432 const Element* element,
const double el_coordinates[3],
const int layer_id,
433 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
434 const double thickness_interpolation[2],
const T bg_coordinates[3],
435 const T covariant_base[3][3],
const bool use_covariant_base,
const T volume,
436 const T displacement_gradient[3][3],
const T strain[6], T stress[6],
437 T d_stress_d_strain[21], T d_stress_d_time[6]) {
442 equilibrium_solution, time, delta_time, gradient_container, solver_hints, element,
443 el_coordinates, layer_id, nodes_interpolation, thickness_interpolation,
444 bg_coordinates, covariant_base, use_covariant_base, volume, displacement_gradient,
449 stress, d_stress_d_strain,
456 virtual void get_dynamic_linear_stress(
457 Model* model,
const double time,
const double delta_time,
458 GradientContainer* gradient_container, SolverHints* solver_hints,
const Element* element,
459 const double el_coordinates[3],
const int layer_id,
460 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
461 const double thickness_interpolation[2],
const T bg_coordinates[3],
462 const T covariant_base[3][3],
const bool use_covariant_base,
const T volume,
463 const T displacement_gradient[3][3],
const T strain[6],
const T strain_dot[6],
464 const T velocity[3],
const T acceleration[3], T stress[6], T d_stress_d_strain[21],
465 T d_stress_d_strain_dot[21], T d_stress_d_time[6], T inertia_force[3], T& density) {
470 time, delta_time, gradient_container, solver_hints, element, el_coordinates, layer_id,
471 nodes_interpolation, thickness_interpolation, bg_coordinates, covariant_base,
472 use_covariant_base, volume, displacement_gradient, strain, strain_dot, velocity,
473 acceleration, stress, d_stress_d_strain, d_stress_d_strain_dot, d_stress_d_time,
474 inertia_force, density);
477 virtual void get_dynamic_nonlinear_stress(
478 Model* model,
const EquilibriumSolution equilibrium_solution,
const double time,
479 const double delta_time, GradientContainer* gradient_container, SolverHints* solver_hints,
480 const Element* element,
const double el_coordinates[3],
const int layer_id,
481 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
482 const double thickness_interpolation[2],
const T bg_coordinates[3],
483 const T covariant_base[3][3],
const bool use_covariant_base,
const T volume,
484 const T displacement_gradient[3][3],
const T strain[6],
const T strain_dot[6],
485 const T velocity[3],
const T acceleration[3], T stress[6], T d_stress_d_strain[21],
486 T d_stress_d_strain_dot[21], T d_stress_d_time[6], T inertia_force[3], T& density) {
490 equilibrium_solution, time, delta_time, gradient_container, solver_hints, element,
491 el_coordinates, layer_id, nodes_interpolation, thickness_interpolation,
492 bg_coordinates, covariant_base, use_covariant_base, volume, displacement_gradient,
493 strain, strain_dot, velocity, acceleration, stress, d_stress_d_strain,
494 d_stress_d_strain_dot, d_stress_d_time, inertia_force, density);
497 virtual bool has_shell_stress_interface()
const {
return false; }
503 const Element* element,
const double el_coordinates[2],
504 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
505 const T bg_coordinates[3],
const T covariant_base[6][3],
const bool use_covariant_base,
506 const T displacement_gradient[6][3],
const T shell_strain[8], T shell_stress[8],
507 T d_shell_stress_d_strain[36], T d_shell_stress_d_time[8]) {
513 Model* model,
const double time,
const double delta_time,
515 const double el_coordinates[2],
516 const b2linalg::Vector<T, b2linalg::Vdense_constref> nodes_interpolation,
517 const T bg_coordinates[3],
const T covariant_base[6][3],
const bool use_covariant_base,
518 const T displacement_gradient[6][3],
const T shell_strain[8],
const T shell_stress[8],
519 const T d_shell_stress_d_ec[2][8]) {
527 const Element* element,
const double el_coordinates[2],
528 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
529 const T bg_coordinates[3],
const T covariant_base[6][3],
const bool use_covariant_base,
530 const T volume,
const T displacement_gradient[6][3],
const T shell_strain[8],
531 const T strain_dot[8],
const T velocity[6],
const T acceleration[6], T shell_stress[8],
532 T d_shell_stress_d_strain[36], T d_stress_d_strain_dot[36], T d_shell_stress_d_time[8],
533 T d_stress_d_time[6], T inertia_force[6], T density[3]) {
537 virtual T get_drill_stiffness()
const {
542 virtual T get_inplane_shear_modulus(
const int layer_id)
const {
573 virtual LinearType
linear(
const int layer_id = -1)
const {
return yes; }
583 virtual bool isotropic(
const int layer_id = -1)
const {
return true; }
604 virtual int number_of_layer()
const {
return 1; }
606 virtual void laminate(
607 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
608 T& laminate_begin, T& laminate_end)
const {
612 T laminate_thickness(
613 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation)
const {
614 T laminate_begin, laminate_end;
615 laminate(nodes_interpolation, laminate_begin, laminate_end);
616 return laminate_end - laminate_begin;
620 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
621 const int layer_id, T& layer_begin, T& layer_end)
const {
626 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation)
const {
627 T layer_begin, layer_end;
628 layer(nodes_interpolation, layer_begin, layer_end);
629 return layer_end - layer_begin;
632 virtual void get_stress(
633 Model* model,
const bool linear,
const EquilibriumSolution equilibrium_solution,
634 const double time,
const double delta_time, GradientContainer* gradient_container,
635 SolverHints* solver_hints,
const Element* element,
const double el_coordinates[2],
637 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
638 const T bg_coordinates[3],
const T covariant_base[2][2],
const bool use_covariant_base,
639 const T volume,
const T displacement_gradient[2][2],
const T strain[3],
640 const T strain_dot[3],
const T velocity[2],
const T acceleration[2], T stress[3],
641 T d_stress_d_strain[6], T d_stress_d_strain_dot[6], T d_stress_d_time[3],
642 T inertia_force[2], T& density) {
646 virtual T get_density(
const int layer_id)
const {
virtual void get_shell_stress(Model *model, const EquilibriumSolution equilibrium_solution, const double time, const double delta_time, GradientContainer *gradient_container, SolverHints *solver_hints, const Element *element, const double el_coordinates[2], const b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, const T bg_coordinates[3], const T covariant_base[6][3], const bool use_covariant_base, const T volume, const T displacement_gradient[6][3], const T shell_strain[8], const T strain_dot[8], const T velocity[6], const T acceleration[6], T shell_stress[8], T d_shell_stress_d_strain[36], T d_stress_d_strain_dot[36], T d_shell_stress_d_time[8], T d_stress_d_time[6], T inertia_force[6], T density[3])
Definition b2solid_mechanics.H:524