From 240155e311cff56c4597b7452290dc476718306b Mon Sep 17 00:00:00 2001 From: ktbolt Date: Wed, 16 Oct 2024 17:05:10 +0000 Subject: [PATCH] deploy: f9fe6fe4b5025c54188aad4c1e0859d578230d70 --- _com_mod_8h_source.html | 2559 ++++++++-------- _fsils_linear_algebra_8h_source.html | 4 +- _linear_algebra_8h_source.html | 4 +- _parameters_8h_source.html | 1941 ++++++------- _petsc_linear_algebra_8h_source.html | 4 +- _simulation_8h_source.html | 6 +- _trilinos_linear_algebra_8h_source.html | 4 +- all__fun_8h_source.html | 8 +- baf__ini_8h_source.html | 6 +- bf_8h_source.html | 4 +- cep_8h_source.html | 4 +- ...constitutive_model_parameters-members.html | 53 +- class_constitutive_model_parameters.html | 13 +- classfib_strs_type-members.html | 7 +- classfib_strs_type.html | 3 + cmm_8h_source.html | 6 +- contact_8h_source.html | 2 +- distribute_8h_source.html | 14 +- eq__assem_8h_source.html | 6 +- fft_8h_source.html | 2 +- fluid_8h_source.html | 6 +- fs_8h_source.html | 6 +- fsi_8h_source.html | 4 +- heatf_8h_source.html | 4 +- heats_8h_source.html | 4 +- l__elas_8h_source.html | 4 +- lhsa_8h_source.html | 2 +- load__msh_8h_source.html | 6 +- ls_8h_source.html | 4 +- mat__fun__carray_8h_source.html | 221 +- mat__models_8h_source.html | 6 +- mat__models__carray_8h_source.html | 2571 +++++++++-------- mesh_8h_source.html | 4 +- nn_8h_source.html | 6 +- nn__elem__gip_8h_source.html | 4 +- nn__elem__gnn_8h_source.html | 4 +- nn__elem__nn__bnds_8h_source.html | 2 +- nn__elem__props_8h_source.html | 4 +- output_8h_source.html | 2 +- petsc__impl_8h_source.html | 2 +- post_8h_source.html | 2 +- read__files_8h_source.html | 20 +- read__msh_8h_source.html | 6 +- remesh_8h_source.html | 6 +- search/all_1.js | 4 +- search/all_2.js | 4 +- search/pages_0.js | 2 +- search/pages_1.js | 2 +- search/variables_1.js | 4 +- search/variables_10.js | 56 +- search/variables_11.js | 22 +- search/variables_12.js | 18 +- search/variables_13.js | 30 +- search/variables_14.js | 4 +- search/variables_15.js | 22 +- search/variables_16.js | 12 +- search/variables_17.js | 4 +- search/variables_2.js | 33 +- search/variables_3.js | 26 +- search/variables_4.js | 28 +- search/variables_5.js | 24 +- search/variables_6.js | 40 +- search/variables_7.js | 68 +- search/variables_8.js | 40 +- search/variables_9.js | 26 +- search/variables_a.js | 28 +- search/variables_b.js | 72 +- search/variables_c.js | 14 +- search/variables_d.js | 24 +- search/variables_e.js | 2 +- search/variables_f.js | 32 +- set__bc_8h_source.html | 6 +- set__equation__props_8h_source.html | 4 +- set__material__props_8h_source.html | 60 +- set__viscosity__props_8h_source.html | 6 +- shells_8h_source.html | 6 +- stokes_8h_source.html | 4 +- sv__struct_8h_source.html | 4 +- sv_zero_d__subroutines_8h_source.html | 2 +- todo.html | 4 +- trilinos__impl_8h_source.html | 2 +- txt_8h_source.html | 4 +- ustruct_8h_source.html | 4 +- vtk__xml_8h_source.html | 8 +- vtk__xml__parser_8h_source.html | 4 +- 85 files changed, 4283 insertions(+), 4026 deletions(-) diff --git a/_com_mod_8h_source.html b/_com_mod_8h_source.html index 25d6dc8e..d225ec14 100644 --- a/_com_mod_8h_source.html +++ b/_com_mod_8h_source.html @@ -405,1576 +405,1579 @@
333  // Constant steady value
334  double g = 0.0;
335 
-
336  // Unsteady time-dependent values
-
337  fcType gt;
-
338 };
-
339 
-
340 /// @brief Structural domain type
-
341 //
-
342 class stModelType
-
343 {
-
344  public:
-
345  // Type of constitutive model (volumetric) for struct/FSI
-
346  consts::ConstitutiveModelType volType = consts::ConstitutiveModelType::stIso_NA;
-
347 
-
348  // Penalty parameter
-
349  double Kpen = 0.0;
+
336  // Cross fiber stress parameter
+
337  double eta_s = 0.0;
+
338 
+
339  // Unsteady time-dependent values
+
340  fcType gt;
+
341 };
+
342 
+
343 /// @brief Structural domain type
+
344 //
+
345 class stModelType
+
346 {
+
347  public:
+
348  // Type of constitutive model (volumetric) for struct/FSI
+
349  consts::ConstitutiveModelType volType = consts::ConstitutiveModelType::stIso_NA;
350 
-
351  // Type of constitutive model (isochoric) for struct/FSI
-
352  consts::ConstitutiveModelType isoType = consts::ConstitutiveModelType::stIso_NA;
+
351  // Penalty parameter
+
352  double Kpen = 0.0;
353 
-
354  // Parameters specific to the constitutive model (isochoric)
-
355  // NeoHookean model (C10 = mu/2)
-
356  double C10 = 0.0;
-
357 
-
358  // Mooney-Rivlin model (C10, C01)
-
359  double C01 = 0.0;
+
354  // Type of constitutive model (isochoric) for struct/FSI
+
355  consts::ConstitutiveModelType isoType = consts::ConstitutiveModelType::stIso_NA;
+
356 
+
357  // Parameters specific to the constitutive model (isochoric)
+
358  // NeoHookean model (C10 = mu/2)
+
359  double C10 = 0.0;
360 
-
361  // Holzapfel model(a, b, aff, bff, ass, bss, afs, bfs, kap)
-
362  double a = 0.0;
-
363  double b = 0.0;
-
364  double aff = 0.0;
-
365  double bff = 0.0;
-
366  double ass = 0.0;
-
367  double bss = 0.0;
-
368  double afs = 0.0;
-
369  double bfs = 0.0;
-
370 
-
371  // Collagen fiber dispersion parameter (Holzapfel model)
-
372  double kap = 0.0;
+
361  // Mooney-Rivlin model (C10, C01)
+
362  double C01 = 0.0;
+
363 
+
364  // Holzapfel model(a, b, aff, bff, ass, bss, afs, bfs, kap)
+
365  double a = 0.0;
+
366  double b = 0.0;
+
367  double aff = 0.0;
+
368  double bff = 0.0;
+
369  double ass = 0.0;
+
370  double bss = 0.0;
+
371  double afs = 0.0;
+
372  double bfs = 0.0;
373 
-
374  // Heaviside function parameter (Holzapfel-Ogden model)
-
375  double khs = 100.0;
+
374  // Collagen fiber dispersion parameter (Holzapfel model)
+
375  double kap = 0.0;
376 
-
377  // Lee-Sacks model
-
378  double a0 = 0.0;
-
379  double b1 = 0.0;
-
380  double b2 = 0.0;
-
381  double mu0 = 0.0;
-
382 
-
383  // Fiber reinforcement stress
-
384  fibStrsType Tf;
-
385 };
-
386 
-
387 /// @brief Fluid viscosity model type
-
388 //
-
389 class fluidViscModelType
-
390 {
-
391  public:
-
392 
-
393  // Type of constitutive model for fluid viscosity
-
394  consts::FluidViscosityModelType viscType = consts::FluidViscosityModelType::viscType_NA;
+
377  // Heaviside function parameter (Holzapfel-Ogden model)
+
378  double khs = 100.0;
+
379 
+
380  // Lee-Sacks model
+
381  double a0 = 0.0;
+
382  double b1 = 0.0;
+
383  double b2 = 0.0;
+
384  double mu0 = 0.0;
+
385 
+
386  // Fiber reinforcement stress
+
387  fibStrsType Tf;
+
388 };
+
389 
+
390 /// @brief Fluid viscosity model type
+
391 //
+
392 class fluidViscModelType
+
393 {
+
394  public:
395 
-
396  // Limiting zero shear-rate viscosity value
-
397  double mu_o = 0.0;
+
396  // Type of constitutive model for fluid viscosity
+
397  consts::FluidViscosityModelType viscType = consts::FluidViscosityModelType::viscType_NA;
398 
-
399  // Limiting high shear-rate viscosity (asymptotic) value
-
400  double mu_i = 0.0;
+
399  // Limiting zero shear-rate viscosity value
+
400  double mu_o = 0.0;
401 
-
402  // Strain-rate tensor multiplier
-
403  double lam = 0.0;
+
402  // Limiting high shear-rate viscosity (asymptotic) value
+
403  double mu_i = 0.0;
404 
-
405  // Strain-rate tensor exponent
-
406  double a = 0.0;
+
405  // Strain-rate tensor multiplier
+
406  double lam = 0.0;
407 
-
408  // Power-law exponent
-
409  double n = 0.0;
-
410 };
-
411 
-
412 /// @brief Fluid viscosity model type
-
413 //
-
414 class solidViscModelType
-
415 {
-
416  public:
-
417 
-
418  // Type of constitutive model for fluid viscosity
-
419  consts::SolidViscosityModelType viscType = consts::SolidViscosityModelType::viscType_NA;
+
408  // Strain-rate tensor exponent
+
409  double a = 0.0;
+
410 
+
411  // Power-law exponent
+
412  double n = 0.0;
+
413 };
+
414 
+
415 /// @brief Fluid viscosity model type
+
416 //
+
417 class solidViscModelType
+
418 {
+
419  public:
420 
-
421  // Viscosity value
-
422  double mu = 0.0;
-
423 };
-
424 
-
425 /// @brief Domain type is to keep track with element belong to which domain
-
426 /// and also different physical quantities
-
427 //
-
428 class dmnType
-
429 {
-
430  public:
-
431  dmnType();
-
432  ~dmnType();
-
433 
-
434  // The domain ID. Default includes entire domain
-
435  int Id = -1;
+
421  // Type of constitutive model for fluid viscosity
+
422  consts::SolidViscosityModelType viscType = consts::SolidViscosityModelType::viscType_NA;
+
423 
+
424  // Viscosity value
+
425  double mu = 0.0;
+
426 };
+
427 
+
428 /// @brief Domain type is to keep track with element belong to which domain
+
429 /// and also different physical quantities
+
430 //
+
431 class dmnType
+
432 {
+
433  public:
+
434  dmnType();
+
435  ~dmnType();
436 
-
437  // Which physics must be solved in this domain
-
438  consts::EquationType phys = consts::EquationType::phys_NA;
+
437  // The domain ID. Default includes entire domain
+
438  int Id = -1;
439 
-
440  // The volume of this domain
-
441  double v = 0.0;
+
440  // Which physics must be solved in this domain
+
441  consts::EquationType phys = consts::EquationType::phys_NA;
442 
-
443  // General physical properties such as density, elastic modulus...
-
444  // FIX davep double prop[maxNProp] ;
-
445  std::map<consts::PhysicalProperyType,double> prop;
-
446  //double prop[consts::maxNProp];
-
447 
-
448  // Electrophysiology model
-
449  cepModelType cep;
+
443  // The volume of this domain
+
444  double v = 0.0;
+
445 
+
446  // General physical properties such as density, elastic modulus...
+
447  // FIX davep double prop[maxNProp] ;
+
448  std::map<consts::PhysicalProperyType,double> prop;
+
449  //double prop[consts::maxNProp];
450 
-
451  // Structure material model
-
452  stModelType stM;
+
451  // Electrophysiology model
+
452  cepModelType cep;
453 
-
454  // Viscosity model for fluids
-
455  fluidViscModelType fluid_visc;
+
454  // Structure material model
+
455  stModelType stM;
456 
-
457  // Viscosity model for solids
-
458  solidViscModelType solid_visc;
-
459 };
-
460 
-
461 /// @brief Mesh adjacency (neighboring element for each element)
-
462 //
-
463 class adjType
-
464 {
-
465  public:
-
466  void destroy();
-
467 
-
468  // No of non-zeros
-
469  int nnz = 0;
+
457  // Viscosity model for fluids
+
458  fluidViscModelType fluid_visc;
+
459 
+
460  // Viscosity model for solids
+
461  solidViscModelType solid_visc;
+
462 };
+
463 
+
464 /// @brief Mesh adjacency (neighboring element for each element)
+
465 //
+
466 class adjType
+
467 {
+
468  public:
+
469  void destroy();
470 
-
471  // Column pointer
-
472  Vector<int> pcol;
+
471  // No of non-zeros
+
472  int nnz = 0;
473 
-
474  // Row pointer
-
475  Vector<int> prow;
+
474  // Column pointer
+
475  Vector<int> pcol;
476 
-
477 };
-
478 
-
479 /// @brief Tracer type used for immersed boundaries. Identifies traces of
-
480 /// nodes and integration points on background mesh elements
-
481 //
-
482 class traceType
-
483 {
-
484  public:
-
485  // No. of non-zero nodal traces
-
486  int n = 0;
-
487 
-
488  // No. of non-zero integration point traces
-
489  int nG = 0;
+
477  // Row pointer
+
478  Vector<int> prow;
+
479 
+
480 };
+
481 
+
482 /// @brief Tracer type used for immersed boundaries. Identifies traces of
+
483 /// nodes and integration points on background mesh elements
+
484 //
+
485 class traceType
+
486 {
+
487  public:
+
488  // No. of non-zero nodal traces
+
489  int n = 0;
490 
-
491  // Local to global nodes maping nNo --> tnNo
-
492  Vector<int> gN;
+
491  // No. of non-zero integration point traces
+
492  int nG = 0;
493 
-
494  // Self pointer of each trace to the IB integration point and
-
495  // element ID
-
496  Array<int> gE;
-
497 
-
498  // Nodal trace pointer array stores two values for each trace.
-
499  // (1) background mesh element to which the trace points to,
-
500  // (2) mesh ID
-
501  Array<int> nptr;
-
502 
-
503  // Integration point tracer array stores two values for each trace
-
504  // (1) background mesh element to which the trace points to,
-
505  // (2) mesh ID
-
506  Array<int> gptr;
-
507 
-
508  // Parametric coordinate for each nodal trace
-
509  Array<double> xi;
+
494  // Local to global nodes maping nNo --> tnNo
+
495  Vector<int> gN;
+
496 
+
497  // Self pointer of each trace to the IB integration point and
+
498  // element ID
+
499  Array<int> gE;
+
500 
+
501  // Nodal trace pointer array stores two values for each trace.
+
502  // (1) background mesh element to which the trace points to,
+
503  // (2) mesh ID
+
504  Array<int> nptr;
+
505 
+
506  // Integration point tracer array stores two values for each trace
+
507  // (1) background mesh element to which the trace points to,
+
508  // (2) mesh ID
+
509  Array<int> gptr;
510 
-
511  // Parametric coordinate for each Gauss point trace
-
512  Array<double> xiG;
-
513 };
-
514 
-
515 /// @brief The face type containing mesh at boundary
-
516 //
-
517 class faceType
-
518 {
-
519  public:
-
520  faceType();
-
521  ~faceType();
-
522 
-
523  void destroy();
-
524 
-
525  //faceType& operator=(const faceType& rhs);
-
526 
-
527  // Parametric direction normal to this face (NURBS)
-
528  int d = 0;
+
511  // Parametric coordinate for each nodal trace
+
512  Array<double> xi;
+
513 
+
514  // Parametric coordinate for each Gauss point trace
+
515  Array<double> xiG;
+
516 };
+
517 
+
518 /// @brief The face type containing mesh at boundary
+
519 //
+
520 class faceType
+
521 {
+
522  public:
+
523  faceType();
+
524  ~faceType();
+
525 
+
526  void destroy();
+
527 
+
528  //faceType& operator=(const faceType& rhs);
529 
-
530  // Number of nodes (control points) in a single element
-
531  int eNoN = 0;
+
530  // Parametric direction normal to this face (NURBS)
+
531  int d = 0;
532 
-
533  // Element type
-
534  consts::ElementType eType = consts::ElementType::NA;
+
533  // Number of nodes (control points) in a single element
+
534  int eNoN = 0;
535 
-
536  // The mesh index that this face belongs to
-
537  int iM = 0;
+
536  // Element type
+
537  consts::ElementType eType = consts::ElementType::NA;
538 
-
539  // Number of elements
-
540  int nEl = 0;
+
539  // The mesh index that this face belongs to
+
540  int iM = 0;
541 
-
542  // Global number of elements
-
543  int gnEl = 0;
+
542  // Number of elements
+
543  int nEl = 0;
544 
-
545  // Number of function spaces
-
546  int nFs = 0;
+
545  // Global number of elements
+
546  int gnEl = 0;
547 
-
548  // Number of Gauss points for integration
-
549  int nG = 0;
+
548  // Number of function spaces
+
549  int nFs = 0;
550 
-
551  // Number of nodes
-
552  int nNo = 0;
+
551  // Number of Gauss points for integration
+
552  int nG = 0;
553 
-
554  // Global element Ids
-
555  Vector<int> gE;
+
554  // Number of nodes
+
555  int nNo = 0;
556 
-
557  // Global node Ids
-
558  Vector<int> gN;
+
557  // Global element Ids
+
558  Vector<int> gE;
559 
-
560  // Global to local maping tnNo --> nNo
-
561  Vector<int> lN;
+
560  // Global node Ids
+
561  Vector<int> gN;
562 
-
563  // Connectivity array
-
564  Array<int> IEN;
+
563  // Global to local maping tnNo --> nNo
+
564  Vector<int> lN;
565 
-
566  // EBC array (gE + gIEN)
-
567  Array<int> gebc;
+
566  // Connectivity array
+
567  Array<int> IEN;
568 
-
569  // Surface area
-
570  double area = 0.0;
+
569  // EBC array (gE + gIEN)
+
570  Array<int> gebc;
571 
-
572  // Gauss point weights
-
573  Vector<double> w;
+
572  // Surface area
+
573  double area = 0.0;
574 
-
575  // Position coordinates
-
576  Array<double> x;
+
575  // Gauss point weights
+
576  Vector<double> w;
577 
-
578  // Gauss points in parametric space
-
579  Array<double> xi;
+
578  // Position coordinates
+
579  Array<double> x;
580 
-
581  // Shape functions at Gauss points
-
582  Array<double> N;
+
581  // Gauss points in parametric space
+
582  Array<double> xi;
583 
-
584  // Normal vector to each nodal point
-
585  Array<double> nV;
+
584  // Shape functions at Gauss points
+
585  Array<double> N;
586 
-
587  // Shape functions derivative at Gauss points
-
588  // double Nx(:,:,:);
-
589  Array3<double> Nx;
-
590 
-
591  // Second derivatives of shape functions - for shells & IGA
-
592  // double Nxx(:,:,:);
-
593  Array3<double> Nxx;
-
594 
-
595  // Face name for flux files
-
596  std::string name;
+
587  // Normal vector to each nodal point
+
588  Array<double> nV;
+
589 
+
590  // Shape functions derivative at Gauss points
+
591  // double Nx(:,:,:);
+
592  Array3<double> Nx;
+
593 
+
594  // Second derivatives of shape functions - for shells & IGA
+
595  // double Nxx(:,:,:);
+
596  Array3<double> Nxx;
597 
-
598  // Face nodal adjacency
-
599  adjType nAdj;
+
598  // Face name for flux files
+
599  std::string name;
600 
-
601  // Face element adjacency
-
602  adjType eAdj;
+
601  // Face nodal adjacency
+
602  adjType nAdj;
603 
-
604  // Function spaces (basis)
-
605  std::vector<fsType> fs;
+
604  // Face element adjacency
+
605  adjType eAdj;
606 
-
607  // TRI3 quadrature modifier
-
608  double qmTRI3 = 2.0/3.0;
-
609 };
-
610 
-
611 /// @brief Declared type for outputed variables
-
612 //
-
613 class outputType
-
614 {
-
615  public:
-
616 
-
617  // Is this output suppose to be written into VTK, boundary, vol
-
618  std::vector<bool> wtn{false, false, false};
+
607  // Function spaces (basis)
+
608  std::vector<fsType> fs;
+
609 
+
610  // TRI3 quadrature modifier
+
611  double qmTRI3 = 2.0/3.0;
+
612 };
+
613 
+
614 /// @brief Declared type for outputed variables
+
615 //
+
616 class outputType
+
617 {
+
618  public:
619 
-
620  // The group that this belong to (one of outType_*)
-
621  consts::OutputType grp = consts::OutputType::outGrp_NA;
-
622  //int grp;
-
623 
-
624  // Length of the outputed variable
-
625  int l = 0;
+
620  // Is this output suppose to be written into VTK, boundary, vol
+
621  std::vector<bool> wtn{false, false, false};
+
622 
+
623  // The group that this belong to (one of outType_*)
+
624  consts::OutputType grp = consts::OutputType::outGrp_NA;
+
625  //int grp;
626 
-
627  // Offset from the first index
-
628  int o = 0;
+
627  // Length of the outputed variable
+
628  int l = 0;
629 
-
630  // The name to be used for the output and also in input file
-
631  std::string name;
-
632 };
-
633 
-
634 /// @brief Linear system of equations solver type
-
635 //
-
636 class lsType
-
637 {
-
638  public:
-
639 
-
640  /// @brief LS solver (IN)
-
641  consts::SolverType LS_type = consts::SolverType::lSolver_NA;
+
630  // Offset from the first index
+
631  int o = 0;
+
632 
+
633  // The name to be used for the output and also in input file
+
634  std::string name;
+
635 };
+
636 
+
637 /// @brief Linear system of equations solver type
+
638 //
+
639 class lsType
+
640 {
+
641  public:
642 
-
643  /// @brief Successful solving (OUT)
-
644  bool suc = false;
+
643  /// @brief LS solver (IN)
+
644  consts::SolverType LS_type = consts::SolverType::lSolver_NA;
645 
-
646  /// @brief Maximum iterations (IN)
-
647  int mItr = 1000;
+
646  /// @brief Successful solving (OUT)
+
647  bool suc = false;
648 
-
649  /// @brief Space dimension (IN)
-
650  int sD = 0;
+
649  /// @brief Maximum iterations (IN)
+
650  int mItr = 1000;
651 
-
652  /// @brief Number of iteration (OUT)
-
653  int itr = 0;
+
652  /// @brief Space dimension (IN)
+
653  int sD = 0;
654 
-
655  /// @brief Number of Ax multiple (OUT)
-
656  int cM = 0;
+
655  /// @brief Number of iteration (OUT)
+
656  int itr = 0;
657 
-
658  /// @brief Number of |x| norms (OUT)
-
659  int cN = 0;
+
658  /// @brief Number of Ax multiple (OUT)
+
659  int cM = 0;
660 
-
661  /// @brief Number of <x.y> dot products (OUT)
-
662  int cD = 0;
+
661  /// @brief Number of |x| norms (OUT)
+
662  int cN = 0;
663 
-
664  /// @brief Only for data alignment (-)
-
665  int reserve = 0;
+
664  /// @brief Number of <x.y> dot products (OUT)
+
665  int cD = 0;
666 
-
667  /// @brief Absolute tolerance (IN)
-
668  double absTol = 1e-08;
+
667  /// @brief Only for data alignment (-)
+
668  int reserve = 0;
669 
-
670  /// @brief Relative tolerance (IN)
-
671  double relTol = 0.0;
+
670  /// @brief Absolute tolerance (IN)
+
671  double absTol = 1e-08;
672 
-
673  /// @brief Initial norm of residual (OUT)
-
674  double iNorm = 0.0;
+
673  /// @brief Relative tolerance (IN)
+
674  double relTol = 0.0;
675 
-
676  /// @brief Final norm of residual (OUT)
-
677  double fNorm = 0.0;
+
676  /// @brief Initial norm of residual (OUT)
+
677  double iNorm = 0.0;
678 
-
679  /// @brief Res. rduction in last itr. (OUT)
-
680  double dB = 0.0;
+
679  /// @brief Final norm of residual (OUT)
+
680  double fNorm = 0.0;
681 
-
682  /// @brief Calling duration (OUT)
-
683  double callD = 0.0;
-
684 
-
685  //@brief Configuration file for linear solvers (Trilinos, PETSc)
-
686  std::string config;
-
687 };
-
688 
-
689 
-
690 /// @brief Contact model type
-
691 //
-
692 class cntctModelType
-
693 {
-
694  public:
-
695  // Contact model
-
696  consts::ContactModelType cType = consts::ContactModelType::cntctM_NA;
-
697 
-
698  // Penalty parameter
-
699  double k = 0.0;
+
682  /// @brief Res. rduction in last itr. (OUT)
+
683  double dB = 0.0;
+
684 
+
685  /// @brief Calling duration (OUT)
+
686  double callD = 0.0;
+
687 
+
688  //@brief Configuration file for linear solvers (Trilinos, PETSc)
+
689  std::string config;
+
690 };
+
691 
+
692 
+
693 /// @brief Contact model type
+
694 //
+
695 class cntctModelType
+
696 {
+
697  public:
+
698  // Contact model
+
699  consts::ContactModelType cType = consts::ContactModelType::cntctM_NA;
700 
-
701  // Min depth of penetration
-
702  double h = 0.0;
+
701  // Penalty parameter
+
702  double k = 0.0;
703 
-
704  // Max depth of penetration
-
705  double c = 0.0;
+
704  // Min depth of penetration
+
705  double h = 0.0;
706 
-
707  // Min norm of face normals in contact
-
708  double al = 0.0;
+
707  // Max depth of penetration
+
708  double c = 0.0;
709 
-
710  // Tolerance
-
711  double tol = 0.0;
-
712 };
-
713 
-
714 class cplFaceType
-
715 {
-
716  public:
-
717  // GenBC_Dir/GenBC_Neu
-
718  consts::CplBCType bGrp = consts::CplBCType::cplBC_NA;
-
719 
-
720  // Pointer to X
-
721  int Xptr = -1;
+
710  // Min norm of face normals in contact
+
711  double al = 0.0;
+
712 
+
713  // Tolerance
+
714  double tol = 0.0;
+
715 };
+
716 
+
717 class cplFaceType
+
718 {
+
719  public:
+
720  // GenBC_Dir/GenBC_Neu
+
721  consts::CplBCType bGrp = consts::CplBCType::cplBC_NA;
722 
-
723  // Internal genBC use
-
724  int eqv = 0;
+
723  // Pointer to X
+
724  int Xptr = -1;
725 
-
726  // Flow rates at t
-
727  double Qo = 0.0;
+
726  // Internal genBC use
+
727  int eqv = 0;
728 
-
729  // Flow rates at t+dt
-
730  double Qn = 0.0;
+
729  // Flow rates at t
+
730  double Qo = 0.0;
731 
-
732  // Pressures at t
-
733  double Po = 0.0;
+
732  // Flow rates at t+dt
+
733  double Qn = 0.0;
734 
-
735  // Pressures at t+dt
-
736  double Pn = 0.0;
+
735  // Pressures at t
+
736  double Po = 0.0;
737 
-
738  // Imposed flow/pressure
-
739  double y = 0.0;
+
738  // Pressures at t+dt
+
739  double Pn = 0.0;
740 
-
741  // Name of the face
-
742  std::string name;
+
741  // Imposed flow/pressure
+
742  double y = 0.0;
743 
-
744  // RCR type BC
-
745  rcrType RCR;
-
746 };
-
747 
-
748 /// @brief For coupled 0D-3D problems
-
749 //
-
750 class cplBCType
-
751 {
-
752  public:
-
753  cplBCType();
-
754  /// @brief Is multi-domain active
-
755  bool coupled = false;
-
756 
-
757  /// @brief Whether to use genBC
-
758  bool useGenBC = false;
-
759 
-
760  // Whether to use svZeroD
-
761  bool useSvZeroD = false;
+
744  // Name of the face
+
745  std::string name;
+
746 
+
747  // RCR type BC
+
748  rcrType RCR;
+
749 };
+
750 
+
751 /// @brief For coupled 0D-3D problems
+
752 //
+
753 class cplBCType
+
754 {
+
755  public:
+
756  cplBCType();
+
757  /// @brief Is multi-domain active
+
758  bool coupled = false;
+
759 
+
760  /// @brief Whether to use genBC
+
761  bool useGenBC = false;
762 
-
763  // Whether to initialize RCR from flow data
-
764  bool initRCR = false;
-
765 
-
766  /// @brief Number of coupled faces
-
767  int nFa = 0;
+
763  // Whether to use svZeroD
+
764  bool useSvZeroD = false;
+
765 
+
766  // Whether to initialize RCR from flow data
+
767  bool initRCR = false;
768 
-
769  /// @brief Number of unknowns in the 0D domain
-
770  int nX = 0;
+
769  /// @brief Number of coupled faces
+
770  int nFa = 0;
771 
-
772  /// @brief Number of output variables addition to nX
-
773  int nXp = 0;
+
772  /// @brief Number of unknowns in the 0D domain
+
773  int nX = 0;
774 
-
775  /// @brief Implicit/Explicit/Semi-implicit schemes
-
776  consts::CplBCType schm = consts::CplBCType::cplBC_NA;
-
777  //int schm = cplBC_NA;
-
778 
-
779  /// @brief Path to the 0D code binary file
-
780  std::string binPath;
+
775  /// @brief Number of output variables addition to nX
+
776  int nXp = 0;
+
777 
+
778  /// @brief Implicit/Explicit/Semi-implicit schemes
+
779  consts::CplBCType schm = consts::CplBCType::cplBC_NA;
+
780  //int schm = cplBC_NA;
781 
-
782  /// @brief File name for communication between 0D and 3D
-
783  std::string commuName;
-
784  //std::string commuName = ".CPLBC_0D_3D.tmp";
-
785 
-
786  /// @brief The name of history file containing "X"
-
787  std::string saveName;
-
788  //std::string(LEN=stdL) :: saveName = "LPN.dat";
-
789 
-
790  /// @brief New time step unknowns in the 0D domain
-
791  Vector<double> xn;
+
782  /// @brief Path to the 0D code binary file
+
783  std::string binPath;
+
784 
+
785  /// @brief File name for communication between 0D and 3D
+
786  std::string commuName;
+
787  //std::string commuName = ".CPLBC_0D_3D.tmp";
+
788 
+
789  /// @brief The name of history file containing "X"
+
790  std::string saveName;
+
791  //std::string(LEN=stdL) :: saveName = "LPN.dat";
792 
-
793  /// @brief Old time step unknowns in the 0D domain
-
794  Vector<double> xo;
+
793  /// @brief New time step unknowns in the 0D domain
+
794  Vector<double> xn;
795 
-
796  /// @brief Output variables to be printed
-
797  Vector<double> xp;
+
796  /// @brief Old time step unknowns in the 0D domain
+
797  Vector<double> xo;
798 
-
799  /// @brief Data structure used for communicating with 0D code
-
800  std::vector<cplFaceType> fa;
-
801 };
-
802 
-
803 /// @brief This is the container for a mesh or NURBS patch, those specific
-
804 /// to NURBS are noted
-
805 //
-
806 class mshType
-
807 {
-
808  public:
-
809  mshType();
-
810  std::string dname = "";
-
811 
-
812 /*
-
813  mshType(const mshType &other)
-
814  {
-
815  std::cout << "c c c c c mshType copy c c c c c" << std::endl;
-
816  }
-
817 
-
818  mshType& operator = (const mshType &other)
-
819  {
-
820  std::cout << "= = = = = mshType assignment = = = = =" << std::endl;
-
821  return *this;
-
822  }
-
823 */
-
824 
-
825  ~mshType()
-
826  {
-
827  //std::cout << "- - - - - mshType dtor - - - - - dname: " << dname << std::endl;
-
828  };
-
829 
-
830  /// @brief Whether the shape function is linear
-
831  bool lShpF = false;
+
799  /// @brief Output variables to be printed
+
800  Vector<double> xp;
+
801 
+
802  /// @brief Data structure used for communicating with 0D code
+
803  std::vector<cplFaceType> fa;
+
804 };
+
805 
+
806 /// @brief This is the container for a mesh or NURBS patch, those specific
+
807 /// to NURBS are noted
+
808 //
+
809 class mshType
+
810 {
+
811  public:
+
812  mshType();
+
813  std::string dname = "";
+
814 
+
815 /*
+
816  mshType(const mshType &other)
+
817  {
+
818  std::cout << "c c c c c mshType copy c c c c c" << std::endl;
+
819  }
+
820 
+
821  mshType& operator = (const mshType &other)
+
822  {
+
823  std::cout << "= = = = = mshType assignment = = = = =" << std::endl;
+
824  return *this;
+
825  }
+
826 */
+
827 
+
828  ~mshType()
+
829  {
+
830  //std::cout << "- - - - - mshType dtor - - - - - dname: " << dname << std::endl;
+
831  };
832 
-
833  /// @brief Whether the mesh is shell
-
834  bool lShl = false;
+
833  /// @brief Whether the shape function is linear
+
834  bool lShpF = false;
835 
-
836  /// @brief Whether the mesh is fibers (Purkinje)
-
837  bool lFib = false;
+
836  /// @brief Whether the mesh is shell
+
837  bool lShl = false;
838 
-
839  /// @brief Element type
-
840  consts::ElementType eType = consts::ElementType::NA;
-
841  //int eType = eType_NA
-
842 
-
843  /// @brief Number of nodes (control points) in a single element
-
844  int eNoN = 0;
+
839  /// @brief Whether the mesh is fibers (Purkinje)
+
840  bool lFib = false;
+
841 
+
842  /// @brief Element type
+
843  consts::ElementType eType = consts::ElementType::NA;
+
844  //int eType = eType_NA
845 
-
846  /// @brief Global number of elements (knot spans)
-
847  int gnEl = 0;
+
846  /// @brief Number of nodes (control points) in a single element
+
847  int eNoN = 0;
848 
-
849  /// @brief Global number of nodes (control points)
-
850  int gnNo = 0;
+
849  /// @brief Global number of elements (knot spans)
+
850  int gnEl = 0;
851 
-
852  /// @brief Number of element face. Used for reading Gambit mesh files
-
853  int nEf = 0;
+
852  /// @brief Global number of nodes (control points)
+
853  int gnNo = 0;
854 
-
855  /// @brief Number of elements (knot spans)
-
856  int nEl = 0;
+
855  /// @brief Number of element face. Used for reading Gambit mesh files
+
856  int nEf = 0;
857 
-
858  /// @brief Number of faces
-
859  int nFa = 0;
+
858  /// @brief Number of elements (knot spans)
+
859  int nEl = 0;
860 
-
861  /// @brief Number of function spaces
-
862  int nFs = 0;
+
861  /// @brief Number of faces
+
862  int nFa = 0;
863 
-
864  /// @brief Number of Gauss points for integration
-
865  int nG = 0;
+
864  /// @brief Number of function spaces
+
865  int nFs = 0;
866 
-
867  /// @brief Number of nodes (control points) for 2D elements?
-
868  int nNo = 0;
+
867  /// @brief Number of Gauss points for integration
+
868  int nG = 0;
869 
-
870  /// @brief Number of elements sample points to be outputs (NURBS)
-
871  int nSl = 0;
+
870  /// @brief Number of nodes (control points) for 2D elements?
+
871  int nNo = 0;
872 
-
873  /// @brief The element type recognized by VTK format
-
874  int vtkType = 0;
+
873  /// @brief Number of elements sample points to be outputs (NURBS)
+
874  int nSl = 0;
875 
-
876  /// @brief Number of fiber directions
-
877  int nFn = 0;
+
876  /// @brief The element type recognized by VTK format
+
877  int vtkType = 0;
878 
-
879  /// @brief Mesh scale factor
-
880  double scF = 0.0;
+
879  /// @brief Number of fiber directions
+
880  int nFn = 0;
881 
-
882  /// @brief IB: Mesh size parameter
-
883  double dx = 0.0;
+
882  /// @brief Mesh scale factor
+
883  double scF = 0.0;
884 
-
885  /// @breif ordering: node ordering for boundaries
-
886  std::vector<std::vector<int>> ordering;
+
885  /// @brief IB: Mesh size parameter
+
886  double dx = 0.0;
887 
-
888  /// @brief Element distribution between processors
-
889  Vector<int> eDist;
+
888  /// @breif ordering: node ordering for boundaries
+
889  std::vector<std::vector<int>> ordering;
890 
-
891  /// @brief Element domain ID number
-
892  Vector<int> eId;
+
891  /// @brief Element distribution between processors
+
892  Vector<int> eDist;
893 
-
894  /// @brief Global nodes maping nNo --> tnNo
-
895  Vector<int> gN;
+
894  /// @brief Element domain ID number
+
895  Vector<int> eId;
896 
-
897  /// @brief GLobal projected nodes mapping projected -> unprojected mapping
-
898  Vector<int> gpN;
+
897  /// @brief Global nodes maping nNo --> tnNo
+
898  Vector<int> gN;
899 
-
900  /// @brief Global connectivity array mappig eNoN,nEl --> gnNo
-
901  Array<int> gIEN;
+
900  /// @brief GLobal projected nodes mapping projected -> unprojected mapping
+
901  Vector<int> gpN;
902 
-
903  /// @brief The connectivity array mapping eNoN,nEl --> nNo
-
904  Array<int> IEN;
+
903  /// @brief Global connectivity array mappig eNoN,nEl --> gnNo
+
904  Array<int> gIEN;
905 
-
906  /// @brief gIEN mapper from old to new
-
907  Vector<int> otnIEN;
+
906  /// @brief The connectivity array mapping eNoN,nEl --> nNo
+
907  Array<int> IEN;
908 
-
909  /// @brief Local knot pointer (NURBS)
-
910  Array<int> INN;
+
909  /// @brief gIEN mapper from old to new
+
910  Vector<int> otnIEN;
911 
-
912  /// @brief Global to local maping tnNo --> nNo
-
913  Vector<int> lN;
+
912  /// @brief Local knot pointer (NURBS)
+
913  Array<int> INN;
914 
-
915  /// @brief Shells: extended IEN array with neighboring nodes
-
916  Array<int> eIEN;
+
915  /// @brief Global to local maping tnNo --> nNo
+
916  Vector<int> lN;
917 
-
918  /// @brief Shells: boundary condition variable
-
919  Array<int> sbc;
+
918  /// @brief Shells: extended IEN array with neighboring nodes
+
919  Array<int> eIEN;
920 
-
921  /// @brief IB: Whether a cell is a ghost cell or not
-
922  Vector<int> iGC;
+
921  /// @brief Shells: boundary condition variable
+
922  Array<int> sbc;
923 
-
924  /// @brief Control points weights (NURBS)
-
925  Vector<double> nW;
+
924  /// @brief IB: Whether a cell is a ghost cell or not
+
925  Vector<int> iGC;
926 
-
927  /// @brief Gauss weights
-
928  Vector<double> w;
+
927  /// @brief Control points weights (NURBS)
+
928  Vector<double> nW;
929 
-
930  /// @brief Gauss integration points in parametric space
-
931  Array<double> xi;
+
930  /// @brief Gauss weights
+
931  Vector<double> w;
932 
-
933  /// @brief Bounds on parameteric coordinates
-
934  Array<double> xib;
+
933  /// @brief Gauss integration points in parametric space
+
934  Array<double> xi;
935 
-
936  /// @brief Position coordinates
-
937  Array<double> x;
+
936  /// @brief Bounds on parameteric coordinates
+
937  Array<double> xib;
938 
-
939  /// @brief Parent shape function
-
940  Array<double> N;
+
939  /// @brief Position coordinates
+
940  Array<double> x;
941 
-
942  /// @brief Shape function bounds
-
943  Array<double> Nb;
+
942  /// @brief Parent shape function
+
943  Array<double> N;
944 
-
945  /// @brief Normal vector to each nodal point (for Shells)
-
946  Array<double> nV;
+
945  /// @brief Shape function bounds
+
946  Array<double> Nb;
947 
-
948  /// @brief Fiber orientations stored at the element level - used for
-
949  /// electrophysiology and solid mechanics
-
950  Array<double> fN;
-
951 
-
952  /// @brief Parent shape functions gradient
-
953  /// double Nx(:,:,:)
-
954  Array3<double> Nx;
-
955 
-
956  /// @brief Second derivatives of shape functions - used for shells & IGA
-
957  /// davep double Nxx(:,:,:)
-
958  Array3<double> Nxx;
-
959 
-
960  /// @brief Solution field (displacement, velocity, pressure, etc.) for a known, potentially
-
961  /// time-varying, quantity of interest across a mesh
-
962  Array3<double> Ys;
-
963 
-
964  /// @brief Mesh Name
-
965  std::string name;
+
948  /// @brief Normal vector to each nodal point (for Shells)
+
949  Array<double> nV;
+
950 
+
951  /// @brief Fiber orientations stored at the element level - used for
+
952  /// electrophysiology and solid mechanics
+
953  Array<double> fN;
+
954 
+
955  /// @brief Parent shape functions gradient
+
956  /// double Nx(:,:,:)
+
957  Array3<double> Nx;
+
958 
+
959  /// @brief Second derivatives of shape functions - used for shells & IGA
+
960  /// davep double Nxx(:,:,:)
+
961  Array3<double> Nxx;
+
962 
+
963  /// @brief Solution field (displacement, velocity, pressure, etc.) for a known, potentially
+
964  /// time-varying, quantity of interest across a mesh
+
965  Array3<double> Ys;
966 
-
967  /// @brief Mesh nodal adjacency
-
968  adjType nAdj;
+
967  /// @brief Mesh Name
+
968  std::string name;
969 
-
970  /// @brief Mesh element adjacency
-
971  adjType eAdj;
+
970  /// @brief Mesh nodal adjacency
+
971  adjType nAdj;
972 
-
973  /// @brief Function spaces (basis)
-
974  std::vector<fsType> fs;
+
973  /// @brief Mesh element adjacency
+
974  adjType eAdj;
975 
-
976  /// @brief BSpline in different directions (NURBS)
-
977  std::vector<bsType> bs;
+
976  /// @brief Function spaces (basis)
+
977  std::vector<fsType> fs;
978 
-
979  /// @brief Faces are stored in this variable
-
980  std::vector<faceType> fa;
+
979  /// @brief BSpline in different directions (NURBS)
+
980  std::vector<bsType> bs;
981 
-
982  /// @brief IB: tracers
-
983  traceType trc;
+
982  /// @brief Faces are stored in this variable
+
983  std::vector<faceType> fa;
984 
-
985  /// @brief TET4 quadrature modifier
-
986  double qmTET4 = (5.0+3.0*sqrt(5.0))/20.0;
-
987 
-
988  private:
-
989  //mshType(const mshType&);
-
990  //mshType& operator=(const mshType&);
-
991 
-
992 };
-
993 
-
994 /// @brief Equation type
-
995 //
-
996 class eqType
-
997 {
-
998  public:
-
999  eqType();
-
1000  ~eqType();
-
1001 
-
1002  /// @brief Should be satisfied in a coupled/uncoupled fashion
-
1003  bool coupled = false;
-
1004  //bool coupled = .TRUE.
-
1005 
-
1006  /// @brief Satisfied/not satisfied
-
1007  bool ok = false;
+
985  /// @brief IB: tracers
+
986  traceType trc;
+
987 
+
988  /// @brief TET4 quadrature modifier
+
989  double qmTET4 = (5.0+3.0*sqrt(5.0))/20.0;
+
990 
+
991  private:
+
992  //mshType(const mshType&);
+
993  //mshType& operator=(const mshType&);
+
994 
+
995 };
+
996 
+
997 /// @brief Equation type
+
998 //
+
999 class eqType
+
1000 {
+
1001  public:
+
1002  eqType();
+
1003  ~eqType();
+
1004 
+
1005  /// @brief Should be satisfied in a coupled/uncoupled fashion
+
1006  bool coupled = false;
+
1007  //bool coupled = .TRUE.
1008 
-
1009  /// @brief Use C++ Trilinos framework for the linear solvers
-
1010  bool useTLS = false;
+
1009  /// @brief Satisfied/not satisfied
+
1010  bool ok = false;
1011 
-
1012  /// @brief Use C++ Trilinos framework for assembly and for linear solvers
-
1013  bool assmTLS = false;
+
1012  /// @brief Use C++ Trilinos framework for the linear solvers
+
1013  bool useTLS = false;
1014 
-
1015  /// @brief Degrees of freedom
-
1016  int dof = 0;
+
1015  /// @brief Use C++ Trilinos framework for assembly and for linear solvers
+
1016  bool assmTLS = false;
1017 
-
1018  /// @brief Pointer to end of unknown Yo(:,s:e)
-
1019  int e = -1;
+
1018  /// @brief Degrees of freedom
+
1019  int dof = 0;
1020 
-
1021  /// @brief Pointer to start of unknown Yo(:,s:e)
-
1022  int s = -1;
+
1021  /// @brief Pointer to end of unknown Yo(:,s:e)
+
1022  int e = -1;
1023 
-
1024  /// @brief Number of performed iterations
-
1025  int itr = 0;
+
1024  /// @brief Pointer to start of unknown Yo(:,s:e)
+
1025  int s = -1;
1026 
-
1027  /// @brief Maximum iteration for this eq.
-
1028  int maxItr = 5;
+
1027  /// @brief Number of performed iterations
+
1028  int itr = 0;
1029 
-
1030  /// @brief Minimum iteration for this eq.
-
1031  int minItr = 1;
+
1030  /// @brief Maximum iteration for this eq.
+
1031  int maxItr = 5;
1032 
-
1033  /// @brief Number of possible outputs
-
1034  int nOutput = 0;
+
1033  /// @brief Minimum iteration for this eq.
+
1034  int minItr = 1;
1035 
-
1036  /// @brief IB: Number of possible outputs
-
1037  int nOutIB = 0;
+
1036  /// @brief Number of possible outputs
+
1037  int nOutput = 0;
1038 
-
1039  /// @brief Number of domains
-
1040  int nDmn = 0;
+
1039  /// @brief IB: Number of possible outputs
+
1040  int nOutIB = 0;
1041 
-
1042  /// @brief IB: Number of immersed domains
-
1043  int nDmnIB = 0;
+
1042  /// @brief Number of domains
+
1043  int nDmn = 0;
1044 
-
1045  /// @brief Number of BCs
-
1046  int nBc = 0;
+
1045  /// @brief IB: Number of immersed domains
+
1046  int nDmnIB = 0;
1047 
-
1048  /// @brief Number of BCs on immersed surfaces
-
1049  int nBcIB = 0;
+
1048  /// @brief Number of BCs
+
1049  int nBc = 0;
1050 
-
1051  /// @brief Number of BFs
-
1052  int nBf = 0;
+
1051  /// @brief Number of BCs on immersed surfaces
+
1052  int nBcIB = 0;
1053 
-
1054  /// @brief Type of equation fluid/heatF/heatS/lElas/FSI
-
1055  consts::EquationType phys = consts::EquationType::phys_NA;
-
1056 
-
1057  // Parameters used for the Generalized α− Method.
-
1058  //
-
1059  /// @brief \f$\alpha_f\f$
-
1060  double af = 0.0;
-
1061 
-
1062  /// @brief \f$\alpha_m\f$
-
1063  ///
-
1064  /// For second order equations: am = (2.0 - roInf) / (1.0 + roInf)
-
1065  /// First order equations: am = 0.5 * (3.0 - roInf) / (1.0 + roInf)
-
1066  //
-
1067  double am = 0.0;
-
1068 
-
1069  /// @brief \f$\beta\f$
-
1070  double beta = 0.0;
+
1054  /// @brief Number of BFs
+
1055  int nBf = 0;
+
1056 
+
1057  /// @brief Type of equation fluid/heatF/heatS/lElas/FSI
+
1058  consts::EquationType phys = consts::EquationType::phys_NA;
+
1059 
+
1060  // Parameters used for the Generalized α− Method.
+
1061  //
+
1062  /// @brief \f$\alpha_f\f$
+
1063  double af = 0.0;
+
1064 
+
1065  /// @brief \f$\alpha_m\f$
+
1066  ///
+
1067  /// For second order equations: am = (2.0 - roInf) / (1.0 + roInf)
+
1068  /// First order equations: am = 0.5 * (3.0 - roInf) / (1.0 + roInf)
+
1069  //
+
1070  double am = 0.0;
1071 
-
1072  /// @brief \f$\gamma\f$
-
1073  double gam = 0.0;
+
1072  /// @brief \f$\beta\f$
+
1073  double beta = 0.0;
1074 
-
1075  /// @brief Initial norm of residual
-
1076  double iNorm = 0.0;
+
1075  /// @brief \f$\gamma\f$
+
1076  double gam = 0.0;
1077 
-
1078  /// @brief First iteration norm
-
1079  double pNorm = 0.0;
+
1078  /// @brief Initial norm of residual
+
1079  double iNorm = 0.0;
1080 
-
1081  /// @brief \f$\rho_{infinity}\f$
-
1082  double roInf = 0.0;
+
1081  /// @brief First iteration norm
+
1082  double pNorm = 0.0;
1083 
-
1084  /// @brief Accepted relative tolerance
-
1085  double tol = 0.0;
+
1084  /// @brief \f$\rho_{infinity}\f$
+
1085  double roInf = 0.0;
1086 
-
1087  /// @brief Equation symbol
-
1088  std::string sym;
-
1089  //std::string(LEN=2) :: sym = "NA";
-
1090 
-
1091  /// @brief type of linear solver
-
1092  lsType ls;
+
1087  /// @brief Accepted relative tolerance
+
1088  double tol = 0.0;
+
1089 
+
1090  /// @brief Equation symbol
+
1091  std::string sym;
+
1092  //std::string(LEN=2) :: sym = "NA";
1093 
-
1094  /// @brief The type of interface to a numerical linear algebra library.
-
1095  consts::LinearAlgebraType linear_algebra_type;
+
1094  /// @brief type of linear solver
+
1095  lsType ls;
1096 
-
1097  /// @brief The type of assembly interface to a numerical linear algebra library.
-
1098  consts::LinearAlgebraType linear_algebra_assembly_type;
+
1097  /// @brief The type of interface to a numerical linear algebra library.
+
1098  consts::LinearAlgebraType linear_algebra_type;
1099 
-
1100  /// @brief The type of preconditioner used by the interface to a numerical linear algebra library.
-
1101  consts::PreconditionerType linear_algebra_preconditioner = consts::PreconditionerType::PREC_FSILS;
+
1100  /// @brief The type of assembly interface to a numerical linear algebra library.
+
1101  consts::LinearAlgebraType linear_algebra_assembly_type;
1102 
-
1103  /// @brief Interface to a numerical linear algebra library.
-
1104  LinearAlgebra* linear_algebra = nullptr;
+
1103  /// @brief The type of preconditioner used by the interface to a numerical linear algebra library.
+
1104  consts::PreconditionerType linear_algebra_preconditioner = consts::PreconditionerType::PREC_FSILS;
1105 
-
1106  /// @brief FSILS type of linear solver
-
1107  fsi_linear_solver::FSILS_lsType FSILS;
+
1106  /// @brief Interface to a numerical linear algebra library.
+
1107  LinearAlgebra* linear_algebra = nullptr;
1108 
-
1109  /// @brief BCs associated with this equation;
-
1110  std::vector<bcType> bc;
+
1109  /// @brief FSILS type of linear solver
+
1110  fsi_linear_solver::FSILS_lsType FSILS;
1111 
-
1112  /// @brief IB: BCs associated with this equation on immersed surfaces
-
1113  std::vector<bcType> bcIB;
+
1112  /// @brief BCs associated with this equation;
+
1113  std::vector<bcType> bc;
1114 
-
1115  /// @brief domains that this equation must be solved
-
1116  std::vector<dmnType> dmn;
+
1115  /// @brief IB: BCs associated with this equation on immersed surfaces
+
1116  std::vector<bcType> bcIB;
1117 
-
1118  /// @brief IB: immersed domains that this equation must be solved
-
1119  std::vector<dmnType> dmnIB;
+
1118  /// @brief domains that this equation must be solved
+
1119  std::vector<dmnType> dmn;
1120 
-
1121  /// @brief Outputs
-
1122  std::vector<outputType> output;
+
1121  /// @brief IB: immersed domains that this equation must be solved
+
1122  std::vector<dmnType> dmnIB;
1123 
-
1124  /// @brief IB: Outputs
-
1125  std::vector<outputType> outIB;
+
1124  /// @brief Outputs
+
1125  std::vector<outputType> output;
1126 
-
1127  /// @brief Body force associated with this equation
-
1128  std::vector<bfType> bf;
-
1129 };
-
1130 
-
1131 /// @brief This type will be used to write data in the VTK files.
-
1132 //
-
1133 class dataType
-
1134 {
-
1135  public:
-
1136 
-
1137  // Element number of nodes
-
1138  int eNoN = 0;
+
1127  /// @brief IB: Outputs
+
1128  std::vector<outputType> outIB;
+
1129 
+
1130  /// @brief Body force associated with this equation
+
1131  std::vector<bfType> bf;
+
1132 };
+
1133 
+
1134 /// @brief This type will be used to write data in the VTK files.
+
1135 //
+
1136 class dataType
+
1137 {
+
1138  public:
1139 
-
1140  // Number of elements
-
1141  int nEl = 0;
+
1140  // Element number of nodes
+
1141  int eNoN = 0;
1142 
-
1143  // Number of nodes
-
1144  int nNo = 0;
+
1143  // Number of elements
+
1144  int nEl = 0;
1145 
-
1146  // vtk type
-
1147  int vtkType = 0;
+
1146  // Number of nodes
+
1147  int nNo = 0;
1148 
-
1149  // Connectivity array
-
1150  Array<int> IEN;
+
1149  // vtk type
+
1150  int vtkType = 0;
1151 
-
1152  // Element based variables to be written
-
1153  Array<double> xe;
+
1152  // Connectivity array
+
1153  Array<int> IEN;
1154 
-
1155  // All the variables after transformation to global format
-
1156  Array<double> gx;
+
1155  // Element based variables to be written
+
1156  Array<double> xe;
1157 
-
1158  // All the variables to be written (including position)
-
1159  Array<double> x;
-
1160 };
-
1161 
-
1162 
-
1163 class rmshType
-
1164 {
-
1165  public:
-
1166 
-
1167  rmshType();
-
1168 
-
1169  /// @brief Whether remesh is required for problem or not
-
1170  bool isReqd = false;
+
1158  // All the variables after transformation to global format
+
1159  Array<double> gx;
+
1160 
+
1161  // All the variables to be written (including position)
+
1162  Array<double> x;
+
1163 };
+
1164 
+
1165 
+
1166 class rmshType
+
1167 {
+
1168  public:
+
1169 
+
1170  rmshType();
1171 
-
1172  /// @brief Method for remeshing: 1-TetGen, 2-MeshSim
-
1173  consts::MeshGeneratorType method = consts::MeshGeneratorType::RMSH_TETGEN;
+
1172  /// @brief Whether remesh is required for problem or not
+
1173  bool isReqd = false;
1174 
-
1175  /// @brief Counter to track number of remesh done
-
1176  int cntr = 0;
+
1175  /// @brief Method for remeshing: 1-TetGen, 2-MeshSim
+
1176  consts::MeshGeneratorType method = consts::MeshGeneratorType::RMSH_TETGEN;
1177 
-
1178  /// @brief Time step from which remeshing is done
-
1179  int rTS = 0;
+
1178  /// @brief Counter to track number of remesh done
+
1179  int cntr = 0;
1180 
-
1181  /// @brief Time step freq for saving data
-
1182  int cpVar = 0;
+
1181  /// @brief Time step from which remeshing is done
+
1182  int rTS = 0;
1183 
-
1184  /// @brief Time step at which forced remeshing is done
-
1185  int fTS = 1000;
+
1184  /// @brief Time step freq for saving data
+
1185  int cpVar = 0;
1186 
-
1187  /// @brief Time step frequency for forced remeshing
-
1188  int freq = 1000;
+
1187  /// @brief Time step at which forced remeshing is done
+
1188  int fTS = 1000;
1189 
-
1190  /// @brief Time where remeshing starts
-
1191  double time = 0.0;
+
1190  /// @brief Time step frequency for forced remeshing
+
1191  int freq = 1000;
1192 
-
1193  /// @brief Mesh quality parameters
-
1194  double minDihedAng = 0.0;
-
1195  double maxRadRatio = 0.0;
-
1196 
-
1197  /// @brief Edge size of mesh
-
1198  Vector<double> maxEdgeSize;
+
1193  /// @brief Time where remeshing starts
+
1194  double time = 0.0;
+
1195 
+
1196  /// @brief Mesh quality parameters
+
1197  double minDihedAng = 0.0;
+
1198  double maxRadRatio = 0.0;
1199 
-
1200  /// @brief Initial norm of an equation
-
1201  Vector<double> iNorm;
+
1200  /// @brief Edge size of mesh
+
1201  Vector<double> maxEdgeSize;
1202 
-
1203  /// @brief Copy of solution variables where remeshing starts
-
1204  Array<double> A0;
-
1205  Array<double> Y0;
-
1206  Array<double> D0;
-
1207 
-
1208  /// @brief Flag is set if remeshing is required for each mesh
-
1209  std::vector<bool> flag;
-
1210 };
-
1211 
-
1212 class ibCommType
-
1213 {
-
1214  public:
-
1215  /// @brief Num traces (nodes) local to each process
-
1216  Vector<int> n;
-
1217 
-
1218  /// @brief Pointer to global trace (node num) stacked contiguously
-
1219  Vector<int> gN;
+
1203  /// @brief Initial norm of an equation
+
1204  Vector<double> iNorm;
+
1205 
+
1206  /// @brief Copy of solution variables where remeshing starts
+
1207  Array<double> A0;
+
1208  Array<double> Y0;
+
1209  Array<double> D0;
+
1210 
+
1211  /// @brief Flag is set if remeshing is required for each mesh
+
1212  std::vector<bool> flag;
+
1213 };
+
1214 
+
1215 class ibCommType
+
1216 {
+
1217  public:
+
1218  /// @brief Num traces (nodes) local to each process
+
1219  Vector<int> n;
1220 
-
1221  /// @brief Num traces (Gauss points) local to each process
-
1222  Vector<int> nG;
+
1221  /// @brief Pointer to global trace (node num) stacked contiguously
+
1222  Vector<int> gN;
1223 
-
1224  /// @brief Pointer to global trace (Gauss point) stacked contiguously
-
1225  Vector<int> gE;
-
1226 };
-
1227 
-
1228 
-
1229 /// @brief Immersed Boundary (IB) data type
-
1230 //
-
1231 class ibType
-
1232 {
-
1233  public:
-
1234 
-
1235  /// @brief Whether any file being saved
-
1236  bool savedOnce = false;
-
1237  //bool savedOnce = .FALSE.
-
1238 
-
1239  /// @brief IB method
-
1240  int mthd = 0;
-
1241  //int mthd = ibMthd_NA;
-
1242 
-
1243  /// @brief IB coupling
-
1244  int cpld = 0;
-
1245  //int cpld = ibCpld_NA;
-
1246 
-
1247  /// @brief IB interpolation method
-
1248  int intrp = 0;
-
1249  //int intrp = ibIntrp_NA;
-
1250 
-
1251  /// @brief Current IB domain ID
-
1252  int cDmn = 0;
+
1224  /// @brief Num traces (Gauss points) local to each process
+
1225  Vector<int> nG;
+
1226 
+
1227  /// @brief Pointer to global trace (Gauss point) stacked contiguously
+
1228  Vector<int> gE;
+
1229 };
+
1230 
+
1231 
+
1232 /// @brief Immersed Boundary (IB) data type
+
1233 //
+
1234 class ibType
+
1235 {
+
1236  public:
+
1237 
+
1238  /// @brief Whether any file being saved
+
1239  bool savedOnce = false;
+
1240  //bool savedOnce = .FALSE.
+
1241 
+
1242  /// @brief IB method
+
1243  int mthd = 0;
+
1244  //int mthd = ibMthd_NA;
+
1245 
+
1246  /// @brief IB coupling
+
1247  int cpld = 0;
+
1248  //int cpld = ibCpld_NA;
+
1249 
+
1250  /// @brief IB interpolation method
+
1251  int intrp = 0;
+
1252  //int intrp = ibIntrp_NA;
1253 
-
1254  /// @brief Current equation
-
1255  int cEq = 0;
+
1254  /// @brief Current IB domain ID
+
1255  int cDmn = 0;
1256 
-
1257  /// @brief Total number of IB nodes
-
1258  int tnNo = 0;
+
1257  /// @brief Current equation
+
1258  int cEq = 0;
1259 
-
1260  /// @brief Number of IB meshes
-
1261  int nMsh = 0;
+
1260  /// @brief Total number of IB nodes
+
1261  int tnNo = 0;
1262 
-
1263  /// @brief IB call duration (1: total time; 2: update; 3,4: communication)
-
1264  double callD[4] = {0.0, 0.0, 0.0, 0.0};
+
1263  /// @brief Number of IB meshes
+
1264  int nMsh = 0;
1265 
-
1266  /// @brief IB Domain ID
-
1267  Vector<int> dmnID;
+
1266  /// @brief IB call duration (1: total time; 2: update; 3,4: communication)
+
1267  double callD[4] = {0.0, 0.0, 0.0, 0.0};
1268 
-
1269  /// @brief Row pointer (for sparse LHS matrix storage)
-
1270  Vector<int> rowPtr;
+
1269  /// @brief IB Domain ID
+
1270  Vector<int> dmnID;
1271 
-
1272  /// @brief Column pointer (for sparse LHS matrix storage)
-
1273  Vector<int> colPtr;
+
1272  /// @brief Row pointer (for sparse LHS matrix storage)
+
1273  Vector<int> rowPtr;
1274 
-
1275  /// @brief IB position coordinates
-
1276  Array<double> x;
+
1275  /// @brief Column pointer (for sparse LHS matrix storage)
+
1276  Vector<int> colPtr;
1277 
-
1278  /// @brief Velocity (new)
-
1279  Array<double> Yb;
+
1278  /// @brief IB position coordinates
+
1279  Array<double> x;
1280 
-
1281  /// @brief Time derivative of displacement (old)
-
1282  Array<double> Auo;
+
1281  /// @brief Velocity (new)
+
1282  Array<double> Yb;
1283 
-
1284  /// @brief Time derivative of displacement (new)
-
1285  Array<double> Aun;
+
1284  /// @brief Time derivative of displacement (old)
+
1285  Array<double> Auo;
1286 
-
1287  /// @brief Time derivative of displacement (n+am)
-
1288  Array<double> Auk;
+
1287  /// @brief Time derivative of displacement (new)
+
1288  Array<double> Aun;
1289 
-
1290  /// @brief Displacement (old)
-
1291  Array<double> Ubo;
+
1290  /// @brief Time derivative of displacement (n+am)
+
1291  Array<double> Auk;
1292 
-
1293  /// @brief Displacement (new)
-
1294  Array<double> Ubn;
+
1293  /// @brief Displacement (old)
+
1294  Array<double> Ubo;
1295 
-
1296  /// @brief Displacement (n+af)
-
1297  Array<double> Ubk;
+
1296  /// @brief Displacement (new)
+
1297  Array<double> Ubn;
1298 
-
1299  /// @brief Displacement (projected on background mesh, old)
-
1300  Array<double> Uo;
+
1299  /// @brief Displacement (n+af)
+
1300  Array<double> Ubk;
1301 
-
1302  /// @brief Displacement (projected on background mesh, new, n+af)
-
1303  Array<double> Un;
+
1302  /// @brief Displacement (projected on background mesh, old)
+
1303  Array<double> Uo;
1304 
-
1305  /// @brief Residual (FSI force)
-
1306  Array<double> R;
+
1305  /// @brief Displacement (projected on background mesh, new, n+af)
+
1306  Array<double> Un;
1307 
-
1308  /// @brief Residual (displacement, background mesh)
-
1309  Array<double> Ru;
+
1308  /// @brief Residual (FSI force)
+
1309  Array<double> R;
1310 
-
1311  /// @brief Residual (displacement, IB mesh)
-
1312  Array<double> Rub;
+
1311  /// @brief Residual (displacement, background mesh)
+
1312  Array<double> Ru;
1313 
-
1314  /// @brief LHS tangent matrix for displacement
-
1315  Array<double> Ku;
+
1314  /// @brief Residual (displacement, IB mesh)
+
1315  Array<double> Rub;
1316 
-
1317  /// @brief DERIVED class VARIABLES IB meshes;
-
1318  std::vector<mshType> msh;
+
1317  /// @brief LHS tangent matrix for displacement
+
1318  Array<double> Ku;
1319 
-
1320  /// @brief IB communicator
-
1321  ibCommType cm;
-
1322 };
-
1323 
-
1324 /// @brief The ComMod class duplicates the data structures in the Fortran COMMOD module
-
1325 /// defined in MOD.f.
-
1326 ///
-
1327 /// The data members here are the global variables exposed by the COMMOD module.
-
1328 //
-
1329 class ComMod {
-
1330 
-
1331  public:
-
1332  ComMod();
-
1333  ~ComMod();
-
1334 
-
1335  //----- bool members -----//
-
1336 
-
1337  /// @brief Whether there is a requirement to update mesh and Dn-Do variables
-
1338  bool dFlag = false;
+
1320  /// @brief DERIVED class VARIABLES IB meshes;
+
1321  std::vector<mshType> msh;
+
1322 
+
1323  /// @brief IB communicator
+
1324  ibCommType cm;
+
1325 };
+
1326 
+
1327 /// @brief The ComMod class duplicates the data structures in the Fortran COMMOD module
+
1328 /// defined in MOD.f.
+
1329 ///
+
1330 /// The data members here are the global variables exposed by the COMMOD module.
+
1331 //
+
1332 class ComMod {
+
1333 
+
1334  public:
+
1335  ComMod();
+
1336  ~ComMod();
+
1337 
+
1338  //----- bool members -----//
1339 
-
1340  /// @brief Whether mesh is moving
-
1341  bool mvMsh = false;
+
1340  /// @brief Whether there is a requirement to update mesh and Dn-Do variables
+
1341  bool dFlag = false;
1342 
-
1343  /// @brief Whether to averaged results
-
1344  bool saveAve = false;
+
1343  /// @brief Whether mesh is moving
+
1344  bool mvMsh = false;
1345 
-
1346  /// @brief Whether to save to VTK files
-
1347  bool saveVTK = false;
+
1346  /// @brief Whether to averaged results
+
1347  bool saveAve = false;
1348 
-
1349  /// @brief Whether any file being saved
-
1350  bool savedOnce = false;
+
1349  /// @brief Whether to save to VTK files
+
1350  bool saveVTK = false;
1351 
-
1352  /// @brief Whether to use separator in output
-
1353  bool sepOutput = false;
+
1352  /// @brief Whether any file being saved
+
1353  bool savedOnce = false;
1354 
-
1355  /// @brief Whether start from beginning or from simulations
-
1356  bool stFileFlag = false;
+
1355  /// @brief Whether to use separator in output
+
1356  bool sepOutput = false;
1357 
-
1358  /// @brief Whether to overwrite restart file or not
-
1359  bool stFileRepl = false;
+
1358  /// @brief Whether start from beginning or from simulations
+
1359  bool stFileFlag = false;
1360 
-
1361  /// @brief Restart simulation after remeshing
-
1362  bool resetSim = false;
+
1361  /// @brief Whether to overwrite restart file or not
+
1362  bool stFileRepl = false;
1363 
-
1364  /// @brief Check IEN array for initial mesh
-
1365  bool ichckIEN = false;
+
1364  /// @brief Restart simulation after remeshing
+
1365  bool resetSim = false;
1366 
-
1367  /// @brief Reset averaging variables from zero
-
1368  bool zeroAve = false;
+
1367  /// @brief Check IEN array for initial mesh
+
1368  bool ichckIEN = false;
1369 
-
1370  /// @brief Whether CMM equation is initialized
-
1371  bool cmmInit = false;
+
1370  /// @brief Reset averaging variables from zero
+
1371  bool zeroAve = false;
1372 
-
1373  /// @brief Whether variable wall properties are used for CMM
-
1374  bool cmmVarWall = false;
+
1373  /// @brief Whether CMM equation is initialized
+
1374  bool cmmInit = false;
1375 
-
1376  /// @brief Whether shell equation is being solved
-
1377  bool shlEq = false;
+
1376  /// @brief Whether variable wall properties are used for CMM
+
1377  bool cmmVarWall = false;
1378 
-
1379  /// @brief Whether PRESTRESS is being solved
-
1380  bool pstEq = false;
+
1379  /// @brief Whether shell equation is being solved
+
1380  bool shlEq = false;
1381 
-
1382  /// @brief Whether velocity-pressure based structural dynamics solver is used
-
1383  bool sstEq = false;
+
1382  /// @brief Whether PRESTRESS is being solved
+
1383  bool pstEq = false;
1384 
-
1385  /// @brief Whether to detect and apply any contact model
-
1386  bool iCntct = false;
+
1385  /// @brief Whether velocity-pressure based structural dynamics solver is used
+
1386  bool sstEq = false;
1387 
-
1388  /// @brief Whether any Immersed Boundary (IB) treatment is required
-
1389  bool ibFlag = false;
+
1388  /// @brief Whether to detect and apply any contact model
+
1389  bool iCntct = false;
1390 
-
1391  /// @brief Postprocess step - convert bin to vtk
-
1392  bool bin2VTK = false;
+
1391  /// @brief Whether any Immersed Boundary (IB) treatment is required
+
1392  bool ibFlag = false;
1393 
-
1394  /// @brief Whether to use precomputed state-variable solutions
-
1395  bool usePrecomp = false;
-
1396  //----- int members -----//
-
1397 
-
1398  /// @brief Current domain
-
1399  int cDmn = 0;
+
1394  /// @brief Postprocess step - convert bin to vtk
+
1395  bool bin2VTK = false;
+
1396 
+
1397  /// @brief Whether to use precomputed state-variable solutions
+
1398  bool usePrecomp = false;
+
1399  //----- int members -----//
1400 
-
1401  /// @brief Current equation
-
1402  int cEq = 0;
+
1401  /// @brief Current domain
+
1402  int cDmn = 0;
1403 
-
1404  /// @brief Current time step
-
1405  int cTS = 0;
-
1406 
-
1407  std::array<double,3> timeP;
-
1408 
-
1409  /// @brief Starting time step
-
1410  int startTS = 0;
+
1404  /// @brief Current equation
+
1405  int cEq = 0;
+
1406 
+
1407  /// @brief Current time step
+
1408  int cTS = 0;
+
1409 
+
1410  std::array<double,3> timeP;
1411 
-
1412  /// @brief Current equation degrees of freedom
-
1413  int dof = 0;
+
1412  /// @brief Starting time step
+
1413  int startTS = 0;
1414 
-
1415  /// @brief Global total number of nodes, across all meshes (total) and all
-
1416  /// procs (global)
-
1417  int gtnNo = 0;
-
1418 
-
1419  /// @brief Number of equations
-
1420  int nEq = 0;
+
1415  /// @brief Current equation degrees of freedom
+
1416  int dof = 0;
+
1417 
+
1418  /// @brief Global total number of nodes, across all meshes (total) and all
+
1419  /// procs (global)
+
1420  int gtnNo = 0;
1421 
-
1422  /// @brief Number of faces in the LHS passed to FSILS
-
1423  int nFacesLS = 0;
+
1422  /// @brief Number of equations
+
1423  int nEq = 0;
1424 
-
1425  /// @brief Number of meshes
-
1426  int nMsh = 0;
+
1425  /// @brief Number of faces in the LHS passed to FSILS
+
1426  int nFacesLS = 0;
1427 
-
1428  /// @brief Number of spatial dimensions
-
1429  int nsd = 0;
+
1428  /// @brief Number of meshes
+
1429  int nMsh = 0;
1430 
-
1431  /// @brief Number of time steps
-
1432  int nTS = 0;
+
1431  /// @brief Number of spatial dimensions
+
1432  int nsd = 0;
1433 
-
1434  /// @brief Number of initialization time steps
-
1435  int nITs = 0;
+
1434  /// @brief Number of time steps
+
1435  int nTS = 0;
1436 
-
1437  /// @brief stFiles record length
-
1438  int recLn = 0;
+
1437  /// @brief Number of initialization time steps
+
1438  int nITs = 0;
1439 
-
1440  /// @brief Start saving after this number of time step
-
1441  int saveATS = 0;
+
1440  /// @brief stFiles record length
+
1441  int recLn = 0;
1442 
-
1443  /// @brief Increment in saving solutions
-
1444  int saveIncr = 0;
+
1443  /// @brief Start saving after this number of time step
+
1444  int saveATS = 0;
1445 
-
1446  /// @brief Stamp ID to make sure simulation is compatible with stFiles
-
1447  std::array<int,7> stamp;
+
1446  /// @brief Increment in saving solutions
+
1447  int saveIncr = 0;
1448 
-
1449  /// @brief Increment in saving restart file
-
1450  int stFileIncr = 0;
+
1449  /// @brief Stamp ID to make sure simulation is compatible with stFiles
+
1450  std::array<int,7> stamp;
1451 
-
1452  /// @brief Total number of degrees of freedom per node
-
1453  int tDof = 0;
+
1452  /// @brief Increment in saving restart file
+
1453  int stFileIncr = 0;
1454 
-
1455  /// @brief Total number of nodes (number of nodes on current proc across
-
1456  /// all meshes)
-
1457  int tnNo = 0;
-
1458 
-
1459  /// @brief Restart Time Step
-
1460  int rsTS = 0;
+
1455  /// @brief Total number of degrees of freedom per node
+
1456  int tDof = 0;
+
1457 
+
1458  /// @brief Total number of nodes (number of nodes on current proc across
+
1459  /// all meshes)
+
1460  int tnNo = 0;
1461 
-
1462  /// @brief Number of stress values to be stored
-
1463  int nsymd = 0;
-
1464 
-
1465 
-
1466  //----- double members -----//
-
1467 
-
1468  /// @brief Time step size
-
1469  double dt = 0.0;
+
1462  /// @brief Restart Time Step
+
1463  int rsTS = 0;
+
1464 
+
1465  /// @brief Number of stress values to be stored
+
1466  int nsymd = 0;
+
1467 
+
1468 
+
1469  //----- double members -----//
1470 
-
1471  /// @brief Time step size of the precomputed state-variables
-
1472  double precompDt = 0.0;
+
1471  /// @brief Time step size
+
1472  double dt = 0.0;
1473 
-
1474  /// @brief Time
-
1475  double time = 0.0;
-
1476 
-
1477 
-
1478  //----- string members -----//
-
1479 
-
1480  /// @brief Initialization file path
-
1481  std::string iniFilePath;
+
1474  /// @brief Time step size of the precomputed state-variables
+
1475  double precompDt = 0.0;
+
1476 
+
1477  /// @brief Time
+
1478  double time = 0.0;
+
1479 
+
1480 
+
1481  //----- string members -----//
1482 
-
1483  /// @brief Saved output file name
-
1484  std::string saveName;
+
1483  /// @brief Initialization file path
+
1484  std::string iniFilePath;
1485 
-
1486  /// @brief Restart file name
-
1487  std::string stFileName;
+
1486  /// @brief Saved output file name
+
1487  std::string saveName;
1488 
-
1489  /// @brief Stop_trigger file name
-
1490  std::string stopTrigName;
+
1489  /// @brief Restart file name
+
1490  std::string stFileName;
1491 
-
1492  /// @brief Precomputed state-variable file name
-
1493  std::string precompFileName;
+
1492  /// @brief Stop_trigger file name
+
1493  std::string stopTrigName;
1494 
-
1495  /// @brief Precomputed state-variable field name
-
1496  std::string precompFieldName;
-
1497  // ALLOCATABLE DATA
-
1498 
-
1499  /// @brief Column pointer (for sparse LHS matrix structure)
-
1500  /// Modified in: lhsa()
-
1501  Vector<int> colPtr;
-
1502 
-
1503  /// @brief Domain ID
-
1504  Vector<int> dmnId;
+
1495  /// @brief Precomputed state-variable file name
+
1496  std::string precompFileName;
+
1497 
+
1498  /// @brief Precomputed state-variable field name
+
1499  std::string precompFieldName;
+
1500  // ALLOCATABLE DATA
+
1501 
+
1502  /// @brief Column pointer (for sparse LHS matrix structure)
+
1503  /// Modified in: lhsa()
+
1504  Vector<int> colPtr;
1505 
-
1506  /// @brief Local to global pointer tnNo --> gtnNo
-
1507  Vector<int> ltg;
+
1506  /// @brief Domain ID
+
1507  Vector<int> dmnId;
1508 
-
1509  /// @brief Row pointer (for sparse LHS matrix structure)
-
1510  /// Modified in: lhsa()
-
1511  Vector<int> rowPtr;
-
1512 
-
1513  /// @brief Array that maps global node id to rowN in the matrix
-
1514  /// Modified in: lhsa()
-
1515  Vector<int> idMap;
-
1516 
-
1517  /// @brief Boundary nodes set for CMM initialization and for zeroing-out
-
1518  /// non-wall nodal displacements
-
1519  Vector<int> cmmBdry;
-
1520 
-
1521  /// @brief IB: iblank used for immersed boundaries (1 => solid, 0 => fluid)
-
1522  Vector<int> iblank;
+
1509  /// @brief Local to global pointer tnNo --> gtnNo
+
1510  Vector<int> ltg;
+
1511 
+
1512  /// @brief Row pointer (for sparse LHS matrix structure)
+
1513  /// Modified in: lhsa()
+
1514  Vector<int> rowPtr;
+
1515 
+
1516  /// @brief Array that maps global node id to rowN in the matrix
+
1517  /// Modified in: lhsa()
+
1518  Vector<int> idMap;
+
1519 
+
1520  /// @brief Boundary nodes set for CMM initialization and for zeroing-out
+
1521  /// non-wall nodal displacements
+
1522  Vector<int> cmmBdry;
1523 
-
1524  /// @brief Old time derivative of variables (acceleration)
-
1525  Array<double> Ao;
+
1524  /// @brief IB: iblank used for immersed boundaries (1 => solid, 0 => fluid)
+
1525  Vector<int> iblank;
1526 
-
1527  /// @brief New time derivative of variables
-
1528  Array<double> An;
+
1527  /// @brief Old time derivative of variables (acceleration)
+
1528  Array<double> Ao;
1529 
-
1530  /// @brief Old integrated variables (dissplacement)
-
1531  Array<double> Do;
+
1530  /// @brief New time derivative of variables
+
1531  Array<double> An;
1532 
-
1533  /// @brief New integrated variables
-
1534  Array<double> Dn;
+
1533  /// @brief Old integrated variables (dissplacement)
+
1534  Array<double> Do;
1535 
-
1536  /// @brief Residual vector
-
1537  Array<double> R;
+
1536  /// @brief New integrated variables
+
1537  Array<double> Dn;
1538 
-
1539  /// @brief LHS matrix
-
1540  Array<double> Val;
+
1539  /// @brief Residual vector
+
1540  Array<double> R;
1541 
-
1542  /// @brief Position vector of mesh nodes (in ref config)
-
1543  Array<double> x;
+
1542  /// @brief LHS matrix
+
1543  Array<double> Val;
1544 
-
1545  /// @brief Old variables (velocity)
-
1546  Array<double> Yo;
+
1545  /// @brief Position vector of mesh nodes (in ref config)
+
1546  Array<double> x;
1547 
-
1548  /// @brief New variables
-
1549  Array<double> Yn;
+
1548  /// @brief Old variables (velocity)
+
1549  Array<double> Yo;
1550 
-
1551  /// @brief Body force
-
1552  Array<double> Bf;
-
1553 
-
1554  //-----------------------------------------------------
-
1555  // Additional arrays for velocity-based formulation of
-
1556  // nonlinear solid mechanics.
+
1551  /// @brief New variables
+
1552  Array<double> Yn;
+
1553 
+
1554  /// @brief Body force
+
1555  Array<double> Bf;
+
1556 
1557  //-----------------------------------------------------
-
1558 
-
1559  /// @brief Time derivative of displacement
-
1560  Array<double> Ad;
+
1558  // Additional arrays for velocity-based formulation of
+
1559  // nonlinear solid mechanics.
+
1560  //-----------------------------------------------------
1561 
-
1562  /// @brief Residual of the displacement equation
-
1563  Array<double> Rd;
+
1562  /// @brief Time derivative of displacement
+
1563  Array<double> Ad;
1564 
-
1565  /// @brief LHS matrix for displacement equation
-
1566  Array<double> Kd;
+
1565  /// @brief Residual of the displacement equation
+
1566  Array<double> Rd;
1567 
-
1568  /// @brief Variables for prestress calculations
-
1569  Array<double> pS0;
-
1570  Array<double> pSn;
-
1571  Vector<double> pSa;
-
1572 
-
1573  /// @brief Temporary storage for initializing state variables
-
1574  Vector<double> Pinit;
-
1575  Array<double> Vinit;
-
1576  Array<double> Dinit;
-
1577 
-
1578  /// @brief CMM-variable wall properties: 1-thickness, 2-Elasticity modulus
-
1579  Array<double> varWallProps;
-
1580 
-
1581  //------------------------
-
1582  // DERIVED TYPE VARIABLES
-
1583  //------------------------
-
1584 
-
1585  /// @brief Coupled BCs structures used for multidomain simulations
-
1586  cplBCType cplBC;
+
1568  /// @brief LHS matrix for displacement equation
+
1569  Array<double> Kd;
+
1570 
+
1571  /// @brief Variables for prestress calculations
+
1572  Array<double> pS0;
+
1573  Array<double> pSn;
+
1574  Vector<double> pSa;
+
1575 
+
1576  /// @brief Temporary storage for initializing state variables
+
1577  Vector<double> Pinit;
+
1578  Array<double> Vinit;
+
1579  Array<double> Dinit;
+
1580 
+
1581  /// @brief CMM-variable wall properties: 1-thickness, 2-Elasticity modulus
+
1582  Array<double> varWallProps;
+
1583 
+
1584  //------------------------
+
1585  // DERIVED TYPE VARIABLES
+
1586  //------------------------
1587 
-
1588  /// @brief All data related to equations are stored in this container
-
1589  std::vector<eqType> eq;
+
1588  /// @brief Coupled BCs structures used for multidomain simulations
+
1589  cplBCType cplBC;
1590 
-
1591  /// @brief FSILS data structure to produce LHS sparse matrix
-
1592  fsi_linear_solver::FSILS_lhsType lhs;
+
1591  /// @brief All data related to equations are stored in this container
+
1592  std::vector<eqType> eq;
1593 
-
1594  /// @brief All the meshes are stored in this variable
-
1595  std::vector<mshType> msh;
+
1594  /// @brief FSILS data structure to produce LHS sparse matrix
+
1595  fsi_linear_solver::FSILS_lhsType lhs;
1596 
-
1597  /// @brief Input/output to the screen is handled by this structure
-
1598  chnlType std, err, wrn, dbg;
+
1597  /// @brief All the meshes are stored in this variable
+
1598  std::vector<mshType> msh;
1599 
-
1600  /// @brief To group above channels
-
1601  ioType io;
+
1600  /// @brief Input/output to the screen is handled by this structure
+
1601  chnlType std, err, wrn, dbg;
1602 
-
1603  /// @brief The general communicator
-
1604  cmType cm;
+
1603  /// @brief To group above channels
+
1604  ioType io;
1605 
-
1606  /// @brief Remesher type
-
1607  rmshType rmsh;
+
1606  /// @brief The general communicator
+
1607  cmType cm;
1608 
-
1609  /// @brief Contact model type
-
1610  cntctModelType cntctM;
+
1609  /// @brief Remesher type
+
1610  rmshType rmsh;
1611 
-
1612  /// @brief IB: Immersed boundary data structure
-
1613  ibType ib;
-
1614 
-
1615  bool debug_active = false;
-
1616 
-
1617  Timer timer;
-
1618 };
+
1612  /// @brief Contact model type
+
1613  cntctModelType cntctM;
+
1614 
+
1615  /// @brief IB: Immersed boundary data structure
+
1616  ibType ib;
+
1617 
+
1618  bool debug_active = false;
1619 
-
1620 #endif
-
1621 
+
1620  Timer timer;
+
1621 };
+
1622 
+
1623 #endif
+
1624 
-
The ComMod class duplicates the data structures in the Fortran COMMOD module defined in MOD....
Definition: ComMod.h:1329
-
std::string stopTrigName
Stop_trigger file name.
Definition: ComMod.h:1490
-
ibType ib
IB: Immersed boundary data structure.
Definition: ComMod.h:1613
-
int stFileIncr
Increment in saving restart file.
Definition: ComMod.h:1450
-
int nITs
Number of initialization time steps.
Definition: ComMod.h:1435
-
bool ibFlag
Whether any Immersed Boundary (IB) treatment is required.
Definition: ComMod.h:1389
-
Vector< int > colPtr
Column pointer (for sparse LHS matrix structure) Modified in: lhsa()
Definition: ComMod.h:1501
-
bool zeroAve
Reset averaging variables from zero.
Definition: ComMod.h:1368
-
std::string saveName
Saved output file name.
Definition: ComMod.h:1484
-
int nMsh
Number of meshes.
Definition: ComMod.h:1426
-
chnlType std
Input/output to the screen is handled by this structure.
Definition: ComMod.h:1598
-
bool savedOnce
Whether any file being saved.
Definition: ComMod.h:1350
-
bool stFileRepl
Whether to overwrite restart file or not.
Definition: ComMod.h:1359
-
Array< double > varWallProps
CMM-variable wall properties: 1-thickness, 2-Elasticity modulus.
Definition: ComMod.h:1579
-
Array< double > x
Position vector of mesh nodes (in ref config)
Definition: ComMod.h:1543
-
bool cmmVarWall
Whether variable wall properties are used for CMM.
Definition: ComMod.h:1374
-
std::array< int, 7 > stamp
Stamp ID to make sure simulation is compatible with stFiles.
Definition: ComMod.h:1447
-
Array< double > Ad
Time derivative of displacement.
Definition: ComMod.h:1560
-
int cTS
Current time step.
Definition: ComMod.h:1405
-
int dof
Current equation degrees of freedom.
Definition: ComMod.h:1413
-
int gtnNo
Global total number of nodes, across all meshes (total) and all procs (global)
Definition: ComMod.h:1417
-
std::string stFileName
Restart file name.
Definition: ComMod.h:1487
-
int tnNo
Total number of nodes (number of nodes on current proc across all meshes)
Definition: ComMod.h:1457
-
int nsd
Number of spatial dimensions.
Definition: ComMod.h:1429
-
int nFacesLS
Number of faces in the LHS passed to FSILS.
Definition: ComMod.h:1423
-
int nsymd
Number of stress values to be stored.
Definition: ComMod.h:1463
-
Array< double > Yn
New variables.
Definition: ComMod.h:1549
-
bool ichckIEN
Check IEN array for initial mesh.
Definition: ComMod.h:1365
-
std::string iniFilePath
Initialization file path.
Definition: ComMod.h:1481
-
Vector< int > rowPtr
Row pointer (for sparse LHS matrix structure) Modified in: lhsa()
Definition: ComMod.h:1511
-
std::string precompFileName
Precomputed state-variable file name.
Definition: ComMod.h:1493
-
int cEq
Current equation.
Definition: ComMod.h:1402
-
Vector< int > cmmBdry
Boundary nodes set for CMM initialization and for zeroing-out non-wall nodal displacements.
Definition: ComMod.h:1519
-
Array< double > Val
LHS matrix.
Definition: ComMod.h:1540
-
bool bin2VTK
Postprocess step - convert bin to vtk.
Definition: ComMod.h:1392
-
bool saveAve
Whether to averaged results.
Definition: ComMod.h:1344
-
bool saveVTK
Whether to save to VTK files.
Definition: ComMod.h:1347
-
int tDof
Total number of degrees of freedom per node.
Definition: ComMod.h:1453
-
std::string precompFieldName
Precomputed state-variable field name.
Definition: ComMod.h:1496
-
bool cmmInit
Whether CMM equation is initialized.
Definition: ComMod.h:1371
-
Array< double > Rd
Residual of the displacement equation.
Definition: ComMod.h:1563
-
cplBCType cplBC
Coupled BCs structures used for multidomain simulations.
Definition: ComMod.h:1586
-
double time
Time.
Definition: ComMod.h:1475
-
Array< double > Dn
New integrated variables.
Definition: ComMod.h:1534
-
bool pstEq
Whether PRESTRESS is being solved.
Definition: ComMod.h:1380
-
bool resetSim
Restart simulation after remeshing.
Definition: ComMod.h:1362
-
Array< double > An
New time derivative of variables.
Definition: ComMod.h:1528
-
double dt
Time step size.
Definition: ComMod.h:1469
-
Array< double > R
Residual vector.
Definition: ComMod.h:1537
-
rmshType rmsh
Remesher type.
Definition: ComMod.h:1607
-
int saveIncr
Increment in saving solutions.
Definition: ComMod.h:1444
-
bool usePrecomp
Whether to use precomputed state-variable solutions.
Definition: ComMod.h:1395
-
ioType io
To group above channels.
Definition: ComMod.h:1601
-
cntctModelType cntctM
Contact model type.
Definition: ComMod.h:1610
-
cmType cm
The general communicator.
Definition: ComMod.h:1604
-
int startTS
Starting time step.
Definition: ComMod.h:1410
-
Vector< int > idMap
Array that maps global node id to rowN in the matrix Modified in: lhsa()
Definition: ComMod.h:1515
-
bool stFileFlag
Whether start from beginning or from simulations.
Definition: ComMod.h:1356
-
bool sepOutput
Whether to use separator in output.
Definition: ComMod.h:1353
-
bool shlEq
Whether shell equation is being solved.
Definition: ComMod.h:1377
-
std::vector< eqType > eq
All data related to equations are stored in this container.
Definition: ComMod.h:1589
-
bool iCntct
Whether to detect and apply any contact model.
Definition: ComMod.h:1386
-
double precompDt
Time step size of the precomputed state-variables.
Definition: ComMod.h:1472
-
Array< double > Do
Old integrated variables (dissplacement)
Definition: ComMod.h:1531
-
bool dFlag
Whether there is a requirement to update mesh and Dn-Do variables.
Definition: ComMod.h:1338
-
int cDmn
Current domain.
Definition: ComMod.h:1399
-
int nTS
Number of time steps.
Definition: ComMod.h:1432
-
Array< double > Ao
Old time derivative of variables (acceleration)
Definition: ComMod.h:1525
-
int nEq
Number of equations.
Definition: ComMod.h:1420
-
Vector< int > iblank
IB: iblank used for immersed boundaries (1 => solid, 0 => fluid)
Definition: ComMod.h:1522
-
Array< double > Kd
LHS matrix for displacement equation.
Definition: ComMod.h:1566
-
std::vector< mshType > msh
All the meshes are stored in this variable.
Definition: ComMod.h:1595
-
int recLn
stFiles record length
Definition: ComMod.h:1438
-
int rsTS
Restart Time Step.
Definition: ComMod.h:1460
-
bool mvMsh
Whether mesh is moving.
Definition: ComMod.h:1341
-
Vector< double > Pinit
Temporary storage for initializing state variables.
Definition: ComMod.h:1574
-
Vector< int > ltg
Local to global pointer tnNo --> gtnNo.
Definition: ComMod.h:1507
-
fsi_linear_solver::FSILS_lhsType lhs
FSILS data structure to produce LHS sparse matrix.
Definition: ComMod.h:1592
-
Array< double > Yo
Old variables (velocity)
Definition: ComMod.h:1546
-
Array< double > Bf
Body force.
Definition: ComMod.h:1552
-
Vector< int > dmnId
Domain ID.
Definition: ComMod.h:1504
-
Array< double > pS0
Variables for prestress calculations.
Definition: ComMod.h:1569
-
int saveATS
Start saving after this number of time step.
Definition: ComMod.h:1441
-
bool sstEq
Whether velocity-pressure based structural dynamics solver is used.
Definition: ComMod.h:1383
+
The ComMod class duplicates the data structures in the Fortran COMMOD module defined in MOD....
Definition: ComMod.h:1332
+
std::string stopTrigName
Stop_trigger file name.
Definition: ComMod.h:1493
+
ibType ib
IB: Immersed boundary data structure.
Definition: ComMod.h:1616
+
int stFileIncr
Increment in saving restart file.
Definition: ComMod.h:1453
+
int nITs
Number of initialization time steps.
Definition: ComMod.h:1438
+
bool ibFlag
Whether any Immersed Boundary (IB) treatment is required.
Definition: ComMod.h:1392
+
Vector< int > colPtr
Column pointer (for sparse LHS matrix structure) Modified in: lhsa()
Definition: ComMod.h:1504
+
bool zeroAve
Reset averaging variables from zero.
Definition: ComMod.h:1371
+
std::string saveName
Saved output file name.
Definition: ComMod.h:1487
+
int nMsh
Number of meshes.
Definition: ComMod.h:1429
+
chnlType std
Input/output to the screen is handled by this structure.
Definition: ComMod.h:1601
+
bool savedOnce
Whether any file being saved.
Definition: ComMod.h:1353
+
bool stFileRepl
Whether to overwrite restart file or not.
Definition: ComMod.h:1362
+
Array< double > varWallProps
CMM-variable wall properties: 1-thickness, 2-Elasticity modulus.
Definition: ComMod.h:1582
+
Array< double > x
Position vector of mesh nodes (in ref config)
Definition: ComMod.h:1546
+
bool cmmVarWall
Whether variable wall properties are used for CMM.
Definition: ComMod.h:1377
+
std::array< int, 7 > stamp
Stamp ID to make sure simulation is compatible with stFiles.
Definition: ComMod.h:1450
+
Array< double > Ad
Time derivative of displacement.
Definition: ComMod.h:1563
+
int cTS
Current time step.
Definition: ComMod.h:1408
+
int dof
Current equation degrees of freedom.
Definition: ComMod.h:1416
+
int gtnNo
Global total number of nodes, across all meshes (total) and all procs (global)
Definition: ComMod.h:1420
+
std::string stFileName
Restart file name.
Definition: ComMod.h:1490
+
int tnNo
Total number of nodes (number of nodes on current proc across all meshes)
Definition: ComMod.h:1460
+
int nsd
Number of spatial dimensions.
Definition: ComMod.h:1432
+
int nFacesLS
Number of faces in the LHS passed to FSILS.
Definition: ComMod.h:1426
+
int nsymd
Number of stress values to be stored.
Definition: ComMod.h:1466
+
Array< double > Yn
New variables.
Definition: ComMod.h:1552
+
bool ichckIEN
Check IEN array for initial mesh.
Definition: ComMod.h:1368
+
std::string iniFilePath
Initialization file path.
Definition: ComMod.h:1484
+
Vector< int > rowPtr
Row pointer (for sparse LHS matrix structure) Modified in: lhsa()
Definition: ComMod.h:1514
+
std::string precompFileName
Precomputed state-variable file name.
Definition: ComMod.h:1496
+
int cEq
Current equation.
Definition: ComMod.h:1405
+
Vector< int > cmmBdry
Boundary nodes set for CMM initialization and for zeroing-out non-wall nodal displacements.
Definition: ComMod.h:1522
+
Array< double > Val
LHS matrix.
Definition: ComMod.h:1543
+
bool bin2VTK
Postprocess step - convert bin to vtk.
Definition: ComMod.h:1395
+
bool saveAve
Whether to averaged results.
Definition: ComMod.h:1347
+
bool saveVTK
Whether to save to VTK files.
Definition: ComMod.h:1350
+
int tDof
Total number of degrees of freedom per node.
Definition: ComMod.h:1456
+
std::string precompFieldName
Precomputed state-variable field name.
Definition: ComMod.h:1499
+
bool cmmInit
Whether CMM equation is initialized.
Definition: ComMod.h:1374
+
Array< double > Rd
Residual of the displacement equation.
Definition: ComMod.h:1566
+
cplBCType cplBC
Coupled BCs structures used for multidomain simulations.
Definition: ComMod.h:1589
+
double time
Time.
Definition: ComMod.h:1478
+
Array< double > Dn
New integrated variables.
Definition: ComMod.h:1537
+
bool pstEq
Whether PRESTRESS is being solved.
Definition: ComMod.h:1383
+
bool resetSim
Restart simulation after remeshing.
Definition: ComMod.h:1365
+
Array< double > An
New time derivative of variables.
Definition: ComMod.h:1531
+
double dt
Time step size.
Definition: ComMod.h:1472
+
Array< double > R
Residual vector.
Definition: ComMod.h:1540
+
rmshType rmsh
Remesher type.
Definition: ComMod.h:1610
+
int saveIncr
Increment in saving solutions.
Definition: ComMod.h:1447
+
bool usePrecomp
Whether to use precomputed state-variable solutions.
Definition: ComMod.h:1398
+
ioType io
To group above channels.
Definition: ComMod.h:1604
+
cntctModelType cntctM
Contact model type.
Definition: ComMod.h:1613
+
cmType cm
The general communicator.
Definition: ComMod.h:1607
+
int startTS
Starting time step.
Definition: ComMod.h:1413
+
Vector< int > idMap
Array that maps global node id to rowN in the matrix Modified in: lhsa()
Definition: ComMod.h:1518
+
bool stFileFlag
Whether start from beginning or from simulations.
Definition: ComMod.h:1359
+
bool sepOutput
Whether to use separator in output.
Definition: ComMod.h:1356
+
bool shlEq
Whether shell equation is being solved.
Definition: ComMod.h:1380
+
std::vector< eqType > eq
All data related to equations are stored in this container.
Definition: ComMod.h:1592
+
bool iCntct
Whether to detect and apply any contact model.
Definition: ComMod.h:1389
+
double precompDt
Time step size of the precomputed state-variables.
Definition: ComMod.h:1475
+
Array< double > Do
Old integrated variables (dissplacement)
Definition: ComMod.h:1534
+
bool dFlag
Whether there is a requirement to update mesh and Dn-Do variables.
Definition: ComMod.h:1341
+
int cDmn
Current domain.
Definition: ComMod.h:1402
+
int nTS
Number of time steps.
Definition: ComMod.h:1435
+
Array< double > Ao
Old time derivative of variables (acceleration)
Definition: ComMod.h:1528
+
int nEq
Number of equations.
Definition: ComMod.h:1423
+
Vector< int > iblank
IB: iblank used for immersed boundaries (1 => solid, 0 => fluid)
Definition: ComMod.h:1525
+
Array< double > Kd
LHS matrix for displacement equation.
Definition: ComMod.h:1569
+
std::vector< mshType > msh
All the meshes are stored in this variable.
Definition: ComMod.h:1598
+
int recLn
stFiles record length
Definition: ComMod.h:1441
+
int rsTS
Restart Time Step.
Definition: ComMod.h:1463
+
bool mvMsh
Whether mesh is moving.
Definition: ComMod.h:1344
+
Vector< double > Pinit
Temporary storage for initializing state variables.
Definition: ComMod.h:1577
+
Vector< int > ltg
Local to global pointer tnNo --> gtnNo.
Definition: ComMod.h:1510
+
fsi_linear_solver::FSILS_lhsType lhs
FSILS data structure to produce LHS sparse matrix.
Definition: ComMod.h:1595
+
Array< double > Yo
Old variables (velocity)
Definition: ComMod.h:1549
+
Array< double > Bf
Body force.
Definition: ComMod.h:1555
+
Vector< int > dmnId
Domain ID.
Definition: ComMod.h:1507
+
Array< double > pS0
Variables for prestress calculations.
Definition: ComMod.h:1572
+
int saveATS
Start saving after this number of time step.
Definition: ComMod.h:1444
+
bool sstEq
Whether velocity-pressure based structural dynamics solver is used.
Definition: ComMod.h:1386
The LinearAlgebra class provides an abstract interface to linear algebra frameworks: FSILS,...
Definition: LinearAlgebra.h:40
Moving boundary data structure (used for general BC)
Definition: ComMod.h:100
Keep track of time.
Definition: Timer.h:40
-
Mesh adjacency (neighboring element for each element)
Definition: ComMod.h:464
+
Mesh adjacency (neighboring element for each element)
Definition: ComMod.h:467
Boundary condition data type.
Definition: ComMod.h:144
Definition: ComMod.h:297
Class storing data for B-Splines.
Definition: ComMod.h:222
Cardiac electrophysiology model type.
Definition: CepMod.h:158
Channel type, used in I/O.
Definition: ChnlMod.h:46
The cmType class stores data and defines methods used for mpi communication.
Definition: CmMod.h:82
-
Contact model type.
Definition: ComMod.h:693
-
For coupled 0D-3D problems.
Definition: ComMod.h:751
-
consts::CplBCType schm
Implicit/Explicit/Semi-implicit schemes.
Definition: ComMod.h:776
-
int nX
Number of unknowns in the 0D domain.
Definition: ComMod.h:770
-
int nFa
Number of coupled faces.
Definition: ComMod.h:767
-
Vector< double > xo
Old time step unknowns in the 0D domain.
Definition: ComMod.h:794
-
bool useGenBC
Whether to use genBC.
Definition: ComMod.h:758
-
std::string binPath
Path to the 0D code binary file.
Definition: ComMod.h:780
-
std::string saveName
The name of history file containing "X".
Definition: ComMod.h:787
-
std::string commuName
File name for communication between 0D and 3D.
Definition: ComMod.h:783
-
bool coupled
Is multi-domain active.
Definition: ComMod.h:755
-
std::vector< cplFaceType > fa
Data structure used for communicating with 0D code.
Definition: ComMod.h:800
-
Vector< double > xp
Output variables to be printed.
Definition: ComMod.h:797
-
Vector< double > xn
New time step unknowns in the 0D domain.
Definition: ComMod.h:791
-
int nXp
Number of output variables addition to nX.
Definition: ComMod.h:773
-
Definition: ComMod.h:715
-
This type will be used to write data in the VTK files.
Definition: ComMod.h:1134
-
Domain type is to keep track with element belong to which domain and also different physical quantiti...
Definition: ComMod.h:429
-
Equation type.
Definition: ComMod.h:997
-
LinearAlgebra * linear_algebra
Interface to a numerical linear algebra library.
Definition: ComMod.h:1104
-
double roInf
Definition: ComMod.h:1082
-
int maxItr
Maximum iteration for this eq.
Definition: ComMod.h:1028
-
int s
Pointer to start of unknown Yo(:,s:e)
Definition: ComMod.h:1022
-
int nDmnIB
IB: Number of immersed domains.
Definition: ComMod.h:1043
-
bool coupled
Should be satisfied in a coupled/uncoupled fashion.
Definition: ComMod.h:1003
-
bool ok
Satisfied/not satisfied.
Definition: ComMod.h:1007
-
int nBcIB
Number of BCs on immersed surfaces.
Definition: ComMod.h:1049
-
std::string sym
Equation symbol.
Definition: ComMod.h:1088
-
bool assmTLS
Use C++ Trilinos framework for assembly and for linear solvers.
Definition: ComMod.h:1013
-
lsType ls
type of linear solver
Definition: ComMod.h:1092
-
std::vector< outputType > outIB
IB: Outputs.
Definition: ComMod.h:1125
-
double tol
Accepted relative tolerance.
Definition: ComMod.h:1085
-
bool useTLS
Use C++ Trilinos framework for the linear solvers.
Definition: ComMod.h:1010
-
int itr
Number of performed iterations.
Definition: ComMod.h:1025
-
double gam
Definition: ComMod.h:1073
-
int nBc
Number of BCs.
Definition: ComMod.h:1046
-
int e
Pointer to end of unknown Yo(:,s:e)
Definition: ComMod.h:1019
-
std::vector< dmnType > dmn
domains that this equation must be solved
Definition: ComMod.h:1116
-
consts::PreconditionerType linear_algebra_preconditioner
The type of preconditioner used by the interface to a numerical linear algebra library.
Definition: ComMod.h:1101
-
int nOutIB
IB: Number of possible outputs.
Definition: ComMod.h:1037
-
double am
Definition: ComMod.h:1067
-
double iNorm
Initial norm of residual.
Definition: ComMod.h:1076
-
consts::LinearAlgebraType linear_algebra_assembly_type
The type of assembly interface to a numerical linear algebra library.
Definition: ComMod.h:1098
-
consts::LinearAlgebraType linear_algebra_type
The type of interface to a numerical linear algebra library.
Definition: ComMod.h:1095
-
std::vector< bfType > bf
Body force associated with this equation.
Definition: ComMod.h:1128
-
double pNorm
First iteration norm.
Definition: ComMod.h:1079
-
double af
Definition: ComMod.h:1060
-
int nBf
Number of BFs.
Definition: ComMod.h:1052
-
int nDmn
Number of domains.
Definition: ComMod.h:1040
-
int nOutput
Number of possible outputs.
Definition: ComMod.h:1034
-
std::vector< dmnType > dmnIB
IB: immersed domains that this equation must be solved.
Definition: ComMod.h:1119
-
std::vector< bcType > bc
BCs associated with this equation;.
Definition: ComMod.h:1110
-
std::vector< bcType > bcIB
IB: BCs associated with this equation on immersed surfaces.
Definition: ComMod.h:1113
-
int dof
Degrees of freedom.
Definition: ComMod.h:1016
-
fsi_linear_solver::FSILS_lsType FSILS
FSILS type of linear solver.
Definition: ComMod.h:1107
-
consts::EquationType phys
Type of equation fluid/heatF/heatS/lElas/FSI.
Definition: ComMod.h:1055
-
std::vector< outputType > output
Outputs.
Definition: ComMod.h:1122
-
double beta
Definition: ComMod.h:1070
-
int minItr
Minimum iteration for this eq.
Definition: ComMod.h:1031
-
The face type containing mesh at boundary.
Definition: ComMod.h:518
+
Contact model type.
Definition: ComMod.h:696
+
For coupled 0D-3D problems.
Definition: ComMod.h:754
+
consts::CplBCType schm
Implicit/Explicit/Semi-implicit schemes.
Definition: ComMod.h:779
+
int nX
Number of unknowns in the 0D domain.
Definition: ComMod.h:773
+
int nFa
Number of coupled faces.
Definition: ComMod.h:770
+
Vector< double > xo
Old time step unknowns in the 0D domain.
Definition: ComMod.h:797
+
bool useGenBC
Whether to use genBC.
Definition: ComMod.h:761
+
std::string binPath
Path to the 0D code binary file.
Definition: ComMod.h:783
+
std::string saveName
The name of history file containing "X".
Definition: ComMod.h:790
+
std::string commuName
File name for communication between 0D and 3D.
Definition: ComMod.h:786
+
bool coupled
Is multi-domain active.
Definition: ComMod.h:758
+
std::vector< cplFaceType > fa
Data structure used for communicating with 0D code.
Definition: ComMod.h:803
+
Vector< double > xp
Output variables to be printed.
Definition: ComMod.h:800
+
Vector< double > xn
New time step unknowns in the 0D domain.
Definition: ComMod.h:794
+
int nXp
Number of output variables addition to nX.
Definition: ComMod.h:776
+
Definition: ComMod.h:718
+
This type will be used to write data in the VTK files.
Definition: ComMod.h:1137
+
Domain type is to keep track with element belong to which domain and also different physical quantiti...
Definition: ComMod.h:432
+
Equation type.
Definition: ComMod.h:1000
+
LinearAlgebra * linear_algebra
Interface to a numerical linear algebra library.
Definition: ComMod.h:1107
+
double roInf
Definition: ComMod.h:1085
+
int maxItr
Maximum iteration for this eq.
Definition: ComMod.h:1031
+
int s
Pointer to start of unknown Yo(:,s:e)
Definition: ComMod.h:1025
+
int nDmnIB
IB: Number of immersed domains.
Definition: ComMod.h:1046
+
bool coupled
Should be satisfied in a coupled/uncoupled fashion.
Definition: ComMod.h:1006
+
bool ok
Satisfied/not satisfied.
Definition: ComMod.h:1010
+
int nBcIB
Number of BCs on immersed surfaces.
Definition: ComMod.h:1052
+
std::string sym
Equation symbol.
Definition: ComMod.h:1091
+
bool assmTLS
Use C++ Trilinos framework for assembly and for linear solvers.
Definition: ComMod.h:1016
+
lsType ls
type of linear solver
Definition: ComMod.h:1095
+
std::vector< outputType > outIB
IB: Outputs.
Definition: ComMod.h:1128
+
double tol
Accepted relative tolerance.
Definition: ComMod.h:1088
+
bool useTLS
Use C++ Trilinos framework for the linear solvers.
Definition: ComMod.h:1013
+
int itr
Number of performed iterations.
Definition: ComMod.h:1028
+
double gam
Definition: ComMod.h:1076
+
int nBc
Number of BCs.
Definition: ComMod.h:1049
+
int e
Pointer to end of unknown Yo(:,s:e)
Definition: ComMod.h:1022
+
std::vector< dmnType > dmn
domains that this equation must be solved
Definition: ComMod.h:1119
+
consts::PreconditionerType linear_algebra_preconditioner
The type of preconditioner used by the interface to a numerical linear algebra library.
Definition: ComMod.h:1104
+
int nOutIB
IB: Number of possible outputs.
Definition: ComMod.h:1040
+
double am
Definition: ComMod.h:1070
+
double iNorm
Initial norm of residual.
Definition: ComMod.h:1079
+
consts::LinearAlgebraType linear_algebra_assembly_type
The type of assembly interface to a numerical linear algebra library.
Definition: ComMod.h:1101
+
consts::LinearAlgebraType linear_algebra_type
The type of interface to a numerical linear algebra library.
Definition: ComMod.h:1098
+
std::vector< bfType > bf
Body force associated with this equation.
Definition: ComMod.h:1131
+
double pNorm
First iteration norm.
Definition: ComMod.h:1082
+
double af
Definition: ComMod.h:1063
+
int nBf
Number of BFs.
Definition: ComMod.h:1055
+
int nDmn
Number of domains.
Definition: ComMod.h:1043
+
int nOutput
Number of possible outputs.
Definition: ComMod.h:1037
+
std::vector< dmnType > dmnIB
IB: immersed domains that this equation must be solved.
Definition: ComMod.h:1122
+
std::vector< bcType > bc
BCs associated with this equation;.
Definition: ComMod.h:1113
+
std::vector< bcType > bcIB
IB: BCs associated with this equation on immersed surfaces.
Definition: ComMod.h:1116
+
int dof
Degrees of freedom.
Definition: ComMod.h:1019
+
fsi_linear_solver::FSILS_lsType FSILS
FSILS type of linear solver.
Definition: ComMod.h:1110
+
consts::EquationType phys
Type of equation fluid/heatF/heatS/lElas/FSI.
Definition: ComMod.h:1058
+
std::vector< outputType > output
Outputs.
Definition: ComMod.h:1125
+
double beta
Definition: ComMod.h:1073
+
int minItr
Minimum iteration for this eq.
Definition: ComMod.h:1034
+
The face type containing mesh at boundary.
Definition: ComMod.h:521
void destroy()
Free memory and reset some data members.
Definition: ComMod.cpp:138
Fourier coefficients that are used to specify unsteady BCs.
Definition: ComMod.h:64
Definition: ComMod.h:327
-
Fluid viscosity model type.
Definition: ComMod.h:390
+
Fluid viscosity model type.
Definition: ComMod.h:393
Function spaces (basis) type.
Definition: ComMod.h:249
void destroy()
SUBROUTINE DESTROYFS(fs)
Definition: ComMod.cpp:175
-
Definition: ComMod.h:1213
-
Vector< int > nG
Num traces (Gauss points) local to each process.
Definition: ComMod.h:1222
-
Vector< int > n
Num traces (nodes) local to each process.
Definition: ComMod.h:1216
-
Vector< int > gE
Pointer to global trace (Gauss point) stacked contiguously.
Definition: ComMod.h:1225
-
Vector< int > gN
Pointer to global trace (node num) stacked contiguously.
Definition: ComMod.h:1219
-
Immersed Boundary (IB) data type.
Definition: ComMod.h:1232
-
Array< double > x
IB position coordinates.
Definition: ComMod.h:1276
-
Array< double > Aun
Time derivative of displacement (new)
Definition: ComMod.h:1285
-
int cpld
IB coupling.
Definition: ComMod.h:1244
-
Array< double > Ku
LHS tangent matrix for displacement.
Definition: ComMod.h:1315
-
int tnNo
Total number of IB nodes.
Definition: ComMod.h:1258
-
Array< double > Un
Displacement (projected on background mesh, new, n+af)
Definition: ComMod.h:1303
-
int cEq
Current equation.
Definition: ComMod.h:1255
-
Array< double > R
Residual (FSI force)
Definition: ComMod.h:1306
-
int intrp
IB interpolation method.
Definition: ComMod.h:1248
-
Array< double > Uo
Displacement (projected on background mesh, old)
Definition: ComMod.h:1300
-
Array< double > Yb
Velocity (new)
Definition: ComMod.h:1279
-
Array< double > Ubn
Displacement (new)
Definition: ComMod.h:1294
-
int cDmn
Current IB domain ID.
Definition: ComMod.h:1252
-
double callD[4]
IB call duration (1: total time; 2: update; 3,4: communication)
Definition: ComMod.h:1264
-
ibCommType cm
IB communicator.
Definition: ComMod.h:1321
-
Vector< int > rowPtr
Row pointer (for sparse LHS matrix storage)
Definition: ComMod.h:1270
-
Array< double > Rub
Residual (displacement, IB mesh)
Definition: ComMod.h:1312
-
bool savedOnce
Whether any file being saved.
Definition: ComMod.h:1236
-
Vector< int > dmnID
IB Domain ID.
Definition: ComMod.h:1267
-
Array< double > Auo
Time derivative of displacement (old)
Definition: ComMod.h:1282
-
Array< double > Ubk
Displacement (n+af)
Definition: ComMod.h:1297
-
int nMsh
Number of IB meshes.
Definition: ComMod.h:1261
-
int mthd
IB method.
Definition: ComMod.h:1240
-
std::vector< mshType > msh
DERIVED class VARIABLES IB meshes;.
Definition: ComMod.h:1318
-
Array< double > Ubo
Displacement (old)
Definition: ComMod.h:1291
-
Vector< int > colPtr
Column pointer (for sparse LHS matrix storage)
Definition: ComMod.h:1273
-
Array< double > Ru
Residual (displacement, background mesh)
Definition: ComMod.h:1309
-
Array< double > Auk
Time derivative of displacement (n+am)
Definition: ComMod.h:1288
+
Definition: ComMod.h:1216
+
Vector< int > nG
Num traces (Gauss points) local to each process.
Definition: ComMod.h:1225
+
Vector< int > n
Num traces (nodes) local to each process.
Definition: ComMod.h:1219
+
Vector< int > gE
Pointer to global trace (Gauss point) stacked contiguously.
Definition: ComMod.h:1228
+
Vector< int > gN
Pointer to global trace (node num) stacked contiguously.
Definition: ComMod.h:1222
+
Immersed Boundary (IB) data type.
Definition: ComMod.h:1235
+
Array< double > x
IB position coordinates.
Definition: ComMod.h:1279
+
Array< double > Aun
Time derivative of displacement (new)
Definition: ComMod.h:1288
+
int cpld
IB coupling.
Definition: ComMod.h:1247
+
Array< double > Ku
LHS tangent matrix for displacement.
Definition: ComMod.h:1318
+
int tnNo
Total number of IB nodes.
Definition: ComMod.h:1261
+
Array< double > Un
Displacement (projected on background mesh, new, n+af)
Definition: ComMod.h:1306
+
int cEq
Current equation.
Definition: ComMod.h:1258
+
Array< double > R
Residual (FSI force)
Definition: ComMod.h:1309
+
int intrp
IB interpolation method.
Definition: ComMod.h:1251
+
Array< double > Uo
Displacement (projected on background mesh, old)
Definition: ComMod.h:1303
+
Array< double > Yb
Velocity (new)
Definition: ComMod.h:1282
+
Array< double > Ubn
Displacement (new)
Definition: ComMod.h:1297
+
int cDmn
Current IB domain ID.
Definition: ComMod.h:1255
+
double callD[4]
IB call duration (1: total time; 2: update; 3,4: communication)
Definition: ComMod.h:1267
+
ibCommType cm
IB communicator.
Definition: ComMod.h:1324
+
Vector< int > rowPtr
Row pointer (for sparse LHS matrix storage)
Definition: ComMod.h:1273
+
Array< double > Rub
Residual (displacement, IB mesh)
Definition: ComMod.h:1315
+
bool savedOnce
Whether any file being saved.
Definition: ComMod.h:1239
+
Vector< int > dmnID
IB Domain ID.
Definition: ComMod.h:1270
+
Array< double > Auo
Time derivative of displacement (old)
Definition: ComMod.h:1285
+
Array< double > Ubk
Displacement (n+af)
Definition: ComMod.h:1300
+
int nMsh
Number of IB meshes.
Definition: ComMod.h:1264
+
int mthd
IB method.
Definition: ComMod.h:1243
+
std::vector< mshType > msh
DERIVED class VARIABLES IB meshes;.
Definition: ComMod.h:1321
+
Array< double > Ubo
Displacement (old)
Definition: ComMod.h:1294
+
Vector< int > colPtr
Column pointer (for sparse LHS matrix storage)
Definition: ComMod.h:1276
+
Array< double > Ru
Residual (displacement, background mesh)
Definition: ComMod.h:1312
+
Array< double > Auk
Time derivative of displacement (n+am)
Definition: ComMod.h:1291
Only to group four channels, in case I rather have them as one variable.
Definition: ChnlMod.h:77
-
Linear system of equations solver type.
Definition: ComMod.h:637
-
double absTol
Absolute tolerance (IN)
Definition: ComMod.h:668
-
int cN
Number of |x| norms (OUT)
Definition: ComMod.h:659
-
int cD
Number of <x.y> dot products (OUT)
Definition: ComMod.h:662
-
double fNorm
Final norm of residual (OUT)
Definition: ComMod.h:677
-
double callD
Calling duration (OUT)
Definition: ComMod.h:683
-
int reserve
Only for data alignment (-)
Definition: ComMod.h:665
-
bool suc
Successful solving (OUT)
Definition: ComMod.h:644
-
int mItr
Maximum iterations (IN)
Definition: ComMod.h:647
-
consts::SolverType LS_type
LS solver (IN)
Definition: ComMod.h:641
-
int itr
Number of iteration (OUT)
Definition: ComMod.h:653
-
double relTol
Relative tolerance (IN)
Definition: ComMod.h:671
-
double dB
Res. rduction in last itr. (OUT)
Definition: ComMod.h:680
-
int sD
Space dimension (IN)
Definition: ComMod.h:650
-
int cM
Number of Ax multiple (OUT)
Definition: ComMod.h:656
-
double iNorm
Initial norm of residual (OUT)
Definition: ComMod.h:674
-
This is the container for a mesh or NURBS patch, those specific to NURBS are noted.
Definition: ComMod.h:807
-
int nNo
Number of nodes (control points) for 2D elements?
Definition: ComMod.h:868
-
Vector< double > w
Gauss weights.
Definition: ComMod.h:928
-
std::vector< std::vector< int > > ordering
@breif ordering: node ordering for boundaries
Definition: ComMod.h:886
-
Array< double > N
Parent shape function.
Definition: ComMod.h:940
-
traceType trc
IB: tracers.
Definition: ComMod.h:983
-
Array3< double > Ys
Solution field (displacement, velocity, pressure, etc.) for a known, potentially time-varying,...
Definition: ComMod.h:962
-
Vector< int > eDist
Element distribution between processors.
Definition: ComMod.h:889
-
Vector< int > iGC
IB: Whether a cell is a ghost cell or not.
Definition: ComMod.h:922
-
adjType nAdj
Mesh nodal adjacency.
Definition: ComMod.h:968
-
Array< double > xib
Bounds on parameteric coordinates.
Definition: ComMod.h:934
-
adjType eAdj
Mesh element adjacency.
Definition: ComMod.h:971
-
int nG
Number of Gauss points for integration.
Definition: ComMod.h:865
-
int nFa
Number of faces.
Definition: ComMod.h:859
-
Array< double > x
Position coordinates.
Definition: ComMod.h:937
-
std::vector< fsType > fs
Function spaces (basis)
Definition: ComMod.h:974
-
Array3< double > Nxx
Second derivatives of shape functions - used for shells & IGA davep double Nxx(:,:,...
Definition: ComMod.h:958
-
int gnNo
Global number of nodes (control points)
Definition: ComMod.h:850
-
double dx
IB: Mesh size parameter.
Definition: ComMod.h:883
-
bool lShpF
Whether the shape function is linear.
Definition: ComMod.h:831
-
Vector< int > lN
Global to local maping tnNo --> nNo.
Definition: ComMod.h:913
-
Vector< int > otnIEN
gIEN mapper from old to new
Definition: ComMod.h:907
-
int nFn
Number of fiber directions.
Definition: ComMod.h:877
-
Array< int > eIEN
Shells: extended IEN array with neighboring nodes.
Definition: ComMod.h:916
-
Vector< int > gN
Global nodes maping nNo --> tnNo.
Definition: ComMod.h:895
-
bool lFib
Whether the mesh is fibers (Purkinje)
Definition: ComMod.h:837
-
int eNoN
Number of nodes (control points) in a single element.
Definition: ComMod.h:844
-
double scF
Mesh scale factor.
Definition: ComMod.h:880
-
Vector< int > eId
Element domain ID number.
Definition: ComMod.h:892
-
int gnEl
Global number of elements (knot spans)
Definition: ComMod.h:847
-
int nSl
Number of elements sample points to be outputs (NURBS)
Definition: ComMod.h:871
-
Array< double > xi
Gauss integration points in parametric space.
Definition: ComMod.h:931
-
Array< double > fN
Fiber orientations stored at the element level - used for electrophysiology and solid mechanics.
Definition: ComMod.h:950
-
int nFs
Number of function spaces.
Definition: ComMod.h:862
-
Array< int > sbc
Shells: boundary condition variable.
Definition: ComMod.h:919
-
bool lShl
Whether the mesh is shell.
Definition: ComMod.h:834
-
Array< double > Nb
Shape function bounds.
Definition: ComMod.h:943
-
Array< double > nV
Normal vector to each nodal point (for Shells)
Definition: ComMod.h:946
-
Vector< double > nW
Control points weights (NURBS)
Definition: ComMod.h:925
-
Array3< double > Nx
Parent shape functions gradient double Nx(:,:,:)
Definition: ComMod.h:954
-
std::vector< faceType > fa
Faces are stored in this variable.
Definition: ComMod.h:980
-
Vector< int > gpN
GLobal projected nodes mapping projected -> unprojected mapping.
Definition: ComMod.h:898
-
Array< int > gIEN
Global connectivity array mappig eNoN,nEl --> gnNo.
Definition: ComMod.h:901
-
int vtkType
The element type recognized by VTK format.
Definition: ComMod.h:874
-
int nEl
Number of elements (knot spans)
Definition: ComMod.h:856
-
consts::ElementType eType
Element type.
Definition: ComMod.h:840
-
int nEf
Number of element face. Used for reading Gambit mesh files.
Definition: ComMod.h:853
-
std::string name
Mesh Name.
Definition: ComMod.h:965
-
std::vector< bsType > bs
BSpline in different directions (NURBS)
Definition: ComMod.h:977
-
Array< int > IEN
The connectivity array mapping eNoN,nEl --> nNo.
Definition: ComMod.h:904
-
double qmTET4
TET4 quadrature modifier.
Definition: ComMod.h:986
-
Array< int > INN
Local knot pointer (NURBS)
Definition: ComMod.h:910
-
Declared type for outputed variables.
Definition: ComMod.h:614
+
Linear system of equations solver type.
Definition: ComMod.h:640
+
double absTol
Absolute tolerance (IN)
Definition: ComMod.h:671
+
int cN
Number of |x| norms (OUT)
Definition: ComMod.h:662
+
int cD
Number of <x.y> dot products (OUT)
Definition: ComMod.h:665
+
double fNorm
Final norm of residual (OUT)
Definition: ComMod.h:680
+
double callD
Calling duration (OUT)
Definition: ComMod.h:686
+
int reserve
Only for data alignment (-)
Definition: ComMod.h:668
+
bool suc
Successful solving (OUT)
Definition: ComMod.h:647
+
int mItr
Maximum iterations (IN)
Definition: ComMod.h:650
+
consts::SolverType LS_type
LS solver (IN)
Definition: ComMod.h:644
+
int itr
Number of iteration (OUT)
Definition: ComMod.h:656
+
double relTol
Relative tolerance (IN)
Definition: ComMod.h:674
+
double dB
Res. rduction in last itr. (OUT)
Definition: ComMod.h:683
+
int sD
Space dimension (IN)
Definition: ComMod.h:653
+
int cM
Number of Ax multiple (OUT)
Definition: ComMod.h:659
+
double iNorm
Initial norm of residual (OUT)
Definition: ComMod.h:677
+
This is the container for a mesh or NURBS patch, those specific to NURBS are noted.
Definition: ComMod.h:810
+
int nNo
Number of nodes (control points) for 2D elements?
Definition: ComMod.h:871
+
Vector< double > w
Gauss weights.
Definition: ComMod.h:931
+
std::vector< std::vector< int > > ordering
@breif ordering: node ordering for boundaries
Definition: ComMod.h:889
+
Array< double > N
Parent shape function.
Definition: ComMod.h:943
+
traceType trc
IB: tracers.
Definition: ComMod.h:986
+
Array3< double > Ys
Solution field (displacement, velocity, pressure, etc.) for a known, potentially time-varying,...
Definition: ComMod.h:965
+
Vector< int > eDist
Element distribution between processors.
Definition: ComMod.h:892
+
Vector< int > iGC
IB: Whether a cell is a ghost cell or not.
Definition: ComMod.h:925
+
adjType nAdj
Mesh nodal adjacency.
Definition: ComMod.h:971
+
Array< double > xib
Bounds on parameteric coordinates.
Definition: ComMod.h:937
+
adjType eAdj
Mesh element adjacency.
Definition: ComMod.h:974
+
int nG
Number of Gauss points for integration.
Definition: ComMod.h:868
+
int nFa
Number of faces.
Definition: ComMod.h:862
+
Array< double > x
Position coordinates.
Definition: ComMod.h:940
+
std::vector< fsType > fs
Function spaces (basis)
Definition: ComMod.h:977
+
Array3< double > Nxx
Second derivatives of shape functions - used for shells & IGA davep double Nxx(:,:,...
Definition: ComMod.h:961
+
int gnNo
Global number of nodes (control points)
Definition: ComMod.h:853
+
double dx
IB: Mesh size parameter.
Definition: ComMod.h:886
+
bool lShpF
Whether the shape function is linear.
Definition: ComMod.h:834
+
Vector< int > lN
Global to local maping tnNo --> nNo.
Definition: ComMod.h:916
+
Vector< int > otnIEN
gIEN mapper from old to new
Definition: ComMod.h:910
+
int nFn
Number of fiber directions.
Definition: ComMod.h:880
+
Array< int > eIEN
Shells: extended IEN array with neighboring nodes.
Definition: ComMod.h:919
+
Vector< int > gN
Global nodes maping nNo --> tnNo.
Definition: ComMod.h:898
+
bool lFib
Whether the mesh is fibers (Purkinje)
Definition: ComMod.h:840
+
int eNoN
Number of nodes (control points) in a single element.
Definition: ComMod.h:847
+
double scF
Mesh scale factor.
Definition: ComMod.h:883
+
Vector< int > eId
Element domain ID number.
Definition: ComMod.h:895
+
int gnEl
Global number of elements (knot spans)
Definition: ComMod.h:850
+
int nSl
Number of elements sample points to be outputs (NURBS)
Definition: ComMod.h:874
+
Array< double > xi
Gauss integration points in parametric space.
Definition: ComMod.h:934
+
Array< double > fN
Fiber orientations stored at the element level - used for electrophysiology and solid mechanics.
Definition: ComMod.h:953
+
int nFs
Number of function spaces.
Definition: ComMod.h:865
+
Array< int > sbc
Shells: boundary condition variable.
Definition: ComMod.h:922
+
bool lShl
Whether the mesh is shell.
Definition: ComMod.h:837
+
Array< double > Nb
Shape function bounds.
Definition: ComMod.h:946
+
Array< double > nV
Normal vector to each nodal point (for Shells)
Definition: ComMod.h:949
+
Vector< double > nW
Control points weights (NURBS)
Definition: ComMod.h:928
+
Array3< double > Nx
Parent shape functions gradient double Nx(:,:,:)
Definition: ComMod.h:957
+
std::vector< faceType > fa
Faces are stored in this variable.
Definition: ComMod.h:983
+
Vector< int > gpN
GLobal projected nodes mapping projected -> unprojected mapping.
Definition: ComMod.h:901
+
Array< int > gIEN
Global connectivity array mappig eNoN,nEl --> gnNo.
Definition: ComMod.h:904
+
int vtkType
The element type recognized by VTK format.
Definition: ComMod.h:877
+
int nEl
Number of elements (knot spans)
Definition: ComMod.h:859
+
consts::ElementType eType
Element type.
Definition: ComMod.h:843
+
int nEf
Number of element face. Used for reading Gambit mesh files.
Definition: ComMod.h:856
+
std::string name
Mesh Name.
Definition: ComMod.h:968
+
std::vector< bsType > bs
BSpline in different directions (NURBS)
Definition: ComMod.h:980
+
Array< int > IEN
The connectivity array mapping eNoN,nEl --> nNo.
Definition: ComMod.h:907
+
double qmTET4
TET4 quadrature modifier.
Definition: ComMod.h:989
+
Array< int > INN
Local knot pointer (NURBS)
Definition: ComMod.h:913
+
Declared type for outputed variables.
Definition: ComMod.h:617
Definition: ComMod.h:122
-
Definition: ComMod.h:1164
-
Vector< double > iNorm
Initial norm of an equation.
Definition: ComMod.h:1201
-
int rTS
Time step from which remeshing is done.
Definition: ComMod.h:1179
-
int freq
Time step frequency for forced remeshing.
Definition: ComMod.h:1188
-
int cpVar
Time step freq for saving data.
Definition: ComMod.h:1182
-
Array< double > A0
Copy of solution variables where remeshing starts.
Definition: ComMod.h:1204
-
int cntr
Counter to track number of remesh done.
Definition: ComMod.h:1176
-
std::vector< bool > flag
Flag is set if remeshing is required for each mesh.
Definition: ComMod.h:1209
-
double time
Time where remeshing starts.
Definition: ComMod.h:1191
-
consts::MeshGeneratorType method
Method for remeshing: 1-TetGen, 2-MeshSim.
Definition: ComMod.h:1173
-
double minDihedAng
Mesh quality parameters.
Definition: ComMod.h:1194
-
int fTS
Time step at which forced remeshing is done.
Definition: ComMod.h:1185
-
Vector< double > maxEdgeSize
Edge size of mesh.
Definition: ComMod.h:1198
-
bool isReqd
Whether remesh is required for problem or not.
Definition: ComMod.h:1170
-
Fluid viscosity model type.
Definition: ComMod.h:415
-
Structural domain type.
Definition: ComMod.h:343
-
Tracer type used for immersed boundaries. Identifies traces of nodes and integration points on backgr...
Definition: ComMod.h:483
+
Definition: ComMod.h:1167
+
Vector< double > iNorm
Initial norm of an equation.
Definition: ComMod.h:1204
+
int rTS
Time step from which remeshing is done.
Definition: ComMod.h:1182
+
int freq
Time step frequency for forced remeshing.
Definition: ComMod.h:1191
+
int cpVar
Time step freq for saving data.
Definition: ComMod.h:1185
+
Array< double > A0
Copy of solution variables where remeshing starts.
Definition: ComMod.h:1207
+
int cntr
Counter to track number of remesh done.
Definition: ComMod.h:1179
+
std::vector< bool > flag
Flag is set if remeshing is required for each mesh.
Definition: ComMod.h:1212
+
double time
Time where remeshing starts.
Definition: ComMod.h:1194
+
consts::MeshGeneratorType method
Method for remeshing: 1-TetGen, 2-MeshSim.
Definition: ComMod.h:1176
+
double minDihedAng
Mesh quality parameters.
Definition: ComMod.h:1197
+
int fTS
Time step at which forced remeshing is done.
Definition: ComMod.h:1188
+
Vector< double > maxEdgeSize
Edge size of mesh.
Definition: ComMod.h:1201
+
bool isReqd
Whether remesh is required for problem or not.
Definition: ComMod.h:1173
+
Fluid viscosity model type.
Definition: ComMod.h:418
+
Structural domain type.
Definition: ComMod.h:346
+
Tracer type used for immersed boundaries. Identifies traces of nodes and integration points on backgr...
Definition: ComMod.h:486