예제 #1
0
def AddDofs(model_part):

    for node in model_part.Nodes:

        # adding dofs for fluid solution
        node.AddDof(PRESSURE)
        node.AddDof(FRACT_VEL_X)
        node.AddDof(FRACT_VEL_Y)
        node.AddDof(FRACT_VEL_Z)
        node.AddDof(VELOCITY_X)
        node.AddDof(VELOCITY_Y)
        node.AddDof(VELOCITY_Z)

        # adding dofs for convecting the distance function
        node.AddDof(DISTANCE)


# node.AddDof(TEMPERATURE);
    monolithic_solver_eulerian.AddDofs(model_part)
    print("dofs for the levelset solver added correctly")
예제 #2
0
write_conditions = WriteConditionsFlag.WriteElementsOnly
gid_io = TwoFluidGidIO(input_file_name, gid_mode, multifile,
                       deformed_mesh_flag, write_conditions)
# gid_io = TwoFluidGidIO(input_file_name,gid_mode,multifile,deformed_mesh_flag, write_conditions)

model_part_io_fluid = ModelPartIO(input_file_name)
model_part_io_fluid.ReadModelPart(fluid_model_part)

# setting up the buffer size: SHOULD BE DONE AFTER READING!!!
fluid_model_part.SetBufferSize(3)

# adding dofs
if (SolverType == "FractionalStep"):
    incompressible_fluid_solver.AddDofs(fluid_model_part)
elif (SolverType == "monolithic_solver_eulerian"):
    monolithic_solver_eulerian.AddDofs(fluid_model_part)
elif (SolverType == "monolithic_solver_eulerian_compressible"):
    monolithic_solver_eulerian_compressible.AddDofs(fluid_model_part)
elif (SolverType == "monolithic_solver_lagrangian"):
    monolithic_solver_lagrangian_contact.AddDofs(fluid_model_part)

# check to ensure that no node has zero density or pressure
# for node in fluid_model_part.Nodes:
#    if((node.GetSolutionStepValue(DENSITY_WATER) == 0.0) and (node.GetSolutionStepValue(DENSITY_AIR) == 0.0)):
#        print "node ",node.Id," has zero density!"
#        raise 'node with zero density found'
#    if((node.GetSolutionStepValue(VISCOSITY_WATER) == 0.0) and (node.GetSolutionStepValue(VISCOSITY_AIR) == 0.0)):
#        print "node ",node.Id," has zero viscosity!"
#        raise 'node with zero VISCOSITY found'

mesh_name = 0.0
예제 #3
0
def AddDofs(model_part):
    monolithic_solver_eulerian.AddDofs(model_part)
    pureconvection_solver.AddDofs(model_part, distance_settings)
    thermal_solver.AddDofs(model_part, temperature_settings)

    print("variables for the convection diffusion solver added correctly")
예제 #4
0
# reading the fluid part
gid_mode = GiDPostMode.GiD_PostBinary
multifile = MultiFileFlag.SingleFile
deformed_mesh_flag = WriteDeformedMeshFlag.WriteUndeformed
write_conditions = WriteConditionsFlag.WriteElementsOnly
gid_io = GidIO(problem_name, gid_mode, multifile, deformed_mesh_flag,
               write_conditions)
model_part_io_fluid = ModelPartIO(problem_name)
model_part_io_fluid.ReadModelPart(fluid_model_part)

# setting up the buffer size: SHOULD BE DONE AFTER READING!!!
fluid_model_part.SetBufferSize(3)

# adding dofs
monolithic_solver.AddDofs(fluid_model_part)

# Solver initialization
fluid_solver = monolithic_solver.MonolithicSolver(fluid_model_part,
                                                  domain_size)
fluid_solver.rel_vel_tol = 1e-5  # default 1e-5
fluid_solver.abs_vel_tol = 1e-7  # default 1e-7
fluid_solver.rel_pres_tol = 1e-5
fluid_solver.abs_pres_tol = 1e-7
fluid_solver.dynamic_tau = dynamic_tau
fluid_solver.oss_switch = oss_switch
fluid_solver.Initialize()

# Initial and boundary conditions
for node in fluid_model_part.Nodes:
    if node.GetSolutionStepValue(FLAG_VARIABLE) == 1.0: