Skip to content
Snippets Groups Projects
Verified Commit 7e2b47ce authored by Paul Dechamps's avatar Paul Dechamps :speech_balloon:
Browse files

(format) Renamed arguments of RBF interpolator

parent 4ed49c3f
No related branches found
No related tags found
1 merge request!1BLASTER v1.0
......@@ -3,9 +3,11 @@
import numpy as np
from scipy.interpolate import RBFInterpolator
class RbfInterpolator:
def __init__(self, _cfg, _nDim):
self.cfg = _cfg
self.nDim = _nDim
def __init__(self, cfg, ndim):
self._cfg = cfg
if ndim != 2 and ndim != 3:
raise ValueError('Number of dimensions must be 2 or 3 but {} was given'.format(ndim))
self._ndim = ndim
def inviscidToViscous(self, iDict, vDict):
## Airfoil
......@@ -16,35 +18,33 @@ class RbfInterpolator:
M = np.zeros(reg.nodesCoord.shape[0])
rho = np.zeros(reg.nodesCoord.shape[0])
for iDim in range(3):
v[:,iDim] = self.__rbfToSection(iDict[iReg].nodesCoord[:,:(self.cfg['nDim'] if iDict[iReg].name == 'iWing' else 1)], iDict[iReg].V[:,iDim], reg.nodesCoord[:,:(self.cfg['nDim'] if 'vAirfoil' in reg.name else 1)])
M = self.__rbfToSection(iDict[iReg].nodesCoord[:,:(self.cfg['nDim'] if iDict[iReg].name == 'iWing' else 1)], iDict[iReg].M, reg.nodesCoord[:,:(self.cfg['nDim'] if 'vAirfoil' in reg.name else 1)])
rho = self.__rbfToSection(iDict[iReg].nodesCoord[:,:(self.cfg['nDim'] if iDict[iReg].name == 'iWing' else 1)], iDict[iReg].Rho, reg.nodesCoord[:,:(self.cfg['nDim'] if 'vAirfoil' in reg.name else 1)])
v[:,iDim] = self.__rbfToSection(iDict[iReg].nodesCoord[:,:(self._ndim if iDict[iReg].name == 'iWing' else 1)], iDict[iReg].V[:,iDim], reg.nodesCoord[:,:(self._ndim if 'vAirfoil' in reg.name else 1)])
M = self.__rbfToSection(iDict[iReg].nodesCoord[:,:(self._ndim if iDict[iReg].name == 'iWing' else 1)], iDict[iReg].M, reg.nodesCoord[:,:(self._ndim if 'vAirfoil' in reg.name else 1)])
rho = self.__rbfToSection(iDict[iReg].nodesCoord[:,:(self._ndim if iDict[iReg].name == 'iWing' else 1)], iDict[iReg].Rho, reg.nodesCoord[:,:(self._ndim if 'vAirfoil' in reg.name else 1)])
vDict[iSec][iReg].updateVars(v, M, rho)
def viscousToInviscid(self, iDict, vDict):
if self.nDim == 2:
if self._ndim == 2:
for iReg, reg in enumerate(iDict):
iDict[iReg].blowingVel = self.__rbfToSection(vDict[0][iReg].elemsCoordTr[:,:(self.cfg['nDim']-1 if 'vAirfoil' in reg.name else 1)], vDict[0][iReg].blowingVel, reg.elemsCoordTr[:,:(self.cfg['nDim']-1 if reg.name == 'iWing' else 1)])
elif self.nDim == 3:
iDict[iReg].blowingVel = self.__rbfToSection(vDict[0][iReg].elemsCoordTr[:,:(self._ndim-1 if 'vAirfoil' in reg.name else 1)], vDict[0][iReg].blowingVel, reg.elemsCoordTr[:,:(self._ndim-1 if reg.name == 'iWing' else 1)])
elif self._ndim == 3:
for iReg, reg in enumerate(iDict):
viscElemsCoord = np.zeros((0,3))
viscBlowing = np.zeros(0)
for iSec, sec in enumerate(vDict):
viscElemsCoord = np.row_stack((viscElemsCoord, sec[iReg].elemsCoord[:,:3]))
viscBlowing = np.concatenate((viscBlowing, sec[iReg].blowingVel))
if 'Sym' in self.cfg:
for s in self.cfg['Sym']:
if 'Sym' in self._cfg:
for s in self._cfg['Sym']:
dummy = viscElemsCoord.copy()
dummy[:,1] = (dummy[:,1] - s)*(-1) + s
viscElemsCoord = np.row_stack((viscElemsCoord, dummy))
viscBlowing = np.concatenate((viscBlowing, viscBlowing))
reg.blowingVel = self.__rbfToSection(viscElemsCoord, viscBlowing, reg.elemsCoord[:,:3])
else:
raise RuntimeError('Incorrect number of dimensions', self.cfg['nDim'])
def __rbfToSection(self, x, var, xs):
if np.all(var == var[0]):
varOut = RBFInterpolator(x, var, neighbors=1, kernel='linear', smoothing=0.0, degree=0)(xs)
else:
varOut = RBFInterpolator(x, var, neighbors=self.cfg['neighbors'], kernel=self.cfg['rbftype'], smoothing=self.cfg['smoothing'], degree=self.cfg['degree'])(xs)
varOut = RBFInterpolator(x, var, neighbors=self._cfg['neighbors'], kernel=self._cfg['rbftype'], smoothing=self._cfg['smoothing'], degree=self._cfg['degree'])(xs)
return varOut
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment