cb-geo / mpm

CB-Geo High-Performance Material Point Method
https://www.cb-geo.com/research/mpm
Other
235 stars 82 forks source link

Kelvin-Voigt Boundary: Transferring P-Wave and S-Wave Material Properties to Nodes #712

Open cgeudeker opened 3 years ago

cgeudeker commented 3 years ago

Describe the feature Looking for some advice on how to properly transfer P-wave and S-wave material properties to nodes so they can be used for the Kelvin-Voigt boundary calculations.

Describe alternatives Current progress towards a solution: So far I've run with the assumption that the set of functions will only be run using materials that have these material properties defined. As such the nodal property is updated from the material information through particle.tcc by the following lines:

pwave_velocity = (this->material())->template property<double>(std::string("pwave_velocity"));
swave_velocity = (this->material())->template property<double>(std::string("swave_velocity"));
nodes_[i]->update_property(true, "pwave_velocity", pwave_velocity, this->material_id(), 1);
nodes_[i]->update_property(true, "swave_velocity", swave_velocity, this->material_id(), 1);

The primary issue I've run into with this approach thus far is when to assign initial values for these properties so that they can be updated. (Unless it was a syntax error I believe the properties can only be updated in particle.tcc meaning they would probably need to be initially assigned in node.tcc though I've been trying to reference domain_gradients but can't seem to find where that's initially assigned.

Additional context Below is a summary of some of the problems that I believe exist with regards to this aspect of the feature.

  1. Assigning wave properties to nodes for non-linear elastic materials
  1. Unnecessarily assigning these properties to the nodes