Skip to content
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

Updating Python scripts #108

Merged
merged 2 commits into from
Jul 17, 2017
Merged
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
85 changes: 44 additions & 41 deletions kratos.gid/apps/EmbeddedFluid/python/KratosFluid.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@
ProjectParameters = Parameters( parameter_file.read())

## Get echo level and parallel type
verbosity = ProjectParameters["problem_data"]["echo_level"].GetInt()
echo_level = ProjectParameters["problem_data"]["echo_level"].GetInt()
parallel_type = ProjectParameters["problem_data"]["parallel_type"].GetString()

## Import KratosMPI if needed
if (parallel_type == "MPI"):
import KratosMultiphysics.mpi as KratosMPI
from KratosMultiphysics.mpi import *
from KratosMultiphysics.MetisApplication import *
from KratosMultiphysics.TrilinosApplication import *

## Fluid model part definition
main_model_part = ModelPart(ProjectParameters["problem_data"]["model_part_name"].GetString())
Expand All @@ -38,20 +40,22 @@
solver.AddDofs()

## Initialize GiD I/O
if (parallel_type == "OpenMP"):
from gid_output_process import GiDOutputProcess
gid_output = GiDOutputProcess(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])
elif (parallel_type == "MPI"):
from gid_output_process_mpi import GiDOutputProcessMPI
gid_output = GiDOutputProcessMPI(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])

gid_output.ExecuteInitialize()

## Creation of Kratos model
output_post = ProjectParameters.Has("output_configuration")
if (output_post == True):
if (parallel_type == "OpenMP"):
from gid_output_process import GiDOutputProcess
gid_output = GiDOutputProcess(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])
elif (parallel_type == "MPI"):
from gid_output_process_mpi import GiDOutputProcessMPI
gid_output = GiDOutputProcessMPI(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])

gid_output.ExecuteInitialize()

## Creation of Kratos model (build sub_model_parts or submeshes)
FluidModel = Model()
FluidModel.AddModelPart(main_model_part)

Expand All @@ -76,11 +80,12 @@
FluidModel.AddModelPart(main_model_part.GetSubModelPart(gravity_part_name))

## Print model_part and properties
if(verbosity > 1):
print("")
print(main_model_part)
for properties in main_model_part.Properties:
print(properties)
if(echo_level > 1):
if (parallel_type == "OpenMP") or (mpi.rank == 0):
print("")
print(main_model_part)
for properties in main_model_part.Properties:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we want to print this? is it for debug purposes?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably we can remove this one, or maybe print it when echo_level is larger than one (as is done with other print statements).

print(properties)

## Processes construction
import process_factory
Expand All @@ -92,9 +97,10 @@
list_of_processes += process_factory.KratosProcessFactory(FluidModel).ConstructListOfProcesses( ProjectParameters["boundary_conditions_process_list"] )
list_of_processes += process_factory.KratosProcessFactory(FluidModel).ConstructListOfProcesses( ProjectParameters["auxiliar_process_list"] )

if(verbosity > 1):
for process in list_of_processes:
print(process)
if(echo_level > 1):
if (parallel_type == "OpenMP") or (mpi.rank == 0):
for process in list_of_processes:
print(process)

## Processes initialization
for process in list_of_processes:
Expand All @@ -103,67 +109,64 @@
## Solver initialization
solver.Initialize()

#TODO: think if there is a better way to do this
fluid_model_part = solver.GetComputingModelPart()

## Stepping and time settings
# Dt = ProjectParameters["problem_data"]["time_step"].GetDouble()
# delta_time = ProjectParameters["problem_data"]["time_step"].GetDouble()
start_time = ProjectParameters["problem_data"]["start_time"].GetDouble()
end_time = ProjectParameters["problem_data"]["end_time"].GetDouble()

time = start_time
step = 0
out = 0.0

gid_output.ExecuteBeforeSolutionLoop()
if (output_post == True):
gid_output.ExecuteBeforeSolutionLoop()

for process in list_of_processes:
process.ExecuteBeforeSolutionLoop()

## Writing the full ProjectParameters file before solving
if ((parallel_type == "OpenMP") or (KratosMPI.mpi.rank == 0)) and (verbosity > 0):
if ((parallel_type == "OpenMP") or (mpi.rank == 0)) and (echo_level > 0):
f = open("ProjectParametersOutput.json", 'w')
f.write(ProjectParameters.PrettyPrintJsonString())
f.close()

while(time <= end_time):

Dt = solver.ComputeDeltaTime()
delta_time = solver.ComputeDeltaTime()
step += 1
time = time + Dt
time = time + delta_time
main_model_part.CloneTimeStep(time)

if (parallel_type == "OpenMP") or (KratosMPI.mpi.rank == 0):
if (parallel_type == "OpenMP") or (mpi.rank == 0):
print("")
print("STEP = ", step)
print("TIME = ", time)

for process in list_of_processes:
process.ExecuteInitializeSolutionStep()

gid_output.ExecuteInitializeSolutionStep()
if (output_post == True):
gid_output.ExecuteInitializeSolutionStep()

if(step >= 3):
solver.Solve()

for process in list_of_processes:
process.ExecuteFinalizeSolutionStep()

gid_output.ExecuteFinalizeSolutionStep()
if (output_post == True):
gid_output.ExecuteFinalizeSolutionStep()

#TODO: decide if it shall be done only when output is processed or not
for process in list_of_processes:
process.ExecuteBeforeOutputStep()

if gid_output.IsOutputStep():
if (gid_output.IsOutputStep()) and (output_post == True)::
gid_output.PrintOutput()

for process in list_of_processes:
process.ExecuteAfterOutputStep()

out = out + Dt

