29 #include <aslDataInc.h>
30 #include <acl/aclGenerators.h>
31 #include <num/aslFDPoroElasticity.h>
32 #include <num/aslFDElasticityBC.h>
33 #include <num/aslFDPoroElasticityBC.h>
34 #include <utilities/aslTimer.h>
35 #include <utilities/aslParametersManager.h>
36 #include <math/aslTemplates.h>
37 #include <aslGeomInc.h>
38 #include <math/aslDistanceFunction.h>
39 #include <acl/aclMath/aclVectorOfElements.h>
40 #include <acl/aclUtilities.h>
41 #include <math/aslIndex2Position.h>
42 #include <readers/aslVTKFormatReaders.h>
43 #include <writers/aslVTKFormatWriters.h>
51 int main(
int argc,
char* argv[])
66 appParamsManager.
load(argc, argv);
68 std::cout <<
"Data initialization... " <<
flush;
73 dx.v() = block.dx*1e-3;
76 Param bulkModulusNum(bulkModulus.
v()/rho.
v()/
dx.v()/
dx.v());
77 Param shearModulusNum(shearModulus.
v()/rho.
v()/
dx.v()/
dx.v());
79 Param hydraulicConductivityNum(hydraulicConductivity.
v()/
dx.v()/
dx.v()/
dx.v());
81 cout << gNum <<
"; " << bulkModulusNum.
v() <<
"; " << hydraulicConductivityNum.v() << endl;
84 auto displacement(asl::generateDataContainerACL_SP<FlT>(block, 3, 1u));
85 auto pressure(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
91 auto mapX(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
96 writer.
addVector(
"displacement", *displacement);
97 writer.addScalars(
"pressure", *pressure);
98 writer.addScalars(
"map", *mapX);
101 std::cout <<
"Finished" << endl;
103 std::cout <<
"Numerics initialization... " <<
flush;
105 auto elasticity(make_shared<asl::FDPoroElasticity>(displacement,
114 displacement->getBlock().dx +
115 displacement->getBlock().position);
118 auto force((1.-
acl::sign(scf->getDistance(i2p.positionWithInit)))/2.*
122 elasticity->setForce(forceField->getSubContainer());
125 vector<asl::SPNumMethod> bcl;
133 std::cout <<
"Finished" << endl;
134 std::cout <<
"Computing..." <<
flush;
142 for (
unsigned int i(0); i < tsim.
v(); ++i)
144 elasticity->execute();
151 cout <<
"Finished" << endl;
153 cout <<
"Computation statistic:" << endl;
154 cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = "