FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

solidEquilibriumDisplacementFoam.C

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 Application
00025     solidEquilibriumDisplacementFoam
00026 
00027 Description
00028     Steady-state segregated finite-volume solver of linear-elastic,
00029     small-strain deformation of a solid body, with optional thermal
00030     diffusion and thermal stresses.
00031 
00032     Simple linear elasticity structural analysis code.
00033     Solves for the displacement vector field D, also generating the
00034     stress tensor field sigma.
00035 
00036 Usage
00037     - solidEquilibriumDisplacementFoam [OPTION]
00038 
00039     @param -case <dir> \n
00040     Specify the case directory
00041 
00042     @param -parallel \n
00043     Run the case in parallel
00044 
00045     @param -help \n
00046     Display short usage message
00047 
00048     @param -doc \n
00049     Display Doxygen documentation page
00050 
00051     @param -srcDoc \n
00052     Display source code
00053 
00054 \*---------------------------------------------------------------------------*/
00055 
00056 #include <finiteVolume/fvCFD.H>
00057 #include <OpenFOAM/Switch.H>
00058 
00059 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00060 
00061 int main(int argc, char *argv[])
00062 {
00063 
00064 #   include <OpenFOAM/setRootCase.H>
00065 
00066 #   include <OpenFOAM/createTime.H>
00067 #   include <OpenFOAM/createMesh.H>
00068 #   include "../solidDisplacementFoam/readMechanicalProperties.H"
00069 #   include "createFields.H"
00070 
00071 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00072 
00073     Info<< "\nCalculating displacement field\n" << endl;
00074 
00075     while (runTime.loop())
00076     {
00077         Info<< "Iteration: " << runTime.value() << nl << endl;
00078 
00079 #       include "readSteadyStressFoamControls.H"
00080 
00081         solve
00082         (
00083             fvm::laplacian(2*mu + lambda, Dcorr, "laplacian(DD,Dcorr)")
00084           + fvc::div(sigmaExp + sigmaD)
00085         );
00086 
00087         D += accFac*Dcorr;
00088 
00089         {
00090             volTensorField gradDcorr = fvc::grad(Dcorr);
00091 
00092             sigmaExp = 
00093                 (lambda - mu)*gradDcorr + mu*gradDcorr.T()
00094               + (lambda*I)*tr(gradDcorr);
00095 
00096             sigmaD += accFac*(mu*twoSymm(gradDcorr) + (lambda*I)*tr(gradDcorr));
00097         }
00098 
00099 #       include "calculateStress.H"
00100 #       include "kineticEnergyLimiter.H"
00101 
00102         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
00103             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
00104             << nl << endl;
00105     }
00106 
00107     Info<< "\n end \n";
00108 
00109     return 0;
00110 }
00111 
00112 
00113 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines