ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / lagrangian / intermediate / submodels / Kinematic / ParticleForces / SRF / SRFForce.C
blob758e58743b1291dec9828bd73a8e33f0f02a656b
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "SRFForce.H"
28 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
30 template<class CloudType>
31 Foam::SRFForce<CloudType>::SRFForce
33     CloudType& owner,
34     const fvMesh& mesh,
35     const dictionary& dict
38     ParticleForce<CloudType>(owner, mesh, dict, typeName, false),
39     srfPtr_(NULL)
43 template<class CloudType>
44 Foam::SRFForce<CloudType>::SRFForce
46     const SRFForce& srff
49     ParticleForce<CloudType>(srff),
50     srfPtr_(NULL)
54 // * * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * //
56 template<class CloudType>
57 Foam::SRFForce<CloudType>::~SRFForce()
61 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
63 template<class CloudType>
64 void Foam::SRFForce<CloudType>::cacheFields(const bool store)
66     if (store)
67     {
68         const typename SRF::SRFModel& model = this->mesh().template
69             lookupObject<SRF::SRFModel>("SRFProperties");
70         srfPtr_ = &model;
71     }
72     else
73     {
74         srfPtr_ = NULL;
75     }
79 template<class CloudType>
80 Foam::forceSuSp Foam::SRFForce<CloudType>::calcNonCoupled
82     const typename CloudType::parcelType& p,
83     const scalar dt,
84     const scalar mass,
85     const scalar Re,
86     const scalar muc
87 ) const
89     forceSuSp value(vector::zero, 0.0);
91     const typename SRF::SRFModel& srf = *srfPtr_;
93     const vector& omega = srf.omega().value();
95     const vector& r = p.position();
97     // Coriolis and centrifugal acceleration terms
98     value.Su() = mass*(2.0*(p.U() ^ omega) + (omega ^ (r ^ omega)));
100     return value;
104 // ************************************************************************* //