v0.14.0
Functions | Variables
gel_constitutive_equation_test.cpp File Reference

Atom test verifying implementation of gel constitutive equations. More...

#include <MoFEM.hpp>
#include <PostProcOnRefMesh.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <adolc/adolc.h>
#include <Gels.hpp>
#include <boost/iostreams/tee.hpp>
#include <boost/iostreams/stream.hpp>
#include <fstream>
#include <iostream>

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 

Variables

static char help [] = "...\n\n"
 

Detailed Description

Atom test verifying implementation of gel constitutive equations.

Definition in file gel_constitutive_equation_test.cpp.

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 44 of file gel_constitutive_equation_test.cpp.

44  {
45 
46  MoFEM::Core::Initialize(&argc,&argv,(char *)0,help);
47 
48  try {
49 
50  moab::Core mb_instance;
51  moab::Interface& moab = mb_instance;
52  int rank;
53  MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
54  MoFEM::Core core(moab);
55  MoFEM::Interface& m_field = core;
56 
57  // Create gel instance
58  Gel gel(m_field);
59 
60  map<int,Gel::BlockMaterialData> material_data;
61 
62  // Set material parameters
63  material_data[0].gAlpha = 1;
64  material_data[0].vAlpha = 0.3;
65  material_data[0].gBeta = 1;
66  material_data[0].vBeta = 0.3;
67  material_data[0].gBetaHat = 1;
68  material_data[0].vBetaHat = 0.3;
69  material_data[0].oMega = 1;
70  material_data[0].vIscosity = 1;
71  material_data[0].pErmeability = 2.;
72 
73  Gel::ConstitutiveEquation<double> ce(material_data);
74 
75  // Set state variables
76  MatrixDouble3by3 &F = ce.F;
77  F.resize(3,3);
78  F.clear();
79  F(0,0) = 0.01; F(0,1) = 0.02; F(0,2) = 0.03;
80  F(1,0) = 0.04; F(1,1) = 0.05; F(1,2) = 0.06;
81  F(2,0) = 0.07; F(2,1) = 0.08; F(2,2) = 0.09;
82 
83  MatrixDouble3by3 &F_dot = ce.FDot;
84  F_dot.resize(3,3);
85  F_dot.clear();
86  F_dot(0,0) = 0.01; F_dot(0,1) = 0.02; F_dot(0,2) = 0.03;
87  F_dot(1,0) = 0.04; F_dot(1,1) = 0.05; F_dot(1,2) = 0.06;
88  F_dot(2,0) = 0.07; F_dot(2,1) = 0.08; F_dot(2,2) = 0.09;
89 
90  MatrixDouble3by3 &strainHat = ce.strainHat;
91  strainHat.resize(3,3);
92  strainHat.clear();
93  strainHat(0,0) = 0.01; strainHat(0,1) = 0.02; strainHat(0,2) = 0.03;
94  strainHat(1,0) = 0.04; strainHat(1,1) = 0.05; strainHat(1,2) = 0.06;
95  strainHat(2,0) = 0.07; strainHat(2,1) = 0.08; strainHat(2,2) = 0.09;
96 
97  MatrixDouble3by3 &strainHatDot = ce.strainHatDot;
98  strainHatDot.resize(3,3);
99  strainHatDot.clear();
100  strainHatDot(0,0) = 0.01; strainHatDot(0,1) = 0.02; strainHatDot(0,2) = 0.03;
101  strainHatDot(1,0) = 0.04; strainHatDot(1,1) = 0.05; strainHatDot(1,2) = 0.06;
102  strainHatDot(2,0) = 0.07; strainHatDot(2,1) = 0.08; strainHatDot(2,2) = 0.09;
103 
104  ce.mU = 1;
105  VectorDouble3 &gradient_mu = ce.gradientMu;
106  gradient_mu.resize(3);
107  gradient_mu.clear();
108  gradient_mu[0] = 1;
109  gradient_mu[1] = 0;
110  gradient_mu[2] = 0;
111 
112  // Creeate tee like output, printing results on screen and simultaneously
113  // writing results to file
114  typedef tee_device<ostream, ofstream> TeeDevice;
115  typedef stream<TeeDevice> TeeStream;
116  ofstream ofs("gel_constitutive_model_test.txt");
117  TeeDevice my_tee(cout,ofs);
118  TeeStream my_split(my_tee);
119 
120  // Do calculations
121 
122  ierr = ce.calculateCauchyDefromationTensor(); CHKERRQ(ierr);
123  my_split << "C\n" << ce.C << endl << endl;
124 
125  ierr = ce.calculateStrainTotal(); CHKERRQ(ierr);
126  my_split << "strainTotal\n" << ce.strainTotal << endl << endl;
127 
128  ierr = ce.calculateTraceStrainTotalDot(); CHKERRQ(ierr);
129  my_split << "traceStrianTotalDot\n" << ce.traceStrainTotalDot << endl << endl;
130 
131  ierr = ce.calculateSolventConcentrationDot(); CHKERRQ(ierr);
132  my_split << "solventConcentrationDot\n" << ce.solventConcentrationDot << endl << endl;
133 
134  ierr = ce.calculateStressAlpha(); CHKERRQ(ierr);
135  my_split << "stressAlpha\n" << ce.stressAlpha << endl << endl;
136 
137  ierr = ce.calculateStressBeta(); CHKERRQ(ierr);
138  my_split << "stressBeta\n" << ce.stressBeta << endl << endl;
139 
140  ierr = ce.calculateStressBetaHat(); CHKERRQ(ierr);
141  my_split << "stressBeta\n" << ce.stressBetaHat << endl << endl;
142 
143  ierr = ce.calculateStressTotal(); CHKERRQ(ierr);
144  my_split << "stressTotal\n" << ce.stressTotal << endl << endl;
145 
146  ierr = ce.calculateSolventFlux(); CHKERRQ(ierr);
147  my_split << "solventFlux\n" << ce.solventFlux << endl << endl;
148 
149  ierr = ce.calculateStrainHatFlux(); CHKERRQ(ierr);
150  my_split << "strainHatDot\n" << ce.strainHatDot << endl << endl;
151 
152  ierr = ce.calculateResidualStrainHat(); CHKERRQ(ierr);
153  my_split << "residualStrainHat\n" << ce.residualStrainHat << endl << endl;
154 
155  }
156  CATCH_ERRORS;
157 
159 
160  return 0;
161 }

