Files
openfoam/applications/test/dictionary/testDictEval1
Mark Olesen efd1ac4b5f ENH: adjust token in preparation for separate expression tokenization
- minor simplification of #if/#endif handling

ENH: improve input robustness with negative-prefixed expansions (#2095)

- especially in blockMeshDict it is useful to negate an value directly.
  Eg,
  ```
     xmax  100;
     xmin  -$xmax;
  ```
  However, this fails since the dictionary expansion is a two-step
  process of tokenization followed by expansion. After the expansion
  the given input would now be the following:
  ```
     xmax  100;
     xmin  - 100;
  ```
  and retrieving a scalar value for 'xmin' fails.

  Counteract this by being more generous on tokenized input when
  attempting to retrieve a label or scalar value.
  If a '-' is found where a number is expected, use it to negate the
  subsequent value.

  The previous solution was to invoke an 'eval':
  ```
     xmax  100;
     xmin  #eval{-$xmax};
  ```
  which adds additional clutter.
2021-05-18 15:30:00 +02:00

52 lines
1.5 KiB
C++

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object dictionary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
eval1 #eval #{ degToRad() *
pi() *
cos(100) * mag(19) + 1 * pi()
+
// Skip comments
pi() * 15 + hypot(3,4) #};
eval2 #eval{ degToRad() *
pi() *
cos(100) * mag(19) + 1 * pi()
+
// Skip comments
pi() * 15 + hypot(3,4) };
eval3 (#eval{hypot(3,4)}, #eval{sqrt(2)}, #eval{pi()});
noeval3 (5, 1.41421, 3.14159);
eval4 #eval{$eval1 * 10};
pi() #eval{pi()};
rand() #eval{100*rand(123456)};
sinh(0.1) #eval{sinh(0.1)};
cosh(0.1) #eval{cosh(0.1)};
sqrt100 #eval{((sqrt(100)))};
float 12.345;
ceil #eval{ ceil($float) };
floor #eval{ floor($float) };
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //