#include <aslDataInc.h>
#include <acl/aclGenerators.h>
#include <writers/aslVTKFormatWriters.h>
#include <num/aslFDElasticity.h>
#include <num/aslFDElasticityBC.h>
#include <num/aslBasicBC.h>
#include <utilities/aslTimer.h>
#include <utilities/aslParametersManager.h>
#include <math/aslTemplates.h>
#include <aslGeomInc.h>
{
private:
void init();
public:
void load(
int argc,
char * argv[]);
};
appParamsManager("acousticWaves", "0.1"),
size(3),
bulkModulus(160e9,"bulk_modulus", "bulk modulus"),
shearModulus(79e9,"shear_modulus", "shear modulus"),
rho(7800,"rho", "density"),
tubeL(.2,"tube_length", "pipe length" "m"),
tubeDEx(0.021, "tube_diameter_external", "external pipe diameter" "m"),
tubeDIn(0.0107,"tube_diameter_internal", "internal pipe diameter" "m"),
hole1Pos(0.1,"hole_1_position", "position of first hole" "m"),
hole2Pos(0.15,"hole_2_position", "position of second hole" "m"),
hole1D(15e-3,"hole_1_diameter", "diameter of first hole" "m"),
hole2D(15e-3,"hole_2_diameter", "diameter of second hole" "m"),
tSimulation(8e-5, "simulation_time", "simulation time"),
tOutput(1e-6, "output_interval", "output interval")
{
}
{
init();
}
{
cout << vs <<
"; " <<
dx.
v() <<
"; " <<
dt.
v() << endl;
}
void Parameters::init()
{
}
{
h1Orientation*wallMid);
h2Orientation*wallMid);
pipeGeometry = pipeGeometry &
pipeGeometry = pipeGeometry &
}
{
float a(it<200. ? 1.-
cos(it*6.28/200.) : 0);
}
int main(
int argc,
char* argv[])
{
std::cout <<
"Data initialization... " <<
flush;
auto displacement(asl::generateDataContainerACL_SP<FlT>(block, 3, 1u));
auto mapMem(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
writer.addScalars("map", *mapMem);
writer.addVector("displacement", *displacement);
writer.write();
std::cout << "Finished" << endl;
std::cout <<
"Numerics initialization... " <<
flush;
elasticity->init();
std::vector<asl::SPNumMethod> bc;
std::cout << "Finished" << endl;
std::cout << "Computing..." << endl;
double tOutPrev(0);
cout << params.
dt.
v() << endl;
{
elasticity->execute();
{
tOutPrev=t;
writer.write();
}
}
cout << "Finished" << endl;
cout << "Computation statistic:" << endl;
cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = "
return 0;
}
asl::AVec< float > getAmplitude(double it)
int main(int argc, char *argv[])
asl::SPDistanceFunction generatePipe(asl::Block &block, Parameters ¶ms)
asl::Parameter< double > tubeL
asl::Parameter< double > bulkModulus
asl::Parameter< double > tubeDIn
asl::Parameter< double > tOutput
asl::Parameter< double > tSimulation
asl::Parameter< double > hole2Pos
asl::Parameter< double > shearModulus
asl::UValue< double > bulkMNum
asl::Parameter< double > tubeDEx
asl::Parameter< double > dx
asl::Parameter< double > hole2D
asl::ApplicationParametersManager appParamsManager
asl::Parameter< double > hole1D
asl::Parameter< double > rho
asl::Parameter< double > hole1Pos
asl::UValue< double > shearMNum
void load(int argc, char *argv[])
void load(int argc, char *argv[])
const double realTime() const
const double processorTime() const
const double processorLoad() const
const double estimatedRemainder(double completeness)
Returns estimated time till finishing current task based on its current completeness [0....
acl::VectorOfElements dx(const TemplateVE &a)
differential operator
SPNumMethod generateBCZeroStress(SPElasticityCommonA nm, SPAbstractDataWithGhostNodes map)
Bondary condition set given values to displacement/velocity.
SPBCond generateBCConstantValue(SPAbstractDataWithGhostNodes d, double v, const std::vector< SlicesNames > &sl)
Bondary condition that puts fixed value in each point.
SPDistanceFunction generateDFCylinder(double r, const AVec< double > &l, const AVec< double > &c)
generates cylinder
SPDistanceFunction normalize(SPDistanceFunction a, double dx)
SPDistanceFunction generateDFCylinderInf(double r, const AVec< double > &l, const AVec< double > &c)
generates infinite cylinder
std::shared_ptr< DistanceFunction > SPDistanceFunction
const VectorTemplate & d3q19()
Vector template.
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
void initAll(std::vector< T * > &v)
void initData(SPAbstractData d, double a)
SPFDElasticityRelaxation generateFDElasticityRelax(SPDataWithGhostNodesACLData d, double bM, double sM, double dt, const VectorTemplate *vT)
void executeAll(std::vector< T * > &v)