-
-
Notifications
You must be signed in to change notification settings - Fork 129
Add channel-transport transport OpenFOAM #551
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from all commits
1d949e5
ea64e38
a1c142c
f2fb4f3
9a1e7b9
e363145
e103c9a
38f1424
14db9a1
a4d0899
900eef5
759e9e5
78e4769
3b001ee
c711cce
5602cfd
9d72498
7e6502b
9d4322b
7b2d66a
44e2384
d65fc11
a06b27b
8ae9404
a8fa010
4b715ba
719fca6
e10d284
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -116,3 +116,8 @@ runs/ | |
| .project | ||
| .settings/ | ||
| *.swp | ||
|
|
||
| # OpenFOAM solvers | ||
| **/Make/* | ||
| !**/Make/files | ||
| !**/Make/option | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| - Added OpenFOAM variant of the transport participant to the channel-transport tutorial. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| dynamicScalarTransportFoam.C | ||
|
|
||
| EXE = $(FOAM_USER_APPBIN)/dynamicScalarTransportFoam |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| EXE_INC = \ | ||
| -I$(LIB_SRC)/finiteVolume/lnInclude \ | ||
| -I$(LIB_SRC)/meshTools/lnInclude \ | ||
| -I$(LIB_SRC)/sampling/lnInclude | ||
|
|
||
| EXE_LIBS = \ | ||
| -lfiniteVolume \ | ||
| -lfvOptions \ | ||
| -lmeshTools \ | ||
| -lsampling |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| #!/usr/bin/env sh | ||
| set -e -u | ||
|
|
||
| wclean |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| Info << "Reading field T\n" | ||
| << endl; | ||
|
|
||
| volScalarField T( | ||
| IOobject( | ||
| "T", | ||
| runTime.timeName(), | ||
| mesh, | ||
| IOobject::MUST_READ, | ||
| IOobject::AUTO_WRITE), | ||
| mesh); | ||
|
|
||
| Info << "Reading field U\n" | ||
| << endl; | ||
|
|
||
| volVectorField U( | ||
| IOobject( | ||
| "U", | ||
| runTime.timeName(), | ||
| mesh, | ||
| IOobject::MUST_READ, | ||
| IOobject::AUTO_WRITE), | ||
| mesh); | ||
|
|
||
| Info << "Reading transportProperties\n" | ||
| << endl; | ||
|
|
||
| IOdictionary transportProperties( | ||
| IOobject( | ||
| "transportProperties", | ||
| runTime.constant(), | ||
| mesh, | ||
| IOobject::MUST_READ_IF_MODIFIED, | ||
| IOobject::NO_WRITE)); | ||
|
|
||
| Info << "Reading diffusivity DT\n" | ||
| << endl; | ||
|
|
||
| dimensionedScalar DT("DT", dimViscosity, transportProperties); | ||
|
|
||
| #include "createPhi.H" | ||
|
|
||
| #include "createFvOptions.H" |
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can you explain the exact history of this file?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Where would you expect to find this information? In the file itself or in a README in the directory of the solver?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just here first, to decide on what to do with this header. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| // | ||
| // This file is based on the OpenFOAM example application scalarTransportFoam | ||
| // | ||
| // GitLab link: https://gitlab.com/openfoam/core/openfoam/-/tree/master/applications/solvers/basic/scalarTransportFoam | ||
| // | ||
| // This modified version doesn't expect a static velocity field U, instead, it repomputes it every time step. | ||
| // Therefore it allows the preCICE adapter to provide the velocities. | ||
|
|
||
| #include "fvCFD.H" | ||
| #include "fvOptions.H" | ||
| #include "simpleControl.H" | ||
|
|
||
| // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // | ||
|
|
||
| int main(int argc, char *argv[]) | ||
| { | ||
| argList::addNote( | ||
| "Dynamic scalar transport equation solver."); | ||
|
|
||
| #include "addCheckCaseOptions.H" | ||
| #include "createMesh.H" | ||
| #include "createTime.H" | ||
| #include "setRootCaseLists.H" | ||
|
|
||
| simpleControl simple(mesh); | ||
|
|
||
| #include "createFields.H" | ||
|
|
||
| // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // | ||
|
|
||
| Info << "\nCalculating scalar transport\n" | ||
| << endl; | ||
|
|
||
| while (simple.loop()) { | ||
| Info << "Time = " << runTime.timeName() << nl << endl; | ||
|
|
||
| Info << "Recompute phi" << endl; | ||
| fvOptions.correct(U); | ||
| phi = fvc::flux(U); | ||
| #include "CourantNo.H" | ||
|
|
||
| while (simple.correctNonOrthogonal()) { | ||
| fvScalarMatrix TEqn( | ||
| fvm::ddt(T) + fvm::div(phi, T) - fvm::laplacian(DT, T) == | ||
| fvOptions(T)); | ||
|
|
||
| TEqn.relax(); | ||
| fvOptions.constrain(TEqn); | ||
| TEqn.solve(); | ||
| fvOptions.correct(T); | ||
| } | ||
|
|
||
| runTime.write(); | ||
| } | ||
|
|
||
| Info << "End\n" | ||
| << endl; | ||
|
|
||
| return 0; | ||
| } | ||
|
|
||
| // ************************************************************************* // |
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I start feeling very uneasy that we duplicate this file everywhere.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is no uniform style in the tutorials repo. I don't see an easy solution for this.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is a Let's discuss in #559. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,175 @@ | ||
| --- | ||
| Language: Cpp | ||
| # BasedOnStyle: LLVM | ||
| # | ||
| # Proposed clang-format-11 style for OpenFOAM, trying to follow the OpenFOAM style guide: | ||
| # https://develop.openfoam.com/Development/openfoam/-/wikis/coding/style/style | ||
| # Configuration developed for the OpenFOAM-preCICE adapter code: | ||
| # https://github.com/precice/openfoam-adapter | ||
| # Contribute to the discussion at the respective OpenFOAM issue: | ||
| # https://develop.openfoam.com/Development/openfoam/-/issues/1634 | ||
| # | ||
| # Keep `public:` at the first indentation level | ||
| AccessModifierOffset: -4 | ||
| # Undocumented guideline: align arguments after an open bracket. | ||
| AlignAfterOpenBracket: Align | ||
| AlignConsecutiveMacros: false | ||
| AlignConsecutiveAssignments: false | ||
| AlignConsecutiveBitFields: false | ||
| AlignConsecutiveDeclarations: false | ||
| AlignEscapedNewlines: Right | ||
| # Align operands after operators (+,*,<<) (see BreakBeforeBinaryOperators) | ||
| AlignOperands: AlignAfterOperator | ||
| AlignTrailingComments: true | ||
| AllowAllArgumentsOnNextLine: true | ||
| AllowAllConstructorInitializersOnNextLine: true | ||
| AllowAllParametersOfDeclarationOnNextLine: true | ||
| AllowShortEnumsOnASingleLine: true | ||
| AllowShortBlocksOnASingleLine: Never | ||
| AllowShortCaseLabelsOnASingleLine: false | ||
| AllowShortFunctionsOnASingleLine: All | ||
| AllowShortLambdasOnASingleLine: All | ||
| AllowShortIfStatementsOnASingleLine: Always | ||
| AllowShortLoopsOnASingleLine: false | ||
| # Guideline: Splitting return type and function name | ||
| # (this guideline is apparently not strictly followed in OpenFOAM) | ||
| # AlwaysBreakAfterReturnType: All | ||
| AlwaysBreakBeforeMultilineStrings: false | ||
| AlwaysBreakTemplateDeclarations: Yes | ||
| BinPackArguments: false | ||
| BinPackParameters: false | ||
| # Covered by "BreakBeforeBraces" | ||
| BraceWrapping: | ||
| AfterCaseLabel: true | ||
| AfterClass: true | ||
| AfterControlStatement: Always | ||
| AfterEnum: true | ||
| AfterFunction: true | ||
| AfterNamespace: true | ||
| AfterObjCDeclaration: true | ||
| AfterStruct: true | ||
| AfterUnion: true | ||
| AfterExternBlock: true | ||
| BeforeCatch: true | ||
| BeforeElse: true | ||
| BeforeLambdaBody: true | ||
| BeforeWhile: true | ||
| IndentBraces: true | ||
| SplitEmptyFunction: true | ||
| SplitEmptyRecord: true | ||
| SplitEmptyNamespace: true | ||
| # Guideline (almost): Splitting long lines at an = sign. Indent after split. | ||
| # Guideline (almost): Splitting formulae over several lines. | ||
| BreakBeforeBinaryOperators: NonAssignment | ||
| # Always break before braces: if, for, functions, classes, etc. | ||
| BreakBeforeBraces: Allman | ||
| BreakBeforeInheritanceComma: false | ||
| BreakInheritanceList: BeforeColon | ||
| # Guideline (almost): Splitting logical tests over several lines. | ||
| BreakBeforeTernaryOperators: true | ||
| BreakConstructorInitializersBeforeComma: false | ||
| # Undocumented guideline (almost): Have the initializer : in a new line. | ||
| BreakConstructorInitializers: BeforeColon | ||
| BreakStringLiterals: true | ||
| # Here we could set the 80 charactes limit, but that would lead to more aggressive changes. | ||
| ColumnLimit: 0 | ||
| CommentPragmas: '^ IWYU pragma:' | ||
| CompactNamespaces: false | ||
| ConstructorInitializerAllOnOneLineOrOnePerLine: false | ||
| ConstructorInitializerIndentWidth: 0 | ||
| ContinuationIndentWidth: 4 | ||
| Cpp11BracedListStyle: true | ||
| DeriveLineEnding: true | ||
| DerivePointerAlignment: false | ||
| DisableFormat: false | ||
| # Undocumented guideline: add line after "public:" etc (since clang-format 12) | ||
| # EmptyLineAfterAccessModifier: Always | ||
| ExperimentalAutoDetectBinPacking: false | ||
| FixNamespaceComments: false | ||
| # Guideline: Macro loops are like for loops, but without a space. | ||
| ForEachMacros: | ||
| - forAllIters | ||
| - forAllConstIters | ||
| - forAllReverseIters | ||
| - forAllConstReverseIters | ||
| - forAll | ||
| - forAllReverse | ||
| - forAllIter | ||
| - forAllConstIter | ||
| IncludeBlocks: Preserve | ||
| IncludeCategories: | ||
| - Regex: '^"(llvm|llvm-c|clang|clang-c)/' | ||
| Priority: 2 | ||
| SortPriority: 0 | ||
| - Regex: '^(<|"(gtest|gmock|isl|json)/)' | ||
| Priority: 3 | ||
| SortPriority: 0 | ||
| - Regex: '.*' | ||
| Priority: 1 | ||
| SortPriority: 0 | ||
| IncludeIsMainRegex: '(Test)?$' | ||
| IncludeIsMainSourceRegex: '' | ||
| IndentCaseLabels: false | ||
| IndentCaseBlocks: false | ||
| IndentGotoLabels: true | ||
| IndentPPDirectives: None | ||
| IndentExternBlock: AfterExternBlock | ||
| # Guideline: The normal indentation is 4 spaces per logical level. | ||
| IndentWidth: 4 | ||
| IndentWrappedFunctionNames: false | ||
| InsertTrailingCommas: None | ||
| KeepEmptyLinesAtTheStartOfBlocks: true | ||
| MacroBlockBegin: '' | ||
| MacroBlockEnd: '' | ||
| # Required to not change code following the guidelines | ||
| # "Leave two empty lines between sections" and | ||
| # "Use two empty lines between functions" | ||
| MaxEmptyLinesToKeep: 2 | ||
| NamespaceIndentation: None | ||
| PenaltyBreakAssignment: 2 | ||
| PenaltyBreakBeforeFirstCallParameter: 19 | ||
| PenaltyBreakComment: 300 | ||
| PenaltyBreakFirstLessLess: 120 | ||
| PenaltyBreakString: 1000 | ||
| PenaltyBreakTemplateDeclaration: 10 | ||
| PenaltyExcessCharacter: 1000000 | ||
| PenaltyReturnTypeOnItsOwnLine: 60 | ||
| PointerAlignment: Left | ||
| ReflowComments: true | ||
| # Do not change the order of include statements (could be catastrophic for OpenFOAM) | ||
| SortIncludes: false | ||
| SortUsingDeclarations: false | ||
| SpaceAfterCStyleCast: false | ||
| SpaceAfterLogicalNot: false | ||
| # No "template <T>" (guideline already used, but not documented) | ||
| SpaceAfterTemplateKeyword: false | ||
| SpaceBeforeAssignmentOperators: true | ||
| # No a{1} (no guideline) | ||
| SpaceBeforeCpp11BracedList: true | ||
| SpaceBeforeCtorInitializerColon: true | ||
| SpaceBeforeInheritanceColon: true | ||
| # Guideline: Spaces in "if ()", "for ()", but not "forAll ()". | ||
| SpaceBeforeParens: ControlStatementsExceptForEachMacros | ||
| # Guideline: Range-based for should have a space surrounding the ':'. | ||
| SpaceBeforeRangeBasedForLoopColon: true | ||
| SpaceInEmptyBlock: false | ||
| SpaceInEmptyParentheses: false | ||
| SpacesBeforeTrailingComments: 1 | ||
| SpacesInAngles: false | ||
| SpacesInConditionalStatement: false | ||
| # No "arr[3] = [ 1, 2, 3 ]" (no guideline). | ||
| SpacesInContainerLiterals: false | ||
| SpacesInCStyleCastParentheses: false | ||
| SpacesInParentheses: false | ||
| SpacesInSquareBrackets: false | ||
| SpaceBeforeSquareBrackets: false | ||
| # Treat the code as C++11 or later | ||
| Standard: Latest | ||
| StatementMacros: | ||
| TabWidth: 4 | ||
| UseCRLF: false | ||
| # Guideline: No tab characters - only use spaces for indentation. | ||
| UseTab: Never | ||
| WhitespaceSensitiveMacros: | ||
| ... | ||
|
|
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should have these in the central gitignore: https://github.com/precice/tutorials/blob/develop/.gitignore The
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's the other way around.
Lines 41 to 43 in 3f253cc
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Interestingly, we don't have a But again, the |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| 0/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| FoamFile | ||
| { | ||
| version 2.0; | ||
| format ascii; | ||
| class volScalarField; | ||
| object T; | ||
| } | ||
|
|
||
| dimensions [0 0 0 1 0 0 0]; | ||
|
|
||
| internalField uniform 0; | ||
|
|
||
| boundaryField | ||
| { | ||
| inlet | ||
| { | ||
| type zeroGradient; | ||
| } | ||
|
|
||
| outlet | ||
| { | ||
| type advective; | ||
| } | ||
|
|
||
| obstacle | ||
| { | ||
| type zeroGradient; | ||
| } | ||
|
|
||
| upperWall | ||
| { | ||
| type zeroGradient; | ||
| } | ||
|
|
||
| lowerWall | ||
| { | ||
| type zeroGradient; | ||
| } | ||
|
|
||
| frontAndBack | ||
| { | ||
| type empty; | ||
| } | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.