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