testDictEval4 2.58 KB
Newer Older
shunbo's avatar
shunbo committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  v2112                                 |
|   \\  /    A nd           | Website:  www.openfoam.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      dictionary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// Test expansion with negative signs

value   0.5;

radius  3;

negValue  -$value;

select1 10;

sqrt05  #eval{ sqrt(0.5) };

vector  ( -10 ${{-$sqrt05}} $value );

corner   ( ${{ -$radius*sqrt(0.5) }} 1 0 );

corner2  ${{
    vector(-${radius}*sqrt(0.5), ${radius}*sqrt(0.5), 2)
}};


// Just a future idea (2021-05-14) - does not yet work!
#if 0
corner3 #eval #{
    variables ( "outer = $radius*sqrt(0.5)" );
    vector(-outer, outer, 2)
#};
#endif


// The brace-bracket #eval with multi-lines failed for v2012 and earlier

corner2b  #eval
{
    vector(-${radius}*sqrt(0.5), $radius*sqrt(0.5), 2)
};

corner2c  #eval
${{
    vector(-${radius}*sqrt(0.5), $radius*sqrt(0.5), 2)
}};


longSlurp #eval
{
    // This is actually a very simple expression
    1 + 2
// With a long comment that is stripped out
// during reading anyhow.
};


longVariable
${{
    // This is actually a very simple expression in variable syntax
    1 + 2
/*
// With a long comment that is stripped out
// during reading anyhow.
*/
}};


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// Geometric parameters
rxo 2;
ryo 3;
rzo 4;

// Geometric parameters
outerRadius 1;
innerRatio  0.75;

geometry
{
    sphere
    {
        type    sphere;
        origin  (0 0 0);
        radius  ($rxo $ryo $rzo);
    }

    innerSphere
    {
        $sphere

        // Different solutions to the same problem
        radius_v1
        (
            ${{ $innerRatio*$rxo }}
            ${{ $innerRatio*$ryo }}
            ${{ $innerRatio*$rzo }}
        );

        radius_v2  #eval{ $innerRatio*vector($rxo, $ryo, $rzo) };
        radius_v3  ${{ $innerRatio*$[(vector) ../sphere/radius] }};

        // Inplace overwrite the same value
        radius     ${{ $innerRatio*$[(vector) radius] }};
    }
}


// ************************************************************************* //