coupling 3d simulations with 1d simulations (the water hammer …hani/kurser/os_cfd_2016/... ·...
Post on 10-Sep-2020
5 Views
Preview:
TRANSCRIPT
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Coupling 3D Simulations with 1D Simulations(The Water Hammer Effect)
Sudharsan Vasudevan
Department of Applied Mechanics,Chalmers University of Technology,
Gothenburg, Sweden
05 Dec 2016
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 1 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Outline
1 Background
2 Water Hammer
3 3D CFD
4 Domain
5 Preparations
6 New Boundary Conditions
7 Testing
8 Coupled Simulations
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 2 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Coupling 1D and 3D Simulations
Why Coupled Simulations?
1D Simulations 3D Simulations
+ Computationally efficient+ Model complex systems
+ Resolve complex flow structuresin space and time
This Study: 1D Simulink + 3D OpenFOAM
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 3 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Water Hammer Effect
The differential pressure induced in a fluid due to sudden change inmomentum
Joukowsky equation
dp
dt= ρa
dv
dt[a =
√K
ρ; K = ρ
dp
dρ
]a - Speed of sound in fluiddρdp - Compressibility of the fluid
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 4 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
sonicLiquidFoam
1 Begin computation for a time step
2 Solve for the continuity equation
3 Begin PIMPLE loop
4 Solve for the momentum equation
5 Begin pressure corrector loop
6 Perform pressure correction until ’nCorrectors’
7 Repeat steps 4 - 6 until ’nOuterCorrectrs’ or until conditions specifiedin residualControl; which ever is earlier.
8 Linearize the variation in density according to :
ρ = ρ0 + ψ(p− p0) ; ψ =∂ρ
∂p
9 Proceed to next time step
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 5 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Computational Domain
Mesh : Hexaheadral 200 x 10 x 10
Inlet : Reservoir (Constant Pressure)
Outlet : Valve (Varying Velocity)
Walls : Symmetry (No friction)
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 6 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Boundary Conditions
Boundary Pressure VelocityInlet fixedValue zeroGradient
Outlet zeroGradient uniformFixedValue
Walls symmetryPlane symmetryPlane
Coupled Simulations [At the outlet]
Velocity : timeVaryingFromMatlab
Pressure : timeVaryingFromMatlabScalar
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 7 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Preparations
Compatibility Issues..!!The gcc version and Matlab version must be compatible..!!gcc: gcc-4.8.5 ; Matlab : R2015bRefer: se.mathworks.com/support/sysreq/previous_releases.html
ssh -X <CID>@remote12.chalmers.se
#(Enter Password)
echo ". /chalmers/sw/unsup64/OpenFOAM/addToBashrc" >> $HOME/.bashrc
ln -s ~/.bashrc ~/.profile
gnome-terminal & #Open New Terminal
OF4x
mkdir -p $WM_PROJECT_USER_DIR/{run,applications,src}
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 8 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Preparations
tar xzf SudharsanV.tgz
scp -r ./SudharsanV <cid>@remote12.chalmers.se:/chalmers/users/<cid>
#(Enter Password)
#(Login to Chalmers Account with ssh)
OF4x
cp -r SudharsanV/MatlabBC/externalPipe $WM_PROJECT_USER_DIR/src
cp -r SudharsanV/MatlabBC/timeVaryingFromMatlabScalar $WM_PROJECT_USER_DIR/src
cp -r SudharsanV/mySonicLiquidFoam $WM_PROJECT_USER_DIR/applications
cp -r SudharsanV/Cases/1_OF_SimulinkBC $FOAM_RUN
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 9 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
The OpenFOAM Matlab Link
cd $WM_PROJECT_USER_DIR/src/externalPipe
Class : myFirstMatlabPipeMember Function : matlabCallScript1()
double myFirstMatlabPipe::matlabCallScript1
(const char* matlabFilename,double inputArg1) const
{}
Multiple input and output arguments
double* myFirstMatlabPipe::matlabCallScript1
(const char* matlabFilename,double inputArg1,
double inputArg2, double inputArg3) const
{}
Compile
wmake libso
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 10 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
How do the New BC’s work?
Velocity BC gets velocity and pressure field at that time step.
Averaged and given as input to Matlab along with current time.
Velocity and Pressure are obtained from Matlab
Velocity BC sets velocity field at patch
The pressure BC obtains pressure from the velocity BC and sets thepressure field at the patch.
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 11 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Velocity BC : timeVaryingFromMatlabCreating a vector field BC
cd $WM_PROJECT_USER_DIR/src
foamNewBC -f -v timeVaryingFromMatlab
cd timeVaryingFromMatlab
File Name: timeVaryingFromMatlabFvPatchVectorField.HRemove the mapping Functions
#include "myFirstMatlabPipe.H"
.
string matlabFile_;
myFirstMatlabPipe mlObj;
vector vel_;
label curTimeIndex_;
scalar t() const;
scalar prs_;
.
vector& vel()
{
return vel_;
}
scalar prs() const
{
return prs_;
}
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 12 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlab continued..
File Name: timeVaryingFromMatlabFvPatchVectorField.CConstructor 1
fixedValueFvPatchVectorField(p, iF),
matlabFile_("MyScript;"),
vel_(0,0,0),
curTimeIndex_(-1),
prs_(0.0)
Constructor 2
fixedValueFvPatchVectorField(p, iF),
matlabFile_("MyScript;"),//matlabFile_(dict.lookup("matlabFile")),
vel_(0,0,0),
curTimeIndex_(-1),
prs_(0.0)
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 13 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlab continued..Constructor 3
fixedValueFvPatchVectorField(ptf, p, iF, mapper),
vel_(ptf.vel_),
curTimeIndex_(-1),
prs_(ptf.prs_)
Constructor 4
fixedValueFvPatchVectorField(ptf),
vel_(ptf.vel_),
curTimeIndex_(-1),
prs_(ptf.prs_)
Constructor 5
fixedValueFvPatchVectorField(ptf, iF),
vel_(ptf.vel_),
curTimeIndex_(-1),
prs_(ptf.prs_)
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 14 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlab continued..
Remove the Mapping Functions.Replace the function definition of updateCoeffs() with the following
if (updated())
{
return;
}
if (curTimeIndex_ != this->db().time().timeIndex())
{
if (t()>0.0)
{
..//}
//}
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 15 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlab continued..
File Name: timeVaryingFromMatlabFvPatchVectorField.CMember Function: updateCoeffs()
const fvPatchField<vector>& UPatch1 =
patch().lookupPatchField<volVectorField, vector>("U");
scalar meanVelocity=gSum(UPatch1.patchInternalField()*
mag(patch().Sf())).y() / gSum(mag(patch().Sf()));
double UPatch = meanVelocity;
Info<<"U_out to Matlab:"<<UPatch<<endl;
const fvPatchField<scalar>& pPatch2 =
patch().lookupPatchField<volScalarField, scalar>("p");
scalar pPatchInternalAverage = gAverage(pPatch2.patchInternalField());
double pPatch=pPatchInternalAverage;
Info<<"P_out to Matlab:"<<pPatch<<endl;
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 16 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlab continued..
File Name: timeVaryingFromMatlabFvPatchVectorField.CMember Function: updateCoeffs()
//{..
const char *script=matlabFile_.c_str();
double* output = mlObj.matlabCallScript1(script,t(),UPatch,pPatch);
vel_.y()=output[0];
Info<<"U_in from Matlab"<<output[0]<<endl;
prs_=output[1];
Info<<"P_in from Matlab"<<output[1]<<endl;
fixedValueFvPatchField::operator==(vel_);
}
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 17 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlab continued..
File Name: timeVaryingFromMatlabFvPatchVectorField.CMember Function: updateCoeffs()
//{..
else
{
const char *script=matlabFile_.c_str();
double* output = mlObj.matlabCallScript1(script,t(),0,0);
vel_.y()=output[0];
prs_=output[1];
fixedValueFvPatchField::operator==(vel_);
}
curTimeIndex_ = this->db().time().timeIndex();
}
fixedValueFvPatchField::updateCoeffs();
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 18 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlab continued..Member Function : write()Change the definition of the write() function to:
fvPatchVectorField::write(os);
os.writeKeyword("Velocity") << vel_ << token::END_STATEMENT << nl;
writeEntry("value", os);
File Name: Make/options
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-Wl,-rpath,/chalmers/sw/sup64/matlab-2015b/bin/glnxa64 \
-I/chalmers/sw/sup64/matlab-2015b/extern/include \
-I$(WM_PROJECT_USER_DIR)/src/externalPipe/myFirstMatlabPipe
LIB_LIBS = \
-lfiniteVolume \
-lmeshTools \
-L/chalmers/sw/unsup64/OpenFOAM/ThirdParty-4.x/platforms/linux64/gcc-4.8.5/lib64 \
-lstdc++ \
-L/chalmers/sw/sup64/matlab-2015b/bin/glnxa64 \
-leng \
-lmx \
-L$(FOAM_USER_LIBBIN) \
-lexternalMatlabPipes
Complile the BC
wmake libso
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 19 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Pressure BC : timeVaryingFromMatlabScalar
Creating a scalar field BC
cd $WM_PROJECT_USER_DIR/src
foamNewBC -f -s timeVaryingFromMatlabScalar
cd $WM_PROJECT_USER_DIR/src/timeVaryingFromMatlabScalar
File Name: timeVaryingFromMatlabScalarFvPatchScalarField.H
.
//pressure
scalar pr_;
//current time index
label curTimeIndex_;
.
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 20 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
timeVaryingFromMatlabScalar continued..
File Name: timeVaryingFromMatlabScalarFvPatchScalarField.CMember Function: updateCoeffs()
//Obtaining Pressure from velocity BC**
const fvPatchField<vector>& UPatch1 =
this->patch().template lookupPatchField<volVectorField, vector>("U");
const timeVaryingFromMatlabFvPatchVectorField& UPatch2 =
refCast<const timeVaryingFromMatlabFvPatchVectorField>(UPatch1);
scalar pr;
pr = UPatch2.prs();
pr_=pr;
//Set Pressure field at outlet**
fixedValueFvPatchField::operator==(pr_);
curTimeIndex_ = this->db().time().timeIndex();
Compiling the BC
wmake libso
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 21 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
mySonicLiquidFoam
Swap the order in initialization of Velocity and Pressure field increateFields.H
cd $WM_PROJECT_USER_DIR/applications/mySonicLiquidFoam
wmake
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 22 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Test Case
cd $FOAM_RUN/1_OF_SimulinkBC
0/U
outlet
{
type timeVaryingFromMatlab;
}
0/p
outlet
{
type timeVaryingFromMatlabScalar;
}
system/controlDict
libs ("libtimeVaryingFromMatlab.so");
libs ("libtimeVaryingFromMatlabScalar.so");
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 23 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Testing continued..
Run the case
blockMesh
checkMesh
mySonicLiquidFoam >& log&
To Visualize in paraFoam
paraFoam -builtin
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 24 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Results
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 25 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Coupling 1D and 3D Simulations
Valve Signal
Length : 25 m
Diameter : 0.03m
Time : 3s
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 26 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Continued ...
3D Simulation 1D Simulationρ0 = 1000 kg/m3
p0 = 101325 Paψ = 1e-6 s2/m2
a = 1000 m/sµ = 0.001 kg/m.s
ρ=1000 kg/m3
K =1e9 Paν =1e-6 m2/sa = 1000m/s
No Friction(symmetric BC at walls)
No Friction(Pipe settings)
Length : 10 m Length : 15 m
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 27 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Continued ...
Results(Time History of Pressure)
Sources of errors:
1 The effect of time interval andloss of data
2 No. of pipe segments andprobing
3 Block parameters initialization
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 28 / 29
Background Water Hammer 3D CFD Domain Preparations New Boundary Conditions Testing Coupled Simulations
Questions?Thank You
Sudharsan Vasudevan Coupling 1D 3D Simulations 5 Dec 2016 29 / 29
top related