Program Listing for File UniformGravity.cc

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;
}

std::string
UniformGravityParams::dumpString(std::string_viewprefix,
constKarana::Core::Base::DumpOptions*/*options*/)const{
//std::stringresult;
//std::cout<<"JJJJJ<"<<prefix<<">KKK\n";
autoresult=std::format("{}g={}\n",prefix,km::dumpString(g));
returnresult;
}

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

}//namespaceKarana::Models