Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/elbeem/intern/parametrizer.cpp')
-rw-r--r--intern/elbeem/intern/parametrizer.cpp597
1 files changed, 0 insertions, 597 deletions
diff --git a/intern/elbeem/intern/parametrizer.cpp b/intern/elbeem/intern/parametrizer.cpp
deleted file mode 100644
index 889b8b85c4d..00000000000
--- a/intern/elbeem/intern/parametrizer.cpp
+++ /dev/null
@@ -1,597 +0,0 @@
-/** \file
- * \ingroup elbeem
- */
-/******************************************************************************
- *
- * El'Beem - Free Surface Fluid Simulation with the Lattice Boltzmann Method
- * Copyright 2003-2006 Nils Thuerey
- *
- * Parameter calculator for the LBM Solver class
- *
- *****************************************************************************/
-
-#include <sstream>
-#include "parametrizer.h"
-
-// debug output flag, has to be off for win32 for some reason...
-#define DEBUG_PARAMCHANNELS 0
-
-/*! param seen debug string array */
-const char *ParamStrings[] = {
- "RelaxTime",
- "Reynolds",
- "Viscosity",
- "SoundSpeed",
- "DomainSize",
- "GravityForce",
- "TimeLength",
- "Timestep",
- "Size",
- "TimeFactor",
- "AniFrames",
- "AniFrameTime",
- "AniStart",
- "SurfaceTension",
- "Density",
- "CellSize",
- "GStar",
- "MaxSpeed",
- "SimMaxSpeed",
- "FluidVolHeight",
- "NormalizedGStar",
- "PSERR", "PSERR", "PSERR", "PSERR"
-};
-
-
-
-/******************************************************************************
- * Default constructor
- *****************************************************************************/
-Parametrizer::Parametrizer( void ) :
- mcViscosity( 8.94e-7 ),
- mSoundSpeed( 1500 ),
- mDomainSize( 0.1 ), mCellSize( 0.01 ),
- mcGravity( ParamVec(0.0) ),
- mTimestep(0.0001), mDesiredTimestep(-1.0),
- mMaxTimestep(-1.0),
- mMinTimestep(-1.0),
- mSizex(50), mSizey(50), mSizez(50),
- mTimeFactor( 1.0 ),
- mcAniFrameTime(0.0001),
- mTimeStepScale(1.0),
- mAniStart(0.0),
- //mExtent(1.0, 1.0, 1.0), //mSurfaceTension( 0.0 ),
- mDensity(1000.0), mGStar(0.0001), mFluidVolumeHeight(0.0),
- mSimulationMaxSpeed(0.0),
- mTadapMaxOmega(2.0), mTadapMaxSpeed(0.1), mTadapLevels(1),
- mFrameNum(0),
- mSeenValues( 0 ), mCalculatedValues( 0 )
-{
-}
-
-
-/******************************************************************************
- * Destructor
- *****************************************************************************/
-Parametrizer::~Parametrizer()
-{
- /* not much to do... */
-}
-
-/******************************************************************************
- * Init from attr list
- *****************************************************************************/
-void Parametrizer::parseAttrList()
-{
- if(!mpAttrs) {
- errFatal("Parametrizer::parseAttrList", "mpAttrs pointer not initialized!", SIMWORLD_INITERROR);
- return;
- }
-
- // unused
- string mSetupType = "";
- mSetupType = mpAttrs->readString("p_setup",mSetupType, "Parametrizer","mSetupType", false);
-
- // real params
- if(getAttributeList()->exists("p_viscosity")) {
- mcViscosity = mpAttrs->readChannelFloat("p_viscosity"); seenThis( PARAM_VISCOSITY ); }
-
- mSoundSpeed = mpAttrs->readFloat("p_soundspeed",mSoundSpeed, "Parametrizer","mSoundSpeed", false);
- if(getAttributeList()->exists("p_soundspeed")) seenThis( PARAM_SOUNDSPEED );
-
- mDomainSize = mpAttrs->readFloat("p_domainsize",mDomainSize, "Parametrizer","mDomainSize", false);
- if(getAttributeList()->exists("p_domainsize")) seenThis( PARAM_DOMAINSIZE );
- if(mDomainSize<=0.0) {
- errMsg("Parametrizer::parseAttrList","Invalid real world domain size:"<<mDomainSize<<", resetting to 0.1");
- mDomainSize = 0.1;
- }
-
- if(getAttributeList()->exists("p_gravity")) { // || (!mcGravity.isInited()) ) {
- mcGravity = mpAttrs->readChannelVec3d("p_gravity"); seenThis( PARAM_GRAVITY );
- }
-
- mTimestep = mpAttrs->readFloat("p_steptime",mTimestep, "Parametrizer","mTimestep", false);
- if(getAttributeList()->exists("p_steptime")) seenThis( PARAM_STEPTIME );
-
- mTimeFactor = mpAttrs->readFloat("p_timefactor",mTimeFactor, "Parametrizer","mTimeFactor", false);
- if(getAttributeList()->exists("p_timefactor")) seenThis( PARAM_TIMEFACTOR );
-
- if(getAttributeList()->exists("p_aniframetime")) { //|| (!mcAniFrameTime.isInited()) ) {
- mcAniFrameTime = mpAttrs->readChannelFloat("p_aniframetime");seenThis( PARAM_ANIFRAMETIME );
- }
- mTimeStepScale = mpAttrs->readFloat("p_timestepscale",mTimeStepScale, "Parametrizer","mTimeStepScale", false);
-
- mAniStart = mpAttrs->readFloat("p_anistart",mAniStart, "Parametrizer","mAniStart", false);
- if(getAttributeList()->exists("p_anistart")) seenThis( PARAM_ANISTART );
- if(mAniStart<0.0) {
- errMsg("Parametrizer::parseAttrList","Invalid start time:"<<mAniStart<<", resetting to 0.0");
- mAniStart = 0.0;
- }
-
- //mSurfaceTension = mpAttrs->readFloat("p_surfacetension",mSurfaceTension, "Parametrizer","mSurfaceTension", false);
- //if(getAttributeList()->exists("p_surfacetension")) seenThis( PARAM_SURFACETENSION );
-
- mDensity = mpAttrs->readFloat("p_density",mDensity, "Parametrizer","mDensity", false);
- if(getAttributeList()->exists("p_density")) seenThis( PARAM_DENSITY );
-
- ParamFloat cellSize = 0.0; // unused, deprecated
- cellSize = mpAttrs->readFloat("p_cellsize",cellSize, "Parametrizer","cellSize", false);
-
- mGStar = mpAttrs->readFloat("p_gstar",mGStar, "Parametrizer","mGStar", false);
- if(getAttributeList()->exists("p_gstar")) seenThis( PARAM_GSTAR );
-
- mNormalizedGStar = mpAttrs->readFloat("p_normgstar",mNormalizedGStar, "Parametrizer","mNormalizedGStar", false);
- if(getAttributeList()->exists("p_normgstar")) seenThis( PARAM_NORMALIZEDGSTAR );
-
- mTadapMaxOmega = mpAttrs->readFloat("p_tadapmaxomega",mTadapMaxOmega, "Parametrizer","mTadapMaxOmega", false);
- mTadapMaxSpeed = mpAttrs->readFloat("p_tadapmaxspeed",mTadapMaxSpeed, "Parametrizer","mTadapMaxSpeed", false);
-}
-
-/******************************************************************************
- *! advance to next render/output frame
- *****************************************************************************/
-void Parametrizer::setFrameNum(int frame) {
- mFrameNum = frame;
-#if DEBUG_PARAMCHANNELS>0
- errMsg("DEBUG_PARAMCHANNELS","setFrameNum frame-num="<<mFrameNum);
-#endif // DEBUG_PARAMCHANNELS>0
-}
-/*! get time of an animation frame (renderer) */
-// also used by: mpParam->getCurrentAniFrameTime() , e.g. for velocity dump
-ParamFloat Parametrizer::getAniFrameTime( int frame ) {
- double frametime = (double)frame;
- ParamFloat anift = mcAniFrameTime.get(frametime);
- if(anift<0.0) {
- ParamFloat resetv = 0.;
- errMsg("Parametrizer::setFrameNum","Invalid frame time:"<<anift<<" at frame "<<frame<<", resetting to "<<resetv);
- anift = resetv;
- }
-#if DEBUG_PARAMCHANNELS>0
- if((0)|| (DEBUG_PARAMCHANNELS)) errMsg("DEBUG_PARAMCHANNELS","getAniFrameTime frame="<<frame<<", frametime="<<anift<<" ");
-#endif // DEBUG_PARAMCHANNELS>0
- return anift;
-}
-
-/******************************************************************************
- * scale a given speed vector in m/s to lattice values
- *****************************************************************************/
-ParamVec Parametrizer::calculateAddForce(ParamVec vec, string usage)
-{
- ParamVec ret = vec * (mTimestep*mTimestep) /mCellSize;
- debMsgStd("Parametrizer::calculateVector", DM_MSG, "scaled vector = "<<ret<<" for '"<<usage<<"', org = "<<vec<<" dt="<<mTimestep ,10);
- return ret;
-}
-
-
-/******************************************************************************
- * calculate size of a single cell
- *****************************************************************************/
-ParamFloat Parametrizer::calculateCellSize(void)
-{
- int maxsize = mSizex; // get max size
- if(mSizey>maxsize) maxsize = mSizey;
- if(mSizez>maxsize) maxsize = mSizez;
- maxsize = mSizez; // take along gravity dir for now!
- ParamFloat cellSize = 1.0 / (ParamFloat)maxsize;
- return cellSize;
-}
-
-
-/*****************************************************************************/
-/* simple calulation functions */
-/*****************************************************************************/
-
-/*! get omega for LBM from channel */
-ParamFloat Parametrizer::calculateOmega( double time ) {
- ParamFloat viscStar = calculateLatticeViscosity(time);
- ParamFloat relaxTime = (6.0 * viscStar + 1) * 0.5;
-#if DEBUG_PARAMCHANNELS>0
- errMsg("DEBUG_PARAMCHANNELS","calculateOmega viscStar="<<viscStar<<" relaxtime="<<relaxTime);
-#endif // DEBUG_PARAMCHANNELS>0
- return (1.0/relaxTime);
-}
-
-/*! get external force x component */
-ParamVec Parametrizer::calculateGravity( double time ) {
- ParamVec grav = mcGravity.get(time);
- ParamFloat forceFactor = (mTimestep *mTimestep)/mCellSize;
- ParamVec latticeGravity = grav * forceFactor;
-#if DEBUG_PARAMCHANNELS>0
- errMsg("DEBUG_PARAMCHANNELS","calculateGravity grav="<<grav<<" ff"<<forceFactor<<" lattGrav="<<latticeGravity);
-#endif // DEBUG_PARAMCHANNELS>0
- return latticeGravity;
-}
-
-/*! calculate the lattice viscosity */
-ParamFloat Parametrizer::calculateLatticeViscosity( double time ) {
- // check seen values
- int reqValues = PARAM_VISCOSITY | PARAM_STEPTIME;
- if(!checkSeenValues( reqValues ) ){
- errMsg("Parametrizer::calculateLatticeViscosity"," Missing arguments!");
- }
- ParamFloat viscStar = mcViscosity.get(time) * mTimestep / (mCellSize*mCellSize);
-#if DEBUG_PARAMCHANNELS>0
- errMsg("DEBUG_PARAMCHANNELS","calculateLatticeViscosity viscStar="<<viscStar);
-#endif // DEBUG_PARAMCHANNELS>0
- return viscStar;
-}
-
-/*! get no of steps for the given length in seconds */
-int Parametrizer::calculateStepsForSecs( ParamFloat s ) {
- return (int)(s/mTimestep);
-}
-
-/*! get start time of animation */
-int Parametrizer::calculateAniStart( void ) {
- return (int)(mAniStart/mTimestep);
-}
-
-/*! get no of steps for a single animation frame */
-int Parametrizer::calculateAniStepsPerFrame(int frame) {
- if(!checkSeenValues(PARAM_ANIFRAMETIME)) {
- errFatal("Parametrizer::calculateAniStepsPerFrame", "Missing ani frame time argument!", SIMWORLD_INITERROR);
- return 1;
- }
- int value = (int)(getAniFrameTime(frame)/mTimestep);
- if((value<0) || (value>1000000)) {
- errFatal("Parametrizer::calculateAniStepsPerFrame", "Invalid step-time (="<<value<<") <> ani-frame-time ("<<mTimestep<<") settings, aborting...", SIMWORLD_INITERROR);
- return 1;
- }
- return value;
-}
-
-/*! get no. of timesteps for LBM */
-int Parametrizer::calculateNoOfSteps( ParamFloat timelen ) {
- return (int)(timelen/mTimestep);
-}
-
-/*! get extent of the domain = (1,1,1) if parametrizer not used, (x,y,z) [m] otherwise */
-//ParamVec Parametrizer::calculateExtent( void ) {
- //return mExtent;
-//}
-
-/*! get (scaled) surface tension */
-//ParamFloat Parametrizer::calculateSurfaceTension( void ) { return mSurfaceTension; }
-
-/*! get the length of a single time step */
-// explicity scaled by time factor for refinement
-ParamFloat Parametrizer::getTimestep( void ) {
- return mTimestep;
-}
-
-/*! calculate lattice velocity from real world value [m/s] */
-ParamVec Parametrizer::calculateLattVelocityFromRw( ParamVec ivel ) {
- ParamVec velvec = ivel;
- velvec /= mCellSize;
- velvec *= mTimestep;
- return velvec;
-}
-/*! calculate real world [m/s] velocity from lattice value */
-ParamVec Parametrizer::calculateRwVelocityFromLatt( ParamVec ivel ) {
- ParamVec velvec = ivel;
- velvec *= mCellSize;
- velvec /= mTimestep;
- return velvec;
-}
-
-
-/*! get g star value with fhvol calculations */
-ParamFloat Parametrizer::getCurrentGStar( void ) {
- ParamFloat gStar = mGStar; // check? TODO get from mNormalizedGStar?
- if(mFluidVolumeHeight>0.0) { gStar = mGStar/mFluidVolumeHeight; }
- return gStar;
-}
-
-/******************************************************************************
- * function that tries to calculate all the missing values from the given ones
- * prints errors and returns false if thats not possible
- *****************************************************************************/
-bool Parametrizer::calculateAllMissingValues( double time, bool silent )
-{
- bool init = false; // did we init correctly?
- int valuesChecked = 0;
- int reqValues;
-
- // we always need the sizes
- reqValues = PARAM_SIZE;
- valuesChecked |= reqValues;
- if(!checkSeenValues(reqValues)) {
- errMsg("Parametrizer::calculateAllMissingValues"," Missing size argument!");
- return false;
- }
-
- if(!checkSeenValues(PARAM_DOMAINSIZE)) {
- errMsg("Parametrizer::calculateAllMissingValues"," Missing domain size argument!");
- return false;
- }
- int maxsize = mSizex; // get max size
- if(mSizey>maxsize) maxsize = mSizey;
- if(mSizez>maxsize) maxsize = mSizez;
- maxsize = mSizez; // take along gravity dir for now!
- mCellSize = ( mDomainSize * calculateCellSize() ); // sets mCellSize
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," max domain resolution="<<(maxsize)<<" cells , cellsize="<<mCellSize ,10);
-
-
- /* Carolin init , see DA for details */
- ParamFloat maxDeltaT = 0.0;
-
- /* normalized gstar init */
- reqValues = PARAM_NORMALIZEDGSTAR;
- valuesChecked |= reqValues;
- if(checkSeenValues( reqValues ) ){
- //if(checkSeenValues( PARAM_GSTAR ) ){ if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_WARNING," g star value override by normalizedGStar!",1); }
- const ParamFloat normgstarReset = 0.005;
- if(mNormalizedGStar<=1e-6) {
- errMsg("Parametrizer::calculateAllMissingValues","Invalid NormGstar: "<<mNormalizedGStar<<"... resetting to "<<normgstarReset);
- mNormalizedGStar = normgstarReset;
- }
-
- mGStar = mNormalizedGStar/maxsize;
-
-// TODO FIXME add use testdata check!
-mGStar = mNormalizedGStar/mSizez;
-errMsg("Warning","Used z-dir for gstar!");
-
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," g star set to "<<mGStar<<" from normalizedGStar="<<mNormalizedGStar ,1);
- seenThis(PARAM_GSTAR);
- }
-
- reqValues = PARAM_GSTAR | PARAM_VISCOSITY;
- if((checkSeenValues(PARAM_SURFACETENSION))) reqValues |= PARAM_DENSITY; // surface tension optional now...
- valuesChecked |= reqValues;
- if(checkSeenValues( reqValues ) ){
- const ParamFloat gstarReset = 0.0005;
- if(getCurrentGStar()<=1e-6) {
- errMsg("Parametrizer::calculateAllMissingValues","Invalid Gstar: "<<getCurrentGStar()<<" (set to "<<mGStar<<") ... resetting to "<<gstarReset);
- mGStar = gstarReset;
- }
-
- ParamFloat gStar = getCurrentGStar(); // mGStar
- if(mFluidVolumeHeight>0.0) {
- debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," height"<<mFluidVolumeHeight<<" resGStar = "<<gStar, 10);
- }
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," g star = "<<gStar, 10);
-
- ParamFloat forceStrength = 0.0;
- //if(checkSeenValues(PARAM_GRAVITY)) { forceStrength = norm( calculateGravity(time) ); }
- if(checkSeenValues(PARAM_GRAVITY)) { forceStrength = norm( mcGravity.get(time) ); }
-
- // determine max. delta density per timestep trough gravity force
- if(forceStrength>0.0) {
- maxDeltaT = sqrt( gStar*mCellSize *mTimeStepScale /forceStrength );
- } else {
- // use 1 lbm setp = 1 anim step as max
- maxDeltaT = getAniFrameTime(0);
- }
-
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," targeted step time = "<<maxDeltaT, 10);
-
- //ParamFloat viscStarFac = mViscosity/(mCellSize*mCellSize);
- //if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," viscStarFac = "<<viscStarFac<<" viscosity:"<<mViscosity, 10);
-
- // time step adaptivty, only for caro with max sim speed
- ParamFloat setDeltaT = maxDeltaT;
- if(mDesiredTimestep>0.0) {
- // explicitly set step time according to max velocity in sim
- setDeltaT = mDesiredTimestep;
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," desired step time = "<<setDeltaT, 10);
- mDesiredTimestep = -1.0;
- } else {
- // just use max delta t as current
- }
-
- // and once for init determine minimal delta t by omega max.
- if((mMinTimestep<0.0) || (mMaxTimestep<0.0)) {
- ParamFloat minDeltaT;
- ParamFloat maxOmega = mTadapMaxOmega;
- ParamFloat minRelaxTime = 1.0/maxOmega;
- for(int lev=1; lev<mTadapLevels; lev++) {
- // make minRelaxTime larger for each level that exists...
- minRelaxTime = 2.0 * (minRelaxTime-0.5) + 0.5;
- }
- maxOmega = 1.0/minRelaxTime;
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," maxOmega="<<maxOmega<<" minRelaxTime="<<minRelaxTime<<" levels="<<mTadapLevels, 1);
- // visc-star for min relax time to calculate min delta ta
- if(mcViscosity.get(time)>0.0) {
- minDeltaT = ((2.0*minRelaxTime-1.0)/6.0) * mCellSize * mCellSize / mcViscosity.get(time);
- } else {
- // visc=0, this is not physical, but might happen
- minDeltaT = 0.0;
- }
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," min delta t = "<<minDeltaT<<" , range = " << (maxDeltaT/minDeltaT) ,1);
-
- // sim speed + accel shouldnt exceed 0.1?
- mMaxTimestep = maxDeltaT;
- mMinTimestep = minDeltaT;
- // only use once...
- }
-
- setTimestep( setDeltaT ); // set mTimestep to new value
- init = true;
- }
-
- // finish init
- if(init) {
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," omega = "<<calculateOmega(0.0)<<", delt="<<mTimestep,1);
-
- if(checkSeenValues(PARAM_GRAVITY)) {
- ParamFloat forceFactor = (mTimestep *mTimestep)/mCellSize; // only used for printing...
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," gravity force = "<<PRINT_NTLVEC(mcGravity.get(time))<<", scaled with "<<forceFactor<<" to "<<calculateGravity(time),1);
- }
-
- //mExtent = ParamVec( mCellSize*mSizex, mCellSize*mSizey, mCellSize*mSizez );
- //if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," domain extent = "<<PRINT_NTLVEC(mExtent)<<"m , gs:"<<PRINT_VEC(mSizex,mSizey,mSizez)<<" cs:"<<mCellSize,1);
-
- if(!checkSeenValues(PARAM_ANIFRAMETIME)) {
- errFatal("Parametrizer::calculateAllMissingValues"," Warning no ani frame time given!", SIMWORLD_INITERROR);
- setAniFrameTimeChannel( mTimestep );
- }
-
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," ani frame steps = "<<calculateAniStepsPerFrame(mFrameNum)<<" for frame "<<mFrameNum, 1);
-
- if((checkSeenValues(PARAM_ANISTART))&&(calculateAniStart()>0)) {
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," ani start steps = "<<calculateAniStart()<<" ",1);
- }
-
- if(! isSimworldOk() ) return false;
- // everything ok
- return true;
- }
-
- // init failed ... failure:
- errMsg("Parametrizer::calculateAllMissingValues "," invalid configuration!");
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues ",DM_WARNING, " values seen:", 1);
- for(int i=0;i<PARAM_NUMIDS;i++) {
- if(checkSeenValues( 1<<i )) {
- if(!silent) debMsgStd(" ",DM_NOTIFY, ParamStrings[i], 1);
- }
- }
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues ",DM_WARNING, "values checked but missing:", 1);
- for(int i=0;i<PARAM_NUMIDS;i++) {
- if((!checkSeenValues( 1<<i ))&&
- ( (valuesChecked&(1<<i))==(1<<i)) ) {
- debMsgStd(" ",DM_IMPORTANT, ParamStrings[i], 1);
- }
- }
-
- // print values?
- return false;
-}
-
-
-/******************************************************************************
- * init debug functions
- *****************************************************************************/
-
-
-/*! set kinematic viscosity */
-void Parametrizer::setViscosity(ParamFloat set) {
- mcViscosity = AnimChannel<ParamFloat>(set);
- seenThis( PARAM_VISCOSITY );
-#if DEBUG_PARAMCHANNELS>0
- { errMsg("DebugChannels","Parametrizer::mcViscosity set = "<< mcViscosity.printChannel() ); }
-#endif // DEBUG_PARAMCHANNELS>0
-}
-void Parametrizer::initViscosityChannel(vector<ParamFloat> val, vector<double> time) {
- mcViscosity = AnimChannel<ParamFloat>(val,time);
- seenThis( PARAM_VISCOSITY );
-#if DEBUG_PARAMCHANNELS>0
- { errMsg("DebugChannels","Parametrizer::mcViscosity initc = "<< mcViscosity.printChannel() ); }
-#endif // DEBUG_PARAMCHANNELS>0
-}
-
-/*! set the external force */
-void Parametrizer::setGravity(ParamFloat setx, ParamFloat sety, ParamFloat setz) {
- mcGravity = AnimChannel<ParamVec>(ParamVec(setx,sety,setz));
- seenThis( PARAM_GRAVITY );
-#if DEBUG_PARAMCHANNELS>0
- { errMsg("DebugChannels","Parametrizer::mcGravity set = "<< mcGravity.printChannel() ); }
-#endif // DEBUG_PARAMCHANNELS>0
-}
-void Parametrizer::setGravity(ParamVec set) {
- mcGravity = AnimChannel<ParamVec>(set);
- seenThis( PARAM_GRAVITY );
-#if DEBUG_PARAMCHANNELS>0
- { errMsg("DebugChannels","Parametrizer::mcGravity set = "<< mcGravity.printChannel() ); }
-#endif // DEBUG_PARAMCHANNELS>0
-}
-void Parametrizer::initGravityChannel(vector<ParamVec> val, vector<double> time) {
- mcGravity = AnimChannel<ParamVec>(val,time);
- seenThis( PARAM_GRAVITY );
-#if DEBUG_PARAMCHANNELS>0
- { errMsg("DebugChannels","Parametrizer::mcGravity initc = "<< mcGravity.printChannel() ); }
-#endif // DEBUG_PARAMCHANNELS>0
-}
-
-/*! set time of an animation frame (renderer) */
-void Parametrizer::setAniFrameTimeChannel(ParamFloat set) {
- mcAniFrameTime = AnimChannel<ParamFloat>(set);
- seenThis( PARAM_ANIFRAMETIME );
-#if DEBUG_PARAMCHANNELS>0
- { errMsg("DebugChannels","Parametrizer::mcAniFrameTime set = "<< mcAniFrameTime.printChannel() ); }
-#endif // DEBUG_PARAMCHANNELS>0
-}
-void Parametrizer::initAniFrameTimeChannel(vector<ParamFloat> val, vector<double> time) {
- mcAniFrameTime = AnimChannel<ParamFloat>(val,time);
- seenThis( PARAM_ANIFRAMETIME );
-#if DEBUG_PARAMCHANNELS>0
- { errMsg("DebugChannels","Parametrizer::mcAniFrameTime initc = "<< mcAniFrameTime.printChannel() ); }
-#endif // DEBUG_PARAMCHANNELS>0
-}
-
-// OLD interface stuff
-// reactivate at some point?
-
- /*! surface tension, [kg/s^2] */
- //ParamFloat mSurfaceTension;
- /*! set starting time of the animation (renderer) */
- //void setSurfaceTension(ParamFloat set) { mSurfaceTension = set; seenThis( PARAM_SURFACETENSION ); }
- /*! get starting time of the animation (renderer) */
- //ParamFloat getSurfaceTension( void ) { return mSurfaceTension; }
- /*if((checkSeenValues(PARAM_SURFACETENSION))&&(mSurfaceTension>0.0)) {
- ParamFloat massDelta = 1.0;
- ParamFloat densityStar = 1.0;
- massDelta = mDensity / densityStar *mCellSize*mCellSize*mCellSize;
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," massDelta = "<<massDelta, 10);
-
- mSurfaceTension = mSurfaceTension*mTimestep*mTimestep/massDelta;
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," surface tension = "<<mSurfaceTension<<" ",1);
- } // */
-
-// probably just delete:
-
- /*! reynolds number (calculated from domain length and max. speed [dimensionless] */
- //ParamFloat mReynolds;
-
- /*! set relaxation time */
- //void setRelaxTime(ParamFloat set) { mRelaxTime = set; seenThis( PARAM_RELAXTIME ); }
- /*! get relaxation time */
- //ParamFloat getRelaxTime( void ) { return mRelaxTime; }
- /*! set reynolds number */
- //void setReynolds(ParamFloat set) { mReynolds = set; seenThis( PARAM_REYNOLDS ); }
- /*! get reynolds number */
- //ParamFloat getReynolds( void ) { return mReynolds; }
-
- // calculate reynolds number
- /*if(mViscosity>0.0) {
- ParamFloat maxSpeed = 1.0/6.0; // for rough reynolds approx
- ParamFloat reynoldsApprox = -1.0;
- ParamFloat gridSpeed = (maxSpeed*mCellSize/mTimestep);
- reynoldsApprox = (mDomainSize*gridSpeed) / mViscosity;
- if(!silent) debMsgStd("Parametrizer::calculateAllMissingValues",DM_MSG," reynolds number (D="<<mDomainSize<<", assuming V="<<gridSpeed<<")= "<<reynoldsApprox<<" ", 1);
- } // */
-
- //? mRelaxTime = mpAttrs->readFloat("p_relaxtime",mRelaxTime, "Parametrizer","mRelaxTime", false);
- //if(getAttributeList()->exists("p_relaxtime")) seenThis( PARAM_RELAXTIME );
- //? mReynolds = mpAttrs->readFloat("p_reynolds",mReynolds, "Parametrizer","mReynolds", false);
- //if(getAttributeList()->exists("p_reynolds")) seenThis( PARAM_REYNOLDS );
-
- //mViscosity = mpAttrs->readFloat("p_viscosity",mViscosity, "Parametrizer","mViscosity", false);
- //if(getAttributeList()->exists("p_viscosity") || (!mcViscosity.isInited()) ) { }
- //if(getAttributeList()->exists("p_viscosity"))
-
-
- //ParamFloat viscStar = calculateLatticeViscosity(time);
- //RelaxTime = (6.0 * viscStar + 1) * 0.5;
-
-