for process in list_of_processes:
process.ExecuteFinalize()

gid_output.ExecuteFinalize()
if (output_post == True):
gid_output.ExecuteFinalize()
71 changes: 36 additions & 35 deletions kratos.gid/apps/Fluid/python/KratosFluid.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@
ProjectParameters = Parameters( parameter_file.read())

## Get echo level and parallel type
verbosity = ProjectParameters["problem_data"]["echo_level"].GetInt()
echo_level = ProjectParameters["problem_data"]["echo_level"].GetInt()
parallel_type = ProjectParameters["problem_data"]["parallel_type"].GetString()

## Import KratosMPI if needed
if (parallel_type == "MPI"):
import KratosMultiphysics.mpi as KratosMPI
from KratosMultiphysics.mpi import *
from KratosMultiphysics.MetisApplication import *
from KratosMultiphysics.TrilinosApplication import *

## Fluid model part definition
main_model_part = ModelPart(ProjectParameters["problem_data"]["model_part_name"].GetString())
Expand All @@ -38,20 +40,22 @@
solver.AddDofs()

## Initialize GiD I/O
if (parallel_type == "OpenMP"):
from gid_output_process import GiDOutputProcess
gid_output = GiDOutputProcess(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])
elif (parallel_type == "MPI"):
from gid_output_process_mpi import GiDOutputProcessMPI
gid_output = GiDOutputProcessMPI(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])

gid_output.ExecuteInitialize()

## Creation of Kratos model
output_post = ProjectParameters.Has("output_configuration")
if (output_post == True):
if (parallel_type == "OpenMP"):
from gid_output_process import GiDOutputProcess
gid_output = GiDOutputProcess(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])
elif (parallel_type == "MPI"):
from gid_output_process_mpi import GiDOutputProcessMPI
gid_output = GiDOutputProcessMPI(solver.GetComputingModelPart(),
ProjectParameters["problem_data"]["problem_name"].GetString() ,
ProjectParameters["output_configuration"])

gid_output.ExecuteInitialize()

## Creation of Kratos model (build sub_model_parts or submeshes)
FluidModel = Model()
FluidModel.AddModelPart(main_model_part)

Expand All @@ -76,7 +80,7 @@
FluidModel.AddModelPart(main_model_part.GetSubModelPart(gravity_part_name))

## Print model_part and properties
if(verbosity > 1):
if(echo_level > 1) and ((parallel_type == "OpenMP") or (mpi.rank == 0)):
print("")
print(main_model_part)
for properties in main_model_part.Properties:
Expand All @@ -92,7 +96,7 @@
list_of_processes += process_factory.KratosProcessFactory(FluidModel).ConstructListOfProcesses( ProjectParameters["boundary_conditions_process_list"] )
list_of_processes += process_factory.KratosProcessFactory(FluidModel).ConstructListOfProcesses( ProjectParameters["auxiliar_process_list"] )

if(verbosity > 1):
if(echo_level > 1) and ((parallel_type == "OpenMP") or (mpi.rank == 0)):
for process in list_of_processes:
print(process)

Expand All @@ -103,67 +107,64 @@
## Solver initialization
solver.Initialize()

#TODO: think if there is a better way to do this
fluid_model_part = solver.GetComputingModelPart()

## Stepping and time settings
# Dt = ProjectParameters["problem_data"]["time_step"].GetDouble()
# delta_time = ProjectParameters["problem_data"]["time_step"].GetDouble()
start_time = ProjectParameters["problem_data"]["start_time"].GetDouble()
end_time = ProjectParameters["problem_data"]["end_time"].GetDouble()

time = start_time
step = 0
out = 0.0

gid_output.ExecuteBeforeSolutionLoop()
if (output_post == True):
gid_output.ExecuteBeforeSolutionLoop()

for process in list_of_processes:
process.ExecuteBeforeSolutionLoop()

## Writing the full ProjectParameters file before solving
if ((parallel_type == "OpenMP") or (KratosMPI.mpi.rank == 0)) and (verbosity > 0):
if ((parallel_type == "OpenMP") or (mpi.rank == 0)) and (echo_level > 0):
f = open("ProjectParametersOutput.json", 'w')
f.write(ProjectParameters.PrettyPrintJsonString())
f.close()

while(time <= end_time):

Dt = solver.ComputeDeltaTime()
delta_time = solver.ComputeDeltaTime()
step += 1
time = time + Dt
time = time + delta_time
main_model_part.CloneTimeStep(time)

if (parallel_type == "OpenMP") or (KratosMPI.mpi.rank == 0):
if (parallel_type == "OpenMP") or (mpi.rank == 0):
print("")
print("STEP = ", step)
print("TIME = ", time)

for process in list_of_processes:
process.ExecuteInitializeSolutionStep()

gid_output.ExecuteInitializeSolutionStep()
if (output_post == True):
gid_output.ExecuteInitializeSolutionStep()

if(step >= 3):
solver.Solve()

for process in list_of_processes:
process.ExecuteFinalizeSolutionStep()

gid_output.ExecuteFinalizeSolutionStep()
if (output_post == True):
gid_output.ExecuteFinalizeSolutionStep()

#TODO: decide if it shall be done only when output is processed or not
for process in list_of_processes:
process.ExecuteBeforeOutputStep()

if gid_output.IsOutputStep():
if (gid_output.IsOutputStep()) and (output_post == True):
gid_output.PrintOutput()

for process in list_of_processes:
process.ExecuteAfterOutputStep()

out = out + Dt

for process in list_of_processes:
process.ExecuteFinalize()

gid_output.ExecuteFinalize()
if (output_post == True):
gid_output.ExecuteFinalize()
Loading