29 class ExternalForces {
31 using Tscal = shambase::VecComponent<Tvec>;
32 static constexpr u32 dim = shambase::VectorProperties<Tvec>::dimension;
33 using Kernel = SPHKernel<Tscal>;
39 Config &solver_config;
42 ExternalForces(
ShamrockCtx &context, Config &solver_config, Storage &storage)
43 : context(context), solver_config(solver_config), storage(storage) {}
58 void point_mass_accrete_particles();
62 using EF_PointMass =
typename SolverConfigExtForce::PointMass;
63 using EF_PN_PW =
typename SolverConfigExtForce::PN_PW;
64 using EF_LenseThirring =
typename SolverConfigExtForce::LenseThirring;
65 using EF_ShearingBoxForce =
typename SolverConfigExtForce::ShearingBoxForce;
66 using EF_VerticalDiscPotential =
typename SolverConfigExtForce::VerticalDiscPotential;
67 using EF_VelocityDissipation =
typename SolverConfigExtForce::VelocityDissipation;
T & get_check_ref(const std::unique_ptr< T > &ptr, SourceLocation loc=SourceLocation())
Takes a std::unique_ptr and returns a reference to the object it holds. It throws a std::runtime_erro...