11 double timeSpan = newTimeStampOnFace - oldTimeStampOnFace;
14 logDebug(
"getInterpolationWeights(double,double,double)",
"time span equals zero" );
15 return std::pair<double,double>(0.0,1.0);
18 double newWeight = (cellTimeStamp - oldTimeStampOnFace) / timeSpan;
23 logDebug(
"getInterpolationWeights(double,double,double)",
"timeSpan" << timeSpan );
25 return std::pair<double,double>(1.0-newWeight,newWeight);
31 double cellTimeStepSize,
32 double maxGlobalTimeStepSize,
33 int discretisationStepsSize
37 if (
tarch::la::greater(maxGlobalTimeStepSize,0.0) and cellTimeStepSize>maxGlobalTimeStepSize*3.0) {
39 "discretiseAndTruncateTimeStepSizes(double,double,int)",
40 "truncate cell time step size from " << cellTimeStepSize <<
" due to max global dt=" << maxGlobalTimeStepSize
42 cellTimeStepSize = maxGlobalTimeStepSize*3.0;
45 if (discretisationStepsSize<=0) {
46 return cellTimeStepSize;
49 static double maxCurrentTimeStepSize = -1.0;
51 if (maxCurrentTimeStepSize<=0.0) {
52 maxCurrentTimeStepSize = cellTimeStepSize;
54 else if (maxGlobalTimeStepSize>maxCurrentTimeStepSize) {
55 maxCurrentTimeStepSize *= 3.0;
58 double result = maxCurrentTimeStepSize;
59 while (result > cellTimeStepSize) {
63 if (discretisationStepsSize>1) {
64 const double incrementOnThisLevel = result / discretisationStepsSize;
67 result += incrementOnThisLevel;
68 }
while (result<cellTimeStepSize);
69 result -= incrementOnThisLevel;
72 logDebug(
"discretiseAndTruncateTimeStepSizes(double,double,int)",
"reduce dt=" << cellTimeStepSize <<
" to " << result );
#define assertion4(expr, param0, param1, param2, param3)
#define assertion5(expr, param0, param1, param2, param3, param4)
#define logDebug(methodName, logMacroMessageStream)
tarch::logging::Log _log("::")
std::pair< double, double > getInterpolationWeights(double oldTimeStampOnFace, double newTimeStampOnFace, double cellTimeStamp)
double discretiseAndTruncateTimeStepSizes(double cellTimeStepSize, double maxGlobalTimeStepSize, int discretisationStepsSize)
Discretise (bucket) time step sizes and truncate it.
bool greater(double lhs, double rhs, double tolerance=NUMERICAL_ZERO_DIFFERENCE)
bool greaterEquals(double lhs, double rhs, double tolerance=NUMERICAL_ZERO_DIFFERENCE)
bool smallerEquals(double lhs, double rhs, double tolerance=NUMERICAL_ZERO_DIFFERENCE)
bool equals(const Matrix< Rows, Cols, Scalar > &lhs, const Matrix< Rows, Cols, Scalar > &rhs, const Scalar &tolerance=NUMERICAL_ZERO_DIFFERENCE)
Compares to matrices on equality by means of a numerical accuracy.