Program Listing for File UniformGravity.cc#
↰ Return to documentation for file (doxygen_docs/GeneralKModels/UniformGravity.cc)
#include"Karana/GeneralKModels/UniformGravity.h"
#include"Karana/KCore/Allocator.h"
#include"Karana/SOADyn/SubTree.h"
namespaceKarana::Models{
namespacekd=Karana::Dynamics;
UniformGravity::UniformGravity(std::string_viewname,
constkc::ks_ptr<kd::StatePropagator>&sp,
constkc::ks_ptr<kd::SubTree>&st)
:KModel<UniformGravity,UniformGravityParams>(name,sp)
,_st(st){
params=std::allocate_shared<UniformGravityParams>(kc::Allocator<UniformGravityParams>{},
std::format("{}_params",name));
};
kc::ks_ptr<UniformGravity>UniformGravity::create(std::string_viewname,
constkc::ks_ptr<kd::StatePropagator>&sp,
constkc::ks_ptr<kd::SubTree>&st){
kc::ks_ptr<UniformGravity>ug=
std::allocate_shared<UniformGravity>(kc::Allocator<UniformGravity>{},name,sp,st);
sp->registerModel(ug);
returnug;
}
voidUniformGravity::preDeriv(constkm::Ktime&,constkm::Vec&){
_st->setUniformGravAccel(params->g);
}
UniformGravityParams::UniformGravityParams(std::string_viewname)
:KModelParams(name){
km::uninitialize(g);
}
boolUniformGravityParams::isFinalized()const{
boolflag=true;
if(notkm::isInitialized(g)){
kc::warn("Parametergisuninitialized.");
flag=false;
}
returnflag;
}
//DestructorincludedforMacOSbuilds.Musthaveakey-functionout-of-linetoavoiddulpicate
//symbols.
UniformGravity::~UniformGravity(){};
}//namespaceKarana::Models