Variable Documentation

◆ help

char help[] = "...\n\n"
static

Definition at line 42 of file gel_constitutive_equation_test.cpp.

TeeStream
stream< TeeDevice > TeeStream
Definition: forces_and_sources_testing_contact_prism_element.cpp:10
MoFEM::CoreTmp< 0 >
Core (interface) class.
Definition: Core.hpp:82
MoFEM::Types::VectorDouble3
VectorBoundedArray< double, 3 > VectorDouble3
Definition: Types.hpp:92
help
static char help[]
Definition: gel_constitutive_equation_test.cpp:42
MoFEM::CoreTmp< 0 >::Finalize
static MoFEMErrorCode Finalize()
Checks for options to be called at the conclusion of the program.
Definition: Core.cpp:112
GelModule::Gel
Implementation of Gel constitutive model.
Definition: Gels.hpp:74
MoFEM::DeprecatedCoreInterface
Deprecated interface functions.
Definition: DeprecatedCoreInterface.hpp:16
TeeDevice
tee_device< std::ostream, std::ofstream > TeeDevice
Definition: forces_and_sources_testing_contact_prism_element.cpp:9
MoFEM::Interface
DeprecatedCoreInterface Interface
Definition: Interface.hpp:2010
MoFEM::CoreTmp< 0 >::Initialize
static MoFEMErrorCode Initialize(int *argc, char ***args, const char file[], const char help[])
Initializes the MoFEM database PETSc, MOAB and MPI.
Definition: Core.cpp:72
CATCH_ERRORS
#define CATCH_ERRORS
Catch errors.
Definition: definitions.h:385
MoFEM::Core
CoreTmp< 0 > Core
Definition: Core.hpp:1148
MoFEM::Exceptions::ierr
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
Definition: Exceptions.hpp:76
MoFEM::Types::MatrixDouble3by3
MatrixBoundedArray< double, 9 > MatrixDouble3by3
Definition: Types.hpp:105
GelModule::Gel::ConstitutiveEquation
Constitutive model functions.
Definition: Gels.hpp:114
F
@ F
Definition: free_surface.cpp:394