Program Listing for File Gravity.cc

Program Listing for File Gravity.cc#

Return to documentation for file (doxygen_docs/GeneralKModels/Gravity.cc)

#include"Karana/GeneralKModels/Gravity.h"
#include"Karana/KCore/Allocator.h"
#include"Karana/SOADyn/SubTree.h"


namespaceKarana::Models{

namespacekd=Karana::Dynamics;

Gravity::Gravity(std::string_viewname,
constkc::ks_ptr<kd::ModelManager>&mm,
constkc::ks_ptr<GravityInterface>gravity_interface,
constkc::ks_ptr<kd::SubTree>&st)
:KModel<Gravity>(name,mm)
,_st(st)
,_gravity_interface(gravity_interface){};

kc::ks_ptr<Gravity>Gravity::create(std::string_viewname,
constkc::ks_ptr<kd::ModelManager>&mm,
constkc::ks_ptr<GravityInterface>gravity_interface,
constkc::ks_ptr<kd::SubTree>&st){
kc::ks_ptr<Gravity>ug=std::allocate_shared<Gravity>(
kc::Allocator<Gravity>{},name,mm,gravity_interface,st);
mm->registerModel(ug);
returnug;
}

voidGravity::preDeriv(constkm::Ktime&t,constkm::Vec&){
//Computethegravity
_gravity_interface->computeGravity(t,OutputUpdateType::PRE_DERIV);

//Accumulatethegravity.Expectsthevaluetobeintheinertialframe,sincenoref_frame
//isspecified.
_st->accumUniformGravAccel(_gravity_interface->getGravity().g);
}

//DestructorincludedforMacOSbuilds.Musthaveakey-functionout-of-linetoavoiddulpicate
//symbols.
Gravity::~Gravity(){};

constkc::ks_ptr<GravityInterface>&Gravity::getGravityInterface()const{
return_gravity_interface;
}

boolGravity::isReady()const{return_gravity_interface->isReady();}

std::stringGravity::dumpString(std::string_viewprefix,
constBase::DumpOptions*options)const{
returnstd::format(
"{}{}GravityInterface:\n{}",
KModel::dumpString(prefix,options),
prefix,
_gravity_interface->dumpString(std::format("{}",prefix),options));
}

}//namespaceKarana::Models