diff --git a/blast/blUtils.py b/blast/blUtils.py index 2ff8b0ebfa6460cd8365adbb5643e28d000c6c55..37b09cb9bfa89c8dafc4bff0843b97a8617abeb4 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 007ac6b1d8589af21924a5ac5ed9d8b9e577d043..c89d1c98e317bcbd3aa0c8772a999ac7ec122304 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 be5955667443e0e14b61b78e5d880bf4e2aff568..634b479b2118a06ce8d86023b79a999d182c0040 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