View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002427 | OpenFOAM | Bug | public | 2017-01-09 14:53 | 2017-01-13 14:26 |
Reporter | zhulianhua | Assigned To | henry | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | GNU/Linux | OS | Ubuntu | OS Version | 14.04 |
Fixed in Version | dev | ||||
Summary | 0002427: Description in the header file $FOAM_SRC/fvOptions/sources/general/codedSource/codedSource.H is incorrect. | ||||
Description | Both the `fieldNames' entry and the ''' sourceTimeCoeffs { // Dummy entry } ''' are not correct. | ||||
Steps To Reproduce | Attached is a case using the `vectorCodeSource' type fvOption to apply an external force to drive the channel flow. The `control/fvOptions' are written according to the above-mentioned header file. Run the case using simpleFoam. The error would be: keyword name is undefined in dictionary "/home/lhzhu/OpenFOAM/lhzhu-4.1/run/channel_external_force_bug/constant/fvOptions.externalForce" | ||||
Additional Information | This header file description has not been corrected yet in OpenFOAM-dev also. I've attached a corrected version of the `constant/fvOptions' independently. | ||||
Tags | fvOptions | ||||
|
fvOptions (1,580 bytes)
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 4.1 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object fvOptions; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // externalForce { type vectorCodedSource; active yes; name sourceTime; vectorCodedSourceCoeffs { selectionMode all; fields (U); codeInclude #{ #}; codeCorrect #{ Pout<< "**codeCorrect**" << endl; #}; codeAddSup #{ vectorField& USource = eqn.source(); const scalarField& V = mesh_.V(); vector force(1.0, 0, 0); USource -= force*V; #}; codeSetValue #{ Pout<< "**codeSetValue**" << endl; #}; // Dummy entry. Make dependent on above to trigger recompilation code #{ $codeInclude $codeCorrect $codeAddSup $codeSetValue #}; } sourceTimeCoeffs { $vectorCodedSourceCoeffs; } } // ************************************************************************* // |
|
|
|
Could you provide an updated codedSource.H file including the additional entries in the documentation needed? |
|
Attached please find the updated CodeSource.H with corrected documentation. CodedSource.H (5,972 bytes)
/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class Foam::fv::codedSource Description Constructs on-the-fly fvOption source The hook functions take the following arguments: codeCorrect ( GeometricField<Type, fvPatchField, volMesh>& field ) codeAddSup ( fvMatrix<Type}>& eqn, const label fieldi ) constrain ( fvMatrix<Type}>& eqn, const label fieldi ) where : field is the field in fieldNames eqn is the fvMatrix Usage Example usage in controlDict: \verbatim energySource { type scalarCodedSource; active yes; name sourceTime; scalarCodedSourceCoeffs { selectionMode all; fields (h); codeInclude #{ #}; codeCorrect #{ Pout<< "**codeCorrect**" << endl; #}; codeAddSup #{ const Time& time = mesh().time(); const scalarField& V = mesh_.V(); scalarField& heSource = eqn.source(); heSource -= 0.1*sqr(time.value())*V; #}; codeSetValue #{ Pout<< "**codeSetValue**" << endl; #}; // Dummy entry. Make dependent on above to trigger recompilation code #{ $codeInclude $codeCorrect $codeAddSup $codeSetValue #}; } sourceTimeCoeffs { $scalarCodedSourceCoeffs; } } \endverbatim SourceFiles codedSource.C \*---------------------------------------------------------------------------*/ #ifndef CodedSource_H #define CodedSource_H #include "cellSetOption.H" #include "codedBase.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { namespace fv { /*---------------------------------------------------------------------------*\ Class codedSource Declaration \*---------------------------------------------------------------------------*/ template<class Type> class CodedSource : public cellSetOption, public codedBase { protected: // Protected data word name_; string codeCorrect_; string codeAddSup_; string codeSetValue_; //- Underlying functionObject mutable autoPtr<option> redirectFvOptionPtr_; // Protected Member Functions //- Get the loaded dynamic libraries virtual dlLibraryTable& libs() const; //- Adapt the context for the current object virtual void prepare(dynamicCode&, const dynamicCodeContext&) const; // Return a description (type + name) for the output virtual string description() const; // Clear any redirected objects virtual void clearRedirect() const; // Get the dictionary to initialize the codeContext virtual const dictionary& codeDict() const; public: //- Runtime type information TypeName("coded"); // Constructors //- Construct from components CodedSource ( const word& name, const word& modelType, const dictionary& dict, const fvMesh& mesh ); // Member Functions //- Dynamically compiled fvOption option& redirectFvOption() const; // Evaluation //- Correct field virtual void correct ( GeometricField<Type, fvPatchField, volMesh>& ); //- Explicit and implicit matrix contributions virtual void addSup ( fvMatrix<Type>& eqn, const label fieldi ); //- Explicit and implicit matrix contributions // to compressible equation virtual void addSup ( const volScalarField& rho, fvMatrix<Type>& eqn, const label fieldi ); //- Set value virtual void constrain ( fvMatrix<Type>& eqn, const label fieldi ); // IO //- Read source dictionary virtual bool read(const dictionary& dict); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fv } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository #include "CodedSource.C" #include "CodedSourceIO.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* // |
|
Thanks for the patch. Resolved in OpenFOAM-dev by commit 03362483db760099343e87123d4d9411c5407d6f |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-01-09 14:53 | zhulianhua | New Issue | |
2017-01-09 14:53 | zhulianhua | File Added: fvOptions | |
2017-01-09 14:53 | zhulianhua | Tag Attached: fvOptions | |
2017-01-09 14:53 | zhulianhua | File Added: channel_external_force_bug.tar.gz | |
2017-01-11 09:21 | henry | Note Added: 0007619 | |
2017-01-11 10:09 | zhulianhua | File Added: CodedSource.H | |
2017-01-11 10:09 | zhulianhua | Note Added: 0007621 | |
2017-01-13 14:26 | henry | Assigned To | => henry |
2017-01-13 14:26 | henry | Status | new => resolved |
2017-01-13 14:26 | henry | Resolution | open => fixed |
2017-01-13 14:26 | henry | Fixed in Version | => dev |
2017-01-13 14:26 | henry | Note Added: 0007632 |