def _apply_material_properties(self, mp):
        #define properties
        orthotropic_props = Matrix(4, 16)

        # Orthotropic mechanical moduli
        orthotropic_props[0, 0] = 0.5  #lamina thickness
        orthotropic_props[0, 1] = 0.0  #lamina rotation (deg)
        orthotropic_props[0, 2] = 7850  #density
        orthotropic_props[0, 3] = 7500  #E1
        orthotropic_props[0, 4] = 2000  #E2
        orthotropic_props[0, 5] = 0.25  #nu_12
        orthotropic_props[0, 6] = 1250  #G_12
        orthotropic_props[0, 7] = 625  #G_13
        orthotropic_props[0, 8] = 625  #G_23

        # Orthotropic mechanical strengths. (T)ensile, (C)ompression, (S)hear
        # along 1, 2, 3 lamina directions
        orthotropic_props[0, 9] = 800  #T1
        orthotropic_props[0, 10] = 500  #C1
        orthotropic_props[0, 11] = 40  #T2
        orthotropic_props[0, 12] = 300  #C2
        orthotropic_props[0, 13] = 60  #S12
        orthotropic_props[0, 14] = 60  #S13
        orthotropic_props[0, 15] = 60  #S23

        for row in range(1, 4):
            for col in range(16):
                orthotropic_props[row, col] = orthotropic_props[0, col]
        orthotropic_props[1, 1] = 90
        orthotropic_props[2, 1] = 90

        mp.GetProperties()[1].SetValue(
            KratosMultiphysics.StructuralMechanicsApplication.
            SHELL_ORTHOTROPIC_LAYERS, orthotropic_props)

        mp.GetProperties()[1].SetValue(KratosMultiphysics.THICKNESS, 2)
        mp.GetProperties()[1].SetValue(KratosMultiphysics.DENSITY, 2.5)

        g = [0, 0, 0]
        mp.GetProperties()[1].SetValue(KratosMultiphysics.VOLUME_ACCELERATION,
                                       g)

        cl = StructuralMechanicsApplication.LinearElasticOrthotropic2DLaw()

        mp.GetProperties()[1].SetValue(KratosMultiphysics.CONSTITUTIVE_LAW, cl)
Ejemplo n.º 2
0
    def _apply_orthotropic_shell_material_properties(self, mp):
        #define properties
        # we specify only the properties we need (others are youngs modulus etc)
        num_plies = 3
        orthotropic_props = KratosMultiphysics.Matrix(num_plies, 16)
        for row in range(num_plies):
            for col in range(16):
                orthotropic_props[row, col] = 0.0

        # Orthotropic mechanical moduli
        orthotropic_props[0, 0] = 0.005  # lamina thickness
        orthotropic_props[0, 2] = 2200  # density
        orthotropic_props[1, 0] = 0.01  # lamina thickness
        orthotropic_props[1, 2] = 1475  # density
        orthotropic_props[2, 0] = 0.015  # lamina thickness
        orthotropic_props[2, 2] = 520  # density

        mp.GetProperties()[1].SetValue(
            StructuralMechanicsApplication.SHELL_ORTHOTROPIC_LAYERS,
            orthotropic_props)

        cl = StructuralMechanicsApplication.LinearElasticOrthotropic2DLaw()

        mp.GetProperties()[1].SetValue(KratosMultiphysics.CONSTITUTIVE_LAW, cl)