From 41b1a46f08163cd371a22603df7677b45d4c08eb Mon Sep 17 00:00:00 2001 From: ishaandesai Date: Tue, 17 Nov 2020 11:43:17 +0100 Subject: [PATCH 1/4] Initial change to FEniCS-Adapter initialization --- CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py | 2 +- FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py | 2 +- FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py | 2 +- HT/partitioned-heat/fenics-fenics/heat.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py b/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py index 6eed16305..8edc750d3 100644 --- a/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py +++ b/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py @@ -116,7 +116,7 @@ def determine_heat_flux(V_g, u, k, flux): # Adapter definition and initialization precice = Adapter(adapter_config_filename="precice-adapter-config.json") -precice_dt = precice.initialize(coupling_boundary, mesh, V, write_function=f_N_function) +precice_dt = precice.initialize(coupling_boundary, V, V_g, write_function=f_N_function) # Create a FEniCS Expression to define and control the coupling boundary values coupling_expression = precice.create_coupling_expression() diff --git a/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py b/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py index 6157e9bd6..08a17d2fe 100644 --- a/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py +++ b/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py @@ -88,7 +88,7 @@ def remaining_boundary(x, on_boundary): force_boundary = AutoSubDomain(remaining_boundary) # Initialize the coupling interface -precice_dt = precice.initialize(coupling_boundary, mesh, V, dim, fixed_boundary=clamped_boundary_domain) +precice_dt = precice.initialize(coupling_boundary, V, V, clamped_boundary_domain) fenics_dt = precice_dt # if fenics_dt == precice_dt, no subcycling is applied # fenics_dt = 0.02 # if fenics_dt < precice_dt, subcycling is applied diff --git a/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py b/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py index 008ffb082..5e6238dff 100644 --- a/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py +++ b/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py @@ -72,7 +72,7 @@ def neumann_boundary(x, on_boundary): force_boundary = AutoSubDomain(neumann_boundary) # Initialize the coupling interface -precice_dt = precice.initialize(coupling_boundary, mesh, V, dim, fixed_boundary=clamped_boundary_domain) +precice_dt = precice.initialize(coupling_boundary, V, V, fixed_boundary=clamped_boundary_domain) fenics_dt = precice_dt # if fenics_dt == precice_dt, no subcycling is applied # fenics_dt = 0.02 # if fenics_dt < precice_dt, subcycling is applied diff --git a/HT/partitioned-heat/fenics-fenics/heat.py b/HT/partitioned-heat/fenics-fenics/heat.py index 21c3742b0..bd904fb7e 100644 --- a/HT/partitioned-heat/fenics-fenics/heat.py +++ b/HT/partitioned-heat/fenics-fenics/heat.py @@ -124,10 +124,10 @@ def determine_gradient(V_g, u, flux): # Initialize the adapter according to the specific participant if problem is ProblemType.DIRICHLET: precice = Adapter(adapter_config_filename="precice-adapter-config-D.json") - precice_dt = precice.initialize(coupling_boundary, mesh, V, write_function=f_N_function) + precice_dt = precice.initialize(coupling_boundary, V, V_g, write_function=f_N_function) elif problem is ProblemType.NEUMANN: precice = Adapter(adapter_config_filename="precice-adapter-config-N.json") - precice_dt = precice.initialize(coupling_boundary, mesh, V_g, write_function=u_D_function) + precice_dt = precice.initialize(coupling_boundary, V_g, V, write_function=u_D_function) boundary_marker = False From ca1b1dd141edec04bdd524103ff25bc3f0b9d93b Mon Sep 17 00:00:00 2001 From: ishaandesai Date: Tue, 24 Nov 2020 16:15:59 +0100 Subject: [PATCH 2/4] Merging write_function_space and write_function into write_object --- CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py | 2 +- HT/partitioned-heat/fenics-fenics/heat.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py b/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py index 8edc750d3..af74414a9 100644 --- a/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py +++ b/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py @@ -116,7 +116,7 @@ def determine_heat_flux(V_g, u, k, flux): # Adapter definition and initialization precice = Adapter(adapter_config_filename="precice-adapter-config.json") -precice_dt = precice.initialize(coupling_boundary, V, V_g, write_function=f_N_function) +precice_dt = precice.initialize(coupling_boundary, V, f_N_function) # Create a FEniCS Expression to define and control the coupling boundary values coupling_expression = precice.create_coupling_expression() diff --git a/HT/partitioned-heat/fenics-fenics/heat.py b/HT/partitioned-heat/fenics-fenics/heat.py index bd904fb7e..d21f30c1f 100644 --- a/HT/partitioned-heat/fenics-fenics/heat.py +++ b/HT/partitioned-heat/fenics-fenics/heat.py @@ -124,10 +124,10 @@ def determine_gradient(V_g, u, flux): # Initialize the adapter according to the specific participant if problem is ProblemType.DIRICHLET: precice = Adapter(adapter_config_filename="precice-adapter-config-D.json") - precice_dt = precice.initialize(coupling_boundary, V, V_g, write_function=f_N_function) + precice_dt = precice.initialize(coupling_boundary, V, f_N_function) elif problem is ProblemType.NEUMANN: precice = Adapter(adapter_config_filename="precice-adapter-config-N.json") - precice_dt = precice.initialize(coupling_boundary, V_g, V, write_function=u_D_function) + precice_dt = precice.initialize(coupling_boundary, V_g, u_D_function) boundary_marker = False From 42bd9c5dff1f8bec58aecb843d6050bf2088514c Mon Sep 17 00:00:00 2001 From: ishaandesai Date: Wed, 25 Nov 2020 14:43:08 +0100 Subject: [PATCH 3/4] Explicitly mentioning optional parameter names in adapter initialization --- CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py | 2 +- FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py | 3 ++- FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py | 3 ++- HT/partitioned-heat/fenics-fenics/heat.py | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py b/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py index af74414a9..ed6e1b834 100644 --- a/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py +++ b/CHT/flow-over-plate/buoyantPimpleFoam-fenics/Solid/heat.py @@ -116,7 +116,7 @@ def determine_heat_flux(V_g, u, k, flux): # Adapter definition and initialization precice = Adapter(adapter_config_filename="precice-adapter-config.json") -precice_dt = precice.initialize(coupling_boundary, V, f_N_function) +precice_dt = precice.initialize(coupling_boundary, read_function_space=V, write_object=f_N_function) # Create a FEniCS Expression to define and control the coupling boundary values coupling_expression = precice.create_coupling_expression() diff --git a/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py b/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py index 08a17d2fe..9fa7f33b6 100644 --- a/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py +++ b/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py @@ -88,7 +88,8 @@ def remaining_boundary(x, on_boundary): force_boundary = AutoSubDomain(remaining_boundary) # Initialize the coupling interface -precice_dt = precice.initialize(coupling_boundary, V, V, clamped_boundary_domain) +precice_dt = precice.initialize(coupling_boundary, read_function_space=V, write_object=V, + fixed_boundary=clamped_boundary_domain) fenics_dt = precice_dt # if fenics_dt == precice_dt, no subcycling is applied # fenics_dt = 0.02 # if fenics_dt < precice_dt, subcycling is applied diff --git a/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py b/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py index 5e6238dff..b9d30ef2e 100644 --- a/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py +++ b/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py @@ -72,7 +72,8 @@ def neumann_boundary(x, on_boundary): force_boundary = AutoSubDomain(neumann_boundary) # Initialize the coupling interface -precice_dt = precice.initialize(coupling_boundary, V, V, fixed_boundary=clamped_boundary_domain) +precice_dt = precice.initialize(coupling_boundary, read_function_space=V, write_object=V, + fixed_boundary=clamped_boundary_domain) fenics_dt = precice_dt # if fenics_dt == precice_dt, no subcycling is applied # fenics_dt = 0.02 # if fenics_dt < precice_dt, subcycling is applied diff --git a/HT/partitioned-heat/fenics-fenics/heat.py b/HT/partitioned-heat/fenics-fenics/heat.py index d21f30c1f..8b98af863 100644 --- a/HT/partitioned-heat/fenics-fenics/heat.py +++ b/HT/partitioned-heat/fenics-fenics/heat.py @@ -124,10 +124,10 @@ def determine_gradient(V_g, u, flux): # Initialize the adapter according to the specific participant if problem is ProblemType.DIRICHLET: precice = Adapter(adapter_config_filename="precice-adapter-config-D.json") - precice_dt = precice.initialize(coupling_boundary, V, f_N_function) + precice_dt = precice.initialize(coupling_boundary, read_function_space=V, write_object=f_N_function) elif problem is ProblemType.NEUMANN: precice = Adapter(adapter_config_filename="precice-adapter-config-N.json") - precice_dt = precice.initialize(coupling_boundary, V_g, u_D_function) + precice_dt = precice.initialize(coupling_boundary, read_function_space=V_g, write_object=u_D_function) boundary_marker = False From 860642af756ebc95f753914e7c9608e88e37bb8e Mon Sep 17 00:00:00 2001 From: ishaandesai Date: Sat, 28 Nov 2020 15:19:40 +0100 Subject: [PATCH 4/4] Adding comment to explain why a function space is passed twice to initialization --- FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py | 1 + FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py | 1 + 2 files changed, 2 insertions(+) diff --git a/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py b/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py index 9fa7f33b6..09893e4a5 100644 --- a/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py +++ b/FSI/cylinderFlap/OpenFOAM-FEniCS/Solid/cyl-flap.py @@ -88,6 +88,7 @@ def remaining_boundary(x, on_boundary): force_boundary = AutoSubDomain(remaining_boundary) # Initialize the coupling interface +# Function space V is passed twice as both read and write functions are defined using the same space precice_dt = precice.initialize(coupling_boundary, read_function_space=V, write_object=V, fixed_boundary=clamped_boundary_domain) diff --git a/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py b/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py index b9d30ef2e..41dfeff4b 100644 --- a/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py +++ b/FSI/flap_perp/OpenFOAM-FEniCS/Solid/perp-flap.py @@ -72,6 +72,7 @@ def neumann_boundary(x, on_boundary): force_boundary = AutoSubDomain(neumann_boundary) # Initialize the coupling interface +# Function space V is passed twice as both read and write functions are defined using the same space precice_dt = precice.initialize(coupling_boundary, read_function_space=V, write_object=V, fixed_boundary=clamped_boundary_domain)