Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
ea8ecb6
Merge branch 'main' into fmuni
fmuni Dec 30, 2024
97205fa
Merge branch 'main' into fmuni
fmuni Dec 30, 2024
9ac2395
Merge branch 'main' into fmuni
fmuni Feb 5, 2025
70315f9
Update to disengagement tutorial
fmuni Feb 5, 2025
978d496
Added pressure difference option to disengagement functionObject
fmuni Feb 19, 2025
063fb17
Added proper reading of limiter parameters to coalescence and breakup…
fmuni Feb 20, 2025
4605c06
Fixed debug code wrongfully added to commit
fmuni Feb 20, 2025
b9d3d13
Added case for kestrel
fmuni Feb 21, 2025
fc6a09e
Added new test case
fmuni Mar 10, 2025
eb6960a
Added interface capture method
fmuni May 6, 2025
9aed700
added moon case
fmuni May 6, 2025
38457e5
added switches for interface algorithms
fmuni May 6, 2025
04ba619
Added openfoam12 solver
fmuni May 28, 2025
d1ca42b
update to new mesh test
fmuni May 29, 2025
cb042c7
Added interfaceTracking scheme to oF12 solver
fmuni May 29, 2025
5976607
Added rotating mesh case
fmuni May 30, 2025
fe331fa
Added missing stl file
fmuni May 30, 2025
f439920
Update to rotating STR and of12 solver
fmuni Jun 4, 2025
aefecc9
Writes Su and Sp for dmdi
fmuni Jun 4, 2025
22c83be
It was better to just compute the dmidtf to avoid issues
fmuni Jun 4, 2025
bcc4efc
Added dmidtf to header file
fmuni Jun 4, 2025
16bf30b
Update to rotating mesh experimental case
fmuni Jun 18, 2025
94d6fec
Added BioReacting phase model
fmuni Jul 7, 2025
0b382a2
update to rotating mesh
fmuni Jul 10, 2025
9c4b956
upgrade to OF13
fmuni Jul 14, 2025
58617f0
Added baffles
fmuni Jul 14, 2025
6ec610c
Update to bioreacting model for multiple reactions
fmuni Jul 15, 2025
44d75ff
Added post for writing kLA
fmuni Jul 28, 2025
8137bbe
Added kLA with correlations
fmuni Jul 28, 2025
e509b0a
Added modifications to BioReactingPhaseModel
fmuni Jul 31, 2025
bd0367f
Update T.liquid
fmuni Aug 11, 2025
aa6a2a6
added study case
fmuni Aug 12, 2025
ad04934
Update case for heat transfer
fmuni Aug 12, 2025
b382c28
Added disengagement function object
fmuni Sep 9, 2025
23350d1
Added Higbie model
fmuni Sep 18, 2025
0ba9ea3
Added function object to write kLA during simulation
fmuni Sep 18, 2025
d97c689
Added multi-step method for solving the energy equations
fmuni Sep 18, 2025
80a0374
Added Grace drag model
fmuni Oct 10, 2025
d9c2496
Added OF13 bubble column test
fmuni Oct 13, 2025
f69d15d
Fixed alternative algorithm for energy
fmuni Oct 13, 2025
5656854
Fixes to disengagement and kLA functionObjects
fmuni Oct 13, 2025
6dc87c5
Added Kevin case for OpenFOAM 13
fmuni Oct 13, 2025
4476e7e
Added alternative heat transfer algorithm
fmuni Oct 17, 2025
4ec813b
Merge pull request #141 from NREL/main
fmuni Oct 27, 2025
c6b623b
Reverted to old disengagement
fmuni Oct 29, 2025
45c7567
Fixed issues in Grace model
fmuni Oct 30, 2025
8f019e4
Added limited Laakkonen and LMM models
fmuni Oct 30, 2025
d40fe09
Added efficiency to binary LMM breakup model
fmuni Oct 30, 2025
b806328
added mesh for Will
fmuni Nov 3, 2025
66caa25
Merge branch 'fmuni' of github.com:NREL/BioReactorDesign into fmuni
fmuni Nov 3, 2025
34cf548
Fixed crash with Grace model
fmuni Nov 4, 2025
0b76c25
Holdup-based disengagement. Center of mass wasn't good enough.
fmuni Nov 4, 2025
abd07a5
update to kLA function object
fmuni Dec 1, 2025
9516fc3
Added 1200RPM case
fmuni Dec 18, 2025
c4270ac
Fixed str1200RPM case
fmuni Dec 19, 2025
bbf0580
Added geometry for salome
fmuni Jan 8, 2026
18fee4f
updated header on drag models
fmuni Mar 30, 2026
ea5daa7
Added formic acid case
fmuni Apr 2, 2026
5632d12
Merge branch 'fmuni' of github.com:NREL/BioReactorDesign into fmuni
fmuni Apr 2, 2026
3718009
Added new mesh case
fmuni Apr 3, 2026
a6d24e5
Added STR350
fmuni Apr 13, 2026
d112718
Update to STR350
fmuni Apr 13, 2026
2237c92
Added optional turbulence correctors for better coupling and robustness
fmuni Apr 13, 2026
3e61347
Added new case for space bioreactor
fmuni Apr 27, 2026
1d226b1
Added missing folder
fmuni Apr 27, 2026
5fb52cd
Update to rotating case
fmuni Apr 29, 2026
2be9321
Added case with MRF and new mesh
fmuni Apr 30, 2026
2aec00d
Added OFtutorials with gas species
fmuni May 4, 2026
6576d86
Added new tetra case and geometry
fmuni May 7, 2026
b5b9a9d
Add README for tetrahedron tutorial
fmuni May 7, 2026
5712865
Specify volume in oxygen sparging tutorial
fmuni May 7, 2026
22f822a
Fix file copy command for STR.zip
fmuni May 7, 2026
8a1198e
Added switch to disable energy and composition solution
fmuni May 7, 2026
dc0ebcc
Merge branch 'fmuni' of github.com:NREL/BioReactorDesign into fmuni
fmuni May 7, 2026
6e13d83
Tutorials restructuring
fmuni May 9, 2026
0252c50
Removed old rotating tutorial
fmuni May 9, 2026
1a0e4dd
Update to tutorial
fmuni May 13, 2026
5680bc9
Added python mesh
fmuni May 13, 2026
01e491d
Fixed bug on Allwclean and cleaner switches for energy and species
fmuni May 20, 2026
2574a8c
Fix to Allmesh in rotating tutorial
fmuni May 27, 2026
f298943
Added density stabilization and smoothing to surface tension force
fmuni May 28, 2026
8a9b75f
Merge branch 'main' into fmuni
fmuni Jun 1, 2026
f7b786e
Restructuring for PR
fmuni Jun 1, 2026
77055e7
removed unused cases
fmuni Jun 1, 2026
fde921f
Updates for PR
fmuni Jun 4, 2026
d2e292e
Update to tests
fmuni Jun 4, 2026
e3f8689
Mod to ci.yml
fmuni Jun 4, 2026
74eba58
Update to documentation
fmuni Jun 4, 2026
a079c30
Removed experimental cases for OF13
fmuni Jul 30, 2026
3a82470
cleaned STR_rotating tutorial
fmuni Jul 30, 2026
d4f9f90
cleaned STR_MRF tutorial
fmuni Jul 30, 2026
6521f6f
removed unused data and geometry folders
fmuni Jul 30, 2026
6dec3dc
Added test workflow for OF13
fmuni Jul 30, 2026
73e7b4a
Update to documentation
fmuni Jul 30, 2026
a4e37cf
removed calibration tutorial
fmuni Jul 30, 2026
033227b
Fixed typos in doc and workflow
fmuni Jul 30, 2026
f499021
Fix image path in README for rotating mesh example
fmuni Aug 28, 2026
9e5122b
Added new rotating case
fmuni Sep 9, 2026
69e5db8
Update to rotating STR
fmuni Sep 10, 2026
df79f1e
Better mesh and easier settings for space STR
fmuni Sep 10, 2026
e999384
Added recircultedSpecies fvPatchField
fmuni Oct 12, 2026
3d5c4cf
Update to BioReactingPhase model
fmuni Oct 12, 2026
5c85835
Merge branch 'main' into fmuni
fmuni Oct 12, 2026
92548ec
Removed fmuni cases directory from tracking
fmuni Oct 12, 2026
384b485
Update to recirculated BC
fmuni Oct 20, 2026
32f84e3
Updated tutorial for recirculatedSpecies BC
fmuni Oct 20, 2026
085fe09
Rework to recirculatedSpecies BC
fmuni Oct 23, 2026
0abfab3
Update to bubble_colum tutorial with new recirculatedSpecies BC
fmuni Oct 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions OFsolvers/OF13/birdmultiphaseEuler/Allwmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ wmake $targetType

