File: dynamicMeshDict

package info (click to toggle)
openfoam 1912.200626-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 238,940 kB
  • sloc: cpp: 1,159,638; sh: 15,902; ansic: 5,195; lex: 660; xml: 387; python: 282; awk: 212; makefile: 103; sed: 88; csh: 3
file content (75 lines) | stat: -rw-r--r-- 2,255 bytes parent folder | download | duplicates (2)
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
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  v1912                                 |
|   \\  /    A nd           | Website:  www.openfoam.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      dynamicMeshDict;
}

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

dynamicFvMesh   dynamicMotionSolverFvMesh;

motionSolver    coded;
name            myMotion;

codeInclude
#{
    #include "transformField.H"
#};

localCode
#{
    // Generate new set of points
    tmp<pointField> twistColumn
    (
        const scalar& maxRotAngle,
        const pointField& points
    )
    {
        tmp<pointField> tnewPoints(new pointField(points));
        pointField& newPoints = tnewPoints.ref();

        const boundBox bb(points, true);
        const scalar zMin = bb.min()[vector::Z];
        const scalar zSpan = bb.span()[vector::Z];

        forAll(points, pointI)
        {
            const scalar x = points[pointI].component(0);
            const scalar y = points[pointI].component(1);
            const scalar z = points[pointI].component(2);

            // Scale the angle by height
            const scalar localAngle = maxRotAngle*(z-zMin)/zSpan;

            const scalar xr = x*cos(localAngle)-y*sin(localAngle);
            const scalar yr = x*sin(localAngle)+y*cos(localAngle);
            newPoints[pointI] = vector(xr, yr, z);
        }
        return tnewPoints;
    }
#};

code
#{
    const Time& tm = mesh().time();
    const pointField& p0 = points0();

    // Max twist pi at t=10
    const scalar maxRotAngle =
        constant::mathematical::pi*Foam::sin(degToRad(90.0/10.0*tm.value()));

    return twistColumn(maxRotAngle, p0);
#};


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