| 88 | } |
| 89 | |
| 90 | void 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 |
nothing calls this directly
no test coverage detected