From 258b1d62e047f963bff53762ed29b0ca649c2527 Mon Sep 17 00:00:00 2001
From: Alexander Jaust <alexander.jaust@ipvs.uni-stuttgart.de>
Date: Tue, 21 Apr 2020 14:31:40 +0200
Subject: [PATCH] update repository

---
 appl/coupling-ff-pm/CMakeLists.txt            |   1 +
 .../monolithicdata.hh                         |  55 +++++++++
 .../iterative-reversed/main_ff-reversed.cc    |  40 +++++++
 ...g-serial-implicit-reversed-darcy-first.xml |  79 +++++++++++++
 ...recice-config-serial-implicit-reversed.xml |  13 +-
 .../run-iterative-simulations.sh              | 111 ++++++++++++++++++
 6 files changed, 293 insertions(+), 6 deletions(-)
 create mode 100644 appl/coupling-ff-pm/iterative-reversed-mono-flux/monolithicdata.hh
 create mode 100644 appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed-darcy-first.xml
 create mode 100755 appl/coupling-ff-pm/iterative-reversed/run-iterative-simulations.sh

diff --git a/appl/coupling-ff-pm/CMakeLists.txt b/appl/coupling-ff-pm/CMakeLists.txt
index 943da4e..c36488a 100644
--- a/appl/coupling-ff-pm/CMakeLists.txt
+++ b/appl/coupling-ff-pm/CMakeLists.txt
@@ -6,3 +6,4 @@ add_subdirectory(monolithic)
 add_subdirectory(fvca-monolithic-reversed)
 add_subdirectory(iterative)
 add_subdirectory(iterative-reversed)
+add_subdirectory(iterative-reversed-mono-flux)
diff --git a/appl/coupling-ff-pm/iterative-reversed-mono-flux/monolithicdata.hh b/appl/coupling-ff-pm/iterative-reversed-mono-flux/monolithicdata.hh
new file mode 100644
index 0000000..5653a59
--- /dev/null
+++ b/appl/coupling-ff-pm/iterative-reversed-mono-flux/monolithicdata.hh
@@ -0,0 +1,55 @@
+#ifndef MONOLITHICDATA_HH
+#define MONOLITHICDATA_HH
+
+#include <array>
+
+namespace MonolithicSolution
+{
+static const std::array<double, 20> velocity =
+    {
+        -2.14294737477106e-12,
+        -1.414265166923949e-12,
+        -1.04852776201853e-12,
+        -8.135033312884269e-13,
+        -6.37657086620555e-13,
+        -4.93766950668703e-13,
+        -3.690552916814545e-13,
+        -2.563759402825702e-13,
+        -1.511247369413653e-13,
+        -4.994226002810334e-14,
+        4.994226002813352e-14,
+        1.511247369413988e-13,
+        2.563759402826087e-13,
+        3.690552916815079e-13,
+        4.937669506687764e-13,
+        6.376570866206665e-13,
+        8.13503331288573e-13,
+        1.048527762018745e-12,
+        1.414265166924232e-12,
+        2.142947374771422e-12
+};
+
+static const std::array<double, 20> pressure = {
+    9.749674884723169e-10,
+    9.249954142532818e-10,
+    8.749977731157065e-10,
+    8.24998517020602e-10,
+    7.749988528034125e-10,
+    7.249990852158898e-10,
+    6.749992924234883e-10,
+    6.249994944809285e-10,
+    5.749996962877403e-10,
+    5.249998986713713e-10,
+    4.750001013286287e-10,
+    4.250003037122596e-10,
+    3.750005055190715e-10,
+    3.250007075765118e-10,
+    2.750009147841103e-10,
+    2.250011471965874e-10,
+    1.750014829793979e-10,
+    1.250022268842933e-10,
+    7.500458574671815e-11,
+    2.503251152768306e-11 };
+}
+
+#endif // MONOLITHICDATA_HH
diff --git a/appl/coupling-ff-pm/iterative-reversed/main_ff-reversed.cc b/appl/coupling-ff-pm/iterative-reversed/main_ff-reversed.cc
index b779441..2346f01 100644
--- a/appl/coupling-ff-pm/iterative-reversed/main_ff-reversed.cc
+++ b/appl/coupling-ff-pm/iterative-reversed/main_ff-reversed.cc
@@ -405,6 +405,7 @@ int main(int argc, char** argv) try
     auto sol_checkpoint = sol;
 
     double vtkTime = 1.0;
