Skip to content

Commit

Permalink
Merge pull request #716 from Xiangyu-Hu/fix/delete_assign_material_fu…
Browse files Browse the repository at this point in the history
…nction

Fix/delete assign material function
  • Loading branch information
Xiangyu-Hu authored Jan 3, 2025
2 parents 658f3ae + b55f239 commit a2df28d
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ SolidBodyFromMesh::SolidBodyFromMesh(
{
defineAdaptationRatios(1.15, system.resolution_ref_ / resolution);
defineBodyLevelSetShape()->cleanLevelSet();
assignMaterial(material_model.get());
defineMaterial<SaintVenantKirchhoffSolid>(*material_model.get());
generateParticles<BaseParticles, Lattice>();
}

Expand Down
8 changes: 1 addition & 7 deletions src/shared/bodies/base_body.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,17 +138,11 @@ class SPHBody
return level_set_shape;
};

template <class MaterialType>
void assignMaterial(MaterialType *material)
{
base_material_ = material;
};

template <class MaterialType = BaseMaterial, typename... Args>
MaterialType *defineMaterial(Args &&...args)
{
MaterialType *material = base_material_ptr_keeper_.createPtr<MaterialType>(std::forward<Args>(args)...);
assignMaterial(material);
base_material_ = material;
return material;
};
//----------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ return_data beam_multi_resolution(double dp_factor, bool damping_on, int refinem
if (refinement_level > 0)
beam_body.defineAdaptation<ParticleRefinementWithinShape>(1.15, 1.0, refinement_level);
beam_body.defineBodyLevelSetShape()->cleanLevelSet(0);
beam_body.assignMaterial(material.get());
beam_body.defineMaterial<NeoHookeanSolid>(*material.get());
if (refinement_level > 0)
beam_body.generateParticles<BaseParticles, Lattice, Adaptive>(refinement_region);
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,19 +191,19 @@ void three_ring_impact(int resolution_factor_l, int resolution_factor_m, int res
// Body
SolidBody ring_l_body(system, makeShared<Ring>("RingLarge", center_l, 0.5 * diameter_inner_l, 0.5 * diameter_outer_l));
ring_l_body.defineBodyLevelSetShape();
ring_l_body.assignMaterial(material_l.get());
ring_l_body.defineMaterial<NeoHookeanSolid>(*material_l.get());
ring_l_body.generateParticles<BaseParticles, Lattice>();
auto particles_l = &ring_l_body.getBaseParticles();

SolidBody ring_m_body(system, makeShared<DefaultShape>("RingMedium"));
ring_m_body.defineAdaptationRatios(1.15, dp_l / dp_m);
ring_m_body.assignMaterial(material_m.get());
ring_m_body.defineMaterial<NeoHookeanSolid>(*material_m.get());
ring_m_body.generateParticles<SurfaceParticles, ShellRing>(center_m, 0.5 * mid_srf_diameter_m, dp_m, thickness_m);
auto particles_m = &ring_m_body.getBaseParticles();

SolidBody ring_s_body(system, makeShared<DefaultShape>("RingSmall"));
ring_s_body.defineAdaptationRatios(1.15, dp_l / dp_s);
ring_s_body.assignMaterial(material_s.get());
ring_s_body.defineMaterial<NeoHookeanSolid>(*material_s.get());
ring_s_body.generateParticles<SurfaceParticles, ShellRing>(center_s, 0.5 * mid_srf_diameter_s, dp_s, thickness_s);
auto particles_s = &ring_s_body.getBaseParticles();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ return_data beam_multi_resolution(Real dp_factor, bool damping_on, int refinemen
if (refinement_level > 0)
beam_body.defineAdaptation<ParticleRefinementWithinShape>(1.15, 1.0, refinement_level);
beam_body.defineBodyLevelSetShape()->cleanLevelSet(0);
beam_body.assignMaterial(material.get());
beam_body.defineMaterial<NeoHookeanSolid>(*material.get());
if (refinement_level > 0)
beam_body.generateParticles<BaseParticles, Lattice, Adaptive>(*refinement_region);
else
Expand Down
4 changes: 2 additions & 2 deletions tests/3d_examples/test_3d_sliding/test_3d_sliding.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,12 @@ void block_sliding(

// Create objects
SolidBody cube_body(system, mesh_cube);
cube_body.assignMaterial(material_cube.get());
cube_body.defineMaterial<SaintVenantKirchhoffSolid>(*material_cube.get());
cube_body.generateParticles<BaseParticles, Lattice>();

SolidBody slope_body(system, mesh_slope);
slope_body.defineAdaptationRatios(1.15, resolution_cube / resolution_slope);
slope_body.assignMaterial(material_cube.get());
slope_body.defineMaterial<SaintVenantKirchhoffSolid>(*material_cube.get());
slope_body.generateParticles<SurfaceParticles, Wall>(slope_translation, slope_length, slope_width, resolution_slope);

// Inner relation
Expand Down

0 comments on commit a2df28d

Please sign in to comment.