MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / update_3D

Method update_3D

tools/Assembler/Materials/ElementWiseOrthotropicMaterial.cpp:90–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

88}
89
90void ElementWiseOrthotropicMaterial::update_3D() {
91 const size_t num_voxels = m_material_mesh->get_num_voxels();
92 const VectorF& young_x = m_material_mesh->get_attribute(m_young_field_names[0]);
93 const VectorF& young_y = m_material_mesh->get_attribute(m_young_field_names[1]);
94 const VectorF& young_z = m_material_mesh->get_attribute(m_young_field_names[2]);
95 const VectorF& poisson_yz = m_material_mesh->get_attribute(m_poisson_field_names[0]);
96 const VectorF& poisson_zy = m_material_mesh->get_attribute(m_poisson_field_names[1]);
97 const VectorF& poisson_zx = m_material_mesh->get_attribute(m_poisson_field_names[2]);
98 const VectorF& poisson_xz = m_material_mesh->get_attribute(m_poisson_field_names[3]);
99 const VectorF& poisson_xy = m_material_mesh->get_attribute(m_poisson_field_names[4]);
100 const VectorF& poisson_yx = m_material_mesh->get_attribute(m_poisson_field_names[5]);
101 const VectorF& shear_yz = m_material_mesh->get_attribute(m_shear_field_names[0]);
102 const VectorF& shear_zx = m_material_mesh->get_attribute(m_shear_field_names[1]);
103 const VectorF& shear_xy = m_material_mesh->get_attribute(m_shear_field_names[2]);
104
105 assert(young_x.size() == num_voxels);
106 assert(young_y.size() == num_voxels);
107 assert(young_z.size() == num_voxels);
108 assert(poisson_yz.size() == num_voxels);
109 assert(poisson_zy.size() == num_voxels);
110 assert(poisson_zx.size() == num_voxels);
111 assert(poisson_xz.size() == num_voxels);
112 assert(poisson_xy.size() == num_voxels);
113 assert(poisson_yx.size() == num_voxels);
114 assert(shear_yz.size() == num_voxels);
115 assert(shear_zx.size() == num_voxels);
116 assert(shear_xy.size() == num_voxels);
117
118 m_materials.resize(num_voxels);
119 for (size_t i=0; i<num_voxels; i++) {
120 Vector3F elem_young(young_x[i], young_y[i], young_z[i]);
121 VectorF elem_poisson(6);
122 elem_poisson << poisson_yz[i], poisson_zy[i],
123 poisson_zx[i], poisson_xz[i],
124 poisson_xy[i], poisson_yx[i];
125 Vector3F elem_shear(shear_yz[i], shear_zx[i], shear_xy[i]);
126
127 m_materials[i] = Material::create_orthotropic(m_density,
128 elem_young, elem_poisson, elem_shear);
129 }
130}
131

Callers

nothing calls this directly

Calls 3

get_num_voxelsMethod · 0.45
get_attributeMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected