![]() |
|
#include <VCoupling.h>
Classes | |
struct | DPMVCoupledElement |
Public Types | |
typedef VolumeCoupledElement< OomphProblem::ELEMENT > | VELEMENT |
Public Member Functions | |
VolumeCoupling ()=default | |
VolumeCoupling (const double &wMin, const bool &flag) | |
void | computeExternalForces (BaseParticle *CI) override |
void | actionsAfterTimeStep () override |
void | solveVolumeCoupling (const double &width) |
void | solveVolumeCoupling () |
void | computeOneTimeStepForVCoupling (const unsigned &nstep) |
void | solveFirstHalfTimeStep () |
void | solveSecondHalfTimeStep () |
void | checkParticlesInFiniteElems () |
void | setNodalWeightOnCubicMesh () |
void | setNodalWeightByDistance () |
void | getProjectionAndProjected (const DPMVCoupledElement &coupled_elem, Vector< Vector< double >> &couplingMatrix, Vector< Vector< double >> &nodalDisplDPM) |
void | getProjectionMatrix (const DPMVCoupledElement &coupled_elem, Vector< Vector< double >> &couplingMatrix) |
void | computeCouplingForce () |
void | computeCouplingOnFEM () |
void | computeCouplingOnDPM () |
void | computeNodalCouplingForces (VELEMENT *&elem_pt, const unsigned &nnode, const unsigned &dim, const Vector< Vector< double >> &nodalDisplDPM, Vector< Vector< double >> &nodalCouplingForces) |
void | getBulkStiffness (VELEMENT *&elem_pt, Vector< Vector< double >> &bulkStiffness) |
void | getInvCoupledMassPerTime (const DPMVCoupledElement &elem, const Vector< Vector< double >> &couplingMatrix, const Vector< Vector< double >> &bulkStiffness, Vector< double > &invCMassPerTime) |
void | computeWeightOnParticles () |
void | setExplicit (const bool &flag) |
![]() | |
BaseCoupling ()=default | |
void | setName (std::string name) |
std::string | getName () const |
void | removeOldFiles () const |
void | writeEneTimeStep (std::ostream &os) const override |
void | writeEneHeader (std::ostream &os) const override |
void | solveOomph (int max_adapt=0) |
void | checkResidual () |
void | solveMercury (unsigned long nt) |
void | setCGWidth (const double &width) |
double | getCGWidth () |
bool | useCGMapping () |
CGFunctions::LucyXYZ | getCGFunction () |
Private Attributes | |
Vector< DPMVCoupledElement > | listOfDPMVCoupledElements_ |
double | weightMin_ = 0.0 |
bool | explicit_ = false |
typedef VolumeCoupledElement<OomphProblem::ELEMENT> VolumeCoupling::VELEMENT |
|
default |
References setExplicit(), and weightMin_.
|
inlineoverride |
Override actionsAfterTimeStep to reset vcoupling force
References a, f(), i, INFO, logger, n, and p.
Referenced by solveSecondHalfTimeStep().
|
inline |
References VolumeCoupling::DPMVCoupledElement::bulk_elem_pt, e(), BaseCoupling< M, O >::getCGWidth(), Vec3D::getX(), Vec3D::getY(), Vec3D::getZ(), Global_Physical_Variables::lenScale, VolumeCoupling::DPMVCoupledElement::listOfCoupledParticles, VolumeCoupling::DPMVCoupledElement::listOfCoupledParticlesExt, listOfDPMVCoupledElements_, VolumeCoupling::DPMVCoupledElement::listOfParticleCentersLoc, VolumeCoupling::DPMVCoupledElement::listOfShapesAtParticleCenters, max, min, n, s, BaseCoupling< M, O >::useCGMapping(), and plotDoE::x.
Referenced by computeOneTimeStepForVCoupling().
|
inline |
References computeNodalCouplingForces(), getProjectionAndProjected(), i, j, k, listOfDPMVCoupledElements_, MergeRestartFiles::nParticles, p, and BaseCoupling< M, O >::useCGMapping().
Referenced by computeOneTimeStepForVCoupling().
|
inline |
References listOfDPMVCoupledElements_, m, MergeRestartFiles::nParticles, and BaseCoupling< M, O >::useCGMapping().
Referenced by computeOneTimeStepForVCoupling().
|
inline |
References getBulkStiffness(), getProjectionMatrix(), Vec3D::getX(), Vec3D::getY(), Vec3D::getZ(), i, j, Global_Physical_Variables::lenScale, listOfDPMVCoupledElements_, m, MergeRestartFiles::nParticles, and BaseCoupling< M, O >::useCGMapping().
Referenced by computeOneTimeStepForVCoupling().
|
inlineoverride |
Override computeExternalForces to add the vcoupling forces
References BaseInteractable::addForce(), BaseParticle::getMass(), and BaseParticle::isFixed().
|
inline |
Referenced by computeCouplingForce().
|
inline |
References checkParticlesInFiniteElems(), computeCouplingForce(), computeCouplingOnDPM(), computeCouplingOnFEM(), computeWeightOnParticles(), explicit_, listOfDPMVCoupledElements_, setNodalWeightByDistance(), solve, solveFirstHalfTimeStep(), BaseCoupling< M, O >::solveMercury(), BaseCoupling< M, O >::solveOomph(), and solveSecondHalfTimeStep().
Referenced by solveVolumeCoupling().
|
inline |
References explicit_, i, Global_Physical_Variables::lenScale, listOfDPMVCoupledElements_, p, s, plotDoE::x, and MultiOpt::xc.
Referenced by computeOneTimeStepForVCoupling().
|
inline |
Referenced by computeCouplingOnFEM().
|
inline |
References VolumeCoupling::DPMVCoupledElement::listOfCoupledParticles, VolumeCoupling::DPMVCoupledElement::listOfCoupledParticlesExt, m, MergeRestartFiles::nParticles, Eigen::bfloat16_impl::pow(), Global_Physical_Variables::timeScale, and BaseCoupling< M, O >::useCGMapping().
|
inline |
References VolumeCoupling::DPMVCoupledElement::bulk_elem_pt, getProjectionMatrix(), Vec3D::getX(), Vec3D::getY(), Vec3D::getZ(), i, j, k, Global_Physical_Variables::lenScale, VolumeCoupling::DPMVCoupledElement::listOfCoupledParticles, VolumeCoupling::DPMVCoupledElement::listOfCoupledParticlesExt, m, MergeRestartFiles::nParticles, and BaseCoupling< M, O >::useCGMapping().
Referenced by computeCouplingForce().
|
inline |
References VolumeCoupling::DPMVCoupledElement::bulk_elem_pt, CGFunctions::Polynomial< Coordinates >::evaluateCGFunction(), BaseCoupling< M, O >::getCGFunction(), i, Global_Physical_Variables::lenScale, VolumeCoupling::DPMVCoupledElement::listOfCoupledParticles, VolumeCoupling::DPMVCoupledElement::listOfCoupledParticlesExt, VolumeCoupling::DPMVCoupledElement::listOfShapesAtParticleCenters, m, MergeRestartFiles::nParticles, s, CGCoordinates::XYZ::setXYZ(), oomph::OneDimLagrange::shape(), BaseCoupling< M, O >::useCGMapping(), w, and plotDoE::x.
Referenced by computeCouplingOnFEM(), and getProjectionAndProjected().
|
inline |
|
inline |
used in computeOneTimeStepForVCoupling (VolumeCoupling)
assign coupling weight to coupled solid nodes implicit volume coupling allows the minimal coupling weight to be very small e.g. double weightMin = 0.1 for the explicit volume coupling scheme
References listOfDPMVCoupledElements_, n, and weightMin_.
Referenced by computeOneTimeStepForVCoupling().
|
inline |
VolumeCoupling: setNodalWeightOnCubicMesh
References listOfDPMVCoupledElements_, n, and Eigen::bfloat16_impl::pow().
|
inline |
Used in OomphMercuryCoupling::computeOneTimeStepForVCoupling to do the actions before time step
References b, DEBUG, and logger.
Referenced by computeOneTimeStepForVCoupling().
|
inline |
Used in OomphMercuryCoupling::computeOneTimeStepForVCoupling to do the actions after time step
References actionsAfterTimeStep(), DEBUG, and logger.
Referenced by computeOneTimeStepForVCoupling().
|
inline |
References computeOneTimeStepForVCoupling().
Referenced by solveVolumeCoupling().
|
inline |
References BaseCoupling< M, O >::setCGWidth(), and solveVolumeCoupling().
|
private |
Referenced by computeOneTimeStepForVCoupling(), computeWeightOnParticles(), and setExplicit().
|
private |
|
private |
Referenced by setNodalWeightByDistance(), and VolumeCoupling().