37 #ifndef GETFEM_CONTACT_AND_FRICTION_NODAL_H__
38 #define GETFEM_CONTACT_AND_FRICTION_NODAL_H__
44 typedef gmm::row_matrix<gmm::rsvector<scalar_type> > CONTACT_B_MATRIX;
62 (model &md,
const std::string &varname_u,
const std::string &multname_n,
63 const std::string &dataname_r, CONTACT_B_MATRIX &BN,
64 std::string dataname_gap =
"", std::string dataname_alpha =
"",
65 int aug_version=1,
bool Hughes_stabilized=
false);
86 (model &md,
const std::string &varname_u1,
const std::string &varname_u2,
87 const std::string &multname_n,
88 const std::string &dataname_r, CONTACT_B_MATRIX &BN1, CONTACT_B_MATRIX &BN2,
89 std::string dataname_gap =
"", std::string dataname_alpha =
"",
90 int aug_version=1,
bool Hughes_stabilized=
false);
121 (model &md,
const std::string &varname_u,
const std::string &multname_n,
122 const std::string &multname_t,
const std::string &dataname_r,
123 CONTACT_B_MATRIX &BN, CONTACT_B_MATRIX &BT,
124 std::string dataname_friction_coeff,
125 std::string dataname_gap=
"", std::string dataname_alpha=
"",
126 int aug_version=1,
bool Tresca_version=
false,
const std::string dataname_threshold=
"",
127 std::string dataname_gamma=
"", std::string dataname_wt=
"",
bool Hughes_stabilized=
false);
166 (
model &md,
const std::string &varname_u,
const std::string &multname_n,
167 const std::string &dataname_r, CONTACT_B_MATRIX &BN, CONTACT_B_MATRIX &DN,
168 std::string dataname_gap=
"", std::string dataname_alpha=
"",
172 (md, varname_u, multname_n, dataname_r, BN,
173 dataname_gap, dataname_alpha, aug_version,
true);
175 gmm::mat_nrows(DN), gmm::mat_ncols(DN));
208 (
model &md,
const std::string &varname_u,
const std::string &multname_n,
209 const std::string &multname_t,
const std::string &dataname_r,
210 CONTACT_B_MATRIX &BN, CONTACT_B_MATRIX &BT, CONTACT_B_MATRIX &DN,CONTACT_B_MATRIX &DT,
211 std::string dataname_friction_coeff,
212 std::string dataname_gap=
"", std::string dataname_alpha=
"",
213 int aug_version=1,
bool Tresca_version=
false,
const std::string dataname_threshold=
"") {
216 (md, varname_u, multname_n, multname_t, dataname_r, BN, BT,
217 dataname_friction_coeff, dataname_gap, dataname_alpha,
218 aug_version, Tresca_version, dataname_threshold,
"",
"",
true);
220 gmm::mat_nrows(DN), gmm::mat_ncols(DN));
224 gmm::mat_nrows(DT), gmm::mat_ncols(DT));
252 (model &md,
const mesh_im &mim,
const std::string &varname_u,
253 const std::string &multname_n,
const std::string &dataname_r,
254 size_type region,
const std::string &obstacle,
int aug_version=1);
286 (model &md,
const mesh_im &mim,
const std::string &varname_u,
287 const std::string &multname_n,
const std::string &multname_t,
288 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
289 size_type region,
const std::string &obstacle,
int aug_version=1);
320 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
321 const std::string &varname_u1,
const std::string &varname_u2,
322 std::string &multname_n,
const std::string &dataname_r,
323 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
324 bool slave1=
true,
bool slave2=
false,
int aug_version=1);
327 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
328 const std::string &varname_u1,
const std::string &varname_u2,
329 std::string &multname_n,
const std::string &dataname_r,
333 std::vector<size_type> vrg1(1,rg1);
334 std::vector<size_type> vrg2(1,rg2);
336 (md, mim1, mim2, varname_u1, varname_u2, multname_n, dataname_r,
337 vrg1, vrg2, slave1, slave2, aug_version);
341 (model &md,
const mesh_im &mim,
const std::string &varname_u,
342 std::string &multname_n,
const std::string &dataname_r,
343 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
344 bool slave1=
true,
bool slave2=
false,
int aug_version=1) {
347 (md, mim, mim, varname_u, varname_u, multname_n, dataname_r,
348 rg1, rg2, slave1, slave2, aug_version);
352 (model &md,
const mesh_im &mim,
const std::string &varname_u,
353 std::string &multname_n,
const std::string &dataname_r,
357 std::vector<size_type> vrg1(1,rg1);
358 std::vector<size_type> vrg2(1,rg2);
360 (md, mim, mim, varname_u, varname_u, multname_n, dataname_r,
361 vrg1, vrg2, slave1, slave2, aug_version);
399 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
400 const std::string &varname_u1,
const std::string &varname_u2,
401 std::string &multname_n, std::string &multname_t,
402 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
403 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
404 bool slave1=
true,
bool slave2=
false,
int aug_version=1);
407 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
408 const std::string &varname_u1,
const std::string &varname_u2,
409 std::string &multname_n, std::string &multname_t,
410 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
414 std::vector<size_type> vrg1(1,rg1);
415 std::vector<size_type> vrg2(1,rg2);
417 (md, mim1, mim2, varname_u1, varname_u2, multname_n, multname_t,
418 dataname_r, dataname_friction_coeff,
419 vrg1, vrg2, slave1, slave2, aug_version);
423 (model &md,
const mesh_im &mim,
const std::string &varname_u,
424 std::string &multname_n, std::string &multname_t,
425 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
426 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
427 bool slave1=
true,
bool slave2=
false,
int aug_version=1) {
430 (md, mim, mim, varname_u, varname_u, multname_n, multname_t,
431 dataname_r, dataname_friction_coeff,
432 rg1, rg2, slave1, slave2, aug_version);
436 (model &md,
const mesh_im &mim,
const std::string &varname_u,
437 std::string &multname_n, std::string &multname_t,
438 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
442 std::vector<size_type> vrg1(1,rg1);
443 std::vector<size_type> vrg2(1,rg2);
445 (md, mim, mim, varname_u, varname_u, multname_n, multname_t,
446 dataname_r, dataname_friction_coeff,
447 vrg1, vrg2, slave1, slave2, aug_version);
453 IS_DEPRECATED
inline size_type add_basic_contact_with_friction_brick
454 (model &md,
const std::string &varname_u,
const std::string &multname_n,
455 const std::string &multname_t,
const std::string &dataname_r,
456 CONTACT_B_MATRIX &BN, CONTACT_B_MATRIX &BT,
457 std::string dataname_friction_coeff,
458 std::string dataname_gap=
"", std::string dataname_alpha=
"",
459 int aug_version=1,
bool Tresca_version=
false,
bool Hughes_stabilized=
false)
461 (md, varname_u, multname_n, multname_t, dataname_r, BN, BT, dataname_friction_coeff,
462 dataname_gap, dataname_alpha, aug_version, Tresca_version,
"",
"",
"", Hughes_stabilized); }
464 IS_DEPRECATED
inline size_type add_Hughes_stab_with_friction_contact_brick
465 (model &md,
const std::string &varname_u,
const std::string &multname_n,
466 const std::string &multname_t,
const std::string &dataname_r,
467 CONTACT_B_MATRIX &BN, CONTACT_B_MATRIX &BT, CONTACT_B_MATRIX &DN,CONTACT_B_MATRIX &DT,
468 std::string dataname_friction_coeff, std::string dataname_gap=
"",
469 std::string dataname_alpha=
"",
int aug_version=1,
bool Tresca_version=
false)
471 (md, varname_u, multname_n, multname_t, dataname_r, BN, BT, DN, DT,
472 dataname_friction_coeff, dataname_gap, dataname_alpha, aug_version, Tresca_version,
""); }
475 IS_DEPRECATED
inline size_type add_contact_with_rigid_obstacle_brick
476 (model &md,
const mesh_im &mim,
const std::string &varname_u,
477 const std::string &multname_n,
const std::string &dataname_r,
478 size_type region,
const std::string &obstacle,
int aug_version=1)
480 (md, mim, varname_u, multname_n, dataname_r, region, obstacle, aug_version); }
482 IS_DEPRECATED
inline size_type add_contact_with_friction_with_rigid_obstacle_brick
483 (model &md,
const mesh_im &mim,
const std::string &varname_u,
484 const std::string &multname_n,
const std::string &multname_t,
485 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
486 size_type region,
const std::string &obstacle,
int aug_version=1)
488 (md, mim, varname_u, multname_n, multname_t, dataname_r,
489 dataname_friction_coeff, region, obstacle, aug_version); }
492 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_brick
493 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
494 const std::string &varname_u1,
const std::string &varname_u2,
495 std::string &multname_n,
const std::string &dataname_r,
496 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
497 bool slave1=
true,
bool slave2=
false,
int aug_version=1)
499 (md, mim1, mim2, varname_u1, varname_u2, multname_n, dataname_r,
500 rg1, rg2, slave1, slave2, aug_version); }
502 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_brick
503 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
504 const std::string &varname_u1,
const std::string &varname_u2,
505 std::string &multname_n,
const std::string &dataname_r,
509 (md, mim1, mim2, varname_u1, varname_u2, multname_n, dataname_r,
510 rg1, rg2, slave1, slave2, aug_version); }
512 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_brick
513 (model &md,
const mesh_im &mim,
const std::string &varname_u,
514 std::string &multname_n,
const std::string &dataname_r,
515 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
516 bool slave1=
true,
bool slave2=
false,
int aug_version=1)
518 (md, mim, varname_u, multname_n, dataname_r,
519 rg1, rg2, slave1, slave2, aug_version); }
521 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_brick
522 (model &md,
const mesh_im &mim,
const std::string &varname_u,
523 std::string &multname_n,
const std::string &dataname_r,
527 (md, mim, varname_u, multname_n, dataname_r,
528 rg1, rg2, slave1, slave2, aug_version); }
531 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_with_friction_brick
532 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
533 const std::string &varname_u1,
const std::string &varname_u2,
534 std::string &multname_n, std::string &multname_t,
535 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
536 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
537 bool slave1=
true,
bool slave2=
false,
int aug_version=1)
539 (md, mim1, mim2, varname_u1, varname_u2, multname_n, multname_t, dataname_r,
540 dataname_friction_coeff, rg1, rg2, slave1, slave2, aug_version); }
542 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_with_friction_brick
543 (model &md,
const mesh_im &mim1,
const mesh_im &mim2,
544 const std::string &varname_u1,
const std::string &varname_u2,
545 std::string &multname_n, std::string &multname_t,
546 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
550 (md, mim1, mim2, varname_u1, varname_u2, multname_n, multname_t,
551 dataname_r, dataname_friction_coeff, rg1, rg2, slave1, slave2, aug_version); }
553 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_with_friction_brick
554 (model &md,
const mesh_im &mim,
const std::string &varname_u,
555 std::string &multname_n, std::string &multname_t,
556 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
557 const std::vector<size_type> &rg1,
const std::vector<size_type> &rg2,
558 bool slave1=
true,
bool slave2=
false,
int aug_version=1)
560 (md, mim, varname_u, multname_n, multname_t, dataname_r,
561 dataname_friction_coeff, rg1, rg2, slave1, slave2, aug_version); }
563 IS_DEPRECATED
inline size_type add_nonmatching_meshes_contact_with_friction_brick
564 (model &md,
const mesh_im &mim,
const std::string &varname_u,
565 std::string &multname_n, std::string &multname_t,
566 const std::string &dataname_r,
const std::string &dataname_friction_coeff,
570 (md, mim, varname_u, multname_n, multname_t, dataname_r,
571 dataname_friction_coeff, rg1, rg2, slave1, slave2, aug_version); }
`‘Model’' variables store the variables, the data and the description of a model.
Model representation in Getfem.
size_t size_type
used as the common size type in the library
GEneric Tool for Finite Element Methods.
size_type add_basic_contact_brick(model &md, const std::string &varname_u, const std::string &multname_n, const std::string &dataname_r, CONTACT_B_MATRIX &BN, std::string dataname_gap="", std::string dataname_alpha="", int aug_version=1, bool Hughes_stabilized=false)
Add a frictionless contact condition to the model.
size_type add_Hughes_stab_basic_contact_brick(model &md, const std::string &varname_u, const std::string &multname_n, const std::string &dataname_r, CONTACT_B_MATRIX &BN, CONTACT_B_MATRIX &DN, std::string dataname_gap="", std::string dataname_alpha="", int aug_version=1)
Add Hughes stabilized frictionless contact condition to the model.
size_type add_basic_contact_brick_two_deformable_bodies(model &md, const std::string &varname_u1, const std::string &varname_u2, const std::string &multname_n, const std::string &dataname_r, CONTACT_B_MATRIX &BN1, CONTACT_B_MATRIX &BN2, std::string dataname_gap="", std::string dataname_alpha="", int aug_version=1, bool Hughes_stabilized=false)
Add a frictionless contact condition to the model between two deformable bodies.
CONTACT_B_MATRIX & contact_brick_set_BN(model &md, size_type indbrick)
Can be used to change the matrix BN of a basic contact/friction brick.
void contact_brick_set_stationary(model &md, size_type indbrick)
Can be used to set the stationary option.
CONTACT_B_MATRIX & contact_brick_set_DT(model &md, size_type indbrick)
Can be used to change the matrix DT of a basic contact/friction brick.
CONTACT_B_MATRIX & contact_brick_set_DN(model &md, size_type indbrick)
Can be used to change the matrix DN of a basic contact/friction brick.
size_type add_nodal_contact_between_nonmatching_meshes_brick(model &md, const mesh_im &mim1, const mesh_im &mim2, const std::string &varname_u1, const std::string &varname_u2, std::string &multname_n, const std::string &dataname_r, const std::vector< size_type > &rg1, const std::vector< size_type > &rg2, bool slave1=true, bool slave2=false, int aug_version=1)
Add a frictionless contact condition between two faces of one or two elastic bodies.
size_type add_nodal_contact_with_rigid_obstacle_brick(model &md, const mesh_im &mim, const std::string &varname_u, const std::string &multname_n, const std::string &dataname_r, size_type region, const std::string &obstacle, int aug_version=1)
Add a frictionless contact condition with a rigid obstacle to the model.
CONTACT_B_MATRIX & contact_brick_set_BT(model &md, size_type indbrick)
Can be used to change the matrix BT of a basic contact/friction brick.