wmake -j 20 $targetType fvModels
wmake -j 20 $targetType functionObjects
wmake -j 20 $targetType boundaryConditions

#------------------------------------------------------------------------------
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
recirculatedSpecies/recirculatedSpeciesFvPatchScalarField.C

LIB = $(FOAM_USER_LIBBIN)/libbirdBoundaryConditions
14 changes: 14 additions & 0 deletions OFsolvers/OF13/birdmultiphaseEuler/boundaryConditions/Make/options
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I../phaseSystem/lnInclude \
-I$(LIB_SRC)/physicalProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \


LIB_LIBS = \
-lfiniteVolume \
-lmeshTools \
-L$(FOAM_USER_LIBBIN) \
-lbirdphaseSystem
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2026 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/>.

\*---------------------------------------------------------------------------*/

#include "recirculatedSpeciesFvPatchScalarField.H"
#include "addToRunTimeSelectionTable.H"
#include "fieldMapper.H"
#include "volFields.H"
#include "surfaceFields.H"

// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //

Foam::scalar Foam::recirculatedSpeciesFvPatchScalarField::t() const
{
return db().time().value();
}


// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

Foam::recirculatedSpeciesFvPatchScalarField::
recirculatedSpeciesFvPatchScalarField
(
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF,
const dictionary& dict
)
:
fixedValueFvPatchScalarField(p, iF),
Y0_
(
Function1<scalar>::New
(
"Y0",
db().time().userUnits(),
unitAny,
dict
)
),
r_
(
Function1<scalar>::New
(
"r",
db().time().userUnits(),
unitAny,
dict
)
),
phaseName_(dict.lookupOrDefault<word>("phase","gas")),
otherPatchName_(dict.lookup("otherPatch"))
{


// fixedValueFvPatchScalarField::evaluate();


// Initialise with the value entry if evaluation is not possible
fvPatchScalarField::operator=
(
scalarField("value", iF.dimensions(), dict, p.size())
);

}


