diff --git a/.github/workflows/run-tutorials.yml b/.github/workflows/run-tutorials.yml index 67424c84..cbc3189f 100644 --- a/.github/workflows/run-tutorials.yml +++ b/.github/workflows/run-tutorials.yml @@ -10,7 +10,7 @@ on: jobs: run_ht_simple: - name: Run HT, simple + name: Run HT, simple (surface coupling with matching meshes) runs-on: ubuntu-latest container: precice/precice:develop steps: @@ -35,7 +35,7 @@ jobs: cd dirichlet-fenics && ./run.sh & cd neumann-fenics && ./run.sh run_ht_complex: - name: Run HT, complex + name: Run HT, complex (surface coupling with nearest projection) runs-on: ubuntu-latest container: precice/precice:develop steps: @@ -58,3 +58,28 @@ jobs: run: | cd tutorials/partitioned-heat-conduction-complex cd dirichlet-fenics && ./run.sh & cd neumann-fenics && ./run.sh + + run_channel_transport_reaction: + name: Run channel-transport-reaction (volume coupling with linear cell interpolation) + runs-on: ubuntu-latest + container: precice/precice:develop + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + - name: Install Dependencies & FEniCS + run: | + apt-get -qq update + apt-get -qq install software-properties-common python3-dev python3-pip git apt-utils + add-apt-repository -y ppa:fenics-packages/fenics + apt-get -qq install --no-install-recommends fenics + rm -rf /var/lib/apt/lists/* + - name: Install adapter + run: pip3 install --user . + - name: Fix broken FEniCS installation (see https://fenicsproject.discourse.group/t/installing-python-package-with-fenics-dependency-breaks-fenics-installation/4476) + run: pip3 uninstall -y fenics-ufl + - name: Get tutorials + run: git clone -b develop https://github.com/precice/tutorials.git + - name: Run tutorial + run: | + cd tutorials/channel-transport-reaction + cd fluid-fenics && ./run.sh & cd chemical-fenics && ./run.sh diff --git a/fenicsprecice/fenicsprecice.py b/fenicsprecice/fenicsprecice.py index e766f7d7..f1878710 100644 --- a/fenicsprecice/fenicsprecice.py +++ b/fenicsprecice/fenicsprecice.py @@ -414,15 +414,17 @@ def initialize(self, coupling_subdomain, read_function_space=None, write_object= function_space, coupling_subdomain, self._owned_vertices.get_global_ids(), id_mapping) # Surface coupling over 1D edges + # TODO call set_mesh_edges, if using surface coupling. Otherwise does not make sense. self._participant.set_mesh_edges(self._config.get_coupling_mesh_name(), edge_vertex_ids) - # Code below does not work properly. Volume coupling does not integrate well with surface coupling in this state. See https://github.com/precice/fenics-adapter/issues/162. - # # Configure mesh connectivity (triangles from edges) for 2D simulations - # if self._fenics_dims == 2: - # vertices = get_coupling_triangles(function_space, coupling_subdomain, fenics_edge_ids, id_mapping) - # self._participant.set_mesh_triangles(self._config.get_coupling_mesh_name(), vertices) - # else: - # print("Mesh connectivity information is not written for 3D cases.") + # Configure mesh connectivity (triangles from edges) for 2D simulations + # TODO only enter code below, if using volume coupling. Otherwise does not make sense. + if self._fenics_dims == 2: + # Volume coupling over 2D triangles + vertices = get_coupling_triangles(function_space, coupling_subdomain, fenics_edge_ids, id_mapping) + self._participant.set_mesh_triangles(self._config.get_coupling_mesh_name(), vertices) + else: + print("Mesh connectivity information is not written for 3D cases.") if self._participant.requires_initial_data(): if not write_function: