diff --git a/dart/api/internal/polar.py b/dart/api/internal/polar.py
index bc3d3bf540360c266ada8b2af0775c9ed52bfa48..f4355f3e0f4e35f1e2832cd6263982971a96a6e5 100644
--- a/dart/api/internal/polar.py
+++ b/dart/api/internal/polar.py
@@ -101,7 +101,7 @@ class Polar:
             # extract Cp
             if self.dim == 2:
                 Cp = dU.extract(self.bnd.groups[0].tag.elems, self.sol.Cp)
-                tU.write(Cp, f'Cp_airfoil{acs}.dat', '%1.5e', ', ', 'alpha = '+str(alpha*180/math.pi)+' deg\nx, y, z, Cp', '')
+                tU.write(Cp, f'Cp_{self.msh.name}_airfoil{acs}.dat', '%1.5e', ', ', 'alpha = '+str(alpha*180/math.pi)+' deg\nx, y, z, Cp', '')
             elif self.dim == 3 and self.format == 'vtk' and self.slice:
                 dU.writeSlices(self.msh.name, self.slice, self.tag, acs)
             # extract force coefficients
diff --git a/dart/api/internal/trim.py b/dart/api/internal/trim.py
index 1fb871c6daa3ec53756ba559fc13537f565706d8..b277d9f8d85c2d371f6efeda3187d3017832c70f 100644
--- a/dart/api/internal/trim.py
+++ b/dart/api/internal/trim.py
@@ -113,7 +113,7 @@ class Trim:
         # extract Cp
         if self.dim == 2:
             Cp = dU.extract(self.bnd.groups[0].tag.elems, self.sol.Cp)
-            tU.write(Cp, "Cp_airfoil.dat", "%1.5e", ", ", "x, y, z, Cp", "")
+            tU.write(Cp, f'Cp_{self.msh.name}_airfoil.dat', '%1.5e', ', ', 'x, y, z, Cp', '')
         elif self.dim == 3 and self.format == 'vtk' and self.slice:
             dU.writeSlices(self.msh.name, self.slice, self.tag)
 
diff --git a/dart/src/wAdjoint.cpp b/dart/src/wAdjoint.cpp
index ac6acba9f47ea3e1c5a88ac8fc1607b52480dd94..791ed092136bf5675f49900cd4ca77686b260b74 100644
--- a/dart/src/wAdjoint.cpp
+++ b/dart/src/wAdjoint.cpp
@@ -742,7 +742,7 @@ void Adjoint::save(MshExport *mshWriter, std::string const &suffix)
     // save (whole mesh and bodies)
     mshWriter->save(sol->pbl->msh->name + "_adjoint" + suffix, results);
     for (auto bnd : sol->pbl->bodies)
-        bnd->save(bnd->groups[0]->tag->name + "_adjoint" + suffix, results);
+        bnd->save(sol->pbl->msh->name + '_' + bnd->groups[0]->tag->name + "_adjoint" + suffix, results);
 }
 
 void Adjoint::write(std::ostream &out) const
diff --git a/dart/src/wSolver.cpp b/dart/src/wSolver.cpp
index 5ad807f17353ee1ec2c850453468d441788caece..32e8c70175ff8009f1450cf65714685ab0d8902c 100644
--- a/dart/src/wSolver.cpp
+++ b/dart/src/wSolver.cpp
@@ -182,7 +182,7 @@ void Solver::save(MshExport *mshWriter, std::string const &suffix)
     // save (whole mesh and bodies)
     mshWriter->save(pbl->msh->name + suffix, results);
     for (auto bnd : pbl->bodies)
-        bnd->save(bnd->groups[0]->tag->name + suffix, results);
+        bnd->save(pbl->msh->name + '_' + bnd->groups[0]->tag->name + suffix, results);
 }
 
 /**