diff options
Diffstat (limited to 'lib/core/c++')
| -rw-r--r-- | lib/core/c++/math/n_linear.hpp | 3 | ||||
| -rw-r--r-- | lib/core/c++/particle/particle.hpp | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/core/c++/math/n_linear.hpp b/lib/core/c++/math/n_linear.hpp index 8fb0600..b378440 100644 --- a/lib/core/c++/math/n_linear.hpp +++ b/lib/core/c++/math/n_linear.hpp @@ -122,6 +122,9 @@ auto n_linear_interpolate( } }, {}, ones_ind); + + /// TODO I need to actually calc stuff + return field.at({}); } template<typename FieldSchema, typename T> diff --git a/lib/core/c++/particle/particle.hpp b/lib/core/c++/particle/particle.hpp index 01429b2..5110893 100644 --- a/lib/core/c++/particle/particle.hpp +++ b/lib/core/c++/particle/particle.hpp @@ -55,6 +55,8 @@ template<typename T, uint64_t D, typename CollisionType = ParticleCollisionSpher using ParticleGroup = Struct< Member<Array<T,D>, "mask">, Member<FixedArray<Scalar<T>,1u>, "density">, + Member<Vector<T,D>, "center_of_mass">, + Member<Scalar<T>, "total_mass">, Member<Array<Particle<T,D>>, "particles"> >; } @@ -76,10 +78,20 @@ saw::data<sch::ParticleGroup<T,D, sch::ParticleCollisionSpheroid<T,radius>>> cre for(uint64_t i = 0u; i < D; ++i){ mask_dims.at({i}) = mask_resolution; } + saw::data<sch::Scalar<T>> mask_step; + saw::data<T> dia_d{radius*2}; + mask_step.at({}) = dia_d / mask_resolution.template cast_to<T>(); mask = {mask_dims}; + + auto& com = part.template get<"center_of_mass">(); + for(uint64_t i = 0u; i < D; ++i){ + com.at({{i}}) = {}; + } + saw::data<sch::UInt64> ele_ctr{0u}; iterator<D>::apply([&](const auto& index){ - + ++ele_ctr; + },{},mask_dims); return part; |
