public Matrix3D GetStrain(Symmetry symmetry, Matrix3D rotation, Matrix3D stress) { Matrix3D m1 = rotation.Transpose() * stress * rotation; Matrix3D m2 = GetStrain(symmetry, m1); Matrix3D m = rotation * m2 * rotation.Transpose(); return(m); }
public Matrix3D GetStrain(Symmetry symmetry, Matrix3D stress) { return(symmetry.CrystalSystemNumber switch { 0 => GetStrainTriclinic(stress), 1 => GetStrainTriclinic(stress), //tricrinic 2 => GetStrainOrthorhombic(stress), //mono 3 => GetStrainOrthorhombic(stress), //ortho 4 => GetStrainTriclinic(stress), //tetra 5 => GetStrainTrigonal(stress), //trigonal 6 => GetStrainTriclinic(stress), //hexa 7 => GetStrainCubic(stress), //cubic _ => new Matrix3D(), });
public Matrix3D GetStrain(Symmetry symmetry, Matrix3D stress) { switch (symmetry.CrystalSystemNumber) { case 0: return(GetStrainTriclinic(stress)); case 1: return(GetStrainTriclinic(stress)); //tricrinic case 2: return(GetStrainOrthorhombic(stress)); //mono case 3: return(GetStrainOrthorhombic(stress)); //ortho case 4: return(GetStrainTriclinic(stress)); //tetra case 5: return(GetStrainTrigonal(stress)); //trigonal case 6: return(GetStrainTriclinic(stress)); //hexa case 7: return(GetStrainCubic(stress)); //cubic } return(new Matrix3D()); }
public Matrix3D GetStrainByHill(Symmetry symmetry, Matrix3D rotation, Matrix3D stress, Matrix3D strain, double hillFactor) { return(hillFactor * GetStrain(symmetry, rotation, stress) + (1 - hillFactor) * strain); }