Skip to content
Snippets Groups Projects
oofem_classes.py 2.52 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    """
    This is an empty docstring.
    """
    
    import numpy as np
    
    class Force:
    
        def __init__(self, components):
            self.components = np.array(components, dtype='float64')
    
        def get_component(self, c_component):
            return self.components[c_component]
    
        def print(self):
            print('{}'.format(self.components))
    
    
    class Constraint:
    
        def __init__(self, free):
            self.free = free
    
        def is_free(self, c_component):
            return self.free[c_component]
    
        def print(self):
            print('{}'.format(self.free))
    
    
    class Node:
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
        def __init__(self, position):
            self.position = np.array(position, dtype='float64')
            self.displacement = np.array((3, 1), dtype='float64')
            self.constraint = Constraint()
            self.force = Force()
            self.dof_numbers = np.array((3, 1), dtype='float64')
    
        def get_position(self):
            return self.position
    
        def get_displacement(self):
            return self.displacement
    
        def set_displacement(self, new_displacement):
            self.displacement = new_displacement
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
        def set_constraint(self, new_constraint):
            self.constraint = new_constraint
    
        def get_constraint(self, c_component):
            return self.constraint
    
        def set_force(self, new_force):
            self.force = new_force
    
        def get_force(self):
            return self.force
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
        def enumerate_dofs(self, start):
            current_dof = start
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
            if not self.constraint:
                self.dof_numbers = [current_dof, current_dof+1, current_dof+2]
    
            else:
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
                for i in range(2):
                    if not self.constraint.is_free(i):
                        self.dof_numbers[i] = -1
                    else:
                        self.dof_numbers[i] = current_dof
                        current_dof = current_dof + 1
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
            return current_dof
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
        def get_dof_numbers(self):
            return self.dof_numbers
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
        def print(self):
            print('{}'.format(self.position))
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    class Element:
        """
        """
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
        def __init__(self, elastic_modulus, area, node_1, node_2):
            self.elastic_modulus = elastic_modulus
            self. area = area
            self.node_1 = node_1
            self.node_2 = node_2
            self.dof_numbers = np.array((6, 1), dtype='float64')
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
    
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
        def compute_stiffness_matrix(self):
    
    Ernesto Oquelis's avatar
    Ernesto Oquelis committed
            K = np.array((6,6), dtype='float64')
            diff = np.array((3,1), dtype='float64')
            component_1 = np.array((3,3), dtype='float64')
            component_2 = np.array((3,3), dtype='float64')
    
            diff = self.node_2.get_position() - self.node_1.get_position()
            component_1 =