+    size_t iter = 0;
 
     while ( couplingInterface.isCouplingOngoing() )
     {
@@ -448,6 +449,45 @@ int main(int argc, char** argv) try
         const double preciceDt = couplingInterface.advance( dt );
         dt = std::min( preciceDt, dt );
 
+        //
+        {
+          double min = std::numeric_limits<double>::max();
+          double max = std::numeric_limits<double>::min();
+          double sum = 0.;
+          const std::string filename = getParam<std::string>("Problem.Name") + "-" + freeFlowProblem->name() + "-interface-velocity-" + std::to_string(iter);
+          std::tie(min, max, sum) = writeVelocitiesOnInterfaceToFile( filename,
+                                                                     *freeFlowProblem,
+                                                                     *freeFlowGridVariables,
+                                                                     sol );
+          const int prec = std::cout.precision();
+          std::cout << "Velocity statistics:" << std::endl
+                    << std::setprecision(std::numeric_limits<double>::digits10 + 1)
+                    << "  min: " << min << std::endl
+                    << "  max: " << max << std::endl
+                    << "  sum: " << sum << std::endl;
+          std::cout.precision( prec );
+          {
+            const std::string filenameFlow="free-flow-statistics-" + std::to_string(iter);
+            std::ofstream ofs( filenameFlow+".txt", std::ofstream::out | std::ofstream::trunc);
+            const auto prec = ofs.precision();
+            ofs << "Velocity statistics (free flow):" << std::endl
+                << std::setprecision(std::numeric_limits<double>::digits10 + 1)
+                << "  min: " << min << std::endl
+                << "  max: " << max << std::endl
+                << "  sum: " << sum << std::endl;
+            ofs.precision( prec );
+            ofs.close();
+          }
+        }
+        {
+          const std::string filename = getParam<std::string>("Problem.Name") + "-" + freeFlowProblem->name() + "-interface-pressure-" + std::to_string(iter);
+          writePressuresOnInterfaceToFile<FluxVariables>( filename,
+                                                         *freeFlowProblem,
+                                                         *freeFlowGridVariables,
+                                                         sol );
+        }
+        ++iter;
+
         if ( couplingInterface.hasToReadIterationCheckpoint() )
         {
 //            //Read checkpoint
diff --git a/appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed-darcy-first.xml b/appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed-darcy-first.xml
new file mode 100644
index 0000000..55a904e
--- /dev/null
+++ b/appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed-darcy-first.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+
+<precice-configuration>
+  <log>
+    <sink type="stream" output="stdout"  filter= "(%Severity% > debug) or (%Severity% >= trace and %Module% contains SolverInterfaceImpl)"  enabled="false" /> 
+    <sink type="stream" output="stdout"  enabled="false" /> 
+  </log> 
+
+  <solver-interface dimensions="2">
+
+    <data:scalar name="Velocity"/>
+    <data:scalar name="Pressure"/>
+
+    <mesh name="FreeFlowMesh">
+      <use-data name="Velocity" />
+      <use-data name="Pressure" />
+    </mesh>
+
+    <mesh name="DarcyMesh">
+      <use-data name="Velocity" />
+      <use-data name="Pressure" />
+    </mesh>
+
+    <participant name="FreeFlow">
+      <use-mesh name="FreeFlowMesh" provide="yes"/>
+      <use-mesh name="DarcyMesh" from="Darcy"/>
+
+      <read-data name="Velocity" mesh="FreeFlowMesh"/>
+      <write-data name="Pressure" mesh="FreeFlowMesh"/>
+
+      <mapping:nearest-neighbor direction="write" from="FreeFlowMesh" to="DarcyMesh" constraint="consistent"/>       
+      <mapping:nearest-neighbor direction="read" from="DarcyMesh" to="FreeFlowMesh" constraint="consistent"/> 
+      
+    </participant>
+
+    <participant name="Darcy">
+      <use-mesh name="DarcyMesh" provide="yes"/>
+     
+      <read-data name="Pressure" mesh="DarcyMesh"/>
+      <write-data name="Velocity" mesh="DarcyMesh"/>
+    </participant>
+
+    <m2n:sockets from="FreeFlow" to="Darcy" distribution-type="gather-scatter" network="lo" />
+    
+    
+    <coupling-scheme:serial-implicit>
+      <max-time value="1"/>
+      <timestep-length value="1" />
+      <max-iterations value="10"/>
+
+
+      <participants first="Darcy" second="FreeFlow"/>
+      <exchange data="Pressure" mesh="DarcyMesh" from="FreeFlow" to="Darcy" initialize="true" />
+      <exchange data="Velocity" mesh="DarcyMesh" from="Darcy" to="FreeFlow" initialize="false" />
+      
+      <relative-convergence-measure limit="1.0e-4" data="Pressure" mesh="DarcyMesh"/>
+      <relative-convergence-measure limit="1.0e-4" data="Velocity" mesh="DarcyMesh"/>
+
+             
+       <!--
+       <relative-convergence-measure limit="1.0e-2" data="Velocity" mesh="FreeFlowMesh"/>
+       -->
+
+       
+        <extrapolation-order value="0"/>
+<!--
+        <post-processing:IQN-ILS>
+            <data mesh="DarcyMesh" name="Velocity" />
+            <initial-relaxation value="0.1" />
+            <max-used-iterations value="9" />
+            <timesteps-reused value="10" />
+            <filter type="QR2" limit="1e-3" />
+        </post-processing:IQN-ILS>
+-->       
+           
+    </coupling-scheme:serial-implicit>
+  </solver-interface>
+</precice-configuration>
+
diff --git a/appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed.xml b/appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed.xml
index 973fe15..756b2b0 100644
--- a/appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed.xml
+++ b/appl/coupling-ff-pm/iterative-reversed/precice-config-serial-implicit-reversed.xml
@@ -46,23 +46,24 @@
     <coupling-scheme:serial-implicit>
       <max-time value="1"/>
       <timestep-length value="1" />
-      <max-iterations value="100"/>
+      <max-iterations value="10"/>
 
 
       <participants first="FreeFlow" second="Darcy"/>
       <exchange data="Pressure" mesh="DarcyMesh" from="FreeFlow" to="Darcy" initialize="false" />
       <exchange data="Velocity" mesh="DarcyMesh" from="Darcy" to="FreeFlow" initialize="true" />
       
-      <relative-convergence-measure limit="1.0e-8" data="Pressure" mesh="DarcyMesh"/>
-      <relative-convergence-measure limit="1.0e-8" data="Velocity" mesh="DarcyMesh"/>
+      <relative-convergence-measure limit="1.0e-4" data="Pressure" mesh="DarcyMesh"/>
+      <relative-convergence-measure limit="1.0e-4" data="Velocity" mesh="DarcyMesh"/>
 
              
        <!--
        <relative-convergence-measure limit="1.0e-2" data="Velocity" mesh="FreeFlowMesh"/>
        -->
-       <!--
-        <extrapolation-order value="0"/>
 
+       
+        <extrapolation-order value="0"/>
+<!--
         <post-processing:IQN-ILS>
             <data mesh="DarcyMesh" name="Velocity" />
             <initial-relaxation value="0.1" />
@@ -70,7 +71,7 @@
             <timesteps-reused value="10" />
             <filter type="QR2" limit="1e-3" />
         </post-processing:IQN-ILS>
-        -->
+-->       
            
     </coupling-scheme:serial-implicit>
   </solver-interface>
diff --git a/appl/coupling-ff-pm/iterative-reversed/run-iterative-simulations.sh b/appl/coupling-ff-pm/iterative-reversed/run-iterative-simulations.sh
new file mode 100755
index 0000000..ae4f6a9
--- /dev/null
+++ b/appl/coupling-ff-pm/iterative-reversed/run-iterative-simulations.sh
@@ -0,0 +1,111 @@
+#! /usr/bin/env bash
+
+
+pressureDifferences=("1e-9")
+permeabilities=("1e-6")
+alphaBeaversJoseph=("1.0")
+meshSizes=("20" "40" "80")
+hasInertiaTerms=("true" "false")
+precice_config=("precice-config-serial-implicit-reversed.xml" "precice-config-serial-implicit-reversed-darcy-first.xml")
+
+#solver_input="params.input"
+inputTemplate="fvca-iterative-base.input"
+
+ff_solver="test_ff_reversed"
+pm_solver="test_pm_reversed"
+
+
+rm -f *.csv *.pvd *.vtu *.log *.txt *.json
+
+#echo "" > ${configurations}
+basedir="${PWD}"
+for preciceFile in "${precice_config[@]}"; do
+  for hasInertiaTerms in "${hasInertiaTerms[@]}"; do
+    for dp in "${pressureDifferences[@]}"; do
+      for permeability in "${permeabilities[@]}"; do
+        for alpha in "${alphaBeaversJoseph[@]}"; do
+          for mesh in "${meshSizes[@]}"; do
+            i=$((i+1))
+            
+            # Check if Stokes or Navier-Stokes        
+            flowProblemName="stokes"
+  #          echo ${hasInertiaTerms}
+            if [[ "${hasInertiaTerms}" == "true" ]]; then
+              flowProblemName="navier-stokes"
+            fi
+          
+            # Generate name of test case and create directories
+            casename="${flowProblemName}-${mesh}-${alpha}-${permeability}-${dp}"
+            echo "${casename}"
+
+            # Setting up input file          
+            inputFile="${casename}.input"
+            sed -e s/MESHSIZE/"${mesh}"/g \
+                -e "s/FLOWPROBLEMNAME/${flowProblemName}/g" \
+                -e "s/PRESSUREDIFF/${dp}/g" \
+                -e "s/PERM/${permeability}/g" \
+                -e "s/ALPHA/${alpha}/g" \
+                -e "s/HASINERTIATERMS/${hasInertiaTerms}/g" \
+                -e "s/CASENAME/${casename}/g" \
+                "${inputTemplate}" > ${inputFile}
+                
+            # Running simulation
+            #solverCmd="./${solver} ${inputFile}"
+            #echo "$solverCmd"
+   
+  #           $(${solverCmd} > solver.log)                   
+#            $(time ./${solver} "${inputFile}" > solver.log)
+  #          $(./${solverCmd} ${inputFile} > solver.log)
+
+
+            rm -rf "precice-run/"
+            ff_cmd="./${ff_solver} - ${precice_config}"
+            echo "${ff_cmd}"
+            ./${ff_solver} - ${preciceFile} > ${ff_solver}.log 2>&1 &
+            PIDFluid=$!
+            ./${pm_solver} - ${preciceFile} > ${pm_solver}.log 2>&1 &
+            PIDSolid=$!
+
+            echo "Waiting for the participants to exit..."
+            echo "(you may run 'tail -f ${ff_solver}.log' or 'tail -f ${pm_solver}.log' in another terminal to check the progress)"
+
+            wait ${PIDFluid}
+            wait ${PIDSolid}
+
+            if [ $? -ne 0 ] || [ "$(grep -c -E "error:" ${ff_solver}.log)" -ne 0 ] || [ "$(grep -c -E "error:" ${pm_solver}.log)" -ne 0 ]; then
+                echo ""
+                echo "Something went wrong... See the log files for more."
+            else
+                echo ""
+                echo "The simulation completed!"
+            fi
+
+
+            mkdir -p "${casename}"
+            mv *.csv ${casename}
+            mv *.vtu ${casename}
+            mv *.pvd ${casename}
+            mv *.log ${casename}
+            mv *.txt ${casename}
+            mv *.json ${casename}
+            cp ${preciceFile} ${casename}
+            mv "${inputFile}" ${casename} 
+            #cd ${casename}
+  #          ln -s "../${solver}" "${solver}"
+            #cp "../${solver}" .
+
+            # Go back to root dir
+            cd "${basedir}"
+          done
+        done
+      done
+    done
+  done
+done
+
+echo "In total ${i} cases were run"
+
+
+
+
+
-- 
GitLab