From 219261f304adec07ca13cf3465ae7f300cd5327c Mon Sep 17 00:00:00 2001 From: acrovato <adrien.crovato@onera.fr> Date: Thu, 6 Feb 2025 12:52:41 +0100 Subject: [PATCH] Fix interface. Fix module path. --- blast/blUtils.py | 4 ++-- blast/interfaces/dart/blDartInterface.py | 22 +++++++++++++--------- blast/tests/dart/adjoint_2D.py | 4 +--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/blast/blUtils.py b/blast/blUtils.py index 2ff8b0e..37b09cb 100644 --- a/blast/blUtils.py +++ b/blast/blUtils.py @@ -52,7 +52,7 @@ def initBL(Re, Minf, CFL0, nSections, xtrF = [None, None], span=1.0, verb=None): solver = blast.Driver(Re, Minf, CFL0, nSections, xtrF_top=xtrF[0], xtrF_bot=xtrF[1], _span=span, _verbose=verbose) return solver -def initBlast(iconfig, vconfig, iSolver='DART'): +def initBlast(iconfig, vconfig, iSolver='DART', task='analysis'): """Initialize blast coupling objects. Params @@ -83,7 +83,7 @@ def initBlast(iconfig, vconfig, iSolver='DART'): else: print(ccolors.ANSI_RED + 'Solver '+iSolver+' currently not implemented' + ccolors.ANSI_RESET) raise RuntimeError - iSolverAPI = interface(iconfig, vSolver, vconfig) + iSolverAPI = interface(iconfig, vSolver, vconfig, task) # Coupler import blast.blCoupler as blastCoupler diff --git a/blast/interfaces/dart/blDartInterface.py b/blast/interfaces/dart/blDartInterface.py index 007ac6b..c89d1c9 100644 --- a/blast/interfaces/dart/blDartInterface.py +++ b/blast/interfaces/dart/blDartInterface.py @@ -18,13 +18,14 @@ # Dart interface # Paul Dechamps +from importlib import import_module import numpy as np from fwk.coloring import ccolors from blast.interfaces.blSolversInterface import SolversInterface -dartflo_import_paths = {'local module': 'modules.dartflo.dart.api.core', - 'blaster install': 'blaster.dart.api.core'} +dartflo_import_paths = {'local module': 'modules.dartflo.dart', + 'blaster install': 'blaster.dart'} class DartInterface(SolversInterface): """Interface to the Dart solver. @@ -58,16 +59,18 @@ class DartInterface(SolversInterface): # Load DART module if 'dart_path' in dartCfg: # First try imposed path - try: - init_dart = __import__(dartCfg['dart_path'], fromlist=['init_dart']).init_dart - print(f'DART loaded from specified path {dartCfg["dart_path"]} for {task}.') + try: + import_module(dartCfg['dart_path']) + dartflo_import_paths['found'] = dartCfg['dart_path'] + print(f'DART loaded from specified path {dartCfg['dart_path']} for {task}.') except ImportError: - raise ImportError(f'{ccolors.ANSI_RED}Could not load DART from specified path: {dartCfg["dart_path"]}.{ccolors.ANSI_RESET}') + raise ImportError(f'{ccolors.ANSI_RED}Could not load DART from specified path: {dartCfg['dart_path']}.{ccolors.ANSI_RESET}') else: # Load from known paths for name, path in dartflo_import_paths.items(): try: - init_dart = __import__(path, fromlist=['init_dart']).init_dart + import_module(path) + dartflo_import_paths['found'] = path print(f'DART loaded from {name} path for {task}.') break except ImportError: @@ -75,6 +78,7 @@ class DartInterface(SolversInterface): else: raise ImportError(f'{ccolors.ANSI_RED}Could not load DART.{ccolors.ANSI_RESET}') + init_dart = getattr(import_module(dartflo_import_paths['found']+'.api.core'), 'init_dart') self.iobj = init_dart(dartCfg, task=task, viscous=True) self.solver = self.iobj.get('sol') # Solver self.blw = [self.iobj.get('blwb'), self.iobj.get('blww')] @@ -136,11 +140,11 @@ class DartInterface(SolversInterface): data[i,2] = n.pos[2] data[i,3] = self.solver.Cp[n.row] np.savetxt(self.iobj['msh'].name+'_Cp_surface'+sfx+'.dat', data, fmt='%1.6e', delimiter=', ', header='x, y, z, Cp', comments='') - import modules.dartflo.dart.utils as invUtils if self.cfg['Format'] == 'vtk': + write_slices = getattr(import_module(dartflo_import_paths['found']+'.utils'), 'write_slices') if self.getVerbose() > 1: print('Saving Cp files in vtk format. Msh {:s}, Tag {:.0f}'.format(self.iobj['msh'].name, self.cfg['saveTag'])) - invUtils.write_slices(self.iobj['msh'].name, self.cfg['writeSections'], self.cfg['saveTag'], sfx=sfx) + write_slices(self.iobj['msh'].name, self.cfg['writeSections'], self.cfg['saveTag'], sfx=sfx) def save(self, sfx='inviscid'): """Save the solution. diff --git a/blast/tests/dart/adjoint_2D.py b/blast/tests/dart/adjoint_2D.py index be59556..634b479 100644 --- a/blast/tests/dart/adjoint_2D.py +++ b/blast/tests/dart/adjoint_2D.py @@ -36,8 +36,6 @@ def cfgInviscid(nthrds, verb): # Parameters return { # Options - 'scenario' : 'aerodynamic', - 'task' : 'optimization', 'Threads' : nthrds, # number of threads 'Verb' : verb, # verbosity # Model (geometry or mesh) @@ -100,7 +98,7 @@ def main(): dalpha = 1e-6 * np.pi/180 daoa = [alpha - dalpha, alpha + dalpha] - coupler, isol, vsol = vutils.initBlast(icfg, vcfg) + coupler, isol, vsol = vutils.initBlast(icfg, vcfg, task='optimization') morpher = isol.iobj['mrf'] # Adjoint objects -- GitLab