# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# @author Paul Dechamps
# @date 2025
# Test the restart file
# Imports.
importblast.blUtilsasvutils
importnumpyasnp
fromfwk.wutilsimportparseargs
importfwk
fromfwk.testingimport*
fromfwk.coloringimportccolors
importmath
defcfgInviscid(nthrds,verb):
importos.path
# Parameters
return{
# Options
'scenario':'aerodynamic',
'task':'analysis',
'Threads':nthrds,# number of threads
'Verb':verb,# verbosity
# Model (geometry or mesh)
'File':os.path.dirname(os.path.abspath(__file__))+'/../models/dart/n0012.geo',# Input file containing the model
'Pars':{'xLgt':50,'yLgt':50,'growthRatio':1.3,'msTe':0.01,'msLe':0.01},# parameters for input file model
'Dim':2,# problem dimension
'Format':'gmsh',# save format (vtk or gmsh)
# Markers
'Fluid':'field',# name of physical group containing the fluid
'Farfield':['upstream','farfield','downstream'],# LIST of names of physical groups containing the farfield boundaries (upstream/downstream should be first/last element)
'Wing':'airfoil',# LIST of names of physical groups containing the lifting surface boundary
'Wake':'wake',# LIST of names of physical group containing the wake
'WakeTip':'wakeTip',# LIST of names of physical group containing the edge of the wake
'Te':'te',# LIST of names of physical group containing the trailing edge
'Upstream':'upstream',
# Freestream
'M_inf':0.2,# freestream Mach number
'AoA':1.,# freestream angle of attack
# Geometry
'S_ref':1.,# reference surface length
'c_ref':1.,# reference chord length
'x_ref':.25,# reference point for moment computation (x)
'y_ref':0.0,# reference point for moment computation (y)
'z_ref':0.0,# reference point for moment computation (z)
# Numerical
'LSolver':'GMRES',# inner solver (Pardiso, MUMPS or GMRES)
'G_fill':2,# fill-in factor for GMRES preconditioner
'G_tol':1e-5,# tolerance for GMRES
'G_restart':50,# restart for GMRES
'Rel_tol':1e-6,# relative tolerance on solver residual
'Abs_tol':1e-8,# absolute tolerance on solver residual
'Max_it':20# solver maximum number of iterations
}
defcfgBlast(verb):
return{
'Re':1e7,# Freestream Reynolds number
'CFL0':1,# Inital CFL number of the calculation
'couplIter':50,# Maximum number of iterations
'couplTol':1e-4,# Tolerance of the VII methodology
'iterPrint':1,# int, number of iterations between outputs
'resetInv':True,# bool, flag to reset the inviscid calculation at every iteration.
'xtrF':[None,0.4],# Forced transition locations
'interpolator':'Matching',# Interpolator for the coupling
# Restart file
'restart_solution':False,# Restart solution from file
'restart_inputName':None,# Name of the restart file to read
'restart_outputName':'naca0012_restart',# Name of the restart file saved on disk
'iterSaveRestart':1,# Number of iterations between restart file save