Skip to content

[StructuralMechanicsApplication] Initialize elements in nodal concentrated elements tests #13468

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ def test_nodal_cog(self):
elem3.SetValue(KratosMultiphysics.NODAL_MASS,112.234)
elem4.SetValue(KratosMultiphysics.NODAL_MASS,78.234)

elem1.Initialize(mp.ProcessInfo)
elem2.Initialize(mp.ProcessInfo)
elem3.Initialize(mp.ProcessInfo)
elem4.Initialize(mp.ProcessInfo)

cog_process = StructuralMechanicsApplication.ComputeCenterOfGravityProcess(mp)
cog_process.Execute()
center_of_gravity = mp.ProcessInfo[StructuralMechanicsApplication.CENTER_OF_GRAVITY]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@ def test_nodal_moi(self):
elem3.SetValue(KratosMultiphysics.NODAL_MASS,112.234)
elem4.SetValue(KratosMultiphysics.NODAL_MASS,78.234)

elem1.Initialize(mp.ProcessInfo)
elem2.Initialize(mp.ProcessInfo)
elem3.Initialize(mp.ProcessInfo)
elem4.Initialize(mp.ProcessInfo)

p1 = KratosMultiphysics.Point(1.8, 0.0, 0.0)
p2 = KratosMultiphysics.Point(1.8, 2.0, 0.0)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ def _create_elements(self,mp):
mass_2 = mp.CreateNewElement("NodalConcentratedElement2D1N", 12, [6], mp.GetProperties()[0])
mass_1.SetValue(KratosMultiphysics.NODAL_MASS,250)
mass_2.SetValue(KratosMultiphysics.NODAL_MASS,500)

mass_1.Initialize(mp.ProcessInfo)
mass_2.Initialize(mp.ProcessInfo)

