MAIA bb96820c
Multiphysics at AIA
|
Acoustic extrapolation of near/near-far field data to the true far-field using an integral method (currently only FWH, but should allow for other methods to be implemented as well) More...
#include <acasolver.h>
Classes | |
struct | AcaSymBc |
Hold data for symmetry boundary condition. More... | |
struct | ConversionFactors |
Conversion-Factors for the input conversion. More... | |
struct | FOURIER |
struct | FWH |
struct | FWH_APE |
struct | FWH_TIME |
struct | PP |
struct | WINDOW |
Public Member Functions | |
AcaSolver (const MInt solverId, const MPI_Comm comm) | |
~AcaSolver () override | |
MBool | solutionStep () override |
Main compute method to perform acoustic far-field prediction. More... | |
MBool | solverConverged () |
MBool | isActive () const override |
void | initSolver () override |
Initialize solver. More... | |
void | finalizeInitSolver () override |
MFloat | time () const override |
Return the time. More... | |
MInt | noVariables () const override |
Return the number of variables. More... | |
MInt | noInternalCells () const override |
Return the number of internal cells within this solver. More... | |
void | preTimeStep () override |
void | postTimeStep () |
virtual void | saveSolverSolution (const MBool, const MBool) |
virtual void | cleanUp () |
Public Member Functions inherited from Solver | |
MString | getIdentifier (const MBool useSolverId=false, const MString preString="", const MString postString="_") |
virtual | ~Solver ()=default |
virtual MInt | noInternalCells () const =0 |
Return the number of internal cells within this solver. More... | |
virtual MFloat | time () const =0 |
Return the time. More... | |
virtual MInt | noVariables () const |
Return the number of variables. More... | |
virtual void | getDimensionalizationParams (std::vector< std::pair< MFloat, MString > > &) const |
Return the dimensionalization parameters of this solver. More... | |
void | updateDomainInfo (const MInt domainId, const MInt noDomains, const MPI_Comm mpiComm, const MString &loc) |
Set new domain information. More... | |
virtual MFloat & | a_slope (const MInt, MInt const, const MInt) |
virtual MBool | a_isBndryCell (const MInt) const |
virtual MFloat & | a_FcellVolume (MInt) |
virtual MInt | getCurrentTimeStep () const |
virtual void | accessSampleVariables (MInt, MFloat *&) |
virtual void | getSampleVariableNames (std::vector< MString > &NotUsed(varNames)) |
virtual MBool | a_isBndryGhostCell (MInt) const |
virtual void | saveCoarseSolution () |
virtual void | getSolverSamplingProperties (std::vector< MInt > &NotUsed(samplingVarIds), std::vector< MInt > &NotUsed(noSamplingVars), std::vector< std::vector< MString > > &NotUsed(samplingVarNames), const MString NotUsed(featureName)="") |
virtual void | initSolverSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const std::vector< MInt > &NotUsed(noSamplingVars)) |
virtual void | calcSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const MBool NotUsed(exchange)) |
virtual void | calcSamplingVarAtPoint (const MFloat *NotUsed(point), const MInt NotUsed(id), const MInt NotUsed(sampleVarId), MFloat *NotUsed(state), const MBool NotUsed(interpolate)=false) |
virtual void | balance (const MInt *const NotUsed(noCellsToReceiveByDomain), const MInt *const NotUsed(noCellsToSendByDomain), const MInt *const NotUsed(targetDomainsByCell), const MInt NotUsed(oldNoCells)) |
Perform load balancing. More... | |
virtual MBool | hasSplitBalancing () const |
Return if load balancing for solver is split into multiple methods or implemented in balance() More... | |
virtual void | balancePre () |
virtual void | balancePost () |
virtual void | finalizeBalance () |
virtual void | resetSolver () |
Reset the solver/solver for load balancing. More... | |
virtual void | cancelMpiRequests () |
Cancel open mpi (receive) requests in the solver (e.g. due to interleaved execution) More... | |
virtual void | setCellWeights (MFloat *) |
Set cell weights. More... | |
virtual MInt | noLoadTypes () const |
virtual void | getDefaultWeights (MFloat *NotUsed(weights), std::vector< MString > &NotUsed(names)) const |
virtual void | getLoadQuantities (MInt *const NotUsed(loadQuantities)) const |
virtual MFloat | getCellLoad (const MInt NotUsed(cellId), const MFloat *const NotUsed(weights)) const |
virtual void | limitWeights (MFloat *NotUsed(weights)) |
virtual void | localToGlobalIds () |
virtual void | globalToLocalIds () |
virtual MInt | noCellDataDlb () const |
Methods to inquire solver data information. More... | |
virtual MInt | cellDataTypeDlb (const MInt NotUsed(dataId)) const |
virtual MInt | cellDataSizeDlb (const MInt NotUsed(dataId), const MInt NotUsed(cellId)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MInt *const NotUsed(data)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MLong *const NotUsed(data)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MFloat *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MInt *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MLong *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MFloat *const NotUsed(data)) |
virtual void | getGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIntVars)) |
virtual void | setGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIdVars)) |
void | enableDlbTimers () |
void | reEnableDlbTimers () |
void | disableDlbTimers () |
MBool | dlbTimersEnabled () |
void | startLoadTimer (const MString name) |
void | stopLoadTimer (const MString &name) |
void | stopIdleTimer (const MString &name) |
void | startIdleTimer (const MString &name) |
MBool | isLoadTimerRunning () |
virtual MInt | noSolverTimers (const MBool NotUsed(allTimings)) |
virtual void | getSolverTimings (std::vector< std::pair< MString, MFloat > > &NotUsed(solverTimings), const MBool NotUsed(allTimings)) |
virtual void | getDomainDecompositionInformation (std::vector< std::pair< MString, MInt > > &NotUsed(domainInfo)) |
void | setDlbTimer (const MInt timerId) |
virtual void | prepareAdaptation (std::vector< std::vector< MFloat > > &, std::vector< MFloat > &, std::vector< std::bitset< 64 > > &, std::vector< MInt > &) |
virtual void | reinitAfterAdaptation () |
virtual void | prepareAdaptation () |
prepare adaptation for split adaptation before the adaptation loop More... | |
virtual void | setSensors (std::vector< std::vector< MFloat > > &, std::vector< MFloat > &, std::vector< std::bitset< 64 > > &, std::vector< MInt > &) |
set solver sensors for split adaptation within the adaptation loop More... | |
virtual void | saveSensorData (const std::vector< std::vector< MFloat > > &, const MInt &, const MString &, const MInt *const) |
virtual void | postAdaptation () |
post adaptation for split adaptation within the adaptation loop More... | |
virtual void | finalizeAdaptation () |
finalize adaptation for split sadptation after the adaptation loop More... | |
virtual void | refineCell (const MInt) |
Refine the given cell. More... | |
virtual void | removeChilds (const MInt) |
Coarsen the given cell. More... | |
virtual void | removeCell (const MInt) |
Remove the given cell. More... | |
virtual void | swapCells (const MInt, const MInt) |
Swap the given cells. More... | |
virtual void | swapProxy (const MInt, const MInt) |
Swap the given cells. More... | |
virtual MInt | cellOutside (const MFloat *, const MInt, const MInt) |
Check whether cell is outside the fluid domain. More... | |
virtual void | resizeGridMap () |
Swap the given cells. More... | |
virtual MBool | prepareRestart (MBool, MBool &) |
Prepare the solvers for a grid-restart. More... | |
virtual void | reIntAfterRestart (MBool) |
MPI_Comm | mpiComm () const |
Return the MPI communicator used by this solver. More... | |
virtual MInt | domainId () const |
Return the domainId (rank) More... | |
virtual MInt | noDomains () const |
virtual MBool | isActive () const |
void | setSolverStatus (const MBool status) |
MBool | getSolverStatus () |
Get the solver status indicating if the solver is currently active in the execution recipe. More... | |
MString | testcaseDir () const |
Return the testcase directory. More... | |
MString | outputDir () const |
Return the directory for output files. More... | |
MString | restartDir () const |
Return the directory for restart files. More... | |
MString | solverMethod () const |
Return the solverMethod of this solver. More... | |
MString | solverType () const |
Return the solverType of this solver. More... | |
MInt | restartInterval () const |
Return the restart interval of this solver. More... | |
MInt | restartTimeStep () const |
Return the restart interval of this solver. More... | |
MInt | solverId () const |
Return the solverId. More... | |
MBool | restartFile () |
MInt | readSolverSamplingVarNames (std::vector< MString > &varNames, const MString featureName="") const |
Read sampling variables names, store in vector and return the number of sampling variables. More... | |
virtual MBool | hasRestartTimeStep () const |
virtual MBool | forceAdaptation () |
virtual void | preTimeStep ()=0 |
virtual void | postTimeStep ()=0 |
virtual void | initSolver ()=0 |
virtual void | finalizeInitSolver ()=0 |
virtual void | saveSolverSolution (const MBool NotUsed(forceOutput)=false, const MBool NotUsed(finalTimeStep)=false)=0 |
virtual void | cleanUp ()=0 |
virtual MBool | solutionStep () |
virtual void | preSolutionStep (MInt) |
virtual MBool | postSolutionStep () |
virtual MBool | solverConverged () |
virtual void | getInterpolatedVariables (MInt, const MFloat *, MFloat *) |
virtual void | loadRestartFile () |
virtual MInt | determineRestartTimeStep () const |
virtual void | writeRestartFile (MBool) |
virtual void | writeRestartFile (const MBool, const MBool, const MString, MInt *) |
virtual void | setTimeStep () |
virtual void | implicitTimeStep () |
virtual void | prepareNextTimeStep () |
Private Types | |
enum | NONDIMBASIS { NONDIMACA = 0 , NONDIMSTAGNATION = 1 , NONDIMLB = 2 } |
using | SurfaceDataCollector = maia::acoustic_analogy::collector::SurfaceDataCollector< nDim > |
using | ObserverDataCollector = maia::acoustic_analogy::observer_collector::ObserverDataCollector< nDim > |
using | SourceParameters = maia::acoustic::SourceParameters |
using | SourceVars = maia::acoustic::SourceVars |
using | Timers = maia::acoustic::Timers_ |
Private Member Functions | |
void | initTimers () |
Initialize solver timers. More... | |
void | averageTimer () |
Average all FWH timer over participating ranks. More... | |
void | setInputOutputProperties () |
Read/set all I/O related properties. More... | |
void | setNumericalProperties () |
Read/set all numerical properties. More... | |
MInt | noSurfaces () |
Return number of surfaces. More... | |
MBool | hasSurface (const MInt surfaceId) |
Return if this rank has data of this surface. More... | |
MInt | noSurfaceElements (const MInt surfaceId) |
Return number of (local) surfaces elements for a surface. More... | |
MInt | totalNoSurfaceElements () |
Return total number of (local) surfaces elements. More... | |
MInt | localSurfaceOffset (const MInt sId) |
Return local offset of a surface in m_surfaceData. More... | |
MInt | noSamples () |
Return number of samples (i.e. number of time steps) More... | |
MInt | noObservers () |
Return local number of observer points. More... | |
MInt | observerOffset () |
Return local number of observer points. More... | |
MInt | globalNoObservers () |
Return number of observer points. More... | |
MInt | a_localObserverId (const MInt globalObserverId) |
Return local observer id. More... | |
MInt | a_globalObserverId (const MInt localObserverId) |
Return global observer id. More... | |
MFloat | a_globalObserverCoordinate (const MInt globalObserverId, const MInt dir) |
Accessor for global observer coordinates. More... | |
std::array< MFloat, nDim > | getGlobalObserverCoordinates (const MInt globalObserverId) |
Accessor for global observer coordinates. More... | |
MInt | getObserverDomainId (const MInt globalObserverId) |
Get domain id of (global) observer. More... | |
void | initObserverPoints () |
Initialize observer points. More... | |
void | initParallelization () |
Initialize parallelization (distribution of surface segments on all domains) More... | |
void | distributeObservers () |
Distribute observers on all ranks. More... | |
MString | getSurfaceDataFileName (const MInt surfaceId, const MInt fileNo) |
IO methods. More... | |
void | readSurfaceData () |
Read the surface data (or generate for an analytical case) More... | |
void | readSurfaceDataFromFile (const MInt surfaceId) |
Read the data for one surface. More... | |
void | storeSurfaceData (const MInt surfaceId) |
Store the surface data. Note: used for validating the data input and for the output of generated data. More... | |
void | readNoSegmentsAndSamples (const MInt surfaceId, MInt &noSegments, MInt &noSamples, MString &inputFileName) |
Read the number of segments and samples for the given surface id. More... | |
void | printMessage (const MString msg) |
Info functions. More... | |
void | calcSourceTerms () |
Main compute functions. More... | |
void | calcWindowFactors (MFloat *const p_window) |
Compute the window function factors and the normalization factor. More... | |
void | windowAndTransformSources () |
Apply window function to source terms and transform into frequency domain. More... | |
void | windowAndTransformObservers () |
Apply window function to the observer time series data and transform it into frequency domain. More... | |
void | calcFrequencies () |
Calculate the frequencies. More... | |
void | calcSurfaceIntegralsForObserver (const std::array< MFloat, nDim > coord, MFloat *const p_complexVariables) |
Calculate the FWH surface integrals for a certain observer location. More... | |
void | calcSurfaceIntegralsAtSourceTime (const MInt globalObserverId) |
Calculate the FWH surface integrals for a certain observer using the time-domain formulation. More... | |
MFloat | calcTimeDerivative (const MInt segmentId, const MInt varId, const MInt tau) |
void | interpolateFromSourceToObserverTime (const MFloat distMinObservers, MFloat *const p_perturbedFWH) |
Interpolate the observer pressure signal from source time to observer time using the advanced time approach by Casalino. Reference: Casalino, D., 2003, An advanced time approach ... doi.org/10.1016/s0022-460x(02)00986-0. More... | |
void | combineSurfaceIntegrals (const MInt globalObserverId, MFloat *const p_complexVariables) |
Combine the FWH surface integrals of all ranks. More... | |
void | combineSurfaceIntegralsInTime (const MInt globalObserverId, MFloat *const p_perturbedFWH) |
Combine the FWH surface integrals of the time domain method of all ranks. More... | |
void | calcMinDistanceForObservers (MFloat *const distMinObservers) |
Find the minimum distance from the surface elements to the observers. More... | |
void | calculateObserverInFrequency () |
Calculate the observer signals in frequency domain. More... | |
void | calculateObserverInTime () |
Calculate the observer signals in time domain. More... | |
void | backtransformObservers () |
Backtransform the observer frequency signals into the time domain. More... | |
void | saveObserverSignals () |
Save the observer signals. Save observer data: 1. pressure data in time domain and 2. pressure data in frequency domain. More... | |
void | loadObserverSignals () |
Load the observer signals from a file for further postprocessing. More... | |
void | postprocessObserverSignals () |
Postprocessing of observer signals. More... | |
void | FastFourierTransform (MFloat *dataArray, const MInt size, const MInt dir, MFloat *result, const MBool inPlace) |
Functions for Fourier Transformation. More... | |
void | DiscreteFourierTransform (MFloat *dataArray, const MInt size, const MInt dir, MFloat *result, const MBool inPlace) |
Discrete Fourier transform (computational expensive O(n^2) instead of O(n*logn) compared to FFT) More... | |
void | checkNoSamplesPotencyOfTwo () |
void | calcSourceTermsFwhFreq (const MInt segmentId) |
Source term compute kernels. More... | |
void | calcSourceTermsFwhTime (const MInt segmentId) |
Calculate FWH source terms for the time domain FWH formulation Reference: [1] Brentner, K. S. and F. Farassat, 1998, Analytical Comparison ... doi.org/10.2514/2.558 [2] Casalino, D., 2003, An advanced time approach ... doi.org/10.1016/s0022-460x(02)00986-0 [3] Brès, G., 2010, A Ffowcs Williams - Hawkings ... doi.org/10.2514/6.2010-3711. More... | |
void | transformCoordinatesToFlowDirection2D (MFloat *const fX, MFloat *const fY) |
Coordinate transformation. More... | |
void | transformCoordinatesToFlowDirection3D (MFloat *const fX, MFloat *const fY, MFloat *const fZ) |
void | transformBackToOriginalCoordinate2D (MFloat *const fX, MFloat *const fY) |
void | transformBackToOriginalCoordinate3D (MFloat *const fX, MFloat *const fY, MFloat *const fZ) |
void | generateSurfaces () |
Generation of surfaces. More... | |
void | generateSurfacePlane (const MInt sId) |
Generate a surface plane (Cartesian). More... | |
void | generateSurfaceCircle (const MInt sId) |
Generate a circular surface in 2D. More... | |
MInt | readNoSegmentsSurfaceGeneration (const MInt sId, std::vector< MInt > &noSegments, const MInt lengthCheck=-1) |
Determine the number of segments to be generated for a surface, returns the total number of segments and a vector with the number of segments in each direction for the specific surface type. More... | |
void | generateSurfaceData () |
Generation of analytical input data. More... | |
void | genMonopoleAnalytic2D (const MFloat *coord, const SourceParameters ¶m, SourceVars &vars) |
Monopole. More... | |
void | genMonopoleAnalytic3D (const MFloat *coord, const SourceParameters ¶m, SourceVars &vars) |
3D analytic monopole generation More... | |
void | genDipoleAnalytic2D (const MFloat *coord, const SourceParameters ¶m, SourceVars &vars) |
Dipole. More... | |
void | genDipoleAnalytic3D (const MFloat *coord, const SourceParameters ¶m, SourceVars &vars) |
3D dipole analytic More... | |
void | genQuadrupoleAnalytic2D (const MFloat *coord, const SourceParameters ¶m, SourceVars &vars) |
Quadrupole. More... | |
void | genQuadrupoleAnalytic3D (const MFloat *coord, const SourceParameters ¶m, SourceVars &vars) |
3D quadrupole analytic More... | |
void | genVortexConvectionAnalytic2D (const MFloat *obsCoord, const SourceParameters &m_sourceParameters, SourceVars &sourceVars) |
Inviscid vortex convection. More... | |
void | applySymmetryBc (const std::array< MFloat, nDim > coord, MFloat *const p_complexVariables) |
Symmetry boundary condition. More... | |
void | calcObsPressureAnalytic () |
void | initConversionFactors () |
Initialize the conversion factors required to convert between. More... | |
void | changeDimensionsSurfaceData () |
Change of the non-dimensionalization of input data from the stagnation state (0) non-dim. to the undisturbed freestream state (inf) non-dim. More... | |
void | changeDimensionsObserverData () |
void | computeDt () |
void | computeAccuracy () |
Private Attributes | |
std::vector< std::unique_ptr< AcaPostProcessing > > | m_post |
MBool | m_isFinished = false |
MInt | m_acaResultsNondimMode = 0 |
struct AcaSolver::ConversionFactors | m_input2Aca |
struct AcaSolver::ConversionFactors | m_aca2Output |
MInt | m_noSurfaces = -1 |
Number of surfaces. More... | |
std::vector< MInt > | m_surfaceIds {} |
Ids of the surface input file. More... | |
MBool | m_useMergedInputFile |
MInt | m_inputFileIndexStart |
MInt | m_inputFileIndexEnd |
std::vector< MInt > | m_noSurfaceElements {} |
Number of (local) surface elements for each surface. More... | |
MBool | m_allowMultipleSurfacesPerRank = false |
Allow multiple surfaces per rank. More... | |
std::vector< MInt > | m_noSurfaceElementsGlobal {} |
Total number of surface elements for each surface. More... | |
std::vector< MInt > | m_surfaceElementOffsets {} |
Local surface element offsets for each surface. More... | |
std::vector< MPI_Comm > | m_mpiCommSurface {} |
Surface local MPI communicators. More... | |
std::vector< MInt > | m_noDomainsSurface {} |
Surface local number of domains. More... | |
std::vector< MInt > | m_domainIdSurface {} |
Surface local domain id. More... | |
std::vector< MFloat > | m_surfaceWeightingFactor {} |
Weighting factor for each surface (for surface averaging) More... | |
std::vector< MString > | m_surfaceInputFileName {} |
Surface input file names that were used for sampling. More... | |
MInt | m_noSamples = -1 |
Number of samples. More... | |
MInt | m_totalNoSamples = -1 |
Total number of samples in input data files. More... | |
MInt | m_sampleStride = 1 |
Stride of used samples in input data files. More... | |
MInt | m_sampleOffset = 0 |
Offset in input data files from which to start reading samples. More... | |
SurfaceDataCollector | m_surfaceData |
Collector for surface data. More... | |
MInt | m_acousticMethod = -1 |
Acoustic extrapolation method to use, see enum ExtrapolationMethods in enums.h. More... | |
MInt | m_fwhTimeShiftType = 0 |
MInt | m_fwhMeanStateType = 0 |
MInt | m_noVariables = -1 |
MInt | m_noComplexVariables = -1 |
std::map< MString, MInt > | m_inputVars {} |
Set of input variables. More... | |
MInt | m_windowType = 0 |
Window type. More... | |
MFloat | m_windowNormFactor = -1.0 |
Normalization factor of window. More... | |
MInt | m_transformationType = 0 |
Fourier type. More... | |
MInt | m_noGlobalObservers = -1 |
Number of samples. More... | |
std::vector< MFloat > | m_globalObserverCoordinates |
ObserverDataCollector | m_observerData |
Coordinates of (global) observer points. More... | |
MInt | m_offsetObserver = 0 |
Collector for (local) observer data. More... | |
MInt | m_noObservers = 0 |
Offset of local observer. More... | |
std::array< MFloat, nDim *nDim > | m_transformationMatrix |
Number of local observer. More... | |
MBool | m_zeroFlowAngle = false |
MString | m_inputDir |
I/O. More... | |
MString | m_outputFilePrefix = "" |
Input directory. More... | |
MBool | m_storeSurfaceData = false |
Prefix for all output files. More... | |
MString | m_observerFileName |
File containing observer points. More... | |
MBool | m_generateObservers = false |
Enable observer point generation (instead of reading from file) More... | |
MBool | m_generateSurfaceData = false |
Enable generation of analytical surface data. More... | |
MInt | m_sourceType = -1 |
Source Type. More... | |
maia::acoustic::SourceParameters | m_sourceParameters |
Parameter vector. More... | |
MFloat | m_omega_factor = -1.0 |
Omega factor. More... | |
MFloat | m_lambdaZero = -1.0 |
Wave length lambda. More... | |
MFloat | m_lambdaMach = -1.0 |
MFloat | m_cInfty = -1.0 |
Non-dimensionalization variables. More... | |
MFloat | m_rhoInfty = -1.0 |
std::vector< MFloat > | m_Analyticfreq {} |
Analytic Fourier Transformation, also used for Validation. More... | |
std::vector< MFloat > | m_rmsP_Analytic {} |
Analytic rms pressure for accuracy function. More... | |
MFloat | m_dt = -1.0 |
Constant time step size. More... | |
MFloat | m_MaVec [3] |
Mach vector. More... | |
MFloat | m_Ma = -1.0 |
Mach number. More... | |
MFloat | m_MaDim = -1.0 |
Mach number used for change of nondimensionalization. More... | |
MBool | m_FastFourier = false |
Can FFT be used? More... | |
std::vector< MFloat > | m_times {} |
Storage for times and frequencies. More... | |
std::vector< MFloat > | m_frequencies {} |
MBool | m_hasTimes = false |
MInt | m_noPostprocessingOps = 0 |
Post Processing of observer signals. More... | |
std::vector< MInt > | m_postprocessingOps {} |
MBool | m_acaPostprocessingMode = false |
MString | m_acaPostprocessingFile = "" |
MInt | m_timerGroup = -1 |
std::array< MInt, Timers::_count > | m_timers {} |
std::vector< AcaSymBc > | m_symBc |
Static Private Attributes | |
static constexpr MFloat | m_gamma = 1.4 |
Additional Inherited Members | |
Public Attributes inherited from Solver | |
std::set< MInt > | m_freeIndices |
MBool | m_singleAdaptation = false |
MBool | m_splitAdaptation = true |
MBool | m_saveSensorData = false |
Protected Member Functions inherited from Solver | |
Solver (const MInt solverId, const MPI_Comm comm, const MBool isActive=true) | |
MFloat | returnLoadRecord () const |
MFloat | returnIdleRecord () const |
Protected Attributes inherited from Solver | |
MFloat | m_Re {} |
the Reynolds number More... | |
MFloat | m_Ma {} |
the Mach number More... | |
MInt | m_solutionInterval |
The number of timesteps before writing the next solution file. More... | |
MInt | m_solutionOffset {} |
std::set< MInt > | m_solutionTimeSteps |
MInt | m_restartInterval |
The number of timesteps before writing the next restart file. More... | |
MInt | m_restartTimeStep |
MInt | m_restartOffset |
MString | m_solutionOutput |
MBool | m_useNonSpecifiedRestartFile = false |
MBool | m_initFromRestartFile |
MInt | m_residualInterval |
The number of timesteps before writing the next residual. More... | |
const MInt | m_solverId |
a unique solver identifier More... | |
MFloat * | m_outerBandWidth = nullptr |
MFloat * | m_innerBandWidth = nullptr |
MInt * | m_bandWidth = nullptr |
MBool | m_restart = false |
MBool | m_restartFile = false |
Reference for implementation/validation of FWH solver: 'Predition of far-field noise using the Ffowcs Williams-Hawkings method', Maximilian Kerstan, Master thesis, 2020.
Definition at line 78 of file acasolver.h.
|
private |
Definition at line 82 of file acasolver.h.
|
private |
Definition at line 83 of file acasolver.h.
|
private |
Definition at line 84 of file acasolver.h.
|
private |
Definition at line 81 of file acasolver.h.
|
private |
Definition at line 85 of file acasolver.h.
|
private |
Enumerator | |
---|---|
NONDIMACA | |
NONDIMSTAGNATION | |
NONDIMLB |
Definition at line 87 of file acasolver.h.
AcaSolver< nDim >::AcaSolver | ( | const MInt | solverId, |
const MPI_Comm | comm | ||
) |
Definition at line 24 of file acasolver.cpp.
Definition at line 96 of file acasolver.h.
|
inlineprivate |
Definition at line 165 of file acasolver.h.
|
inlineprivate |
Definition at line 163 of file acasolver.h.
|
inlineprivate |
Definition at line 155 of file acasolver.h.
|
private |
Apply symmetry boundary condition.
[in] | coord | Location of the observer |
[out] | p_complexVariables | Output of complex p', length of 2*noSamples() |
Calculates surface integral for mirrored observer points. The resulting complex pressure is then added to the image observer points.
Definition at line 4547 of file acasolver.cpp.
Definition at line 74 of file acasolver.cpp.
Definition at line 2348 of file acasolver.cpp.
Definition at line 1549 of file acasolver.cpp.
|
private |
Definition at line 2069 of file acasolver.cpp.
Definition at line 2583 of file acasolver.cpp.
Compute source terms for all surface elements depending on the selected method.
Definition at line 879 of file acasolver.cpp.
Calculate FWH source terms for the frequency FWH formulation Reference: [1] Lockard, D.P., 2000. An efficient, two-dimensional ... doi.org/10.1006/jsvi.1999.2522 [2] Lockard, D.P., 2002, A comparison of Ffowcs ... doi.org/10.2514/6.2002-2580.
Definition at line 909 of file acasolver.cpp.
Definition at line 1062 of file acasolver.cpp.
|
private |
[in] | globalObserverId | |
[out] | m_surfaceData.variables(segmentId,FWH_TIME::timeObs,tau) | observer time |
[out] | m_surfaceData.variables(segmentId,FWH_TIME::fwhPP,tau) | observer pressure signal |
Definition at line 1866 of file acasolver.cpp.
|
private |
[in] | coord | Location of the observer |
[out] | p_complexVariables | Output of complex p', length of 2*noSamples() |
Definition at line 1573 of file acasolver.cpp.
|
private |
Definition at line 2048 of file acasolver.cpp.
Definition at line 2294 of file acasolver.cpp.
Definition at line 2309 of file acasolver.cpp.
Definition at line 1195 of file acasolver.cpp.
Definition at line 4816 of file acasolver.cpp.
Definition at line 4784 of file acasolver.cpp.
Definition at line 4864 of file acasolver.cpp.
|
private |
[in] | globalObserverId | Global observer id |
[in] | p_complexVariables | Output of complex p', length of 2*noSamples() |
Definition at line 2203 of file acasolver.cpp.
|
private |
Definition at line 2253 of file acasolver.cpp.
Definition at line 4892 of file acasolver.cpp.
Definition at line 4845 of file acasolver.cpp.
|
private |
dataArray | Pointer to complex data array. |
size | Size of the complex data array (number of samples). |
dir | Direction of transformation: 1=forward; -1=backward. |
result | Optional storage for transformed data, used if inPlace==false. |
inPlace | Determines if result overwrites the input data or stored in result array. |
Definition at line 1500 of file acasolver.cpp.
Evenly distribute observers on all ranks.
Definition at line 2333 of file acasolver.cpp.
|
private |
Fast Fourier transformation.
Reference: 'Numerical Recipes in C', Cambridge, p. 507 ff.
dataArray | Pointer to complex data array. |
size | Size of the complex data array (number of samples). |
dir | Direction of transformation: 1=forward; -1=backward. |
result | Optional storage for transformed data, used if inPlace==false. |
inPlace | Determines if result overwrites the input data or stored in result array. |
Definition at line 1411 of file acasolver.cpp.
|
private |
2D analytical dipole generation
Definition at line 4160 of file acasolver.cpp.
|
private |
Definition at line 4233 of file acasolver.cpp.
Definition at line 3853 of file acasolver.cpp.
Generate surface data for an analytical test case.
Definition at line 3924 of file acasolver.cpp.
Definition at line 3593 of file acasolver.cpp.
Generation of surfaces (for analytical cases).
Definition at line 3498 of file acasolver.cpp.
|
private |
2D analytical monopole generation
Definition at line 4035 of file acasolver.cpp.
|
private |
Definition at line 4097 of file acasolver.cpp.
|
private |
2D quadrupole analytic
Definition at line 4307 of file acasolver.cpp.
|
private |
Definition at line 4409 of file acasolver.cpp.
|
private |
Calculate solution vars for analytical inviscid convecting vortex.
A vortex is convected in an inviscid flow with M_infty in x-direction. The analytical solution is known to not generate noise. Hence, all noise generate is of erroneous nature.
Definition at line 4506 of file acasolver.cpp.
|
inlineprivate |
Definition at line 169 of file acasolver.h.
|
inlineprivate |
Definition at line 177 of file acasolver.h.
|
inlineprivate |
Return the name of a surface data \input[in] surfaceId id of the surface element \input[in] fileNo index of the file.
Definition at line 2913 of file acasolver.cpp.
Definition at line 153 of file acasolver.h.
Definition at line 132 of file acasolver.h.
Definition at line 4721 of file acasolver.cpp.
Initialize the observer points (load/generate coordinates and init collector)
Definition at line 4584 of file acasolver.cpp.
Initialize the parallelization, i.e., distribute all surface segments among ranks create communicators etc.
Definition at line 2672 of file acasolver.cpp.
Implements Solver.
Definition at line 28 of file acasolver.cpp.
Definition at line 41 of file acasolver.cpp.
|
private |
Definition at line 2123 of file acasolver.cpp.
Return if the solver is active on this rank; needs to be implemented in derived solver since access to gridproxy not possible here
Reimplemented from Solver.
Definition at line 103 of file acasolver.h.
Definition at line 2477 of file acasolver.cpp.
Definition at line 141 of file acasolver.h.
Definition at line 149 of file acasolver.h.
Definition at line 146 of file acasolver.h.
Definition at line 135 of file acasolver.h.
Definition at line 129 of file acasolver.h.
Definition at line 151 of file acasolver.h.
Definition at line 2531 of file acasolver.cpp.
Definition at line 203 of file acasolver.h.
|
private |
Definition at line 3000 of file acasolver.cpp.
|
private |
Definition at line 3543 of file acasolver.cpp.
Definition at line 2925 of file acasolver.cpp.
Definition at line 3064 of file acasolver.cpp.
Definition at line 2388 of file acasolver.cpp.
|
inlinevirtual |
Definition at line 117 of file acasolver.h.
Definition at line 110 of file acasolver.cpp.
Definition at line 424 of file acasolver.cpp.
Reimplemented from Solver.
Definition at line 807 of file acasolver.cpp.
Definition at line 3428 of file acasolver.cpp.
Definition at line 138 of file acasolver.h.
|
private |
Definition at line 2020 of file acasolver.cpp.
|
private |
Definition at line 2033 of file acasolver.cpp.
|
private |
Definition at line 1994 of file acasolver.cpp.
|
private |
Definition at line 2006 of file acasolver.cpp.
Definition at line 1354 of file acasolver.cpp.
Definition at line 1253 of file acasolver.cpp.
|
private |
Definition at line 442 of file acasolver.h.
Definition at line 441 of file acasolver.h.
Definition at line 288 of file acasolver.h.
Definition at line 347 of file acasolver.h.
Definition at line 313 of file acasolver.h.
Definition at line 412 of file acasolver.h.
Definition at line 408 of file acasolver.h.
Definition at line 326 of file acasolver.h.
Definition at line 418 of file acasolver.h.
Definition at line 430 of file acasolver.h.
Definition at line 434 of file acasolver.h.
Definition at line 349 of file acasolver.h.
Definition at line 348 of file acasolver.h.
Definition at line 427 of file acasolver.h.
Definition at line 388 of file acasolver.h.
Definition at line 392 of file acasolver.h.
Definition at line 368 of file acasolver.h.
Definition at line 435 of file acasolver.h.
|
private |
Definition at line 379 of file acasolver.h.
Definition at line 307 of file acasolver.h.
Definition at line 306 of file acasolver.h.
Definition at line 355 of file acasolver.h.
Member variables Solver status
Definition at line 286 of file acasolver.h.
Definition at line 405 of file acasolver.h.
Definition at line 404 of file acasolver.h.
Definition at line 423 of file acasolver.h.
Definition at line 425 of file acasolver.h.
Definition at line 421 of file acasolver.h.
Definition at line 322 of file acasolver.h.
Definition at line 352 of file acasolver.h.
Definition at line 324 of file acasolver.h.
Definition at line 366 of file acasolver.h.
Definition at line 372 of file acasolver.h.
Definition at line 438 of file acasolver.h.
Definition at line 335 of file acasolver.h.
Definition at line 310 of file acasolver.h.
Definition at line 316 of file acasolver.h.
Definition at line 301 of file acasolver.h.
Definition at line 351 of file acasolver.h.
|
private |
Definition at line 369 of file acasolver.h.
Definition at line 386 of file acasolver.h.
Definition at line 371 of file acasolver.h.
Definition at line 401 of file acasolver.h.
Definition at line 380 of file acasolver.h.
|
private |
Definition at line 272 of file acasolver.h.
Definition at line 439 of file acasolver.h.
Definition at line 409 of file acasolver.h.
Definition at line 415 of file acasolver.h.
Definition at line 341 of file acasolver.h.
Definition at line 339 of file acasolver.h.
|
private |
Definition at line 398 of file acasolver.h.
Definition at line 395 of file acasolver.h.
Enable storing of surface data (testing or output of generated data)
Definition at line 383 of file acasolver.h.
|
private |
Definition at line 344 of file acasolver.h.
Definition at line 319 of file acasolver.h.
Definition at line 303 of file acasolver.h.
Definition at line 332 of file acasolver.h.
Definition at line 329 of file acasolver.h.
Definition at line 558 of file acasolver.h.
Definition at line 446 of file acasolver.h.
|
private |
Definition at line 448 of file acasolver.h.
Definition at line 433 of file acasolver.h.
Definition at line 337 of file acasolver.h.
|
private |
Coordinate system transformation
Definition at line 375 of file acasolver.h.
Definition at line 363 of file acasolver.h.
Definition at line 305 of file acasolver.h.
Definition at line 360 of file acasolver.h.
Definition at line 358 of file acasolver.h.
Definition at line 376 of file acasolver.h.