Foam::recirculatedSpeciesFvPatchScalarField::
recirculatedSpeciesFvPatchScalarField
(
const recirculatedSpeciesFvPatchScalarField& ptf,
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF,
const fieldMapper& mapper
)
:
fixedValueFvPatchScalarField(ptf, p, iF, mapper),
Y0_(ptf.Y0_, false),
r_(ptf.r_, false),
phaseName_(ptf.phaseName_),
otherPatchName_(ptf.otherPatchName_)
{}


Foam::recirculatedSpeciesFvPatchScalarField::
recirculatedSpeciesFvPatchScalarField
(
const recirculatedSpeciesFvPatchScalarField& ptf,
const DimensionedField<scalar, volMesh>& iF
)
:
fixedValueFvPatchScalarField(ptf, iF),
Y0_(ptf.Y0_, false),
r_(ptf.r_, false),
phaseName_(ptf.phaseName_),
otherPatchName_(ptf.otherPatchName_)
{}



// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //

void Foam::recirculatedSpeciesFvPatchScalarField::map
(
const fvPatchScalarField& ptf,
const fieldMapper& mapper
)
{
fixedValueFvPatchScalarField::map(ptf, mapper);
}


void Foam::recirculatedSpeciesFvPatchScalarField::reset
(
const fvPatchScalarField& ptf
)
{
fixedValueFvPatchScalarField::reset(ptf);
}


void Foam::recirculatedSpeciesFvPatchScalarField::updateCoeffs()
{
if (updated())
{
return;
}

const phaseModel& phase
(
db().lookupObject<phaseModel>
(
IOobject::groupName("alpha", phaseName_)
)
);


if ( !db().foundObject<surfaceScalarField>("alphaRhoPhi." + phase.name()) )
{
return;
}

// Since we're inside initEvaluate/evaluate there might be processor
// comms underway. Change the tag we use.
int oldTag = UPstream::msgType();
UPstream::msgType() = oldTag+1;

const fvMesh& mesh = this->internalField().mesh();

label patchID = mesh.boundaryMesh().findIndex(otherPatchName_);

scalar alphaRhoPhiYr = 0.;
scalar alphaRhoPhiTot = 1e-16;

if ( patchID != 1 )
{
const fvPatch& nbrPatch = mesh.boundary()[patchID];
const scalarField& alphaRhoPhip = nbrPatch.lookupPatchField<surfaceScalarField, scalar>("alphaRhoPhi." + phase.name());
const scalarField& Yp = nbrPatch.lookupPatchField<volScalarField, scalar>(this->internalField().name());

alphaRhoPhiTot = max( mag( sum(alphaRhoPhip)),1e-16 );
alphaRhoPhiYr = mag( sum(alphaRhoPhip*Yp) );
}

reduce(alphaRhoPhiTot, sumOp<scalar>());
reduce(alphaRhoPhiYr, sumOp<scalar>());

const scalar Yr = min(max( alphaRhoPhiYr/alphaRhoPhiTot, 0.), 1.);

scalar rf = min(max(r_->value(t()),0.),1.);

// Restore tag
UPstream::msgType() = oldTag;

fixedValueFvPatchScalarField::operator==( (1. - rf)*Y0_->value(t()) + rf*Yr );

fixedValueFvPatchScalarField::updateCoeffs();
}


void Foam::recirculatedSpeciesFvPatchScalarField::write
(
Ostream& os
) const
{
fvPatchScalarField::write(os);
writeEntry(os, db().time().userUnits(), unitAny, Y0_());
writeEntry(os, db().time().userUnits(), unitAny, r_());
writeEntry(os, "phase", phaseName_);
writeEntry(os, "otherPatch", otherPatchName_);
writeEntry(os, "value", *this);
}


// * * * * * * * * * * * * * * Build Macro Function * * * * * * * * * * * * //

namespace Foam
{
makePatchTypeField
(
fvPatchScalarField,
recirculatedSpeciesFvPatchScalarField
);
}

// ************************************************************************* //
Loading
Loading