def _apply_material_properties(self,mp):
#define properties
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ def _base_fall_test_dynamic_schemes(self, current_model, scheme_name = "bossak",
element.SetValue(StructuralMechanicsApplication.NODAL_DISPLACEMENT_STIFFNESS, [0, stiffness,0])
gravity = -9.81
node.SetSolutionStepValue(KratosMultiphysics.VOLUME_ACCELERATION_Y,0,gravity)
element.Initialize(mp.ProcessInfo)

#time integration parameters
time = 0.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ def _create_2dof_geometry(self, current_model, stiffness, mass, damping=0):
node1.SetSolutionStepValue(StructuralMechanicsApplication.POINT_LOAD,0,[1,0,0])
mp.GetProperties()[1].SetValue(StructuralMechanicsApplication.SYSTEM_DAMPING_RATIO, damping)

mass1.Initialize(mp.ProcessInfo)
mass2.Initialize(mp.ProcessInfo)

return mp

def test_undamped_mdof_harmonic(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ def test_nodal_mass(self):
elem3.SetValue(KratosMultiphysics.NODAL_MASS, expected_elemental_masses_by_id[3])
elem4.SetValue(KratosMultiphysics.NODAL_MASS, expected_elemental_masses_by_id[4])

elem1.Initialize(mp.ProcessInfo)
elem2.Initialize(mp.ProcessInfo)
elem3.Initialize(mp.ProcessInfo)
elem4.Initialize(mp.ProcessInfo)

mass_process = StructuralMechanicsApplication.TotalStructuralMassProcess(mp)
mass_process.Execute()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,35 +70,36 @@ def _set_and_fill_buffer(self,mp,buffer_size,delta_time):

mp.ProcessInfo[KratosMultiphysics.IS_RESTARTED] = False


def test_nodal_damping(self):
current_model = KratosMultiphysics.Model()
mp = current_model.CreateModelPart("sdof")
mp.ProcessInfo[KratosMultiphysics.DOMAIN_SIZE] = 3
mp.CreateNewProperties(1)

self._add_variables(mp)

#create node
# Create node
node = mp.CreateNewNode(1,0.0,0.0,0.0)
_add_dofs(node)

#add bcs and initial values
# Add bcs and initial values
init_displacement = 0.1
init_velocity = 0.0
_set_dirichlet_bc(node,init_displacement,init_velocity)

#create element
# Create element
mass,stiffness,damping = _set_material_properties()
_create_element(mp,mass,stiffness,damping)


#time integration parameters
# Time integration parameters
dt = 0.005
time = 0.0
end_time = 5.0
step = 0

self._set_and_fill_buffer(mp,2,dt)

#parameters for analytical solution
# Parameters for analytical solution
omega_D,delta,theta,A = _return_parameters_analytical_solution(stiffness,mass,damping,init_displacement,init_velocity)

while(time <= end_time):
Expand All @@ -110,36 +111,36 @@ def test_nodal_damping(self):
current_analytical_displacement_y = A * cos(omega_D*time+theta) * exp(-delta*time)
self.assertAlmostEqual(node.GetSolutionStepValue(KratosMultiphysics.DISPLACEMENT_Y,0),current_analytical_displacement_y,delta=1e-3)


def test_nodal_damping_explicit(self):

current_model = KratosMultiphysics.Model()
mp = current_model.CreateModelPart("sdof")
mp.ProcessInfo[KratosMultiphysics.DOMAIN_SIZE] = 3
mp.CreateNewProperties(1)

self._add_variables(mp,explicit_dynamics=True)

#create node
# Create node
node = mp.CreateNewNode(1,0.0,0.0,0.0)
_add_dofs(node)

#add bcs and initial values
# Add bcs and initial values
init_displacement = 0.1
init_velocity = 0.0
_set_dirichlet_bc(node,init_displacement,init_velocity)

#create element
# Create element
mass,stiffness,damping = _set_material_properties()
_create_element(mp,mass,stiffness,damping)

#time integration parameters
# Time integration parameters
dt = 0.005
time = 0.0
end_time = 5.0
step = 0

self._set_and_fill_buffer(mp,2,dt)


#parameters for analytical solution
# Parameters for analytical solution
omega_D,delta,theta,A = _return_parameters_analytical_solution(stiffness,mass,damping,init_displacement,init_velocity)

strategy_expl = _create_dynamic_explicit_strategy(mp,'central_differences')
Expand All @@ -152,9 +153,6 @@ def test_nodal_damping_explicit(self):
current_analytical_displacement_y = A * cos(omega_D*time+theta) * exp(-delta*time)
self.assertAlmostEqual(node.GetSolutionStepValue(KratosMultiphysics.DISPLACEMENT_Y,0),current_analytical_displacement_y,delta=1e-3)




def _create_dynamic_explicit_strategy(mp,scheme_name):
if (scheme_name=='central_differences'):
scheme = StructuralMechanicsApplication.ExplicitCentralDifferencesScheme(0.00,0.00,0.00)
Expand All @@ -176,10 +174,12 @@ def _set_dirichlet_bc(node,init_displacement,init_velocity):
node.SetSolutionStepValue(KratosMultiphysics.DISPLACEMENT_Y,0,init_displacement)

def _create_element(mp,mass,stiffness,damping):
element = mp.CreateNewElement("NodalConcentratedDampedElement3D1N", 1, [1], None)
prop = mp.GetProperties()[1]
element = mp.CreateNewElement("NodalConcentratedElement3D1N", 1, [1], prop)
element.SetValue(KratosMultiphysics.NODAL_MASS,mass)
element.SetValue(StructuralMechanicsApplication.NODAL_DISPLACEMENT_STIFFNESS,[0,stiffness,0])
element.SetValue(StructuralMechanicsApplication.NODAL_DAMPING_RATIO,[0,damping,0])
element.Initialize(mp.ProcessInfo)

def _return_parameters_analytical_solution(stiffness,mass,damping,init_displacement,init_velocity):
omega = sqrt(stiffness/mass)
Expand All @@ -196,8 +196,5 @@ def _set_material_properties():
damping = 1.0
return mass,stiffness,damping




if __name__ == '__main__':
KratosUnittest.main()
Loading