39 return P.getIndSpecies();
47 std::cout <<
"constructor" << std::endl;
60 size_t found = restart_file.find_last_of(
"/\\");
67 setName(
"ChuteWithPeriodicInflow");
73 double lengthPeriodicChute =
getXMax();
79 for (
int j = 1;
j < numRepetitions;
j++)
81 for (
int i = 0;
i <
N;
i++)
92 setXMax(numRepetitions * lengthPeriodicChute);
100 double widthPeriodicChute =
getYMax();
103 for (
int j = 1;
j < numRepetitionsInWidth;
j++)
105 for (
int i = 0;
i <
N;
i++)
114 setYMax(numRepetitionsInWidth * widthPeriodicChute);
129 static int count = 0, maxcount = 100;
130 if (count > maxcount)
159 (*it)->integrateBeforeForceComputation(
getTimeStep());
164 if ((*it)->getIndSpecies() == 0 && perw->
getDistance(**it) < 0)
183 static int count = -1;
187 std::cout <<
"Warning: Particle " << (*it)->getIndex() <<
" is left of xmin: x="
188 << (*it)->getPosition().X <<
", v_x=" << (*it)->getVelocity().X << std::endl;
234 std::cout <<
"t=" << std::setprecision(5) << std::left << std::setw(6) <<
getTime()
235 <<
", n=" << n1 <<
"(inflow:" << n0 <<
")"
236 <<
", speed= " << speed1 <<
"(" << speed0 <<
")"
337 std::cerr <<
"In computing internal forces between particle "<<PI->
getPosition()<<
" and "<<PJ->
getPosition()<<std::endl;
342 Mdouble interactionRadii_sum = PI->getInteractionRadius() + PJ->getInteractionRadius();
344 #ifdef DEBUG_OUTPUT_FULL
345 std::cerr <<
"Square of distance between " << dist_squared <<
" square sum of radii " << radii_sum*radii_sum <<std::endl;
349 if (dist_squared < (interactionRadii_sum * interactionRadii_sum))
375 CTangentialSpring* TangentialSpring = NULL;
378 if (pSpecies->getAdhesionForceType() != AdhesionForceType::NONE)
379 fdotn += computeShortRangeForceWithParticle(PI, PJ, PJreal, pSpecies, dist);
386 if (!pSpecies->getSlidingFrictionCoefficient())
399 if (pSpecies->getIsRestitutionCoefficientConstant())
404 if (pSpecies->getForceType() == ForceType::HERTZ_MINDLIN || pSpecies->getForceType() == ForceType::HERTZ_MINDLIN_DERESIEWICZ)
410 Mdouble kn = 4. / 3. * pSpecies->getStiffness() *
a;
411 fdotn += kn * deltan + pSpecies->getDissipation() * vdotn;
415 fdotn += pSpecies->getStiffness() * deltan + pSpecies->getDissipation() * vdotn;
420 if (pSpecies->getSlidingFrictionCoefficient() || pSpecies->getRollingFrictionCoefficient() || pSpecies->getTorsionFrictionCoefficient())
423 if (pSpecies->getSlidingStiffness() || pSpecies->getRollingStiffness() || pSpecies->getTorsionStiffness())
424 TangentialSpring = getTangentialSpring(PI, PJ, PJreal);
430 if (pSpecies->getSlidingFrictionCoefficient())
437 if (pSpecies->getSlidingStiffness())
448 if (pSpecies->getForceType() == ForceType::HERTZ_MINDLIN)
451 Mdouble kt = 8. * pSpecies->getSlidingStiffness() *
a;
452 TangentialSpring->SlidingForce += -kt * ddelta;
453 forcet = TangentialSpring->SlidingForce - pSpecies->getSlidingDissipation() * vrelt;
455 else if (pSpecies->getForceType() == ForceType::HERTZ_MINDLIN_DERESIEWICZ)
458 forcet = TangentialSpring->SlidingForce - pSpecies->getSlidingDissipation() * vrelt;
460 TangentialSpring->SlidingForce += -kt * ddelta;
461 forcet = TangentialSpring->SlidingForce - pSpecies->getSlidingDissipation() * vrelt;
465 forcet = (-pSpecies->getSlidingDissipation()) * vrelt - pSpecies->getSlidingStiffness() * (*delta);
472 double muact = (TangentialSpring->sliding) ? (pSpecies->getSlidingFrictionCoefficient()) : (pSpecies->getSlidingFrictionCoefficientStatic());
476 TangentialSpring->sliding =
false;
481 TangentialSpring->sliding =
true;
484 forcet *= pSpecies->getSlidingFrictionCoefficient() * norm_fn / norm_forcet;
485 TangentialSpring->SlidingForce = forcet + pSpecies->getSlidingDissipation() * vrelt;
486 (*delta) = TangentialSpring->SlidingForce / (-pSpecies->getSlidingStiffness());
498 if (vdott * pSpecies->getSlidingDissipation() <= pSpecies->getSlidingFrictionCoefficientStatic() * norm_fn)
500 forcet = -pSpecies->getSlidingDissipation() * vrelt;
505 forcet = -(pSpecies->getSlidingFrictionCoefficient() * norm_fn / vdott) * vrelt;
513 if (pSpecies->getRollingFrictionCoefficient())
518 Mdouble reducedRadiusIJ = 2.0 * reducedRadiusI * reducedRadiusJ / (reducedRadiusI + reducedRadiusJ);
520 if (pSpecies->getRollingStiffness())
522 Vec3D* RollingSpring = &(TangentialSpring->RollingSpring);
528 forcerolling = (-pSpecies->getRollingDissipation()) * vrolling - pSpecies->getRollingStiffness() * (*RollingSpring);
534 double muact = (TangentialSpring->slidingRolling) ? (pSpecies->getRollingFrictionCoefficient()) : (pSpecies->getRollingFrictionCoefficientStatic());
538 TangentialSpring->slidingRolling =
false;
543 TangentialSpring->slidingRolling =
true;
544 forcerolling *= pSpecies->getRollingFrictionCoefficient() * norm_fn /
sqrt(forcerolling2);
545 (*RollingSpring) = (forcerolling + pSpecies->getRollingDissipation() * vrolling) / (-pSpecies->getRollingStiffness());
556 if (pSpecies->getTorsionFrictionCoefficient())
561 if (pSpecies->getTorsionStiffness())
565 Vec3D* TorsionSpring = &(TangentialSpring->TorsionSpring);
571 forcetorsion = (-pSpecies->getTorsionDissipation()) * vtorsion - pSpecies->getTorsionStiffness() * (*TorsionSpring);
577 double muact = (TangentialSpring->slidingTorsion) ? (pSpecies->getTorsionFrictionCoefficient()) : (pSpecies->getTorsionFrictionCoefficientStatic());
581 TangentialSpring->slidingTorsion =
false;
586 TangentialSpring->slidingTorsion =
true;
588 forcetorsion *= pSpecies->getTorsionFrictionCoefficient() * norm_fn /
sqrt(forcetorsion2);
589 (*TorsionSpring) = (forcetorsion + pSpecies->getTorsionDissipation() * vtorsion) / (-pSpecies->getTorsionStiffness());
593 Vec3D torque = RadiusIJ * forcetorsion;
603 if (pSpecies->getForceType() == ForceType::HERTZ)
659 if (pSpecies->getSlidingFrictionCoefficient())
688 if (
eneFile.getSaveCurrentTimeStep())
691 addElasticEnergy(0.5 * (pSpecies->getStiffness() *
mathsFunc::square(deltan) + (TangentialSpring ? (pSpecies->getSlidingStiffness() * TangentialSpring->delta.getLengthSquared() + pSpecies->getRollingStiffness() * TangentialSpring->RollingSpring.getLengthSquared() + pSpecies->getTorsionStiffness() * TangentialSpring->TorsionSpring.getLengthSquared()) : 0.0)));
693 addElasticEnergy(0.25 * (pSpecies->getStiffness() *
mathsFunc::square(deltan) + (TangentialSpring ? (pSpecies->getSlidingStiffness() * TangentialSpring->delta.getLengthSquared() + pSpecies->getRollingStiffness() * TangentialSpring->RollingSpring.getLengthSquared() + pSpecies->getTorsionStiffness() * TangentialSpring->TorsionSpring.getLengthSquared()) : 0.0)));
695 if (
fStatFile.getSaveCurrentTimeStep() ||
statFile.getSaveCurrentTimeStep() || getDoCGAlways())
699 Mdouble deltat_norm = TangentialSpring ? (-TangentialSpring->delta.getLength()) : 0.0;
711 if (
statFile.getSaveCurrentTimeStep() || getDoCGAlways())
714 fStatFile.
getFstream() <<
getTime() <<
" " << PJreal->
getIndex() <<
" " << PI->
getIndex() <<
" " << centre <<
" " << radii_sum - dist <<
" " << deltat_norm <<
" " << fdotn <<
" " << fdott <<
" " << -
normal <<
" " << -(fdott ? forcet / fdott : forcet) << std::endl;
716 if (!PJreal->
isFixed() && !isPeriodic)
718 if (
statFile.getSaveCurrentTimeStep() || getDoCGAlways())
721 fStatFile.
getFstream() <<
getTime() <<
" " << PI->
getIndex() <<
" " << PJreal->
getIndex() <<
" " << centre <<
" " << radii_sum - dist <<
" " << deltat_norm <<
" " << fdotn <<
" " << fdott <<
" " <<
normal <<
" " << (fdott ? forcet / fdott : forcet) << std::endl;
759 std::ofstream script_file;
761 script_file.open((
file_name.str()).c_str());
764 script_file <<
"#!/bin/bash" << std::endl;
765 script_file <<
"x=$(echo $0 | cut -c2-)" << std::endl;
766 script_file <<
"file=$PWD$x" << std::endl;
767 script_file <<
"dirname=`dirname \"$file\"`" << std::endl;
768 script_file <<
"cd $dirname" << std::endl;
773 int width = 1570,
height = 860;
775 if (ratio > width /
height)
807 script_file <<
"../xballs -format " <<
format
810 <<
" -w " << width + 140
813 <<
" -cmax -scala 4 -sort -oh 50 "
824 chmod((
file_name.str().c_str()),S_IRWXU);
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
@ R
Definition: StatisticsVector.h:21
virtual unsigned int getNumberOfObjects() const
Gets the number of real Object in this BaseHandler. (i.e. no mpi or periodic particles)
Definition: BaseHandler.h:656
void setStorageCapacity(const unsigned int N)
Sets the storage capacity of this BaseHandler.
Definition: BaseHandler.h:677
const std::vector< T * >::const_iterator begin() const
Gets the begin of the const_iterator over all Object in this BaseHandler.
Definition: BaseHandler.h:698
std::enable_if<!std::is_pointer< U >::value, U * >::type copyAndAddObject(const U &object)
Creates a copy of a Object and adds it to the BaseHandler.
Definition: BaseHandler.h:360
unsigned int getStorageCapacity() const
Gets the storage capacity of this BaseHandler.
Definition: BaseHandler.h:670
const std::vector< T * >::const_iterator end() const
Gets the end of the const_iterator over all BaseBoundary in this BaseHandler.
Definition: BaseHandler.h:712
T * getObject(const unsigned int id)
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:621
T * getLastObject()
Gets a pointer to the last Object in this BaseHandler.
Definition: BaseHandler.h:642
const Quaternion & getOrientation() const
Returns the orientation of this BaseInteractable.
Definition: BaseInteractable.h:209
virtual const Vec3D & getAngularVelocity() const
Returns the angular velocity of this interactable.
Definition: BaseInteractable.cc:319
void addTorque(const Vec3D &addTorque)
Adds an amount to the torque on this BaseInteractable.
Definition: BaseInteractable.cc:110
virtual const Vec3D & getVelocity() const
Returns the velocity of this interactable.
Definition: BaseInteractable.cc:307
virtual void move(const Vec3D &move)
Moves this BaseInteractable by adding an amount to the position.
Definition: BaseInteractable.cc:193
const Vec3D & getPosition() const
Returns the position of this BaseInteractable.
Definition: BaseInteractable.h:197
void addForce(const Vec3D &addForce)
Adds an amount to the force on this BaseInteractable.
Definition: BaseInteractable.cc:94
unsigned int getIndSpecies() const
Returns the index of the species associated with the interactable object.
Definition: BaseInteractable.h:67
unsigned int getIndex() const
Returns the index of the object in the handler.
Definition: BaseObject.h:97
Definition: BaseParticle.h:33
bool isFixed() const override
Is fixed Particle function. It returns whether a Particle is fixed or not, by checking its inverse Ma...
Definition: BaseParticle.h:72
void setPeriodicFromParticle(BaseParticle *p)
Assigns the pointer to the 'original' particle this one's a periodic copy of (used in periodic bounda...
Definition: BaseParticle.h:416
Mdouble getRadius() const
Returns the particle's radius.
Definition: BaseParticle.h:331
Mdouble getMass() const
Returns the particle's mass.
Definition: BaseParticle.h:305
virtual BaseParticle * copy() const =0
Particle copy method. It calls to copy constructor of this Particle, useful for polymorphism.
BaseParticle * getPeriodicFromParticle() const
Returns the 'original' particle this one's a periodic copy of.
Definition: BaseParticle.h:324
virtual void setSpecies(const ParticleSpecies *species)
Definition: BaseParticle.cc:798
BaseSpecies is the class from which all other species are derived.
Definition: BaseSpecies.h:29
Particles of a single Species.
Definition: ChuteWithPeriodicInflow.h:17
void set_PeriodicBoxNSpecies(int new_)
Definition: ChuteWithPeriodicInflow.h:862
void set_PeriodicBoxLength(double new_)
Definition: ChuteWithPeriodicInflow.h:854
void integrateBeforeForceComputation()
Update particles' and walls' positions and velocities before force computation.
Definition: ChuteWithPeriodicInflow.h:155
int Check_and_Duplicate_Periodic_Particle(BaseParticle *i, int nWallPeriodic)
Definition: ChuteWithPeriodicInflow.h:727
void ExtendInWidth(int numRepetitionsInWidth)
Definition: ChuteWithPeriodicInflow.h:96
void computeInternalForces(BaseParticle *P1, BaseParticle *P2)
Definition: ChuteWithPeriodicInflow.h:244
void setupInitialConditions() override
Do not add bottom.
Definition: ChuteWithPeriodicInflow.h:151
double getInfo(const BaseParticle &P) const override
A virtual function that returns some user-specified information about a particle.
Definition: ChuteWithPeriodicInflow.h:37
void actionsBeforeTimeStep() override
Do not add, only remove particles.
Definition: ChuteWithPeriodicInflow.h:120
void writeXBallsScript() const
This writes a script which can be used to load the xballs problem to display the data just generated.
Definition: ChuteWithPeriodicInflow.h:755
bool FillChute
Definition: ChuteWithPeriodicInflow.h:880
void outputXBallsDataParticlee(const unsigned int i, const unsigned int format, std::ostream &os) const
Definition: ChuteWithPeriodicInflow.h:828
double PeriodicBoxLength
stores the length of the periodic box
Definition: ChuteWithPeriodicInflow.h:876
SphericalParticle inflowParticle_
Definition: ChuteWithPeriodicInflow.h:872
ChuteWithPeriodicInflow(std::string restart_file, int numRepetitions, int numRepetitionsInWidth)
Definition: ChuteWithPeriodicInflow.h:30
void printTime() const override
add some particular output
Definition: ChuteWithPeriodicInflow.h:205
void AddContinuingBottom(int numRepetitions)
Definition: ChuteWithPeriodicInflow.h:70
bool InPeriodicBox(BaseParticle *P)
Definition: ChuteWithPeriodicInflow.h:867
ChuteWithPeriodicInflow(std::string restart_file, int numRepetitions)
Definition: ChuteWithPeriodicInflow.h:24
double get_PeriodicBoxLength()
Definition: ChuteWithPeriodicInflow.h:850
int PeriodicBoxNSpecies
stores the number of species in the periodic box
Definition: ChuteWithPeriodicInflow.h:878
ChuteWithPeriodicInflow(std::string restart_file)
Definition: ChuteWithPeriodicInflow.h:19
void cleanChute()
Remove particles if they fall below a certain height (allows them to become supercritical)
Definition: ChuteWithPeriodicInflow.h:126
int get_PeriodicBoxNSpecies()
Definition: ChuteWithPeriodicInflow.h:858
void loadPeriodicBox(std::string const restart_file)
loads periodic chute data from restart file
Definition: ChuteWithPeriodicInflow.h:43
Creates chutes with different bottoms. Inherits from Mercury3D (-> MercuryBase -> DPMBase).
Definition: Chute.h:44
Mdouble getMaxInflowParticleRadius() const
Returns the maximum radius of inflow particles.
Definition: Chute.cc:926
bool getIsPeriodic() const
Returns whether the chute is periodic in Y.
Definition: Chute.cc:621
int getXBallsColourMode() const
Get the xballs colour mode (CMode).
Definition: DPMBase.cc:1301
Mdouble getXMin() const
If the length of the problem domain in x-direction is XMax - XMin, then getXMin() returns XMin.
Definition: DPMBase.h:603
Mdouble getXMax() const
If the length of the problem domain in x-direction is XMax - XMin, then getXMax() returns XMax.
Definition: DPMBase.h:610
File eneFile
An instance of class File to handle in- and output into a .ene file.
Definition: DPMBase.h:1494
SpeciesHandler speciesHandler
A handler to that stores the species type i.e. LinearViscoelasticSpecies, etc.
Definition: DPMBase.h:1433
double getXBallsVectorScale() const
Returns the scale of vectors used in xballs.
Definition: DPMBase.cc:1321
File fStatFile
An instance of class File to handle in- and output into a .fstat file.
Definition: DPMBase.h:1489
Mdouble getYMin() const
If the length of the problem domain in y-direction is YMax - YMin, then getYMin() returns YMin.
Definition: DPMBase.h:616
void setName(const std::string &name)
Allows to set the name of all the files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:400
Mdouble getTimeStep() const
Returns the simulation time step.
Definition: DPMBase.cc:1241
const std::string & getName() const
Returns the name of the file. Does not allow to change it though.
Definition: DPMBase.cc:377
Mdouble getTime() const
Returns the current simulation time.
Definition: DPMBase.cc:799
std::string getXBallsAdditionalArguments() const
Returns the additional arguments for xballs.
Definition: DPMBase.cc:1346
File dataFile
An instance of class File to handle in- and output into a .data file.
Definition: DPMBase.h:1484
void setYMax(Mdouble newYMax)
Sets the value of YMax, the upper bound of the problem domain in the y-direction.
Definition: DPMBase.cc:1182
void setRestarted(bool newRestartedFlag)
Allows to set the flag stating if the simulation is to be restarted or not.
Definition: DPMBase.cc:1492
BoundaryHandler boundaryHandler
An object of the class BoundaryHandler which concerns insertion and deletion of particles into or fro...
Definition: DPMBase.h:1458
void gatherContactStatistics()
Definition: DPMBase.cc:1887
void setXMax(Mdouble newXMax)
Sets the value of XMax, the upper bound of the problem domain in the x-direction.
Definition: DPMBase.cc:1156
ParticleHandler particleHandler
An object of the class ParticleHandler, contains the pointers to all the particles created.
Definition: DPMBase.h:1443
double getXBallsScale() const
Returns the scale of the view in xballs.
Definition: DPMBase.cc:1363
Mdouble getYMax() const
If the length of the problem domain in y-direction is YMax - YMin, then getYMax() returns XMax.
Definition: DPMBase.h:622
File statFile
An instance of class File to handle in- and output into a .stat file.
Definition: DPMBase.h:1504
unsigned int getSystemDimensions() const
Returns the system dimensionality.
Definition: DPMBase.cc:1421
Mdouble getZMax() const
If the length of the problem domain in z-direction is ZMax - ZMin, then getZMax() returns ZMax.
Definition: DPMBase.h:634
Mdouble getZMin() const
If the length of the problem domain in z-direction is ZMax - ZMin, then getZMin() returns ZMin.
Definition: DPMBase.h:628
bool readRestartFile(ReadOptions opt=ReadOptions::ReadAll)
Reads all the particle data corresponding to a given, existing . restart file (for more details regar...
Definition: DPMBase.cc:3043
std::fstream & getFstream()
Allows to access the member variable File::fstream_.
Definition: File.cc:131
const std::string getFullName() const
Also allows to access the file name, however with additional information which is the file counter,...
Definition: File.cc:148
unsigned int getSaveCount() const
Gets File::saveCount_.
Definition: File.cc:233
void hGridUpdateParticle(BaseParticle *obj) override
Updates the cell (not the level) of a BaseParticle.
Definition: Mercury3D.cc:340
void hGridRemoveParticle(BaseParticle *obj) override
Removes a BaseParticle from the HGrid.
Definition: Mercury3D.cc:401
bool getHGridUpdateEachTimeStep() const final
Gets whether or not the HGrid is updated every time step.
Definition: MercuryBase.cc:163
void addObject(BaseParticle *P) override
Adds a BaseParticle to the ParticleHandler.
Definition: ParticleHandler.cc:150
void removeObject(unsigned int index) override
Removes a BaseParticle from the ParticleHandler.
Definition: ParticleHandler.cc:388
unsigned int getNumberOfObjects() const override
Returns the number of objects in the container. In parallel code this practice is forbidden to avoid ...
Definition: ParticleHandler.cc:1323
BaseParticle * getLargestParticle() const
Returns the pointer of the largest particle in the particle handler. When mercury is running in paral...
Definition: ParticleHandler.cc:528
Definition: ParticleSpecies.h:16
Defines a pair of periodic walls. Inherits from BaseBoundary.
Definition: PeriodicBoundary.h:20
Mdouble getDistance(const BaseParticle &p) const override
Returns the distance of the edge to the particle.
Definition: PeriodicBoundary.cc:176
virtual void shiftPosition(BaseParticle *p) const override
shifts the particle
Definition: PeriodicBoundary.cc:198
virtual bool isClosestToLeftBoundary(const BaseParticle &p) const
Returns TRUE if particle checked is closest to the 'left' edge, and FALSE if it is closest to the 'ri...
Definition: PeriodicBoundary.cc:254
void set(Vec3D normal, Mdouble distanceLeft, Mdouble distanceRight)
Defines a PeriodicBoundary by its normal and positions.
Definition: PeriodicBoundary.cc:63
std::enable_if<!std::is_pointer< typename U::MixedSpeciesType >::value, typename U::MixedSpeciesType * >::type getMixedObject(const U *S, const U *T)
Definition: SpeciesHandler.h:52
Contains material and contact force properties.
Definition: Species.h:14
A spherical particle is the most simple particle used in MercuryDPM.
Definition: SphericalParticle.h:16
Definition: Kernel/Math/Vector.h:30
Mdouble Y
Definition: Kernel/Math/Vector.h:45
Mdouble Z
Definition: Kernel/Math/Vector.h:45
static Mdouble getLengthSquared(const Vec3D &a)
Calculates the squared length of a Vec3D: .
Definition: Kernel/Math/Vector.h:324
static Vec3D cross(const Vec3D &a, const Vec3D &b)
Calculates the cross product of two Vec3D: .
Definition: Vector.cc:143
Mdouble X
the vector components
Definition: Kernel/Math/Vector.h:45
static Mdouble getLength(const Vec3D &a)
Calculates the length of a Vec3D: .
Definition: Vector.cc:350
static Mdouble getDistanceSquared(const Vec3D &a, const Vec3D &b)
Calculates the squared distance between two Vec3D: .
Definition: Kernel/Math/Vector.h:303
void setZero()
Sets all elements to zero.
Definition: Vector.cc:23
static Mdouble dot(const Vec3D &a, const Vec3D &b)
Calculates the dot product of two Vec3D: .
Definition: Vector.cc:56
Mdouble getLength() const
Calculates the length of this Vec3D: .
Definition: Vector.cc:339
Definition: matrices.h:74
@ N
Definition: constructor.cpp:22
#define max(a, b)
Definition: datatypes.h:23
const Scalar * a
Definition: level2_cplx_impl.h:32
char char char int int * k
Definition: level2_impl.h:374
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77
double height(const double &x)
Height of domain.
Definition: simple_spine_channel.cc:429
bool found
Definition: MergeRestartFiles.py:24
int delta
Definition: MultiOpt.py:96
string file_name
Definition: Particles2023AnalysisHung.py:321
void normal(const Vector< double > &x, Vector< double > &normal)
Definition: free_surface_rotation.cc:65
Real fabs(const Real &a)
Definition: boostmultiprec.cpp:117
T square(const T val)
squares a number
Definition: ExtendedMath.h:86
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
void cross(const Vector< double > &A, const Vector< double > &B, Vector< double > &C)
Definition: oomph-lib/src/generic/Vector.h:319
std::string format(const std::string &str, const std::vector< std::string > &find, const std::vector< std::string > &replace)
Definition: openglsupport.cpp:217
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2