From 545f92e2a21a1ff7d8e20b93a2b20ba6aefa0aaf Mon Sep 17 00:00:00 2001
From: acrovato <a.crovato@uliege.be>
Date: Thu, 9 May 2024 11:14:37 +0200
Subject: [PATCH] Add optional geometry parametrization to flutter coupling.

---
 omflut/coupling.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/omflut/coupling.py b/omflut/coupling.py
index 37a8a10..b20da76 100644
--- a/omflut/coupling.py
+++ b/omflut/coupling.py
@@ -24,10 +24,18 @@ class FlutterGroup(om.Group):
         self.options.declare('xfer', desc='interpolator', recordable=False)
         self.options.declare('aero', desc='aerodynamic solver', recordable=False)
         self.options.declare('flutter', desc='flutter solver', recordable=False)
+        self.options.declare('geo', desc='optional geometry parametrization', default=None, recordable=False)
 
     def setup(self):
-        self.add_subsystem('mesh_struct', self.options['struct'].get_mesh(), promotes=['x_struct0'])
-        self.add_subsystem('mesh_aero', self.options['aero'].get_mesh(), promotes=['x_aero0'])
+        if self.options['geo'] is None:
+            self.add_subsystem('mesh_struct', self.options['struct'].get_mesh(), promotes=['x_struct0'])
+            self.add_subsystem('mesh_aero', self.options['aero'].get_mesh(), promotes=['x_aero0'])
+        else:
+            self.add_subsystem('mesh_struct', self.options['struct'].get_mesh())
+            self.add_subsystem('mesh_aero', self.options['aero'].get_mesh())
+            self.add_subsystem('geometry', self.options['geo'].get_mesh(), promotes=['x_struct0', 'x_aero0'])
+            self.connect('mesh_struct.x_struct0', 'geometry.x_struct_in')
+            self.connect('mesh_aero.x_aero0', 'geometry.x_aero_in')
         self.add_subsystem('struct', self.options['struct'].get_solver(self.name), promotes=['x_struct0', 'q_struct', 'M', 'K'])
         self.add_subsystem('xfer', self.options['xfer'].get_solver(self.name), promotes=['x_struct0', 'q_struct', 'x_aero0', 'q_aero'])
         self.add_subsystem('aero', self.options['aero'].get_solver(self.name), promotes=['x_aero0', 'q_aero', 'Q_re', 'Q_im'])
-- 
GitLab