int main(
int argc,
char* argv[])
{
appParamsManager.
load(argc, argv);
Param bulkModulusNum(bulkModulus.
v()/rho.
v()/dx.v()/dx.v());
Param shearModulusNum(shearModulus.
v()/rho.
v()/dx.v()/dx.v());
std::cout << "Data initialization... ";
auto displacement(asl::generateDataContainerACL_SP<FlT>(block, 3, 1u));
writer.
addVector(
"displacement", *displacement);
std::cout << "Finished" << endl;
std::cout << "Numerics initialization... ";
elasticity->init();
auto bcRigidWall(generateBCRigidWall(elasticity, {
asl::X0}));
addSliceXE(bcFreeSurface);
addSliceY0(bcFreeSurface);
addSliceYE(bcFreeSurface);
addSliceZ0(bcFreeSurface);
addSliceZE(bcFreeSurface);
bcRigidWall->init();
std::cout << "Finished" << endl;
std::cout << "Computing...";
bcRigidWall->execute();
for (
unsigned int i(0); i < tsim.
v(); ++i)
{
elasticity->execute();
bcRigidWall->execute();
}
cout << "Finished" << endl;
cout << "Computation statistic:" << endl;
cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = "
return 0;
}
void load(int argc, char *argv[])
Bondary condition corresponding to a free surface ( )
virtual void execute()
Executes the numerical procedure.
virtual void init()
Builds the necesery internal data and kernels.
Numerical method which computes homogenious isotropic elasticity equation.
const double realTime() const
const double processorTime() const
const double processorLoad() const
Updatable value. This class stores value and its TimeStamp.
void addVector(std::string name, AbstractData &data)
void addScalars(std::string name, AbstractData &data)
void initData(Element a, Element initializationValue, const KernelConfiguration &kernelConfig=KERNEL_BASIC)
const VectorTemplate & d3q15()
Vector template.
VectorOfElements generateVEConstantN(unsigned int n, T a)
Generates VectorOfElements with n Elements acl::Constant with values a.
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
std::shared_ptr< FDElasticity2 > SPFDElasticity2