75 lines
2.8 KiB
C
75 lines
2.8 KiB
C
|
|
/*=========================================================================
|
||
|
|
|
||
|
|
Program: Visualization Toolkit
|
||
|
|
Module: vtkLagrangianMatidaIntegrationModel.h
|
||
|
|
|
||
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
|
All rights reserved.
|
||
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
|
||
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
|
||
|
|
=========================================================================*/
|
||
|
|
/**
|
||
|
|
* @class vtkLagrangianMatidaIntegrationModel
|
||
|
|
* vtkLagrangianBasicIntegrationModel implementation
|
||
|
|
*
|
||
|
|
*
|
||
|
|
* vtkLagrangianBasicIntegrationModel implementation using
|
||
|
|
* article :
|
||
|
|
* "Matida, E. A., et al. "Improved numerical simulation of aerosol deposition in
|
||
|
|
* an idealized mouth-throat." Journal of Aerosol Science 35.1 (2004): 1-19."
|
||
|
|
* Input Array to process are expected as follow :
|
||
|
|
* Index 1 is the "FlowVelocity" from flow input in the tracker
|
||
|
|
* Index 2 is the "FlowDensity" from flow input in the tracker
|
||
|
|
* Index 3 is the "FlowDynamicViscosity" from flow input in the tracker
|
||
|
|
* Index 4 is the "ParticleDiameter" from seed (source) input in the tracker
|
||
|
|
* Index 5 is the "ParticleDensity" from seed (source) input in the tracker
|
||
|
|
*
|
||
|
|
* @sa
|
||
|
|
* vtkLagrangianParticleTracker vtkLagrangianParticle
|
||
|
|
* vtkLagrangianBasicIntegrationModel
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef vtkLagrangianMatidaIntegrationModel_h
|
||
|
|
#define vtkLagrangianMatidaIntegrationModel_h
|
||
|
|
|
||
|
|
#include "vtkFiltersFlowPathsModule.h" // For export macro
|
||
|
|
#include "vtkLagrangianBasicIntegrationModel.h"
|
||
|
|
|
||
|
|
class VTKFILTERSFLOWPATHS_EXPORT vtkLagrangianMatidaIntegrationModel
|
||
|
|
: public vtkLagrangianBasicIntegrationModel
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
vtkTypeMacro(vtkLagrangianMatidaIntegrationModel, vtkLagrangianBasicIntegrationModel);
|
||
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
static vtkLagrangianMatidaIntegrationModel* New();
|
||
|
|
|
||
|
|
// Needed for multiple signatures polymorphism
|
||
|
|
using Superclass::FunctionValues;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Evaluate the integration model velocity field
|
||
|
|
* f at position x, using data from cell in dataSet with index cellId
|
||
|
|
*/
|
||
|
|
int FunctionValues(vtkLagrangianParticle* particle, vtkDataSet* dataSet, vtkIdType cellId,
|
||
|
|
double* weights, double* x, double* f) override;
|
||
|
|
|
||
|
|
protected:
|
||
|
|
vtkLagrangianMatidaIntegrationModel();
|
||
|
|
~vtkLagrangianMatidaIntegrationModel() override;
|
||
|
|
|
||
|
|
static double GetRelaxationTime(double dynVisc, double diameter, double density);
|
||
|
|
|
||
|
|
static double GetDragCoefficient(const double* flowVelocity, const double* particleVelocity,
|
||
|
|
double dynVisc, double particleDiameter, double flowDensity);
|
||
|
|
|
||
|
|
private:
|
||
|
|
vtkLagrangianMatidaIntegrationModel(const vtkLagrangianMatidaIntegrationModel&) = delete;
|
||
|
|
void operator=(const vtkLagrangianMatidaIntegrationModel&) = delete;
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif
|