From e43cdce2ff9ed1d8b95cd2f8dc25464918b48f11 Mon Sep 17 00:00:00 2001 From: goniva Date: Mon, 2 Jun 2014 18:24:30 +0200 Subject: [PATCH] release on 2014-06-02_18-24-30 --- README | 81 --------- .../solvers/cfdemSolverIB/cfdemSolverIB.C | 5 +- .../solvers/cfdemSolverPiso/cfdemSolverPiso.C | 170 +++++++++--------- .../cfdemSolverPisoScalar.C | 4 + doc/CFDEMcoupling_Manual.html | 18 +- doc/CFDEMcoupling_Manual.pdf | Bin 505516 -> 506666 bytes doc/CFDEMcoupling_Manual.txt | 18 +- doc/IOModel_basicIO.html | 2 +- doc/IOModel_basicIO.txt | 2 +- doc/IOModel_trackIO.html | 2 +- doc/IOModel_trackIO.txt | 2 +- doc/averagingModel.html | 2 +- doc/averagingModel.txt | 2 +- doc/cfdemSolverIB.html | 2 +- doc/cfdemSolverIB.txt | 2 +- doc/cfdemSolverPiso.html | 2 +- doc/cfdemSolverPiso.txt | 2 +- doc/clockModel_standardClock.html | 2 +- doc/clockModel_standardClock.txt | 2 +- doc/dataExchangeModel_oneWayVTK.html | 2 +- doc/dataExchangeModel_oneWayVTK.txt | 2 +- doc/dataExchangeModel_twoWayFiles.html | 4 +- doc/dataExchangeModel_twoWayFiles.txt | 4 +- doc/forceModel_ArchimedesIB.html | 2 +- doc/forceModel_ArchimedesIB.txt | 2 +- doc/forceModel_DiFeliceDrag.html | 2 +- doc/forceModel_DiFeliceDrag.txt | 2 +- doc/forceModel_GidaspowDrag.html | 11 +- doc/forceModel_GidaspowDrag.txt | 9 +- doc/forceModel_KochHillDrag.html | 8 +- doc/forceModel_KochHillDrag.txt | 7 +- doc/forceModel_LaEuScalarTemp.html | 8 +- doc/forceModel_LaEuScalarTemp.txt | 6 +- doc/forceModel_ShirgaonkarIB.html | 2 +- doc/forceModel_ShirgaonkarIB.txt | 2 +- doc/forceModel_gradPForce.html | 2 +- doc/forceModel_gradPForce.txt | 2 +- doc/forceModel_particleCellVolume.html | 6 +- doc/forceModel_particleCellVolume.txt | 6 +- doc/forceModel_viscForce.html | 4 +- doc/forceModel_viscForce.txt | 4 +- doc/githubAccess_public.html | 14 +- doc/githubAccess_public.pdf | Bin 362749 -> 362748 bytes doc/githubAccess_public.txt | 14 +- doc/liggghtsCommandModel_execute.html | 3 + doc/liggghtsCommandModel_execute.txt | 2 + ...liggghtsCommandModel_readLiggghtsData.html | 4 +- doc/liggghtsCommandModel_readLiggghtsData.txt | 4 +- doc/liggghtsCommandModel_runLiggghts.html | 5 +- doc/liggghtsCommandModel_runLiggghts.txt | 5 +- doc/liggghtsCommandModel_writeLiggghts.html | 3 + doc/liggghtsCommandModel_writeLiggghts.txt | 2 + doc/locateModel_engineSearchIB.html | 4 +- doc/locateModel_engineSearchIB.txt | 4 +- doc/momCoupleModel.html | 4 + doc/momCoupleModel.txt | 4 + doc/momCoupleModel_explicitCouple.html | 2 +- doc/momCoupleModel_explicitCouple.txt | 2 +- doc/momCoupleModel_implicitCouple.html | 4 +- doc/momCoupleModel_implicitCouple.txt | 4 +- doc/momCoupleModel_noCouple.html | 4 +- doc/momCoupleModel_noCouple.txt | 4 +- doc/probeModel.html | 2 +- doc/probeModel.txt | 2 +- doc/smoothingModel_constDiffSmoothing.html | 6 +- doc/smoothingModel_constDiffSmoothing.txt | 6 +- doc/voidFractionModel_GaussVoidFraction.html | 18 +- doc/voidFractionModel_GaussVoidFraction.txt | 18 +- doc/voidFractionModel_IBVoidFraction.html | 10 +- doc/voidFractionModel_IBVoidFraction.txt | 10 +- ...FractionModel_bigParticleVoidFraction.html | 20 +-- ...dFractionModel_bigParticleVoidFraction.txt | 20 +-- doc/voidFractionModel_centreVoidFraction.html | 4 +- doc/voidFractionModel_centreVoidFraction.txt | 4 +- ...voidFractionModel_dividedVoidFraction.html | 22 ++- doc/voidFractionModel_dividedVoidFraction.txt | 20 +-- src/lagrangian/cfdemParticle/Make/files | 61 ++++++- src/lagrangian/cfdemParticle/Make/options | 12 +- .../cfdemParticle/cfdTools/versionInfo.H | 6 +- .../cfdemParticle/cfdemCloud/cfdemCloud.C | 129 ++++++------- .../cfdemParticle/cfdemCloud/cfdemCloud.H | 22 +++ .../cfdemParticle/cfdemCloud/cfdemCloudI.H | 26 +++ .../derived/cfdemCloudIB/cfdemCloudIB.C | 9 + .../cfdemParticle/etc/OFversion/OFversion.H | 9 +- src/lagrangian/cfdemParticle/etc/bashrc | 33 ++-- .../cfdemParticle/etc/cfdemSystemTest.sh | 3 +- .../etc/compileCFDEMcoupling_all.sh | 8 +- .../etc/compileCFDEMcoupling_sol.sh | 104 +++++++++-- .../cfdemParticle/etc/compileLIGGGHTS.sh | 17 ++ .../cfdemParticle/etc/compileLIGGGHTS_lib.sh | 70 ++++++++ src/lagrangian/cfdemParticle/etc/cshrc | 17 +- src/lagrangian/cfdemParticle/etc/functions.sh | 93 +++++++++- .../cfdemParticle/etc/library-list.txt | 10 ++ .../cfdemParticle/etc/solver-list.txt | 10 ++ .../cfdemParticle/etc/tutorial-list.txt | 48 ++++- .../subModels/IOModel/IOModel/IOModel.C | 74 +++++++- .../subModels/IOModel/IOModel/IOModel.H | 8 +- .../subModels/IOModel/basicIO/basicIO.C | 71 +------- .../subModels/IOModel/basicIO/basicIO.H | 7 +- .../subModels/IOModel/sophIO/sophIO.C | 15 +- .../subModels/IOModel/sophIO/sophIO.H | 2 +- .../subModels/IOModel/trackIO/trackIO.C | 12 +- .../subModels/IOModel/trackIO/trackIO.H | 2 +- .../averagingModel/averagingModel.C | 33 +++- .../averagingModel/averagingModel.H | 8 + .../dataExchangeModel/twoWayMPI/twoWayMPI.C | 59 +++--- .../dataExchangeModel/twoWayMPI/twoWayMPI.H | 2 +- .../forceModel/DiFeliceDrag/DiFeliceDrag.C | 82 +++++++-- .../forceModel/DiFeliceDrag/DiFeliceDrag.H | 10 ++ .../forceModel/GidaspowDrag/GidaspowDrag.C | 170 ++++++++++++++---- .../forceModel/GidaspowDrag/GidaspowDrag.H | 13 ++ .../forceModel/KochHillDrag/KochHillDrag.C | 35 ++-- .../forceModel/KochHillDrag/KochHillDrag.H | 4 +- .../LaEuScalarTemp/LaEuScalarTemp.C | 82 ++++++--- .../LaEuScalarTemp/LaEuScalarTemp.H | 7 +- .../checkCouplingInterval.C | 2 +- .../forceModel/forceModel/forceModel.C | 19 +- .../forceModel/forceModel/forceModel.H | 19 +- .../subModels/forceModel/noDrag/noDrag.C | 26 ++- .../liggghtsCommandModel/execute/execute.C | 74 +------- .../liggghtsCommandModel/execute/execute.H | 4 +- .../liggghtsCommandModel.C | 89 ++++++++- .../liggghtsCommandModel.H | 9 +- .../readLiggghtsData/readLiggghtsData.C | 5 +- .../readLiggghtsData/readLiggghtsData.H | 2 +- .../runLiggghts/runLiggghts.C | 5 +- .../runLiggghts/runLiggghts.H | 2 +- .../writeLiggghts/writeLiggghts.C | 5 +- .../writeLiggghts/writeLiggghts.H | 2 +- .../locateModel/engineSearch/engineSearch.C | 9 +- .../locateModel/engineSearch/engineSearch.H | 4 +- .../standardSearch/standardSearch.C | 4 +- .../probeModel/particleProbe/particleProbe.H | 2 +- .../constDiffSmoothing/constDiffSmoothing.C | 103 ++++++----- .../constDiffSmoothing/constDiffSmoothing.H | 1 + .../GaussVoidFraction/GaussVoidFraction.C | 27 +-- .../GaussVoidFraction/GaussVoidFraction.H | 8 +- .../IBVoidFraction/IBVoidFraction.C | 2 +- .../bigParticleVoidFraction.C | 24 ++- .../bigParticleVoidFraction.H | 6 +- .../centreVoidFraction/centreVoidFraction.C | 22 ++- .../dividedVoidFraction/dividedVoidFraction.C | 17 +- .../dividedVoidFraction/dividedVoidFraction.H | 6 +- .../voidFractionModel/voidFractionModel.C | 3 +- .../voidFractionModel/voidFractionModel.H | 12 +- .../cfdemSolverPiso/ErgunTestMPI/CFD/0/U | 18 -- .../CFD/constant/couplingProperties | 13 +- .../CFD/constant/liggghtsCommands | 2 +- .../CFD/octave/totalPressureDrop.m | 2 +- .../ErgunTestMPI/CFD/system/controlDict | 2 +- .../CFD/system/funkySetFieldsDict | 0 .../ErgunTestMPI/CFD/system/fvSolution | 2 +- .../ErgunTestMPI/DEM/in.liggghts_init | 2 +- .../ErgunTestMPI/DEM/in.liggghts_resume | 2 +- .../ErgunTestMPI/DEM/liggghts.restart | Bin 3923813 -> 2481193 bytes .../ErgunTestMPI/DEM/post/dummy | 1 - .../ErgunTestMPI/parCFDDEMrun.sh | 24 +-- .../CFD/constant/couplingProperties | 1 + .../ErgunTestMPI_restart/Allrun.sh | 24 +-- .../ErgunTestMPI_restart/CFD/0/U | 6 +- .../ErgunTestMPI_restart/CFD/0/p | 3 +- .../CFD/constant/couplingProperties_init | 78 ++++++-- .../CFD/constant/couplingProperties_restart | 74 ++++++-- .../CFD/constant/liggghtsCommands_init | 4 + .../CFD/constant/liggghtsCommands_restart | 6 +- .../CFD/system/controlDict | 8 +- .../CFD/system/controlDict_init | 8 +- .../CFD/system/controlDict_restart | 8 +- .../CFD/system/decomposeParDict | 4 +- .../CFD/system/funkySetFieldsDict | 0 .../CFD/system/fvSolution | 34 +--- .../ErgunTestMPI_restart/DEM/in.liggghts_init | 8 +- .../DEM/in.liggghts_restart | 13 +- .../DEM/in.liggghts_resume | 9 +- .../ErgunTestMPI_restart/DEM/liggghts.restart | Bin 3923813 -> 2481193 bytes .../ErgunTestMPI_restart/DEM/post/dummy | 60 ------- .../ErgunTestMPI_restart/parCFDDEMrun.sh | 5 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/Ksl | 8 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/U | 7 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/Us | 7 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/k | 8 +- .../settlingTestMPI/CFD/0/nuSgs | 7 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/p | 12 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/rho | 10 +- .../settlingTestMPI/CFD/0/voidfraction | 13 +- .../CFD/constant/couplingProperties | 6 +- .../CFD/constant/polyMesh/blockMeshDict | 13 +- .../settlingTestMPI/CFD/system/fvSolution | 41 +---- .../settlingTestMPI/parCFDDEMrun.sh | 2 +- 189 files changed, 1923 insertions(+), 1199 deletions(-) delete mode 100755 README create mode 100755 src/lagrangian/cfdemParticle/etc/compileLIGGGHTS_lib.sh mode change 100755 => 100644 tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/system/funkySetFieldsDict mode change 100755 => 100644 tutorials/cfdemSolverPiso/ErgunTestMPI_restart/CFD/system/funkySetFieldsDict diff --git a/README b/README deleted file mode 100755 index fd2ca75..0000000 --- a/README +++ /dev/null @@ -1,81 +0,0 @@ -/*---------------------------------------------------------------------------*\ - CFDEMcoupling - Open Source CFD-DEM coupling - - CFDEMcoupling is part of the CFDEMproject - www.cfdem.com - Christoph Goniva, christoph.goniva@cfdem.com - Copyright 2009-2012 JKU Linz - Copyright 2012- DCS Computing GmbH, Linz -------------------------------------------------------------------------------- -License - This file is part of CFDEMcoupling. - - CFDEMcoupling 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. - - CFDEMcoupling 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 CFDEMcoupling; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Description - This code is designed to realize coupled CFD-DEM simulations using LIGGGHTS - and OpenFOAM. Note: this code is not part of OpenFOAM (see DISCLAIMER). -\*---------------------------------------------------------------------------*/ - - -CFDEM coupling provides an open source parallel coupled CFD-DEM framework -combining the strengths of LIGGGHTS DEM code and the Open Source -CFD package OpenFOAM(R)(*). The CFDEMcoupling toolbox allows to expand -standard CFD solvers of OpenFOAM(R)(*) to include a coupling to the DEM -code LIGGGHTS. In this toolbox the particle representation within the -CFD solver is organized by "cloud" classes. Key functionalities are organised -in sub-models (e.g. force models, data exchange models, etc.) which can easily -be selected and combined by dictionary settings. - -The coupled solvers run fully parallel on distributed-memory clusters. - -Features are: - -- its modular approach allows users to easily implement new models -- its MPI parallelization enables to use it for large scale problems -- the "forum"_lws on CFD-DEM gives the possibility to exchange with other - users / developers -- the use of GIT allows to easily update to the latest version -- basic documentation is provided - -The file structure: - -- "src" directory including the source files of the coupling toolbox and models -- "applications" directory including the solver files for coupled CFD-DEM simulations -- "doc" directory including the documentation of CFDEMcoupling -- "tutorials" directory including basic tutorial cases showing the functionality - - - -Details on installation are given on the "www.cfdem.com" - -The functionality of this CFD-DEM framwork is described via "tutorial cases" showing -how to use different solvers and models. - -CFDEMcoupling stands for Computational Fluid Dynamics (CFD) - -Discrete Element Method (DEM) coupling. - -CFDEMcoupling is an open-source code, distributed freely under the terms of the -GNU Public License (GPL). - -Core development of CFDEMcoupling is done by -Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012 - - -\*---------------------------------------------------------------------------*/ -(*) "OpenFOAM(R)"_of is a registered trade mark of the ESI Group. -This offering is not affiliated, approved or endorsed by ESI Group, -the producer of the OpenFOAMĀ® software and owner of the OpenFOAMĀ® trade mark. -\*---------------------------------------------------------------------------*/ diff --git a/applications/solvers/cfdemSolverIB/cfdemSolverIB.C b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C index 2df2a46..93f0d41 100755 --- a/applications/solvers/cfdemSolverIB/cfdemSolverIB.C +++ b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C @@ -130,9 +130,12 @@ int main(int argc, char *argv[]) volScalarField rUA = 1.0/UEqn.A(); U = rUA*UEqn.H(); + #ifdef version23 + phi = (fvc::interpolate(U) & mesh.Sf()); // there is a new version in 23x + #else phi = (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rUA, U, phi); - + #endif adjustPhi(phi, U, p); #if defined(version22) diff --git a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C index 73c97d6..c07ca22 100644 --- a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C +++ b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C @@ -73,7 +73,7 @@ int main(int argc, char *argv[]) // do particle stuff particleCloud.clockM().start(2,"Coupling"); particleCloud.evolve(voidfraction,Us,U); - + Info << "update Ksl.internalField()" << endl; Ksl = particleCloud.momCoupleM(0).impMomSource(); particleCloud.smoothingM().smoothen(Ksl); @@ -83,95 +83,103 @@ int main(int argc, char *argv[]) particleCloud.clockM().stop("Coupling"); particleCloud.clockM().start(26,"Flow"); - // Pressure-velocity PISO corrector + + if(particleCloud.solveFlow()) { - // Momentum predictor - fvVectorMatrix UEqn - ( - fvm::ddt(voidfraction,U) //particleCloud.ddtVoidfractionU(U,voidfraction) // - + fvm::div(phi, U) -// + turbulence->divDevReff(U) - + particleCloud.divVoidfractionTau(U, voidfraction) - == - - fvm::Sp(Ksl/rho,U) - ); - - if (modelType=="B") - UEqn == - fvc::grad(p) + Ksl/rho*Us; - else - UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us; - - UEqn.relax(); - - if (momentumPredictor) - solve(UEqn); - - // --- PISO loop - - //for (int corr=0; corrdivDevReff(U) + + particleCloud.divVoidfractionTau(U, voidfraction) + == + - fvm::Sp(Ksl/rho,U) + ); if (modelType=="B") - U -= rUA*fvc::grad(p) - Ksl/rho*Us*rUA; + UEqn == - fvc::grad(p) + Ksl/rho*Us; else - U -= voidfraction*rUA*fvc::grad(p) - Ksl/rho*Us*rUA; + UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us; - U.correctBoundaryConditions(); + UEqn.relax(); - } // end piso loop + if (momentumPredictor) + solve(UEqn); + + // --- PISO loop + + //for (int corr=0; corrcorrect(); + }// end solveFlow + else + { + Info << "skipping flow solution." << endl; } - turbulence->correct(); - runTime.write(); Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" diff --git a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C index af3134d..ac01594 100644 --- a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C +++ b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C @@ -133,8 +133,12 @@ int main(int argc, char *argv[]) U = rUA*UEqn.H(); + #ifdef version23 + phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() ); + #else phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() ) + fvc::ddtPhiCorr(rUAvoidfraction, U, phi); + #endif surfaceScalarField phiS(fvc::interpolate(Us*voidfraction) & mesh.Sf()); surfaceScalarField phiGes = phi + rUAf*(fvc::interpolate(Ksl/rho) * phiS); if (modelType=="A") diff --git a/doc/CFDEMcoupling_Manual.html b/doc/CFDEMcoupling_Manual.html index 54ca18f..4bce9e4 100644 --- a/doc/CFDEMcoupling_Manual.html +++ b/doc/CFDEMcoupling_Manual.html @@ -21,7 +21,7 @@

1. Contents

-

The CFDEMcoupling documentation is organized into the following sections. If you find errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so we can improve the CFDEMcoupling documentation. +

The CFDEMcoupling documentation is organized into the following sections. If you find any errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so the CFDEMcoupling documentation can be improved.

1.1 About CFDEMcoupling
1.2 Installation
@@ -63,11 +63,11 @@

Details on installation are given on the CFDEMproject WWW Site . -The functionality of this CFD-DEM framwork is described via tutorial cases showing how to use different solvers and models. +The functionality of this CFD-DEM framework is described via tutorial cases showing how to use different solvers and models.

CFDEMcoupling stands for Computational Fluid Dynamics (CFD) -Discrete Element Method (DEM) coupling.

-

CFDEMcoupling is an open-source code, distributed freely under the terms of the GNU Public License (GPL). +

CFDEMcoupling is an open-source code, distributed freely under the terms of the GNU Public License (GPL).

Core development of CFDEMcoupling is done by Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012

@@ -90,7 +90,7 @@ In order to get the latest code version, please use the git repository at http:/

General:

-

Each solver of the CFDEMcoupling is comes with at least one tutorial example, showing its functionality and correct useage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization). +

Each solver of the CFDEMcoupling comes with at least one tutorial example, showing its functionality and correct usage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization).

Location:

@@ -108,7 +108,7 @@ In order to get the latest code version, please use the git repository at http:/

The main settings of a simulation are done via dictionaries:

-

The DEM setup of each case is defined by a LIGGGHTS input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the LIGGGHTS setup, please have a look in the LIGGGHTS manual. +

The DEM setup of each case is defined by a LIGGGHTS input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the LIGGGHTS setup, please have a look at the LIGGGHTS manual.

Standard CFD settings are defined in $caseDir/CFD/constant (e.g. transportProperties, RASproperties, etc.) and $caseDir/CFD/system (e.g. fvSchemes, controlDict). You can find more information on that in OpenFOAM(R)(*) documentations (www.openFoam.com)(*).

@@ -164,16 +164,16 @@ In order to get the latest code version, please use the git repository at http:/

modelType 
 
-

"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their appliccability", JFM. "A" requres the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". +

"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes".

couplingInterval 
 
-

The coupling interval determines the time passing between two CFD-DEM data exchanges. +

The coupling interval determines the time passing between two CFD-DEM data exchanges.

A useful procedure would be: -1) Set the DEM TS in the in.xxx according to the needs of the pure DEM problem. +1) Set the DEM timestep in the in.xxx file according to the needs of the pure DEM problem. 2) Set the "couplingInterval", which refers to the DEM timesteps. Depending on the problem you will need to have a close (small couplingInterval) or loose coupling. -3) Choose the CFD timestep in the controlDict. it must be equal or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!". +3) Choose the CFD timestep in the controlDict. It must be equal to or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!".

Example: DEMts=0.00001s, couplingInterval=10 exchange data (=couple) will happen every 0.0001s.

diff --git a/doc/CFDEMcoupling_Manual.pdf b/doc/CFDEMcoupling_Manual.pdf index baf9be475e2fe3e8a5934a3fe60b1a55a64b2a96..822b8c2b3b457166b89423a21ed9eec3d3a13631 100644 GIT binary patch delta 71331 zcmaG|bwE^I)0fyKr5mIK>DnSxR1l;Uq(LMFlnyCn2`TBkqzV#(gdzwMA}NXzBA|d$ zib|t23g6wkE9mpQ&*vZR?74H!%$%7s=Xd7ZrF5RVWQ{u^f*K=@kdZ^65Euz*L~wFg zGErDEaab}*STbpKGOYg!kqp576UG4qJHa%FkiaV^m@W7r;|zYFf!jY}oWMh8m^zUx zu#Iby1>9$0Ts7BRU_&Hy@+e6JFIrw!QjQmamXVYPY&>8dMDhTiFN~vR$paQaM2nKd z@M2_SB&B&#vhtD`V8;{24&3&FP2pv506E?;&EGW1Rah9lJ13BT6;wwSHxws8=>te9K!`i%K{Mn7DvnAX$Aj%o;x@i zjcKaHR@$Kn28tQ8Uia8YoinP2AHp%1ZHXMz_)53wU zX>bULM-&T*hv)?aoMq7CmZ0BFoPcmJOpOF14Gt0l;{xJ?!6%>~9K99{ z&Xo-Gz>Zj+z|aGDka5SN_d@R(NFCH{EHx|?aj5Qoh9tUX*(XKd}&_1}=4$VF8c};#iOo|v(Iq^QY z$QBYI4RVvfK@5{{X4QZ+Khf{!ACvc=tEPa@Woi;r{&?P@WGXa4$sqA+72S8N9BycMN*Dz5D;|9{f23#(}wGbmvK=WNN{C6v% z!EkMq2oz2++)Mzbk6=QKU<0J_zJ~I64VkOAp|Jq?*Ii8I~bry zK%ovC2V4(gFvt=htqvyiXH$D@tE=U46@%TW%<#m&SYGWq3jT0_wyN3cf@vS%-9XaapE1og^OQk9qyn*=9N=CGQ-RAt8UvzD|Cn!i+_s3%Y=%vL*eZ`x7(XzhavfYAG61;$>|erg7U0up`JOO-g#4Zr@&p&kLoNh`;jIGPnqf@9 z(R!FL&>Zx8PURt!_7{yjE=ma*l|uk2z2_}?f(7z_c?pRFUs*5^MYez$E+GphLIyVB zA_zFq`j_Gy#7OD=4d6;Es5uyn-7rou>EAJkl*aoEDUCM(Dg9RrBBe2SS=Ma?Sqxwk zPS&3Kposk?$8i`bjZ+rq0HicN*pSkY8NVkUMAJlF;EKB14$cQodj_NoX4GLZF@NEw1HGJnM%QU=`ear3p-v1fw}YRZ65+}pKm9@K6)hLANB!3pP?NC2h50( zh<)<_;um`Y#SnY;Aqe&%2=*cVwhuwDZ{x+DeTaY9hrsQ8zwJAWMBp@re1ss_f`Dw< z^AQ3{oVb9eMWUgdOb!7iHYAu1iK4-+4BWSIam0!I9ji#h-!Te04Vv?tU3)s=A# z2>j~#hg_##Q0{snjDuDN+_=HL29ha*0i&)3#!7<0dxlG7&r}q_!+2Z+%KkfA(fDZP z>mx)f84{04fWW?gNS^NlCBJtgSPa|;pMzKnN+%F1f!sy_GDtj-p+rJZXAkco(S%UV zeX|!9c&M@;7U;i26}=a#cq{`B`FE(I341(JiEwkU)@@L~v# zBOnxz8<%(YmZ&V=ah-#EX%qrAe54*8V4@%8?YSY96)>YZ>@obQE<_0l);!G z@ZdKJW){5eq7c@=%YfpO5{U;W;3wpsJ>BI2-63$lbpNooLh)b&=>G5zVaGp$!W=RQ z!nQu_2@``L2PBLDP>^_l0t$m%voA~z9|OxD_hJB#LV&YlFczRR7RCV3<$^#CD#vjW zgIHv740aq)DgdXVY78byz{h;!Aou1NsQ2ChRC^pIs01avy@iI_$02x(Ly3aWj~@7m zPm!p<@d%25M~G3<_yB|e1lal)Bmo~1APHD91a*|h>39sx#(R*FbP^`008RV8E)a^q z%@K+KTu^x6LW#oTlizcMl0iUogxgji=mz}hghwi%1PFD3pHR5%O9BfNAaWr=fq+DJ4yHnnha7+C{2MyrM6p9S13xYlj^KFs z)Ccf={vEa`@T|84Q-$L(1@PhXKh#C+JB(r)+&jS|0ZwN=2vI;|6Ho{Wk3uL>5KaM? z#+~UuWIzXP+{Dm><=?-Z0|dVWBbji5!08R*XpjRxHhw=wK>%eh*P+0=UjtZ_p#S+PrGEm=@~F(;v<4{uV8|LFv`B=V2nYVmB8$tCjY3A zp#G|mfb+=(c@Tf-t(XOO7Q74*6wU%jKLY$f;o%1*3I#>qzMe#`FkYay0mcXv%n`&g zpzt_iKlD(4tT8UWJr5FK2I_B^fdcCkzmIGGG9JPVkYae~v8M!F z*@oxPbhPy}Lt*5B-EFY4cI`Xt6ao)6gk>%wL{NA<0n$j2hSDHNqd*#(SCB@7GzwV! z4yHpiK=lKRdki4)1FSB~0_T2!BS!oHQ6=^Vj2wgzk>Fzm{B|yE-!L3b;dM ztiafS$Q2kp(6$23e$5K(AgF@-3XByPU4hX7q^sbgUn?+jKzJ3b`}3}XDk1=pRhR&H z0?`3K0ALl|5pS%*7(vU@S3#37Ks~MmSpB#&1-=8!uX0 zc{;5;nk$WxoLv0g5+3bDnR&jsT0e9`zfbp!p3LB{**zU@I{~ z8sOc8ae*d*A54JmCg|D_kfI=%4A!JWH({c{JKTeoO&AMk;QLK*#+bLj2|u_6DkBT9 zY{7UqptU9JVQ25?>hh=6U`6fh7L1P@zXu3=I=i}hIXJr5|H%WMKjXH*GA{yX+yb`< zl5H64Zw0_3Rv-8k;M@i)#!lPdWa;6e`ZkWbu?-sBi=%3`VeCY5I8F%|v~B@O@U9ZH z3cRx9qQxOJ!s0PQgWD5$cgaZyh5nzd;8i9kQ1=r?3z`VtXL8XJ4uZHf2X=!lHoP;sTESg3*A|Ale>BgF748PP@M-!6DGls>g*7E~5coeu1JOK2ADlrR*sK zo=qT*<2xV+K2-n?J1`nza82VL(ETpr?Wu;_n1QD_7En*<%QswKyd=8c02$9Ni{{8AqnF!a;)}#=oXa4h^=6;)hL5 z2YDcFS{!KDGgThP!_j+5fQSUnN%y<92I+#41`oerE8s!|$IS{vXW(dg z0yi#={2my*OU837;y4IBIf(aq(m^0}pBq00;D+NM&{_N3KnIS7M*Mq%Fi0d$j3{0L z7obK0KZrw`U>g_hU;2P&FkB;Wiv%}Wc=`p7hIHeCip6{CfKG&%c}T(Gz!-zRXpn;3 zkZxSGgbf@&F}S-@7&!DD90Pc{ile*m%n-eXqwzd{>jcIb#GnNO89>yA>*#}{@q_%W z6Bv6S11@?YzK#7pe`_O4aE&&6f8u@Na2g!01MT3XgHYU_sj`IG?uJ;PiQxn`abM)| z1JV7y{lXh7NATrYvVBka<7k4v3ve`nrr_)aK}T?p$JR&zjP!VilIbHs;yo5=sRT!Ibv$|OyGTIC}t%q@6o zIGNjK^Ws1z$$6|o7MxzNpCa(gMuk8b8%u#B=?`SH?9CQ>3r~(dUt%Y#S8ET~LvFY% zOvyANS6*yK7Cma(ChxbT{_13SF3HUtJO0!Ec}R;eP0OtZGTAX!x(B#9w@5fKl_=7@ zkPeY+XLj6D1kaxoap;KT$6A^!Mg~PyC-`m>*+W?gYL$#0W_byl?t?5WHz!@B8l$Ee*cOr`xRXf_WSnO^p|XSkBbWE=y>vDo^KY*mpKt+f`wXhFd4Ho_rUyV1%ubMVIMkBnz(#+<&R> zH2+9NM}{&wvhdtsCB9E{QN&Mjpdz zn@NO)g{{b_vnV;T5Ko!BHCNPhe#{W*l-zp4E+;A}ElEGP`*_zeIl1UJg`9l86BlzN zq)ajx-fZz??;nAd;kV1%IZ}EW~WF*g#srv1E;HzsSLyY z;|{z0>7SC4)A)JBB=gU|(JQ~Utx|nLdtBxDlxAGDX~hty{a7Zkc_;Rbv;T|v&=&=d zd2Qlu&DyW**d+w||75zGZj2G>PYJk|oAJE(i;RL>OMlcb13i}U%;$S_={GK?o;+ui zkzaPN_iQnz_A92jaAW$alGA)XgrRkQ^ki|Le))kT3prN*gU(v?&IUr z)WdU@dE^pxB#GUzz zwiHW+pFks0RqC~m5*Gcc`+M)pMYA!{h@yMf?1rE6t?wR;Qoe`iM;Bq8^dCvoz098e z@k6kK`0L zJaX>>54Q7o*-Rz->9U{Zl-K4_0V7+Du?2NpEU!V85XNK;rp?&r(;u$93}gIy@-e;O z@YvH-Nh+41s*!t6%EmYCkGFj{@bAfbqY)c@Ah$O3V6gjvwW*MxI8RIOh^8E_OE+(G z8gosjl+>Np;pnapmJ!Uh;&@xBddG^7>ioQJ^00!|)sr=PwH)n&pLWDZ+9Mofb6!ql z%J`M3s8~l&FsXe#c^o?`Rm+?nq^|xmN)@Q}@ zye6OcjZ#{?bM~S6wY2lYLHL?{n52ip?)mRg5%uEl(P? zp6V@%$?K9PpRGyZJ{qxTe8|GesCuY^yTN943&D1%G+dYIv==&Z34M2ICaGsjRxw~B zZeYUO?fQed`2G_a%w*cYFFvOWapAskOJi!L-&4O%&V&H*ta)xXKJ*E<{gT73(ck{= zI(Iu>rFH2^-`Aln~#S0#3c=G=b$^qH?*N!hyFA)P*P`J6MMdyu1)W#qz>?7#4V2( zo_=n3#8Zf?G_g{jtx-2hYX|sjfkjcaT$xb`9Zz!Zq5G;=kW`Aao6|TvroRRcV7r=C z78O5rtl%^|`%&jxYM@vHMS&MLHmx2on+9hrsG%cd~6?^*DxkAQ_VV*i= z#y2twc|m>e?&@VZp1USd$K<%oT2uA5kW%}Im*>%iSfRxiC8ei#f>wHNgs1$%3R^sX z53`K4{r>dSoY1(tVCCJ@B+Ik!^tGHTZzFf^_Hk6;{;5+o@274dSi7qO-TZ>dN~y4DpON zG9`T3v|3^o(N*<+`Ac_rVDwF-mP<8u^JQw98YgGw2Buz_%Tg+Df+)01gp9Qr zs?9Y*Umm%ik+yb6GDM-Y&^+EaI8y~?K>D=LMAvYbSFcW6Gqra^gf-))#B27lP4?9e zO4h`Ld+MSlnqM2euH;yfbYf0ivFd%WxXK$8f3lJ?V|^wsUiZxfbE>2~mI4wdP3&R8 zS({sTX5@->GM$R3`f0KK%1=%*_a9~M8a4DA6|xCbxb7=^B7h|VZp82;u~_n_^RV5N zXOX9Rv{0Q1Cux2(THCuE(-PXSyJ25aHvdMc9!+s(D(g858}l=BvVN!K03a`rtvU&5 zhBS(^^%oO&j`g6qwxdIL;p*v%3~sCe;`oVQ%$q-GP>;f+u4;5FX$Ej<-ggM;zAPTU!(3)Gdr z?Bh4E{t@rxktnM8_vEiWG32+3FtE-~d8+n|mzQ$yHc z7tEf$7(umrS`G=3pD7e^4;9XK7ARr=aOp}E*I=~1TBz0GspdqF7Zg^LdDN7HUx`I9 znN4|h^>g<%JD(i=S*!c_^y06f^_LfhpC%{x)Nw>vbdxKM1lQM(>nY!D_K1HS_;|bh z%gm3~=i4Wa$Uf?ss*nG2)T!>CTG%HHow_Y{SnQk_^Fp!ZfWq%&)cN#X6fGxCUG6iNC+$8eb~mwjlzgH7O>Tmb!BjiBRGr0O zgW!qL$K`L*Rr;MWKEGeKdvq-P!B+LIOTri>i|HxYv?~us6<49D%er#$?N`2mboDP% zo2i%PvR)}*y?02$jKQM1JDiaiEL;Cab_Z{AS>f5Z7tFw%4ur75MGl+1QR6H)xRT4D zXLk%f+WqeQ2uWAdSitd%T36pYDKo>Q*UW)#HaHj7&mruQyL51$7t0D?@Q!e)s*Jel zgacEIC5oNwc;>-?fyhf_cLSx%FGVz}qw`Eg;i|uavrWM&E zU1@Pu)CkX($+b&bk3ub^LvwkUt)dTac&1C_kcCfimvid~Z9IwJRee^t+EwX|#vP5r%7F&b3G+bc&Whh z{FQpyNz?IRw&oAjx4km@RV&$=E>R8=YZY2bu~)fHv7I2hIs~t0bf-?^%$T&9Odii@ zJv4a6?YVx5gkXQDi`qRa%K7oaK)E2nX-i~xSalXwe2w#K?AWn*@~F`TF5zIlG96MK zb;eUKV~$R;a{5?Cc9k3saXyfF^f7CCn}w*(VjS81`@9i%;bkEkNvGW;4TT%j)5DfJaq8lVh|qg)MhBzk11i6NX$(iPc)dNuLQWJ@y+cMx`4s8W zqTgYCag;HIHLf_4PkCW_-MjBvBIS*Vmf>*~ar$9!7Jf{1cMoY{3$?N@E_w)4FCC+dMyO!VYms*MAb$?qFciO4q z*YL1C|1?`2{g_O(#9&JJfs6VjpPoHw)9@SpM(W6V{jk)E-t`CLUf*u0t%bYHQq$W} z!gVi^pGpf=S2TK}X=m|hxGRG1Dh&08PNMO{>6qGKZ1~F?ailLCYwk6CJtb^qeC^{p zx95u{`V;Hl-t;`}j%azUOM784aNvEUNX3;j&6Nf#tbmzv==D_JqT>3>O#ApIw# z%s*`hN;Ex=iweEE)h>T)k+OOSk;yq-KgIZMHN@D@wH`&uvAm$pm?0T!+qQ;{{JwF` zk^7S`4`pjTish*LNRnk0VFYo{6{RLEsIa0{y?r2 z_;UcZgPOtNBB(!{M(R!)Dgfp9>8n|RtzUjk}+aqjm=!AFpSrGDlB6aZG(;b zURPEPU&(ZQ@t{7HUxSJPrfu6P&qA*N_2rGxg9%iN*oX~XJ#okTagQ$P4^_$Rj zSO|xh+<47Nj}?$9%`lKy=;1%XHONU{5W%cImBD&SaM_yPwiqDl9X%kOltC+hoQgpT z9U>jqz|Pf>8lx|6(-_y)b98z#i0ddQ`(@}zzM5`gbB?g>F0~^W*u36-ICHy9hwiQh*UF5(WqdX zpNdCw8DwUUH}lB}8>f8?c0Mg>qZOho{pP`_oBS(Bju4`9xP>$c+g18POjq8Gj!E95 z6j?A&j*)UDH*y+EmdgJ0*fzW9DIaoGjx<30)OUMzo)gT{Qnl>Tto@DRYlpdLLgxf7 zvy4+C&O}}}mm?*EQN4G3r8-&JzI>Dvd-!0NW?Jq88y?1lBQ|hu-{$3>={t9UcB{IJ z)Q6tMi3f1$pia;?DZ8C}AfD6VBp_+V)r3>7VO(4X=0YPgNvmAvvlKFQ_N!rU*Cem9 z79{M3zFhg1&%e}TtwI-?^C+HG{;Az}=H7==;2ieHnV;(k0avZxPoBFZq=enR_Rb|k z{@|b*SDMy`CJ?zT+qqx$n~K&FPpi%B4m~NZA@J(Cwuf%E>#*Kn^iUZS4-3}nuw>Y~ zlShlJLUO(&TRkTQnhW$zy~@50);@fE`O*C!<(E18BsUX(+CRVY@rQ7j%dC)z|Kx0) zb2U?P506qlku>k^pSsdpGWrtV3k4peGHhNoGg8?x9xzx}c=BL$ zcX7JgrjydjK!acSbfYrY^(x*w2_2y6`256t|s(4ChBEcKjA3Tf|$ z%F^9O+kMi#+M|cb3vg*4%DVq;U^Pehha~Iw0^={QH7>*3(IG6vX+3RS9!Ak+m#It^ zmXv;sVi#r@3KegTPlVP2hx*SHb^;5ZSS&Y827INYq^wQ&3eMP_x+bfa=HIiy5-!ow z$(yY>=rI-L_Q|m_-mi!D=7Qe^<}3GOo<~**m47nCm;=IBh6(7a z>`#iXD!S)$Ph`(()8rl`S~|CjmTk3|jv|lWrs2azSdJEUdRSCx7Y%Qfh$@^Ny=wia z|4=&1+dy=1Fe99oS*cT-D*)@XtyJY!a7!%ckdn!&e3C{rph z$J0L;4bm1`pJ{jhmE`&uO-ZEhv&GoMeWI7u_3I|nhH_L!NPygK8;yXlb=}Zc6aB(# zNizdl*oV)Uram7mUu^xFClX&t?KXJ!@|_E1M}Jj+aO%zU=hvW%C{Dd^L^<~zUU53~ zNF%HA525#JsY5)k!|xV5U`9C%$EqdQ%IS-jW5sntU$C0YDVR`tQI_e-zJ2A}Ta%@- z;n4fpL838LrMgtwOOw0p+oAe*Nd*IM3g_8 zi>a(X`GT9AIkjV^Sd^YhlvoIMiCp_qet?O{TSpqhB`W0G>4ms%{`?57PC?c4ey0vO zL=INYo=kn5-b~GmICDO$`N`sq-Dh-17&wm|dheP(e2*c9MIc7gcuu!Bs-?d)v(2jKj%enO$ExVzrjY*ZjD@&Gpy9P?aF@*o5wxJ zgT=n`HW=MensiJEvq({`6%e>}`&GwC=HMK~(k<3YFCHHJ;4&0S(Lic1NtN?5y6Ls# zs6qp(<8|6G%c}d=VEpj(emWq<_p0q@-=TFqOeU>ZT|7)jbF8bRgH1YkqWY-Lq)e%` z$;(*v-Fa5*5usN56Fe1Wq?ZML8GcKPy>V*X?#w6S`h~===6xTfNi}t8sfrAj*X3$o zWxcjPV;p{HENe|ng6-T*S~BF;SM?woGlzRAPedbP`wv{?vo}$|sLS4*-BFU+pjqNi zgwu+I3rL`z% z>^w!9JIx7{iQ5d?`%GtNAh+!&gS2_blvo=MBw1TiW$jEvw8qyCK(n5_oO!N?wT}&ZsEi_Ko1g7&aLw3-Ap4{IT)9)|Tp@efV4yUKuLN(X??obWQr5mb)S6 zta(W}TT9BwsB5-lFg~5l*Vi{Fz-~!AkPF7icD6ahCcjL+;9K6a0<0vZN#X0|!if#1 z>I2X1B?nJ-eCL`m$kzGHIEXlJceU*NE52{U?%D4ze-wMr?2)m(vQvQizS*Emc0C4u z;epubJ%;n=1YyGl@?ni--eJ|c?@pF5-1QQfW$jaWVAY&27qojMD@6W6)f?JXfo)x- z!v2;edJPlauLtLzU%^_y%kP$9%a~8)uB7DS!Vk)y=bg>5`LL%M-c@E?mkqU+F{4)WY5?d@vdfX z56U_V_vwyg`u@>b# zSd*dt)Le9zxcaKYhX+llh_mmr1ASd9k766H&-h|!`-Oa-$U8Qtl%`zEv>cU{;I2gfxq!j9(k7JQNrbhFl>_fF|GlmZx;%!ZnLhkr z_AySR5e~Fc^ARA@$Rgzk$c&X$N;_5N{G?JlvuQCkhVl7)RqHdgx(d&@xYs?w2U!B0 z(&fjuo>c~`h#%`a@p#A2oYrZGk9))OwsAtRjmf8(22DOTuXQ%>d=ere0?d;vMl(bnqcCw#jLe7 z+X|MuU8!V`4_Xnc(hsSWBFSy;ros3)Ka{!v>tRV_^7qHTeWM`OU5;J~C^DhCO3LWV zBjYiZUPv|CDSp?_{OQ@tUEsRIS_W`*<-?Hf&bDkFhtt}QQQ7)WUKY}zDE*etd7-?} zo{~k2>tLW)muBHlb&gsLc6OeO~CO8UX45No=EC(lYGC$>nZ&D+&#@io|TF3 zA8p57s8M7lOI)6p+vS+_`%s@9M_PN|+AeL;8H~v2qNaNEe(}0#YjO#C3S$%AYP=EW zIIhat_f^>|_yZrk{LOgOq3ve`Hvcep)Cj-@WWFyXEIm9#v6qT{>bY2Sps`?;+o zc#>rzCO%whw7^n^@&(h`-=@&THfZ~wB>LDK@tM=Is&0al#7;QC;+u(Fovd&&d&xQb zXV`~_U(<5A9&ssZ%M;goS*t^oabO{1QdrEwNYMDDrmy15B;|s87ugq}+$`5!BVxbI-mwCYx{DHRCd(On>^p zX^-jGS$@c$S5bLc3t2sX za!-wkntG_AxX(UF=--r+ueiweYcbm8nKY_4=Z(YZXu+^vA;zH0e*S}1)Q)@sMm0mS zw>7Uk75?^Zc{!20%BUz>O2Xz~33pE4ga&q;*(Hy;4&f(x^X(y*%W%BQ2^VK8|4Ne8H|&HpQr>UZWMMj1n==sdZNAb=IF)&CWaCJ&ZvM#JfNRQ@%}Gr&aSj&(SPV z8$KZinuAQn{biW_%}(?(PQcnYbL^-k(9FJLFuRvDb#=*BJo$sY8$7xzr*zIsBprT+ z>NMENbJCxWn+SiC!;qn*xX>ad$mUL!X9&+l%CWhuEOTSz(TFF?% z7B}7ZZ8#%d29J9>yudr=NS*ELVO{()EltC>sz9+eHBV{PQSu=3mZor^e%_X0RE%aK zYe*ZNpihjVP%N{qeGwyO`huzZ6w%>3WIe}DkGYVD+g6TSUMYD-Vngo1yd#NJ6sci4 zisXo;&iU+mS&pKAb+f1a$7<1b^Zh_t6|5Y&M=TxP;>(*1v24L_({-;bInr(^2|V(! zhVh$gwMBT$4i(;ic9G~Y(FUJG1c`C9(VYr3XNy{Od#9`e_bE?d%g;+9YiAOQUn)8e zih3CZhL4JSvkV`hY*hXxb2gUqZJ%?h-RNZ8rd$uJqjWy{EiF0AMy>@a%)BADXZj&F z%%$q$-TVtLfCPmcmG;%w;|UTAo-YS%>aHKWNA|06lAf`{59yyZdy>{#?Cps|ua&;f zD8)W+%@I77Db~GnWT5WioX}-U8=tY!i++-(Ml9x{EgPe^x0dbf6>cB-@gBCopI&p9 zFRRIf>zDfqtAxkd#J}=68Tj%d_?F&(9j0VKEQUMi95aP80HznzH3_mt`s*s2BKrM`c;NB6c+DvzCv9_Y*6>sFxV+^%JJymu}9lTv>f!C4MEQ?Rmky zw|%N|b6ICrrwmI6IOlfSTH5=1;@09L66O^1iwe_X)BF*->=&0r(@fM0HhwPMe30oa z_~Q~rNvD zx#U)}Y=d4U_dwxHT+CLF+Qdc02g~&5JagU#u6)SnnHC-Skgj0RGfHGyzcv>A;h;SV z&XMSKcGhen%qNRy%aBcLM&zq6(*%O!+M%DYfZLZ4fB6*e(*Hv6vU1Q|Ga~SBM(!8c z!3VgbFBbe=-oJLl*9IS4ho$MTUn=CZGu!g5z7LQZ&fCG(q`hZ{9U8PsM%x_w+iASD zs4~}@7Q3S~@65k_9!&mt@tRN5_Qq$I@z98iJV^&y*bwqd=@CLJOW)jg{Kg}QqIqw% zy&|Cq{_@bV=Ki>K@7P^b4E9~V)cm}zKhwinso2&t&J?*{9_0(oFY5Zc`LGsU_;!Vo zV^ZJ}(dlH;A)=kCpb*~R6R~tRZWKpg=fm@MQ@Dv$m8W1O8wo6yxeuyhrk>S(sP2HM$IO z?MH5^Lajio*$7fMMdQ;sQB;+MK|!5j|Eh+=`MmjtS6U`w9B&^th_<4L+nj7t@3Vefacp?EN3XP zdOzj9xP2;{YvYlUxa?JgXw@mj)yPPVCuxVszt{Vdh8wiP!{E%KI;sAtSnQC%UCWlA z-^y91IVFwKE6UAwB234!E&{8=4egh@*j+3x{^)J(Nlx-%c4L1Kdh*5Xs3ZNKZ|ZG) zFU>c0%~YZLARUtLNSd9NH(2@b;KK?x!B?SlFE#Gzv0EIlB?<_dv!-RcV^_izK2?`1 zE0P0L5`C0-eNZ;Ry_%}6nv@r7@?=87OTsxIouiZaNws~I%xbW5Ok8tJZ|-3->4@#5 zk)0!MUsDeEVJ2N9Qbha=oF`5J9pvc2kS}i4)wSfd{q!9cg=QUctg(F(4{Hqr($W`H z!i+ucF>f`KGCrhxs)f=n%UTycIr!XDLp<0sprvSN<|6%g)t%3A3M0beXBbB!4ljJz z&OMWUw)5Te^0Hmsl;?9I{kPxxsBAYGlFz8OCHcP5i{MF&_fyzV+@N}qEOP6AtiS&c zj>>A8%W}|M-!0#A>2d#8orSJHUZZ`>rU;t~G(8 zE7B`X@hP8G-G_|trx$cS0(gv3$PQIl?eEt~XbPfr^$w|ZHOm$LAed0?w6-e#Tsf?QH+ zL40f0BBniSlNcXudTFk*+hlVp`PHELgY06dq6Ba57ZYBAPI~TEljj+xvYZDBX?YYJ zZwss6?Vgnv^KJJSXI27^`$Ann@&re~WyUS+3}s63h2%vX2E z*a@~K4j}qtRNehZ-)0YBDSNXE-gCIQF+QiW>iPL`l!(~+EL&)VnA+>g3q=wu32t0^ zCx%%Twap$U*`NEKH}6KxUy?>~>JFtzbP-LrpRV)^(NYpYjbb7TYRf5Q;R~^D&HAl~ zTWOzJ-ok~HbRI4}J@4(;vm*Q;sg3hWNO9<7i~jlMMRa(-$O_+q4;t9PJG9{iuO_~* z)Y55*nhs@&K7T?RQa!66JB3|rtKY=FW-2%aDu=7_}?`)IRYArzq*HpNaSQtK<8CBA6B+0vr4PsLAjcm z@&oV88=`#4a%Dn7k~*e_d^#*N%@5g>{mgxFN?W z_o|uMzjmcI5b1V39!A%#G<_0&YwCgD@$+uTuibq!WKM(CSEn6v;No+p%Da6>Nygkw z-afqg#bJKl+1>E)BfefNohsiC-gFhYwIzGf{1k>)6h`p#z~)u0cNZ(RzFDWgKpYqf zGoUn>d>Ws?Z!Bn_%Vpf&8vS|l`(^u;#z@WD`ub2#lbd}rPZ>*_Q8#3=O-o89WiXWH zU&W{V^s*JuBSKyBwM16zvX&iBqg`!Msn0uGyB9F#DoT9P6K0PN!%lEUI-jPLGtrsV z=VA*;X#gisN8zV7(x^q=5J%6>Ap@%)%Na;~PM@W_t>@S%J(FX`o``-&^Yz@9 zA424qaGss^KB3QB>?cbS9u zAuKkDab&g?Fbpyc=`X#f#^cGn=q#kmqaV0(2{s}$ptXLHFatnO``2 z<;l5SiNZ1*g2*|iWk=YtbP44lZ+&fv8o1NUER;wn*j1h1&qee!oHRTl@DP)uFILd> z=G)hyqv*koNK8c->HXexQ$Esbqcg`N8EUO-C*{i@aW@9lblqRQ$1<2~YG&8SqT*P3 zKo)gf>6vFv^u_j*=h9WLtG|;Qa6W%Lv#Z#kxO?E7-GvKs29@!`o_#P3K7ej@ z0(H3>Z`xtyxWOg zOh~debq_84R*Z2{Y1dT#^UF%-I_Y9D=c(ku|s!aA#0vEkNm3OyNyXUiJ}K$PIG*79*cqX9~+8Of2#d} zbMx>_1f#tkZ+{i$)Cw4HEocjgxTGNACUyU2q|!wfj<_+blM$UnjMUC}49^+zt@0&} zVvj9VmXzI{Oy<)=-~Gxuxxee&)%AVUIIm36d^?M`AtKqKv#4H2f%I~|dXcxb<`D-X ztvh*-r?uwBL`}{QNSEYV`nBfs&MgUa#)P!LE0a93a;(if@7t?Kr*5$xI8i=( z*c}sqHg%WftiX1#>~PJ?!sAk0**~{S<>yIXKXGUl6+kJ9x}wwlH1PAx!d+XH;z*Si z`ANx($BlT{w7hlXbd5f1q4Wom7)h4VvL*(ewjYgGHd71Uy~cb?j$OUEiArda4a%mN zZ$8UQO;dSeI*9ohDS|aFsixNWdm1xbD&sJl@aea8Kl&=MLvuyVZ&2{$*M3QHbEbR@ z%v1+uSLg!c$pTd3cEcQHna6C#j<2^a+tf8ZzTm}N!t|Kt6(U9La53+X2OlZlE28P_ z9`PLb6{37GtLK=>2=TPkDK!K7?z3v)h%BqMhdw9OyyDnXZEjZ;SMoTF|V3MduqQ|dhC zjb+LRTEx{KQFkOtwihB`QeY;f^*TMH|4;1GJz`M``Pps3NuqT|Z7LsMi zz*949f^0ejOh%?}#3Fp&IIlaFGI7j>#)SrIyNQ2p5OTr}B_0jqV0Zr5&Yi%Y@`lidn%I2St9gat%myRlRT{QJ*SAlZ+5D>NawS6Mnq) zMoWTCK;OftjkQ&WM9C18$<-g?rWwbauO?p_}9-az#nG+_eGaHbkXGm zrW5E_i2LaTd;nFO!N2qHFZg{SR)(rYn(4;+&zqdHmfFMVwk*}jp<7o))XhX=`xG|T zwM*0z$;cLK7Z;jIeUA}cxTF8z)^he4p(r(vk|Yv4ef{|A&aOq|_$$oHZJwj0YYa+3 z!^WjC@F&Ibp-zM0eVB;xOsi8v>_-ot(kb11*hPEHM$%w$=F9Ph$2K3D;fu3bnksr- z=3z;bgG6b2|RVa0y=^ zK07fbdIh3f9Ov@};P}&qbcqS#>>lH{v?Sxm`F}Vn;v4qFB5XdzpH(Y=*%>q{4bz%X zHg3*_2_hxC5hx#iPem2^qbW{y~oFg%&)cba#sR8jYvv04#( zPDGTUhnkdAH5NxUe{rbyejH<{uZR?!GS8l!+bFkeY9EXWMYH*;k}#J)g>XYIt&w6U zgC8rz#s7m#Z0(NIS?m^*!b1<+s zTLeK-gX0AF9d*b+>qCD9JyT?f{qO#%hS9)(&Y*`v`+F+~=N~|e{)c|{zvNe}z=c1z zERfUVZ+5Y!wq_5!WdXoxrHj5ikmQ1D3D<~DmT>hviCQ-LE2BIEicvFx_#D0t6XCbJ z^>`&&YfFDSAFU`DwAhZPwYBrJ`ysjj6aeZjBRMX{4IP4zPQJKE?A_Oi0&*m!VJuA) zAw)+UsIe_+K=0c4iJckkcr0Q&MtQ;8*~oe;4Vu)v^(iEBpXqsd;r$*SlUqqdU`j@b?9Gv!_PGG}3jngpMVDE%sWfwN=im#42({s* zID;>mA=_fH`ccVdbKCCK4!-V*9z1n5ep7I-6?yQ%m&l%El;^api?bY+p?4oEU0jli z(ic1@X!G4+h4Kr0KL)S7t{?K+bM5Y z;-Lq5Z3RqIZBHzZjYPDkE69F$=3SPDLei;%NZr#`b4~-K$$y&7N%*4XB0t$>xVO9p z{b97+kP>YY)y?B|*6d|oJ)dj+q|pSU@4z9<^JBc0@{IYHQ}1NN<$kGwAVnGexFPXD z&kNf3PAcltr*Th0B&=I`rm>O9C!&&|GmxHPZPT&q5uDn4jJ!_{W)r;JC?353s<79h7SqfXX%qCF;CyQ?SGhC7!A_!?-BULnkRap1D_GS??ljU5;EYX@uHr! z20dt>2^BLp29qO%7YL7p%;VZG~dY&p6(J^MR<_gRo|w2~18;={x>VR{9WB zEmUXq(K=Ihh07LR^<9RgQ%}P>2s60im$J8~Nj6QG{7S7H$`6X97d|hOuWJv!h;$5> z*8cW^JA!FQGJXA+59T9ZtIwfQjPdE+m8Td;AXizUHD6M?ji$ZD%XaYQN*XR>X34%? zWGGENe8~e;6i=AS7g$Q=PV6!j}UP)|)Pk|If zpy40t8RmnCA6*L~Cde6=pPF>;0Zi8f?K#21tIaB26mHp|d%_qmC4ZjiV_1RDx?rKu zR5_us9jCg+)u`%cTKB`{#egeF&I)_ zNt|BR%keMnZF>YmU9kOj{mf zMbe%@_8mX8;#?Iwj3!|$^iT*QDmCowi_Ua_8ATJTD5j=4olH&R$Yb@C1h*F|_w88q z$2vgm{`n%~cY_{jwT;{EGB^NHMocg(xl+O=WSnU72}PY9eQM$Y1MhPUp3gD7+;Iaw&HhNp8rK&&YU6dww>91cd#bS7CoY%K z=0SC4&Wk!NGn{C09$x++>0B}9sr0~a-Ys}>K8edQvm&ndZ7()3#5BV<)dDb%!tQO~ z-%@RVJfTZ3u2{+&!N)|_-erBiuCnpkL@Viqh0ulY3KC-z2mSw8Gt?h*{y&g08<1{_ zL=4&$2myYRMEw7@{A=Mi1YiNuL;ei{_$ccFEgQq7Ea>Y1#gG~1@{_kJ>STB;r-&k)g%=8h~( zY|nGksvQNim+t9t%2*jwtYt=Iz|sgKt+>C}W#_e&yzmmDs!*@nVl_7Q$5st)V;pk3 z-%nb9S-X9gvl3Hr(MbWrL5*h^7=uvnJ&BawsWz`tGq34XTKQvdUUy>HOLaf8 zifx*lPKp?jgy$z>2*N%c=dF)$%-u7*Tt=7 zF8YyoJ5~^tWOxN=bH+In#Y)TUTNRN2vNMq9OSKd^afDOHS5dE#oFx<^yyp2hMvP*I z7?IG6hM1WwD=*wU%_KBp>|Y&Ke33QP=k0dlZFVe6-+E$8ah{ubO8s|Excc3{qAoL5 z%q$-vMY|a>?|Y|XPAPJWK0jr*oI(3ji2oE72GOp-KJskb8tdPpOUZZ9rPNQviqS4%DBBBegdPih_c+C@C*>P;I7HYBtUPBUl6? zX963ATe|KjGQ`7qx@H2_M0qfLDnc?avFd$qizbqfEzBg(Lqr4Pv!U(s1+9v*k5#g8 zDHFLkkX2HDP>(5zawgCfGM>o&NPtTx(Z%J~Z|;Rz8w!|waVP1&PI?Xf$qbV@QoX!H zJIkj%hyoF3+x>to>f#Kix#fLFGFEDza)AA1!jnt5R2*cXra@pf9;Ff%G2;{5vzL)epwAj+3<81eep^cdz;vtM1#U`N4yrS^LZnd zw*~_P8%iu{;~9!Y?yQ7*b?M|+U~D#BD$JWuA+I0n%Edd#)b#YJXw=NUMn{S+vbjKr zI#TN*69>jxiXYCAVRq_Hfl& zoz#4+Xbk5vI-%F`Y50{8&I#_TpHcHqs0>2Y8Wj}}hr%&lTf5Otx+S0N#MJT>sCR%j zB0;x{WssPlmt2FBN}DS}7CeZBgXla5ja1s{EV{fTl@#fW9aSbt0{c9pZ5}eN*n}5y zjp%shZ45YJ2dLz$xN)V8-qcQoXqO=L=sq3zZGAn``3$KPnq%C&b}(-|oru&Pt;`Tm zCG0d_VqCwX7H0!nJCxjz3VZ2#hcf_Vr0`v93%aUq!Rh1N)PnA~+*{n_ENVw=tM%>p zsdG`(NXFRF#)04|d4(~y5mlesjN>c1(F2eA2cecW^4g&Gu`^a{+G})KO~xpf`=X zg5PbqHM@oNetiL|a!=rJVt7N&?{$BVz8jS+l{V3xJ?mAn6sTn2Y z@(Tm3MZ?gp;Mk$KrJeW{bi=%~o6ez^8DaXfePi!iouEevimN?#XSQ#N!cxJ&J>=#R ztz_1qUdH(9B|2r)18L?n=L3@8@WJgr*zLbWnQRO!zj}dzDUv_5MSro|KP(lghUrjQ zL`NpJngj#*LY>Sq|FHMJ6i(QH6urM1PtgB|BJwYLv;8iZrov}Jkpg~Hubg>mCn9jW zENOvvLg1)q%IOZPQF7`w8@~AznXt#qoHao(_9}RL$6}6%6Ln%a^@BW0I2w(Y823()+PINQ=bA?A>-E0K>8@Kk^Sy`QSf$(41GczphSwkhUJ7O zXPa*wE~8>8;)CVST}b0iY$`*l@sU8YVg)&J464x(uxZKx>UMS!IIVM~9anFXTT(@I z`J^4Yhux}(<*pfrd<6ofg?0nRk6gTxVZroE(Ck#s)ua?&)v0e7>6Lf_3`da`$zD=pPK>U&0y$Za`8+u42x-ZnBH_%EisfUQ$>QOA+p&t>`J~71%-=uRvZS2h$cv z8qEZ-A9>T5*rDJzUnNL@C?{+gu8-nKR$!&4WmLJjGV=1cX;r_1Uxc!=x8DlE=c(+H z$%0gp*65Lrl&0-*{|Im(X^#mP`^tmC$G>VvJn|t`mAHNsjYfQd&P{3IUXyLGZsgkSl2AsnKq#>A+Zku|f%d^lD!d=k}(vImDr|@uKUa;}9fUHzX(CV@l-9 zN2yy0hR^w1jay0#Hv}HYj5c)Q$Hcjb*YT)tX;!k+ZqnF4E+GNaQ^z1?p=WaZGKG7p#{!Hnj>+}|AXR*3a z#9ZA~S7oml+xevH_Ky0<>{?BDg6pI2@%UHPHI1=2?o=-ALFxI%?M}k)%irbaw3pSm zIHks5SrRDqB!snU3I$PFl@=}-YVnFb&<5Tk|A36*@TE)k5afXgOr>`n%59k)|5ht8%kusjDRKL35(a;pjt03ra-cx+CYn% z$xrt57=xsNYJc?o5%3ws4UFt2^WoWKb5}BcMZKdhvCkWB5jFSXQY3hz2VF657lpB; z$u-S<3Bq6tPzjAgmKt&1YEVh^>Xs5X!1A7SG~0NW6x%`mlfqR_4Ror$twl1!Lbn}? zT!G+vJH?)yW$9wmieUpkYQ*<3!Ne1Y%FEg%m#9n=xVOxYWT@{}k&BMsKW4PSEBX=0 z@VERpe;{MLZM!VMe+g+3vrW<`H%!~m5aE~hXC|6+)#?;eKdCwGAZzAXqc~Y99FbYZz*u2X;A`wXyy;GQq>G!@-fCsp(ItPex;)+{QVQ<^ z`3INqe+6NTf7*`F|Hv}^HxJ7OT=><31QaP~UMz (ScjnJX2udd%fJtMLG`=37Jh|!;GCR{%{!$~Lg0X$%{c$4)J#%K^9fYUOvCGL<%Z0m zr`6|i5$zYx>kHS*t+SVHLpb;*1LYQ7o%Ltm=rL`b#ZO)O5Rqa#Rf~sGOu^HRrzpqh z+xls9KM-awbt-H6-x|4iH?TF{t6_hp$wV_GXyVO8LRpGAz-?k?f1|c+Q<)$>&)8(P zeDV_-s59eo_+Urej_;LIAo!LZ<6CK<(7tRaYBfeeuL*_qx z2mgj}fSnqDLft>g4gYn%z=dB$pwzw!s172#c-KW}h-*pdO#RxC=54-={wE^V%|MT|#NHhFp_x~i^fXofkE5NSY z@;az{P{5=q7Ut4TZ~OKPBaD2cypSIk9}_O9qS*DdUW<$_B_1{bn{eYfEnE-JPTW?&`4Y~y8NAG*y@ zMac{Ake<@#%Z66V_l3q?5P0m|(}*y7JYcSxTmVax!=#fGW@6Hz9FUZ#RU%Ab*1fDP z^m7HJ-OA9(vs;Ac@51q^t>3Om^tboFc8Bgnd_NBIi;eXJnVI5n7+@%Q4-@F^fr!lx zvkF(SwzDm_m`K-RxqL)&}gu=gOA3EEnd5zcpV z!{?&+xp3&UhOVu5hSW6^DCnfso7M(kNjB`T?XfpNT(?c!{`hl~rgc*nb|8 zWdjmk1K*cbYH<@3Kl&f_uD=*HaP^PL0aYjno1w_yzetXa^^1?C9gbS0N;gBXk?Q2S z(G9WbT!iEp3c)p5;uStp`+JnWL@5rjhMZa);}(La7B)kXeDHa;+u<**!JzOzXtM{W z>Tzv_nagc4&_tmV#5&_hOF$MRmt-U%UYi?PcF#z?Y=$BPjLx!*7i`~P zcyguZ7#p$&e11Yn{bJ=P1M?x`sY8pL5taC5Bu{Q5D2Eq~cFID~Ju8)QEM^`}H(z6$ zy2St!yIWIr5I0!jOk)~M?F3Q^3i3n#C<(+TnxLQ>8d^~0&<-gyaxQaG9j13XlubcS zqJmd0-#WXv0Tm-mo9>!Q^wyY|hT;so{e!|pc?Q&w8N5STrqrSr2XRANq=MaJk=NJP z)jc`^Bf|JLGUW38zG!AOc>)?4L$J~735x2T1GxE$14q70a=oOKh6xp>gwiSGC!!@9 zvjm*5xn;zV$Ya#{OgXck2d}Ko98=iFNlgXNQY6D!06%_6*_d$cvsm40f9a?+jGn)a z&c{(A|1o*%T~-1m0>v()=7Eudu~@NUO$D%!|7M+Ce|`?)c0I7PqfViUYBbRpfofRJT*c z*6!A35x^0PQt1@}+n`i9Oo10-$PV#y--nfL1f;IXlAT8$^l8MD_r*D<<>^%MOjMU* zFmygbEr`R%I8_VEEyaSCq()xdNt4Aj$z-fvY*4l9x~MO*lBz$_33?O`e%PE;iHRS* zyLlQ7L%@*vdOGBjZF2r&fA?y89z|%wvovV#wi^JdC#=yeezajI^|k~a{<8#hVs#Ld z?L@wh3J!7wZ8)4)pgz}?kqR2Xx$k#EQ(+BuQlN+piHn~L0P@7rb(Tsp z2!;M{-M4H^zwb4tRQq-)pqeM}E(7{;a0YhPKZLcm_A3%7uanhj)&=PC0f?~BtrFf6 z=n}1g-Tre@m}o0Y@ayX<$E&)1GsrKe*^QlY!~$BZ;R-e82Ycz}2kCD#h@W@t!B?;y zmcjVTJML&cmBt{CA-6&_e+v==?|@uss#@8ETz=wm_gz4*DZ+D+@JE+T4#7;02)`!~ z5i$l4=aofi$lP<%L0UXBm-JHMMGMdwkSV3}Zgv|L!;16oV}^rIX9nrzdg#;GRjU>$ z1j~yI(&_2-C0JfpAvF#bJNsLzUbes)PH;d=lGPTpy77}=CeZvuE+rD{tMXcHKSsKi z*Drzw8mdDsr7+Iw)BRvFk8W>PL-c^(IeC26v(*< z)WG*6F2Sh9%9{>GLxp_oof>^)yzp_(rV7${WcX57;TA^&=PMhWWE@F`#w>%DZXg5j zF}56guO;HGKMVqTkhz==P9~f%drV@I$|9g5#eClhV)%s;91OMwMVJB0_^Y|9@>&2c zWiSg^Z!&`_N6gM+q@S2EDeE=or?T6%0*1bJI>(|osn6BR5g9u0IQq>mMc0Y^R9FcG z^;E1Pyvcmq770v;;00B#m4JKX3@?4?IfVREcr4R2D)exoj-mQYWtB6>Lnio;jQvs9oEiltXAt>4Eh>IWTfB6gU6FUNw^%> zJY%L%(>*l%NCmzl<@wM9eq(2z^xDWG8%gXAnZ3{M^cz=7Vy7|(_2Yq4T@nWk05=?Y zJ=XXF`SI@Vj;Q0PV^=t(#ph%N5TW^m#a{8??SAdn{Ef)vpyXmQ07@v~fz(i(n+qrQ zI>qh)#nwHc1JmRC+w+6j#?eWzwLk{d$+0?Ew8a6Hm%4{@f?(udO+F{%lPgfFssPgFU~{4R6$~O{5B?j(3it6e(%$3vQ#!`!lbp zrrhwZ1T+%Cq19z;y0`e!CoTWEU>4MF57N7z$R}N?6a7}b);46^O7Qn^eRsvGi!krN z>yJ#IKqIk*#2#`&to;mCV!#CY3z z^E=h2xaI4!y%<*$rbJ~X*xB4q+wO5ov5*9ENz>suVxQra zPvIYHr!h=d@uUiKSAt#NLQ$SL=4sV9b~*+IGTWvgE4KXC)$35%FXKWmpYd$DkE zQ#%DM6{~wq!k{7>>smxFNE{QRJbW*saaV#4#){w+o0&aNI6}soEy)96n4ZFGrL_j| z9I|s>SsU-r5d|$ue8WSN^Y9Q#PU$eGE-oof^qaqGBEAx6a&2g+(o2MCShh(BlL1p4 zm_FKF&?}u5N$f|of|iak!xttqE5=*~e`$dINM?d>2o`F(M64r@rA?Oq^b<~coeAq> z0Z*6i#`t=y_;T~d+#&Xjbvb*b^>%6iCWCtXlotVPT#eWSr_{!*5ECA)Wf8g{7Ho8) zYCy!7501#od&X^Gjz}8eLMr|$GHjGqMReXmg-U6dyQSm)JS#T&WO4~?Qr6@GD~|$3 zut#wn$#!1vBQS;h$^hZpn)Mf`^B*IG7{43_9q}dr{9h`p7B>=YX_04D7mRQL==8-^ zc$V6MHj2D>(1dc=a*EZo_mU(524G*!zSir3xC)^kw?HYws1xLY!L@e~WqA;kY#Jg& z)%y1U1Hg6oX4&`k#6RfuAeU&&9}YfSShMnq*G(C_jzg-hDrn8I4$~HR%0nd&1HzKO zv-;EJu<+{(+ZnWt^|ym-`Ju(Zk(~0JB)G|E3z*8tD3-0#VsSO&7EEL<9AL`gw(*&(N_(?5#F!6*SfBpb zcbS(ZyQ1N?kwELh84|t-&ErtdWIwjD8yzn|*P!;Lt|xiVK4&79NKt#|1vi9Y^A>1P zc6`&gcH&Rrb=u1ejrM*U8HHX4rwBig5}mvB1;?&m4czmt?cR8f06=7|a-y^vU5vyy z;LSxxxkRvD=SG1ASH@AH)1kCrvvyG#Oous)-O#VH&hTymLCYdjSgRXkboMF*T8FKT z@+>?NoSac&TeWf!0}Htd{d#h+toyEw)!hVgz_mA6YBE;4+jT)$t@?2y+ay-O8r7Zt z7*hU}#g*pAQw*&L$8}A6{-^4%I=*Q!XzK*(gwNAHmj^>H^DkUo4?NjE+d`8e<|7Uc z>zl7m!_|Y!GeqKVAaQXnpZ<8-e+#OafI+nwv|TEo9SRN%_y;g*A_wDOZ3Z8Lk_JNx zloVV>=GN!p2bD+BR`|2izXi}tzqtt_(f)`~{5O6EKK~txv9YkF8jJ#oSY;~TWl8CE z8`NZK@3dTzIA$p9p_Q%lt}J6{w6)7^12)njjclk}Rj@3En6Ga;A2!d4L5KjL66ru+9`f z?B@b5=ZQmF1~L0Rc_5SpUzZL$RlQM7p0wTp06=z|ji~=w2EAB|*Mk$oTUF&Q8wiG7 zPUn%Fxsyk~raeg#7B<#G#*74hBAyYec1)Wbx&6)F&ZJ38c##+t5Z9d5gyxMSANG7` zr?2_?*m&s*HiFM?0bd)RJS?aN)9?je)7HMBJh({-XV}!NxV&Y(9;zplvzFBFFboMn zo3GEA>N!nHMulGALle8V!Q>U%ibSTwRQCINY6>5mLycBo6dR-{AlOApX-frc)^7sOhjV2 z%y#{V&9U#~qC&wFeJ(5Lg4Hi7_ZQTzer!ec$OjHUMGgb{Uqz1yLc}aaA{*N`z3=6e z--AEVXD)N`oI}F6{ub+M@*%i1Fv?ZXyf{dbbbEin@BCL4bY%27ijarxhab=!Eynv}vrQnki zb;$bR%AVoUtaG+-x^1}Ug+Ftaihg&i%0st*Qe(K4#K%okZIUEH7jCY>5e0t`7k-&XD)=N6De0m&q(gxo-jFJi z%!7UVcgkaR&1`XN-+Kblon zc>!62r&4ZFg%??aqcY@m^$e|Rr_MqtyQ=K*?8M*vZqWwOGDvZl2f|V0{M}l#fSr%r z`j>*W$WI{OL=y_<4xZ*Yg%Uok5RxA~TXnW|RpQ^!DMg2dLfaH!nU7pU*x2xfM(;?O zzXLQLDLNF7Ca7zAby)IrX?)y*3W?-RsP##ek*|B0SgRZr@ox}k0ExVL5Loj+#htyL z=$d`LDX5O=m0>+mR3lAI9ww#*^DG0N$*-*CSkWm3qLj)XR0lG7k5LKe5b?oL2V!KH602h5Kf6=sIeq`W`~sk=yddwkwxX}=ipEFgItd$~40m~*fiDF0 zRNhL=1W^8P`V zw;^w2_M<%{T(K{iI%3j#I8=5yR_soY@5}vzyBWe_5Kn`Pj}%$>sLG=f9A12_#|6M$ zh25|T&30vY#fGc$!*Y0FS&{$n=E#LK{Q9iYmc6i`=pZYVYk)1Tm0X}4JZQuya)6A~sjfRKdiRH3i!eE!ReHk-{r^@0*JShvb|=C13fUEU`C!{+}6tAEK{|K9w6A8a7R{&ld~=b^9w zg21jLoX%_798V*q9gq@%rqv9SANkhbi1#=c87gVJ$EWEZ?w+FZNs<@GFb3*8Zm+#I z?lzlu`U-PnIY46LzQqjjcp5=%ARuoLzL*02}O-(;!OuLx_FG~UH04h8RCF2D6qqYC62AI5eTbtM+BOiU# zWA%|&pGd>^kPDw83aI0(#LqaEj7bB+8SURzZ}yuOerWFU-ahfV)?w$)9^ft)jShev z3@fO&4c2XHEqq$USbHcrx_4?1Aj10)DLEeSG#}gGV1H((N>ZMiZIx?x7N<=L=&S#( z7mdV22UfVYMwrRR?cH>^JCzqtp&bci>h!Y-J1nj=xpuEsrFHoz8Y;BksUlkvJI>^; zfvXro%%dC#PkXREX7HpVX_91vq`9V6fZzBGJ*VZ;no_BFYj1p%=$G8^S+Zg7pfUM8yMY)OM51aQr6y#;8ttW~!*^y^x+Xh4kge*P< zFbVST%oX)~%&B;FdMqf_Lb3CQrXTX8ev&5$1`bJexLt5 z-Ne99lsW&f^$baT^|ACH4%xpU3g+L92vMlN1u*||fd7Lnexm>kz?j`C14_peEfyy= z^qi+?!m74$`!I! z5)oL8n{g_>SEJN!`q*4^L5u{P1UeGFd6Y*!&0B8J)n)hCh4+-pEnF+cHc??}~0ySja7fgu?1Ea)qC1ppuh=wwW*#g-;ScZ)n`+Ufl(t zTGWPp?V(R4Cfn_b4FLC6FTVoeI)TUu*^fP; z9u^~BtBEW>PleS9Ay%wr^D8w5C}{nqA-I|X#$MDH8f0)MS&}*!I^tEbB|=TWg%pAP$3-wU#q+maua z@NWKW1LFd1paZm`)AqyaVQPKJ-sfIabgw#D6?n2&sTolK@*wY)@-9ZNW?(V;?okbt%1iesgIhU8Xoztjj98lusp-GftqyHN!rQAd769G~Y1$ z3VQvhBl-_#^WQKkQ1cv^SI9&ABXsVQR-4^xwjPg=vl`$b}eRr1GneEN)7ixQY`SHP^ zb%+uQjMK6B;)$A`?-|dQs*F81k-g^vzzD{eLVqOn6&2>9e&Th`D_p^y!Jqp1Y2NK_ z5wa!4777ngo{MVR>9wipvm-5u_uS1+cmW0K>voZgF2Su|;HqM=hRj=I8>aMm+gZ1R z)6YV2z)mp9<-GT4W-g=NJOL(6u9RT};z)EVqkjJfJ&r?^%1EEJ)klY+2-1?stEJB# zokU1Ix8&G`B*rall)PFl*EX#>RU&0PJhhM`fCP0wf(?X!kt=QIZ67{nEMy27*^!*9 zN`G~(RYSO1f$!;KP7y8z{P6q3W)%^`cnVTumVNGeSA!k}rlfPP)UpLsBLXZnEY9&Z z)!|TRki4a4Kh5)|8mO)2{*$dHy;G7OI{ z=2#c-VJCUoD9cUVc%B6p+$ z@Vyk(_KL6{Y*tE(lolrGeONt$qqpIKZo#+RCbKP_R6Tl8A70n9PfLdDVK&8qP*n-s z=c6Z0ORXG^uT3@O&GI7?ZAq7;lZuj!>q>)yn(T!aB4@UYtk#1LP$j%PHiBIKCvC|?s(Jn%YT$Jf~Z`^*DdDp1D}<6p{o zK=JtB(BzN0?0+p2`1}{{0b^rK_5TRe$E#HNW13IuGKxsy^Elv0akujVc@jlRfyH_> z`KFzIt2gv(x`__J+2fPPz)d4L#CS+z7azC%IMU58z{*Sd^umwb_^Y6VB!vTiU0}Ujj z-$lN5fY{akMCrj48-|waw_ihvDeid-$=esP$2Zy;Dh(MfrpvKm%dDL7bv!Z^MocWS zF_dWIMt}3Tei$zs?I%}U@zbfs-*$Fld~PxS!H}>VLuFLYVB?mb)c0ER^FTn+{sHPX z=5&NGB0JK3^;BDTP)0fVLcmD5J%5No0d!y78dMK>FP3y1$B_02SjK8(+|5AqrF8n&asqx!T zIDp@G%9DCWA?MOPZIk4JH2Pq|?LDFGR?>h~Mr`Knw|1kZ9avjHlXE!;=|xl;@F8+<}^8 z)Sl=|TMT%Q0D1Kb!f!E9Gg}!2>TXj2j?8AyQbDpPp;ciN@t1wFxA`6ZOnR2-@V|o&+G4tyvXA?1RG11l;^Mc~lV2kP2>M4u?B5mDV7j0it)It+R5GWA6jWnn3>6OqD)@LIn7!2no%CoUX3)QZ_!lk9QZ$&>8Y8C7-k@{g83H z;dV+sAYvSgP8#8J>NUlAN5=03dVddZz~#>Xm2u}iHAHv~Grr@v4Bs1$Eyx2LtaM7d z?_#%C!>#ZcshozVGGFLrFYJ5a@nv>|tZ^61b0sRFo?-7cPWD|?1u0SGItW%svW z8@Pjgr3kFdhv@N+2_XpBY+<_KC)XW3wCo7GASTzY`QC@3C`%$)NzX^_;!xkx>Gi(& zzUOnujVB^))iT4w7KgPVq5(uH7A;*!S!Z|ju(MLpkDm%&J{@VoD7bWmSmW;z7)T_! zhVSi~SFIP^-BGB=y2i>|>;bp_i&fDFm)mt)yL}c$O9*PALW$qLtgJAxEw;D<#+o_| zs4u|2OJLCzWm(a~ks|Azc89hKTAqm?Y%S2mN5-a$BV_s)`+Nrh2^Ab_!PRqf9o#_; zn?E)2iq&U1zCr%=KmnO%wHud5S-Wnj@98B$Qr80*+*tMZm=<*$$( zC%8?m_0T$?WevmO`+y{qWl)T{?6@E$66HXIt#6>^Ow87L7L>V?CG>uVgUC2-wP}9u zye-QS*U(Dg6%y!#SqW&GenhEcFTKyA!QIo2Ik5f-CAgucPc#qz&1FL>Y8p{AhWqpF z*8zqb_~64nwPCsOjEH^CK{32E#!)HTbo*A7HcKNnF&5>`cxu3hV>A26=4?!G4Rp;s z3-!f#5`(^PYlgTA0iSCNMQ(xyVzU#~JYcD3Ao{VSNEt;31@4NLmR<7Ds7qqpRL3}D zxRhOFq!bwx%O)&`wcK7nHkQH}qDz5QF5!}332&L4T@ zzu5EtbU<@({=>+5rJ62~=J40NnNB`mk>!LH$;@)7ZR-uM7@spneyDdX_Xod;(A1E1RtHcoFZy@3%r+sr2!&W;Y_P2^ zbid^sHpA@)o^gu-0;k`(6=u6d>4mt?M~n5?xgz=>FFR7L_zYRtpS~-79!vpa5pgtm zLWwbcKHK3ZQ-G1$^dRB0e*XRy_C7a}&v<-yTqp}h5;VaJg}59iLFX(IUeZi=qU4*K zwV1xd;MV0O>OKY4!H6_fy1!`;3=)}>ac$Hn5ZzSGQQ9K|sM7Z)ZNT*2*F+(tDQ<50 zleelSkL@`PXlHN5>=$`@n!@a-U^B$nxjUm_)}Al zhU_Y^O;=KE3F(=26v>V@HA!vuifm#W_sxM|%A4$LFO!7?Q-q&GgKYWn|bauBvdXY>M$wPk_ zqTI?dUrF#iY{rOYj{KQ!=(b%OhB%i8anY&p;l3!cyLVI#gBi@0Kno+%c@slR3AQW+ zGDc1NGdZ{1qC(TO)96JUHF$tQQv`oZLL;AseT85Yz{rb^K$swtXn;42DU4Rwj|Q{ z`8%?ah`|Yz_T;M$VAS7zJ6l^H62_y+gu4t)0rmYbQmTzvh-pg#ti5~=HCuL#a^FYA zW+{<{IUh!TCS%NAfa$42U={_1p3-Yo&xLdbnAKX0MkOeZGLlt-)$d5=J^X?za`~NCZ0QEqCnT-7Zon-?){>`U&cL{Y5Mw;V= z_e!7Xo%0Me^>V)a_fKH`w=6VJN96bJ9KS@(|LZ@1kAcl!6ktFaavUIN17K04C*c3w zUZU}anH~i5MpdX7$?p%+U(t0QuM(wc>Gcowwp3lK6*q z;lmdlV=2ez!r z8RJDUm#5B_3v(aWR~Bd%hoQT+F?!HOr68<+@X)$_JuWx1WoAnxQS;D{iZe`alw9i<7$w#n_ zQk_cn(6wIRAdO6854b;+mY?E{U1m6eZ#CxE7Pq})6t<{QSqHnEI9}l|(JxbheAF&B zxg$1L3sCu~uqWGNVw6l99hyZIVk3GdlM>lBOEZ-#$y=kwE$2P%u&|#+7nmHym|$l< z$o{7Xf{8S&KO8)5f} zI7rAyP+rA$C-l#1t8+6$CT+;A0sOt{TouIwo0a_gTm>%G)-952U!lVV#h%HrW*3=~hzV*`HFVjtG8d+BPhe^|}Pq|!44GKE(LsKOcLp*dxN}5$np5c4c z_GTp*rY~mI2pF-I%nrg@%KH`Db}3g!oV82Hol>h6!vF-xhV!kwb|sV-K|(hd3ryw6 z49+!Gy1uYv!OJ^Ui|bW;(Hv0+f962;-NvaIQBlYv+=&n}T8XJet+8w>9j1hb7Whs* zVn}OzB(2G7^l4MVz6xq>Ifix2X`5-w#LLsgtljuTQmr&Wuda=EA<*_y-#M>Unbuaz zwiv#`U?l*g7nP;fw&rIKg@pBX8WqYa#Vz{C4-kY;eeoB`_7NAX(#$8O3JuCmfCSy@ zEN21s;@XPtu!e7)I8>iKwnKYB8ZMBZ-Lla3k=m%|oKao~i=zkU&VyUCG05q3k4k3B zB3k<_tU7|afPLkhue~^+>i-{KPaPNK*0dn9s34^@(%rDjE-4{M3DVu&Af2mpO0$%J zl(fvcdghC^=YF!n2qAbZm&WIL!zkb9p74^em1S-$?HGr z@)+Fid{eE~VD~ev+^#zmjPKR6mn4HnoT87$s;T@%v;Ef*806;zg{wTgoIiD20vG6~ zpC3fw5&CBe)kK0YpO@E5Ry1k;LiNASJRmvyStsZacxZL9OqR@m z#rDD2aCVGt4kv4v-a}V2*W*vuar+qV5>Ux2^6GsC?Owkl<~!lL-w4~r&+%9RS>RlG z+(6<6S$}hwUg-E`ac9LwVYs4MVR0CI>QyUB7U0WU)O(;JRD0A~0q4=Cj|9t}U`VI; zd)?KiDccgh)mFH)yUZ_21kW1H{7Bd~#3!z}H-7o%{1+o150^pW6I$8eqa&{gCI*GD z=ftB!o{#Bnu+)1DnTfmy+^+Pi?QixupE%cxC2=C=@0t+@n|La+0k54I?49YX<1b(H zPb>W(`5h$@7hiv(zEWN=1AADSOnne#S;rkk=lrXmbfKvB|}S#9ywOw$Sb*(|xwtFN1~d z;Oyt8J`(!@v;VWjTaF)UTINB~@=fVtZ!`NVw@-@Vy~|!q##n=D@-}0p9r1Ql795|R zY{jx}Re&kBJqRkW)dLTDysm8aI{ams|6k#Ycp<+o=r@wH(eHqdP%Sd3m z6^P*loP_8(QG+=3(I?W!M@v0JhFYcG-YsM-{u=oxw{8`Ddhm3s@LsFPR*Q@D`b_s}D=6VJ77F>NFzC^SQl*?#?@bv! z3-%P9^oiT=n;LPzm-Nh_p)_5oGi82xG(+Y$iwi{-TvP3DUS~?Sl2DFi>qF(+KTd{N1b)dY1TJ`*ZJT_H zVepm0mu5~#hn!-RuMf=4{%7Tm*0u@b{||KwU&& z3z51>y6X)d5y5vwT4Ntr1jNUhlrpCY*6=bC(z+@>=Ur06S;ir*(?@$YhY0OC&^Hs%cLu8Z$F`ubb_nMtJh|p6t;= z^rNdqbQ;ZQX~{cM*Y%4|mq#&8l_^riRIy#0yuJLrv#N?y;Z3gl;Rx}93L7_G&32h>bYzGYi$4P)i5D8|2@gshgD7-dQo-<732&BrRO<}jwL zDa=u=g7-LU7x<3sWoWn+eyA(23cJIbCR{)o`M5eJYc1xPd;j+^h;78E&19tOjSam$ zai~P4h9>p?mU4Z;@U&Ku4d?3*&!JUO6`br{OU3vrX=BU|WWiAjOnT;z8MJqlkDF*i zrJ|);7c%b;s*SVl7aR;8VUFQvI2Y?VqmZ&V=mQl8i7eW1%+{tA2pv&(I8!n%tkam;6DVKx$83UmK9 zPw9<8-M-steEaRQz`=({9xazM0&!Y!cSQU*JZwIFz4l7`{(%LS7=c1boRAiW7{UD# zMb5Ml9QU-)P?y?!t6$dJ;T1lG6d~Zd)JDPqW$(->;8g*a1JQIaoJ*)~5N+@_pDLGQ z5yb);9ozkSLRWX1Y;{H241IlLV@96%wR}3gfe;HwCrNw! zO%`c5Dk5RTG8wufezMnNcU_Q{-A~cpFOfWJT5F z5sq$Z_m^}}&~V;L_DTkGxobE$H@J;Ev=Kha@VFFy`Dib=CH2q|aC@?C?dYFI_Li{( zQ_y(6(DUkH9ow)Op$mLjOxi#) z&Tq|h2UA#GzF0?9E%T0xBez)T4VAKvrJQrVlhpcle{*FW-s2k{MZ2%w{iF0|e9Wa+ zyIX{(x(jdVeZJYoDOr`8#0{@VMSj~5mcKp!0EY!rJx)sm65Xf+7kx!{edW96{OD$M zVv{aEv#irVpUU%R#VU3?76}TdEo1)84*Z`BzG#j-+m9f(^~UQ zrI6_iiE|>!kcnE_Hdkp(s-St4%jA8~Y8^T6*MSdtWgQGWhUq10+D#cP zuovIyTf=plVa{AMJFKbpa)l29$C| zf>s4=&$B3BoKPszyj}u4ocJP%bJF{QXkJ$I+7m3a_NU)-rSrefWUXFdDhW`rU87rj z`gPtFfph9Jz2^B|#8Wkw{@Qyzo}H;wD3AAsN&FXRcE_V2f)@e8HbyWI{*S0S2F%s7(v^AX!-ohGWO|F#x^bsa> zxQ6l^ZmvfJj%1iM5y@Ug+W>vziA{W}zwo?xb9dP0uBPM;oriA|6}N(gp8Gme&(8YS zwe{1%@ue5sZo9j?ccVHxrjD&yG~_08g~>DAx1#CqKGW7!&0=5M65pDIt5=YAN=D>T zyx$EbzMDZfDWhKFS;0QfpxYk1jT17f(^E={&a?-Ls6TpD^wj+bN1o=6FnO?n+rt7Y z&FDg03{lmS?XjgQu)MTvVCU0;D$Y9EyHd+RqK=RHy)014AIU39=IA>MH8f#0Dzv;( zSm*GhsMiaoe&;PhjKT9E171LoKwD2+6C2`4>o>T|DqSopLV#k$Yg@Ub5X+RBGK1L~ zM}J?X@J`U~+3QE4cBVpg4T@YAnCJ`jWS@ zv_^2(hV}Gzw_GaOLc0X{Km}pFzXOd@ZpkQaVPln6BB^Th@I1>q)>`J64mw-)^8JI) zupdMI?y3X36i-isK5rkjE>c|27U&6o`5e4e5T#x;Mh^ ziP(MP7^2BxC}F-VYWK7hj@pyJeI>ytweLiG(~_1}F3Cg0Ge;k<3zd18n_A)c% zdzTM}q55WT3?uAVAuEm3p4Mn1-&+C))yImI3bjG3NnnC7X30x1^`#@)LxgBxtHg^& zMh;dP_aFNhq7!m+@~Pn#?ku{+=9RM6CSvHe2K@HEG`I=jy_0ae9J75-j&dJgAXcf$ zl4)hh=a@c~>%Ns&;ZMKJ+n(S8vCuCadoLKhzL`3pt3)S3?unx@lO;5@hy-HNoY`<~B2-bs7@OF?RK7wnEF(#g^Ma^B$Fq+S3G*af;l;3QcBj z(jTf%d=O}GJ4Ih0K+FA$YWlBp2wUe4uGbFj`_7dXD29X2!)7OFq z-g%9veI9#q>qbr!1TMp1egs>E*5_tYVO;LIa_8FCWJ|`v%V+VF+gr~lw^^TiJRhBI z8FcRN_Fnd%6?yZR-|<6Jv{=X>$xYHP%`kmE9lfv4r|;tM*4Nh!=wy7!?qEi^a1k3c zYA9ug*^#g~q_eb?R}!(fv@LdBfeE)5xxPX7N1`ceBla@)t_fV=m(BV$ApxR z`RA0$nk{z4@luh>A(Xh(6f`?-E09_u*rokj_peNcL_DYD1_ub=t*#$Ae6p&viK-M6 zPyHdux18iUFDs)Y_h*W0r5!h%UY1QP`PvRG?~^{ta74uq+}ld+=+$_dmFjuO#V0Di zufu)?v3xHNMmBjHe!nEPSFK{LOXCGB|J4VH+Wum6V*{60KAUNHW62Yf71r&{dy%V_ zICoYPlR5mWZD2_n#Hj0uN-Ly8k7}Y7=?~F6y=+`!3>g}Q5x4B@Oz4z4VQtm!VpI#0 zX>LFmBw{UGu1mwsSdF36S|O3a_!4iez4ceqM2cw#fAs#qfsZsiHgvbc5DPBtSDSH5 z)nItWe8r2NC4lGSqX*p5VWTVL>;gf`G3~eat7$U3QL6CoqF9T~&qQ?ybyce{gf><2 zD!nyKU^R4c*`I0p{;iT%NMF8lkdH(qpVVS7lGPj~uSP_#g+y1FI|oItGVTPMZ(EixQahRK@P^X>0rK@kXmtA++i<@{t$hcB)B`4!Y?Cyb4n}Itg|1Dh%UgdhP32hJM3KjOVxX;mlMX_|ZMN}PM(*P$fU?G1s}m(h#~o>o~J5$5i`_6vLs zLKKX?K2oR{#*6{?uC|cZeRK6VT{tupp$-{LdVquTKqk>grKvZyH3^F*7Fg92RYc*2 z0*m_Nd;%P$4BEIgaO+x69nFVzX$n@$khml?oZPFzAo#aIOlFp=esmJJr~}d8d<@3m zJ$6@U`iw{)Z-}djG6-SDsGw?&RRxNvb*ljvy_a)_Nm(%04!lMkn{JoaTm>A0p*y|m zb@pj7Cc9P~kMo)}bv0{duf_GMugU9f5cf{sJtj>)e3@buufnl7X3Z1kgz!v<5CVrX zpS9cvNg%jdvyEE}{T;aLm}q`a>kXG4W_Hc1I@CB>P9EQ$4ToAbXebtrIi>0|(>;P5!aHED!hB~&HDTUaJL^=Fz$D52Pim$AiEf$`H$v-*-<#KE+F#H=^CArts;Ws?`@Tjmf6wB2h|;gs^vZ0g@(FA?tGrbHcm&?CC%i)xwv9iG0nWyTS?Wl*^gpkpB9(bpN}s z7TOCPTf6MFRI!()BG#+$S2!*{C|VELTW*u0)z4hBGVx^CvKet?&Q|C9BAFD>aGKD85Ho_p;Z0j<`IaxSChfk7--Z18c5r2t;G zXVtN{Bf;XkJs4`Q-){@NCfUNbq6)>X^~&OP4ZV>=4H|q<-pkC@1Q!<&r&Hos*0}Dk zC7UrmQ6VJyMa$E_Fy7mmAD%8N%56h23ERiIJQ6KGK>a9HOlu9imON+lJg8aR>DK0r zHNC@^qtep%Qk&>PO8Jtg6&~MUxhoPCctY_bhl1P4H{O3ZSA5vtV^~5YDwnzU|Fy~RE8HhOn2YOA69+(?Z93K9k%KHzDJ#Em-}a$6L7C+Dh5SXL z{%dImga$p6D1bWe1?oQ^Qy{`9K?Lysxe0EQ(;|D<9KBz1pZn{x;Y7;$GO^D&DhB33 zHeVa2AwdDoD_~18jkgmooO3eZAXdCTrwlb5HNdMb!IcWLrDjG1zJssO~soKk%!lOZJCf!NR>xKrLfb z8@x*rS`S>oLmR4X)p>BwTw~X5*{e~-qWTFAn$*EkzLR{WQH}&dcoaBe;sv58IJ=*N z+rI46*OzSChfF@iw@4q{=WMBZKA156iuu(?m!}0;uWyhH07tog?MBHr4DtjsJ#t!_ z+rlrqAi({pdKlhj+)B7<%_ zj!UU(X=&lRbFqxeI|WOUm7`>_PV_2U>{`Z1nIeBM3{q~O(dkoQ@>mI%7V*7jDI09d zM6M|tnkSJT#%*6VG5fO=fy_OGT=7$Sj@@oacg;r&>e1bFUdF8+BmFq=qksV3fnhcUW z|0Lp+w1^g^)zOfvrYW1ftlpCAM*5Mw$xrXpzuzw+aXmZoKD%sNT(oZ;d~BHUi3Tek z37^DuJL?xp8+8Yyri7Awf4MvW{V$swh;#~U!Y1Nz|2qEy*zx>D8UR0M*kT&cLsW{i zy|?+<9Q_oY>kqa6!m$6J-2wQe2aNs#QA;%Hy;o3euVm`hroV>&ms%I z;0$v#9XqN$Gj<0_wa)6ET?Di5GiHbs4G|*8@Lnv3^!&7wnItNe)JRn*2N4%S*r)c$ z`N+DBhH(1!{b2Amlbiq$i4p(g%QE5!o7^7k+&cHcyDc|9sB~3FRpBZdT%gCi_(^MT z@#}H-))kYrZ#}B;%IT*A?R#mK##M(A!y{vtf!F=EV2kbNZ+UXIY{CwJw?Xn{uA!|o z-suC*S%^Ka$P+~7SN77^IuRW^j3FH`VG@*qc)#}OFG@K3Qyis>8Ll$I+b=VL_n2B? ze)?!pkzH1DLL_}#VTQNN;A?EVdU;G;S;y|mKF1FoC8jitiH8i(X|Ve-vh>nrG;JiR z4{2%Ak8gLfa+FGtajbq|s&rc|;vkIcWI~{ef0egCOu4l-|5Ud`cckcT{g0G3>RH@S zOu~dZw8XcJuV)K!1fNR<1V$4pzj#vrK9?m@S)WrFgoCI=IkiX&vWBylUkZ_Tv+z$$ zX)3*={TxF-)O%q?Ehj6pSni{a$Je^O(ubhk9^EFVy8Sm(+cwHJOkD6pD%o$O)zdpk zEa`#XRPJ~XY~vR1k+*Xkag>Pb4cBlwak%=tRZ7Y3<=?xbc!N_;vH1SnE^BPSNZLqw zH#IXY70W}}t3qWt-~tc$>rJzS$M1)dm&=0#hx;*`uuXDs6vbXiJe=c}CP#Csha4>#!G@seQYtU`fY zS+X$85r=Y_mS=jmiK8TDoeC#^`xr|nm6!NFXi#;s=2a1JP^($BjTyw#R+shO#G=dR zv~fVUaYx2a{>mJ@|MJJfL<08-r%w_E^I2?YQ_U`i@8C@%i5NPs&9O%U^>>Ub)d?pd zAH?Zgwe){zre8L3KY+(SW6!N6$GQ2aKV_a;@S7otM3r6FT}N~j!(cX5&rv_C7T=zJ z)ckHmzA}|ap2aZRVXs)~uvgwf-Gu;H?C;qvrgd@ga(w@+b2&2 zqe?`|2Wa)-h`rsAQzhOD6~*S;#erWbU!71(w8_D1;q6gmJ~D%c9%)G`Slu+}7kSBb zv%`a|U|!`CIW{T`>k%{3;{sKA>pgM)+R(M0tuP+hv)yGDw<( zA!8V@-;94B^)j0mHCzn6h{Q93y<|s;OOQzpM_O}JM&gOpyC>KOf*kQrxvfI;pU3O* zI5`+UE=i=83{6MfG)QIW7#;7CP~_HC^tkU*qH+iH{+RvMq4&WPJDfX_)tWd*54j60 zgPyIGb<1gqvvE;6H!R7`LYI$oWnar>PQAXhUAW~uYnN&YUa^Bi3Z5Btz3J;{kkxPx zscgSXRf!%R@6Q@&s9dN{F6kbT0l_Bb?5EJ_zz&l@l`u8GglXzI9_DcSv|4U;00LZG z#~sDkStJHW<~`zzD>7GX*?JJ+NdnFpuP(z?_{^UDT1n|d+rU;*eYOCrG}*mJR)~^f z!GR`X(M)D`{PYJ?LQ|iP0zV9P`;({{_ISu=Xx{vm^P1dA^3#~(P+lHv{sz}m^m_g6 zZ3GHG=)c`^0YPzpD)I}*xd8n9xXYalLxPrGL)?uXxlfnRv5G)XaJR>XFIb0Bqm;R+iA6Ff*#L zs(cd~nP@Ef@tSLcQ>2sEW^-OXkXg^MOY#U63nF5_dXp|Go%w z?`Gz>Jm~t`E1FFn>d$shPd>A4lcNGPe&mNpE>FM#u?-5#&`&V0O zyk^`D=9PAQ*!oz99HzfMmi1)|o7aUq9<@#0n#fYjrxw^{i@)6brlvk2rOjuy{<40~ zr}y9V@a8^w9txrt4aafrPq;P2iX{-V4kvj=LcBy^WZ!r(gn~Sys44fB)GW)3q43Lb1_zB*Z=~*7O9gYP1ORRz3zN?tbOEOd!CPD$yOpvvyA}u)f;$730pX z0n3;-bidO3(L-vNv`@2kr9qAK4_yMD7ZHbjjKZ%ST6w^QyJ1=qQ7l4C>uE{)=8Ltt z_86AT{)2*t4}b^$338Y>xf%L!;mvR*^y<<(k@Uq?7|-W7wU(-5PKp;AUhS822n_SP zY!D*!X(v4NCLg=*KVEtEXhmX`r8x5GRtBM}US|2yqp}*B3eelOitwm%irS8%+}f5^ z9Hxk4Z7XHW(MPW%mA}LAX3ORJY#-Dwl(aNJRhMn)-K(4QXEPR=-mkF7_+Xw3mlpuUPotTe8_8(yQTt>!%ZuZ4pf0zg#1L|; zRcE*^KGvJTe5*I7*^}oS5v#+VUUa*{1?ITdW$px%F;R zAIwDu5cFGmb(ugURu6@7c(Aj>KJjy}0qyH4u^xDGmeonK9%1mFN@AZn63HuHE9N7z zLexkfZnba;ey~h2@lxuS6=CbN?;$*wIZP~L5qawm;fY+?81Z0xnb zky5uT8*=BDb>sdbDV#~Y2ee;d8=d>Jr@x6Jl0Q&O49OKx+B6+Hc?8k-|75mrxKg}vZ6^{ZRjJg6W@^hawR*ctIFq?py3GJZlk+4dFLI8I^vb1I z)#15QD1pjBNBd>P{U0ohf+pI#ACB|f5|#D)p4mSqLQg)n2gkwSu8JNX(!pYAQaIEy zb@dTy_gp;Yxn<*Opi1oEfI+}XY(-Ruv3-B49rJxt??!RLykWv8eY>d3T7`z}tP)*b z0(L}i(B2wTV3#edTuQ}Na_iFn!6~_6*II9w+B*H(Z z>SSG-zTVx!bh0`7!IzCJ!cqGTwv9vIWCnlv>bkzh$HKV=fiRuMjD~TSwz{5(_|`3! znip`V`)NJq?*%nK6M)`I6Y$z^sAp$L!ckJ4VmyB8$N$>3076oqM@|7>h_T9h7OVQq zulNE#hz6cqn(InhS?VWzW3qL?mdI&<=;U-r@-Eez&*6)F!WbZe8=&MSrAMv-iUcV{ zf~}T>q&PAG&Y2HuQ`pJVI?&=oO(-&usl;Ke-j^^tkGr_J}0Gj)%{NI zdBgs{4HF7^I>*1)U?~Bd}B@|1`{U*@-V&P?0ETu-XMnC}Tu6*$2XFrlC2qHokx`_NP zZQn{7$i@)OjYj0L3D33cdV4r}3|s8Ahu;7WPCrXJAH(2ebWZtsoc;)cLG?GSW{;id z=!&}bbK!BtHwDb+%Ks0$V+IV&f z>l-cSu~V2)se@azCN{p#{QqEo| z^?mRa(Ok5l^#((<@GXBP!tiZHlqK_NCA&`{_4Dw>#|)o?ReOSTsq$+P*gBx#vG&E# z@Vz`z!A9{Y{h;_mZeo7FFKt;@JEFHuW%C@+m4?Lj@tCP3KrFe2a*y_~%c-VW_qbEo zAQ|@}F*NB5MEcbs|9p`MgkdJtVos$adhNt#l!)hhF`;UjC*rlL+R@!c4^ z;+khY<;%3f7>$mf8V4n-ZirpS{Ft1ttw=oyN7qy(=Dl}WHbnPTTo7~ETU^&LrY8mo zGTbCqYE73xYQp=r!MCxs8QAGP+8|_OT>PFOpYToWM^m*$y`9x#4m}N$43S9;47^s+ zsNJ^*>?|PUy_{14esh?qm+kYG+v7c+{o(|lBFkPAv041Q+OKqI(f?x# z8gJ1h<45pG9RF^a;9Peq)IR9Ao^TMSfvZOnoURmm5Y&$|y-BmswuoKtE*M4+eyWg7 zH4i4ak=?ZbXUk62J0c(1qD`qODRI-7mdmpI#81AVz6ieE+FxvH+t4&V=Jjs*PBNQ+ z-m(ozqy=}z%nk-zav<+uwmkKgnm#N2&9=&k=nwXSl5@mt${9z|iPAqNzpR|NSnfWR zBb%I>8i;(j?d6;nq((*FLID7OCXv8)$&hWvqUzof>WBN!v*I<31m1@L*1JKQ65fsvP4l zG1lpbWHym0e3V_-tx|Sk;>;AOJfKwQ?O>RmHQp4>PRt^Z^ad3#Rj_@-r%}o}MC`Kk z4#exlYZyG~bd8nnIHY(Y)cPHBp*P$8370l&m6;qS7y6`U2m(Q=s>#=_Elat#asjSB z7%C=q`*=Jb?p2n=+nlBRj(lRG1i~*Pjgd+;)o#W#gMPlDI8lrp*L@FiIPz@^HkUXP{8uA}*ZOi@JWS zSpLW5cPX*`P8LOP+4)l1)t;N+zvmVQKNO(68olnKHXo}PhNi`8wZ4A^HOi>2$C*9y zMU5@(p{mM=RNIe7U{z{Fv~@xv3~wR>^?1zfS&YF(7v zVdKEda|#zB7IK{MG{&@zIeC7sp-7&mw5kOnBI1I|saETO(Fmyx=GB*|$(+WUeU%&1 zJ~t?fI6JA-60dct z&Ckyr0xGP;P9p}QKq{D*jbHGQ_9w8K&VbP2HtpH|)%zP)j+7#BC^2)pjh1Bn#pXgf z_Hd%39lKM#nCtJN4rBC+@uNb zHm~`G7;bee<#gnZx^iA`C{KV0q`6QN&Y_dTmMWuPso&g;4#S2flmB;LTx^VfC!leaKA*hc@ zbX8d0+G#lHXunAD3xkYYm%O(HfmFBcJbjp*sZ!&%TS_b>X-9OZoAw<9L>0cof2-|U zGT{w18}#t0Np4A7IWpZ?oSL@oY*q*KD6W(9LsLWBYyX@I{a3(rUcO(U?7)x<2cH1q z+#qxO3b@fS?G?S=NO=>qS(ovJ{NuCS>LI5-ewX~)y2jtCIf1vuN5=(`A!6VB;oc34 z{#QS5Vf5jRTq`zzGgl@}rIfZ`fMTj5hb@_ydN|OOY`b-E;_k1i`xxhuZa_l+qj;ek z7U4{=mDW~aU7{P0$9*3ka8Pgb1RUaY)ok7Iq=WKV@hs!@c=EnS-$;For@dS_)Y+_0 zc}pwLDtN73?{HFB;4c%$e=X2|g>k#t4b+ei8} ztwf-Ha5ERO{y{$SehQklP%zGA5oQ)6kn14av~%+Zi?nv$-I-g|=HQH4^{+g}`tBH` zn#Tq=5*GsRHxvgYiv)CV(@sAhPLz}PyJTTrDI@n*P^+bPZ+l_Cv^b1`_~Y)kZ&KKW ziHk+g(|N9cgg@gV*OqI<&D#_ED3KT{*xweuw%_qk)VE!um7p88DQcJio4%G{!-D&< zuze%!Ze9bNAaX>1%VW$Z@6}#!FGE++lf-+oO!yCP>+NX0IUdqtv#gf14Iq83`dUtE z-eD-dpwsO@Rk5>BO-VUR&O))iwgePK5D`xvKp{eVc?)hXP7p5$Mt4YxT6^8om^$;~ zy;x&|+#8)P@bE!-EujeB^Vn_rPwkx)-{&s zl{Z!2JU35(=T+Wf&RwkUW@70(-qV}2y+k^_Jn_BFQIX`%yQNF&q;dvs90v7>;ONyI z*B5s-V3FqQ6K!&pM;`|*cqwhyf)|#zeK6nQsK2I4FO(auWMf`&+wRCrs%<{x%nBTm z#GJaPBOuYCOg*s2x2)knp=Vd84Q8i0#41tRBgs-7 zBchYT+>%(PCzzL_AsJ+Qw;8*Q0_-VvNP5DbB)o)MC%k-Azx>3-G7r~of2mw_7l;L| zl$v)N3_}|5@ z_NNNj2g*2$_q7C#c{^#uzCXM~@opKLNw%l!W>>~ct!t2$RCM7h>7IyedM=gc1Rg$N zPsmkP;l&}dc`EHu1&?UiHIz2j8VhFVVxLPop})`Rf-^wPZN>dnv!9V&-UZ$N7QYl5 zzN77+SSan>zrJF!mH+%xF+4^G;$;4^$!>!TRvM<`YtIsUDSy%>Z_;jEYN1W9V9L&} z-sm88P$v#Eqv_=1R3%yM@lsZh=u2qipcjLz7rP|29Z^;7KKuH?3-cLPXY+ot8U~Da z-DE~JMg1?b;g?h~brSwnb%^(hfZ|GFN5@0>T>QU8+t-;DA9EOnu0k+9G22JrrQq2&w#%o=p4fd9p9MPMaw@>~MDC-{>y zF6E?qoa`gNM8?#*`1~+u;RkE*4H~AF*x21ZS*V6MUNFx_PdDlI3&p!sr_?D5O!ACu zl7={6!cRiiK0MdIrznVJ7S9?>nd6sdNR$S)kF}GWbSrMHFzDC)`o?(Aoq%?7nAW$9 zo$*Gt!Ib9Lx5h3n-J%AC;KQW9Z)N^~JfBd?lEAoeg)Q%W8N7N_L0!Do!KpG$@n%0W z!#%+#D3H0dVRo@$x#m{^U&|u!t@L7ggb46N;o!mmG25jjq$=$lb z!ZQiAs-a+0U`)|ujU(u$ee%vEA(A4#eLE#rGJjhJZmM(Y;o%u>-?c!RJ5{ykT`6b> z3j`-?@y@0$4!nF$abndqT1r24!uLU?<=vmWVth-qVs>7LVPp#Wzi zLoHB++h+g#vcePk_JDi=5uJ3cjP&Ev)#=MDjSYT6PaT=|ATM4JbLPYV zgfDJ55w43;SCjnKG+UYeaB)Sgqm}u#mXA}FfENAz?M$4xHdK4Dg9>O~2AjO%T39Ph zL7LKaQasB2*Z`rDNp-AdA^3?aq@|Ql2-n zzdr5)8IMk0wWvO(n>%?tP0B_hALsEhq;JLd#|a#qj4f5Shp4vL9s_+22_L{kWZ?uo zR8_7KoyNSzWjgCdQyuNy{LQ6V?xi28-X~f&Cf^rSM}-S1*-a(x%d=Uy0~|36&q7I(|Btp znX1chlUj@{{FG*fB!tvJ3qA{ThYQWeAL2HOL_y*{yYU3*{i*2W$>g9HtXiQ}-IHkL z@gH8xTPu!zufLO{wzSrz{Lzxb_{GbLzC@jkLYXmYQVDB$fup6NVSGvw)g;5V2?`C6 zb=g>Eeen${Ex8lX`I1r8a-!N2`PZNEobWHbf|tz>+B|NILV&EI8YA+r+ zz}sU#05h+Da>Wsv)v{R&sMeC*i6Df^7`0PUz#g=_zA6)yB9uvHOHQFm92BQXx@~3V zNf}+wZ_b3>9yuwx)>iVaul$?pRUy7BFjJSjCu&L}1}~X3PHw@tzI)^Nxm$eObQt(BDo*wE&AH zQh-e$ptrBs*Y|ahu7dZNp`F!Z17X_+DU?`v1DEqG)ye6WlheXJcou&*)Y`_`+)03S zyn;M9nE9~5_KH@sbt#r_U0ukljQy$dhTAR{&Z{fy)a?Eo(2f(AJRv}kwO^4Yk(*(0|^oD)Ir3EJvGoxymL*-p`ob-WQLv{)afGJG(b%MrZP|m-9q6(;Oc>h z5OW$Jj(;!=zy<7cpswaGAh!mH9tHXn*!2%ETLZ)hMCLkADXR4=C4nZ0{U4h3{{W*j zK{Wr+i4iqAAolYb13)sw zBW)1*&vJ&U=&?0W$bK-`W}GyjzJ8e!pSZP=Q?{pkIj* zKYoMWLQLy}ZUANU8v+;?!`~^%8=RK`V172`yuuv@Ko>%PCbu^FJ-MVI2>&uKz%A#b zzW#xGV+gtlRQDWXY5aRGE+Y`-KlGOVz?2(-sDMs8&tqWndmgYchy)dgOL~s__y_8x zG3Yi>5SQuib>=Vu5&ly~mFX`^F(x2Zfc%yj&~7@jUqB2~fc>C9frx*Afcp>1pDBO# z!-DBq_*5>0qxr8w)XYE(Ko_2qLbdoss@)7A1^EdK{|6{y38F-3n*$>9s}O9?;*n6Lm5|5H%ZZx{ifjB`0UvHHd7@2mih zo3I3t{^Ug>gqQUN3>L!F3WSXcI7&Ltx&9me>;=U+(9Y)fOcK_BjQlES;~xyA4TuEM zW(_dbFJUvZ{gns6fX|%Uo>Thr50uIl7=+h0|417VLf7tBdI0l3&C&H6kQh;H`)|Rb z_Wvd)MzGld!wnSd01&OS|J7Adb|7k0;4VJ^{W*#N08kb7fT{qr)mhRP4!@E*0eQ|E zdj_O(`~_UI2hpCj^9-2r5AgHZKWB$?K0U{cK`JmXqbYOT& z=H~qk#*5H!1BqjC{R;wQIo}P$fd%;u1VPNXfvmB9BL;X4)o}+vzh#7Q)eO0Vcu*j) ze{=G}ewGR4{1*o0`~~|hFTjg}o*;H+=x?P$AwSdU3IpG-6^8pmQ?qNpWXsE2^T-pV zgvW5^GWzVJw4=Os_R9n1hVTI6aQ6KMLu^HX@ZsFNXHi`)pm@(>{$7AV`H<7W{sQAW z8U|_(BV>?JpFIt<|F;_Q!jKa}|56C-?6Uj?g0QpG z+KVvc9t89KF`NkfFwhkt2b{Xa89xL`;O2jNEMZ3yC77zkeo!gJ=v=K={Z6p5W6 z5GWEm0h91K30_|0T0kMl$zf-Eo)?Njh=v2T;02%;QM{ZGq+0NDow*kNlLQd78z2E} zoA*BO693#P?;4=>UQy_Vv$OFR*`%B&VxRKZs zSS=v65z57bR2eAO@1vxC)*_&}+}ubtgz}s{D*CgQgnBJp3?TpIK^P2~Jz;#vqt9o; ziLAx=xVVs7!pF^x)DnQhkocXC2YK}Q5M@t*k>-PNA~6OZga@g^`FN4JnUD9(GWoOJ zz@Q?vn-9i`q-^>4IM34kInsQ5e<_3yiN#=?oM*n8{wNs6$pyRE7cfrb83L%v?-KKK zqyZpsSLPx?@R>n%p%BQ~2IK`8FE4Usph(sNz}jb);)T3$7#KM-9}<58A^<_E3>PQg z#qNi3aUsb7jEkEGIWNyo_5|AhKVgA!o!=t;vxZ#YbNd4T{+14cBm*!mUZnXC1}H3~ z7IXbMQCIH2vWCl!H~z3ix0Ua+?+_0EQ}jy^2M&^MsTH`*>T)JIN-A;{?;CD zZlsAH#?8ZroDKryx|kPv+JJE*n^Q1u;29f`_YZ!DaYK4r$&30B(9vEN{{Z?txUqJ4&U8}S2-%;g3h^7D?#KVJRm;y=^$y$Q(K#&X>0ERSe z0BZ2;YVw7m081MQ2DBW2{nen2{qGlOABtph`lENmE{OOQGo3|I(Am4QQ{zYW(}O?dznapw5$Laq6DkSYV= zM3y(eWJJmf;X<+jVG!=0^81HEfN&#M2Ev16)dBP5?>zRi(hvx6^ZY`kA-u@K2jTr= zhW@D#Am^*oKU)j|j0hxxFyzSr0?Z;8)A4eiZL$7Ij~9WG4DdTI7jowUwk47b@}7tF zyg-5nnLPoM5viKI5M+(c%X5^m(kwnC>l_C3 z=0)292CU?e+6d)Fp0@sCO#{tik;exLL7ujNjh2fR2Vg59Sw;Zt zcf$z)XhJIzC>c)gX)y;P;C?2<&U0P3wHf#uZ>3BWWN2 z#(Pn1@&SwGixLaKkR%p>Au%o=H~8FC{$mgTAkt{@aRY1e3v~xzNY*4^y(5Vr07L2v z0QS4h@_&V$y>1*w5QK9+f+8h~y}R?b0~m~K1C9(h6%>%C6Cgk^VVaSXc`Ci1zS-mL z%~lamCX{yPr)Q?Sx_WMTSp*iwVl9|$&$^H**A*C_kbA_txNNx#fC64-#3Z+ zH*ymr17JpYYFI3-1-tkI=D!meK$BD8jmB!g?5yBVEkOsfa7pl;$BA_N2SB4_VCG;r z7A7@-S%zE@B-JZ|SxBy7ZAOUzjZ=e}5J|=r$C+FvQq2<}S8n`_|G!x}POm9^8$ogq z-CS`t(m=PyrooJ8f*Gl-ku@Is!2ZkwdyU|R(X(U5l50#xh`}uIf|<}$;dacwySdQ{ zeEY>P&y8y&9NKdvu8tYqu5iy+$JK^4;qchY)x(0wKMQL85O^k|J}hV96|l z=BDBf-zqX$1FW)HxA?Q~{x}mP#0NwaP4($uFhrT%%$#LoLZ-4tPq0B@YnKWR-#eNQ z*~B*EObV)<6toV*aP)@RX`+}gtDC1hQLnCWutJZO(ja-a5)k|#ep#QJXN?DO!8Aft zV&^!Vu+9Eg9{?C_CTKw3ApFc4TM5JAm6dsbyBF$5hV0EGD%IM`2lA(FUonpoF?YKo1X)!3>Eom(vS*fA{bS{ zq?{0pNF;-X8XT6X+n;wSSLuV9RW>YX;e|fXEcH2xHp3cs>+&4*R-aqvreYBGE6VG@ z;4k`erS4|fdZbr$oQOnvJQJ1L%L%*jKlWwT7!78%u$U;eYsc&a+gu3)>W1UZBZJ2N zovkUc0L$j*6DpK$xWuyS8goWe-C>1S3)=~Sy;*~_r{@@P)Vx_jSx~=_I=_-7Nz_%e z4@9l&pm+X<5NEn<%(IE!VB4n$`=;7Y4xU=|Bm(cOY#EGH{4l^ab%E1n%-=UQ6Lx(} z*FD3UbdAx>jFhk-n%YHbP^iX-(J&YasMbmGjfAYC8Ud>8VjGxcwM%VCp=F*8Iwh2-0&<(cu zbK6KzM~hg6esxz<1J-nk;aO1=4Cg9KTx!1YfGhu_J)>N(WzFBwXYixaAeS}lc!C+L zrn+P#=bk}Ze1D^c6k+Mc4fycZzu(cY7S_hbWOpcNqUy~Ds4!e#-$gJvp3;fu*b?>} z0S>IM;qD6H)~e?6GFq^`Oy$6^HwH*DVjV+NhxWET6j!K?HOT5a2C>nOBfkeRjOwCc zRy^ULw8;`4D2z&eJjm@UZIIYwgCWj1W-1Tuz1|pO{x|beLbA2vO0abd<1ou)___{| zn=v*R4(W(>`$sAeZ#3wsAcC~7CpTGaFeF+wXq=jD))Jceso+gI{(tV5CV%<+>8am{r8#c9 z{`t?Br}wy1dzEdcOO3d{?{LOKLA}PfQSG9 delta 70195 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

`)qbxR{jucRma$Rxue3OZw8CjE4IM z4NrPZAN;_pet#OqW5KRxYhffD1E~-xL)smY*gCqsS zCZqkl`Nr86WJ z!@)5Sl!1d|NjHbc8o_}}rQ|d`ggtRGa3rKNAn-H!V&P8?!$>2z6cI(W@;5OIuk4gn11swLqT8=4grh^xg7>X2n@mjzTDbtQo~pX z3<5NWGy&YPmElPIh5*vMIgtO^VH^?;0e*npNN>Myoob{EL=)hU2q?n=T?#FW`i;MS zYZd|$2hhmx-uwmyfCe!sI3xzjZ~*B-%L2ZJbQ%YhCL|8L&cIAQI^h41Ne6lfqJwZK z8F2VbmK_DPA~+NRy8I|41UrHrVIloQp*Lar-+BoJwIVnGMj<>4j1pwVQ8?0Z_0|t-|+HFQMVkM$j^7a%B!I-*0jLy{rI6A)uW>Bmam0{~ZX%K`0P!$BB;4t9(6`d@=@BbJh9)jv|SU3b% z02;(L1B?S5<3Erl4vX9b^?&m_774)>V6C95g$2t>K5i_A^cuic-Uf>gVOcDhVfo4L zSnNMWg8R)9e|Q^*4oMocnoA0Ng4;n29gmAWh4MD$)^=yP&m1&0yI)Ahb;{Q8lKpg1KV>L zBCEh91mR^~j}5GQ$;0Dgt69Ka`# zt|P&CewO`vjQ>C~cq9@c5P&Tq`*lErm`gyz6Bof45C0E^{kDd9BpRYcz$8J08PG69 zg?y6QCf9a&BoqYz8tEabtqci(7r6-oun@Al$0GqFLCWGcMf&e)0{%A0yraM#h`cbE zCCI#^WFW`@5AYUIrhvo>kiG*L3F$j9mgHIaG~vN& zLi>(}xaaTyvXQGEK!e}|K!Yf6Jg{_I1|khm4In}sQ+VKtfv6dc1KDK)jSC$&_;dy` zZlD~u&`94jk}XRt8{ZI9i5Wp#vHcNg!hr z6dVJ{JGATvLKzEdY1|ST1!(bB0r&HxM#1pup2B3kb$;d_r9D(E~q9`;trY2W3Xe2mNATLWAG8v741{h_lNWj4{ zC&aG-KIwq$%E1yt9Nd70fh-9cI1R{`2`oBkU-EPQ|4bLjM?ls?G}thcuO}J|j(jA* z@{t2%6aW-t&TKfK0r>F0HV8j&HUKON@lujpiV!#g{Hx@fZQ#!bmiT`aZq^6RM4&V% z&tM3^Op>n?aB7hwIv^y#ERr_@P~)GGY&Hy*4w4V*b|W3s|C}w-{QqzIG2nOsQWzWp zLplhg6VfmaupD^@fuDrDK5#nw_cHxle_%Y35EYD-0UDgFLeh~fIU|81TXL5a3JabV zfiw*CJUMS+0SJYxCs6ZbMgo{b6mTDqcLoSNxp;z&CB$w3Ul9btVlkUrOECWbO+RqL zK{On2!a*=B*ylh12o?tr7p}elP?Gw0w9Onkp>FmAX0(@hgalG2+pn`x&mwhHlf*H z_>XibMJ}`8tO;T`fGZNRGa#KckxL2KdP3_%!ne*0n17OSBKKkg8aVnQpK1Vypft$t z50r&?cmWMdz7qyC9E$u90T3bQ!(f*$1JUW=3FKqjOt zutX4vz{p_mi6 z$l)fSA;|9v02(+jC1+MF3IfT2IUpBB0w@d=E~GHTnNGS1M(#%iw10FE$Q`6Uz`>AN z1qKU2cDM;D1OXuuAHaCdBBgabJV+lXfPwMrN~^isd+>vaB>h*(;1!R;~D7#VB4EpU0r{r@?@)l0h5K33j7Kkr?l0Lpc;52U8L AFaQ7m diff --git a/doc/CFDEMcoupling_Manual.txt b/doc/CFDEMcoupling_Manual.txt index 655f96f..65da209 100644 --- a/doc/CFDEMcoupling_Manual.txt +++ b/doc/CFDEMcoupling_Manual.txt @@ -12,7 +12,7 @@ CFDEMcoupling Documentation :h2,c :line 1. Contents :h3 -The CFDEMcoupling documentation is organized into the following sections. If you find errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so we can improve the CFDEMcoupling documentation. +The CFDEMcoupling documentation is organized into the following sections. If you find any errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so the CFDEMcoupling documentation can be improved. 1.1 "About CFDEMcoupling"_#1_1 1.2 "Installation"_#1_2 @@ -45,11 +45,11 @@ The file structure: :ule Details on installation are given on the "CFDEMproject WWW Site"_lws . -The functionality of this CFD-DEM framwork is described via "tutorial cases"_#_1_2 showing how to use different solvers and models. +The functionality of this CFD-DEM framework is described via "tutorial cases"_#_1_2 showing how to use different solvers and models. CFDEMcoupling stands for Computational Fluid Dynamics (CFD) -Discrete Element Method (DEM) coupling. -CFDEMcoupling is an open-source code, distributed freely under the terms of the GNU Public License (GPL). +CFDEMcoupling is an open-source code, distributed freely under the terms of the GNU Public License (GPL). Core development of CFDEMcoupling is done by Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012 @@ -71,7 +71,7 @@ In order to get the latest code version, please use the git repository at http:/ [General:] -Each solver of the CFDEMcoupling is comes with at least one tutorial example, showing its functionality and correct useage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization). +Each solver of the CFDEMcoupling comes with at least one tutorial example, showing its functionality and correct usage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization). [Location:] @@ -89,7 +89,7 @@ Provided that the installation is correct, the tutorials can be run via "Allrun. The main settings of a simulation are done via dictionaries: -The DEM setup of each case is defined by a "LIGGGHTS"_lig input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the "LIGGGHTS"_lig setup, please have a look in the "LIGGGHTS"_lig manual. +The DEM setup of each case is defined by a "LIGGGHTS"_lig input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the "LIGGGHTS"_lig setup, please have a look at the "LIGGGHTS"_lig manual. Standard CFD settings are defined in $caseDir/CFD/constant (e.g. transportProperties, RASproperties, etc.) and $caseDir/CFD/system (e.g. fvSchemes, controlDict). You can find more information on that in "OpenFOAM(R)(*)"_of documentations (www.openFoam.com)(*). @@ -133,16 +133,16 @@ Reasonable example settings for the "couplingProperties" dictionary are given in modelType :pre -"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their appliccability", JFM. "A" requres the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". +"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". couplingInterval :pre -The coupling interval determines the time passing between two CFD-DEM data exchanges. +The coupling interval determines the time passing between two CFD-DEM data exchanges. A useful procedure would be: -1) Set the DEM TS in the in.xxx according to the needs of the pure DEM problem. +1) Set the DEM timestep in the in.xxx file according to the needs of the pure DEM problem. 2) Set the "couplingInterval", which refers to the DEM timesteps. Depending on the problem you will need to have a close (small couplingInterval) or loose coupling. -3) Choose the CFD timestep in the controlDict. it must be equal or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!". +3) Choose the CFD timestep in the controlDict. It must be equal to or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!". Example: DEMts=0.00001s, couplingInterval=10 exchange data (=couple) will happen every 0.0001s. diff --git a/doc/IOModel_basicIO.html b/doc/IOModel_basicIO.html index 3d8ff29..8152c9e 100644 --- a/doc/IOModel_basicIO.html +++ b/doc/IOModel_basicIO.html @@ -21,7 +21,7 @@

Description:

-

The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the ceyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation. +

The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the keyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation.

Restrictions: None.

diff --git a/doc/IOModel_basicIO.txt b/doc/IOModel_basicIO.txt index d73c516..98daa37 100644 --- a/doc/IOModel_basicIO.txt +++ b/doc/IOModel_basicIO.txt @@ -19,7 +19,7 @@ IOModel "basicIO"; :pre [Description:] -The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the ceyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation. +The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the keyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation. [Restrictions:] None. diff --git a/doc/IOModel_trackIO.html b/doc/IOModel_trackIO.html index 0d91e41..28d1e86 100644 --- a/doc/IOModel_trackIO.html +++ b/doc/IOModel_trackIO.html @@ -21,7 +21,7 @@

Description:

-

The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks generats tracks of the particles and writes them to a vtk file. +

The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks utility generates tracks of the particles and writes them to a vtk file.

Restrictions: None.

diff --git a/doc/IOModel_trackIO.txt b/doc/IOModel_trackIO.txt index 7aa03e7..dff7906 100644 --- a/doc/IOModel_trackIO.txt +++ b/doc/IOModel_trackIO.txt @@ -19,7 +19,7 @@ IOModel "trackIO"; :pre [Description:] -The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks generats tracks of the particles and writes them to a vtk file. +The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks utility generates tracks of the particles and writes them to a vtk file. [Restrictions:] None. diff --git a/doc/averagingModel.html b/doc/averagingModel.html index ecc7def..5237b6d 100644 --- a/doc/averagingModel.html +++ b/doc/averagingModel.html @@ -22,7 +22,7 @@
averagingModel dense;
 averagingModel dilute; 
 
-

Note: This examples list might not be complete - please look for other averagin models (averagingModel_XY) in this documentation. +

Note: This examples list might not be complete - please look for other averaging models (averagingModel_XY) in this documentation.

Description:

diff --git a/doc/averagingModel.txt b/doc/averagingModel.txt index 6ec694a..36c327e 100644 --- a/doc/averagingModel.txt +++ b/doc/averagingModel.txt @@ -20,7 +20,7 @@ model = name of averaging model to be applied :ul averagingModel dense; averagingModel dilute; :pre -Note: This examples list might not be complete - please look for other averagin models (averagingModel_XY) in this documentation. +Note: This examples list might not be complete - please look for other averaging models (averagingModel_XY) in this documentation. [Description:] diff --git a/doc/cfdemSolverIB.html b/doc/cfdemSolverIB.html index c1850e5..556d244 100644 --- a/doc/cfdemSolverIB.html +++ b/doc/cfdemSolverIB.html @@ -14,7 +14,7 @@

"cfdemSolverIB" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework, for calculating the dynamics between immersed bodies and the surrounding fluid. Being an implementation of an immersed boundary method it allows tackling problems where the body diameter exceeds the maximal size of a fluid cell. Using the toolbox of OpenFOAM(R)(*) the governing equations of the fluid are computed and the corrections of velocity and pressure field with respect to the body-movement information, gained from LIGGGHTS, are incorporated.

-

Code of this solver contributions by Alice Hager, JKU. +

Code of this solver contributions by Alice Hager, JKU.

Algorithm:

diff --git a/doc/cfdemSolverIB.txt b/doc/cfdemSolverIB.txt index a3ed4d8..4bb7c2a 100644 --- a/doc/cfdemSolverIB.txt +++ b/doc/cfdemSolverIB.txt @@ -12,7 +12,7 @@ cfdemSolverIB command :h3 "cfdemSolverIB" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework, for calculating the dynamics between immersed bodies and the surrounding fluid. Being an implementation of an immersed boundary method it allows tackling problems where the body diameter exceeds the maximal size of a fluid cell. Using the toolbox of OpenFOAM(R)(*) the governing equations of the fluid are computed and the corrections of velocity and pressure field with respect to the body-movement information, gained from LIGGGHTS, are incorporated. -Code of this solver contributions by Alice Hager, JKU. +Code of this solver contributions by Alice Hager, JKU. [Algorithm:] diff --git a/doc/cfdemSolverPiso.html b/doc/cfdemSolverPiso.html index ebba4c7..dda4059 100644 --- a/doc/cfdemSolverPiso.html +++ b/doc/cfdemSolverPiso.html @@ -11,7 +11,7 @@

Description:

-

"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS. +

"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying the PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS.

see:

diff --git a/doc/cfdemSolverPiso.txt b/doc/cfdemSolverPiso.txt index 551adae..3885699 100644 --- a/doc/cfdemSolverPiso.txt +++ b/doc/cfdemSolverPiso.txt @@ -9,7 +9,7 @@ cfdemSolverPiso command :h3 [Description:] -"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS. +"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying the PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS. see: diff --git a/doc/clockModel_standardClock.html b/doc/clockModel_standardClock.html index b26c6c0..57ec9ee 100644 --- a/doc/clockModel_standardClock.html +++ b/doc/clockModel_standardClock.html @@ -22,7 +22,7 @@

Description:

The "standardClock" model is a basic clockModel model which measures the run time between every ".start(int arrayPos,string name)" and ".stop(string name)" statement placed in the code. If a ".start(name)" is called more than once (e.g. in a loop) the accumulated times are calculated. After the simulation has finished, the data is stored in $caseDir/CFD/clockData/$startTime/*.txt . -Since the measurements are stored in an array, it is necessary to put a variable arrayPos (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If arrayPos is out of bounds, the array size will be doubled. The stop command does not need arrayPos, since the class remembers the positions. The string name is for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. +Since the measurements are stored in an array, it is necessary to put a variable arrayPos (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If arrayPos is out of bounds, the array size will be doubled. The stop command does not need arrayPos, since the class remembers the positions. The string name is intended for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. After the case ran you may use the matPlot.py script located in $CFDEM_UT_DIR/vizClock/ to produce a graphical output of your measurements. The usage is like 'python < matPlot.py' and you have to be in the directory of the desired time step, where there is a file called "timeEvalFull.txt", which contains averaged and maximum data with respect to the number of processes.

Restrictions: none. diff --git a/doc/clockModel_standardClock.txt b/doc/clockModel_standardClock.txt index 117352d..30d675c 100644 --- a/doc/clockModel_standardClock.txt +++ b/doc/clockModel_standardClock.txt @@ -20,7 +20,7 @@ clockModel standardClock; :pre [Description:] The "standardClock" model is a basic clockModel model which measures the run time between every ".start(int arrayPos,string name)" and ".stop(string name)" statement placed in the code. If a ".start(name)" is called more than once (e.g. in a loop) the accumulated times are calculated. After the simulation has finished, the data is stored in $caseDir/CFD/clockData/$startTime/*.txt . -Since the measurements are stored in an array, it is necessary to put a variable {arrayPos} (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If {arrayPos} is out of bounds, the array size will be doubled. The stop command does not need {arrayPos}, since the class remembers the positions. The string name is for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. +Since the measurements are stored in an array, it is necessary to put a variable {arrayPos} (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If {arrayPos} is out of bounds, the array size will be doubled. The stop command does not need {arrayPos}, since the class remembers the positions. The string name is intended for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. After the case ran you may use the matPlot.py script located in $CFDEM_UT_DIR/vizClock/ to produce a graphical output of your measurements. The usage is like 'python < matPlot.py' and you have to be in the directory of the desired time step, where there is a file called "timeEvalFull.txt", which contains averaged and maximum data with respect to the number of processes. [Restrictions:] none. diff --git a/doc/dataExchangeModel_oneWayVTK.html b/doc/dataExchangeModel_oneWayVTK.html index 800af8e..def2619 100644 --- a/doc/dataExchangeModel_oneWayVTK.html +++ b/doc/dataExchangeModel_oneWayVTK.html @@ -28,7 +28,7 @@ oneWayVTKProps

  • filename = filename of the VTK file series -
  • number = maximum nuber of particles in DEM simulation +
  • number = maximum number of particles in DEM simulation diff --git a/doc/dataExchangeModel_oneWayVTK.txt b/doc/dataExchangeModel_oneWayVTK.txt index f3e0153..3cf6642 100644 --- a/doc/dataExchangeModel_oneWayVTK.txt +++ b/doc/dataExchangeModel_oneWayVTK.txt @@ -23,7 +23,7 @@ oneWayVTKProps {timeStep} = time step size of stored DEM data :ulb,l {path} = path to the VTK data files relative do simulation directory :l {filename} = filename of the VTK file series :l -{number} = maximum nuber of particles in DEM simulation :l +{number} = maximum number of particles in DEM simulation :l :ule [Examples:] diff --git a/doc/dataExchangeModel_twoWayFiles.html b/doc/dataExchangeModel_twoWayFiles.html index 30a7233..46d2d89 100644 --- a/doc/dataExchangeModel_twoWayFiles.html +++ b/doc/dataExchangeModel_twoWayFiles.html @@ -22,7 +22,7 @@ twoWayFilesProps
    • filename = filename of the VTK file series -
    • number = maximum nuber of particles in DEM simulation +
    • number = maximum number of particles in DEM simulation
    @@ -41,7 +41,7 @@ twoWayFilesProps

    Restrictions:

    -

    Developed only for two processors, one for DEM and on for CFD run. +

    Developed only for two processors, one for DEM and one for CFD run.

    Related commands:

    diff --git a/doc/dataExchangeModel_twoWayFiles.txt b/doc/dataExchangeModel_twoWayFiles.txt index 20c4d8d..cd31b16 100644 --- a/doc/dataExchangeModel_twoWayFiles.txt +++ b/doc/dataExchangeModel_twoWayFiles.txt @@ -19,7 +19,7 @@ twoWayFilesProps \}; :pre {filename} = filename of the VTK file series :ulb,l -{number} = maximum nuber of particles in DEM simulation :l +{number} = maximum number of particles in DEM simulation :l :ule [Examples:] @@ -37,7 +37,7 @@ The data exchange model performs the data exchange between the DEM code and the [Restrictions:] -Developed only for two processors, one for DEM and on for CFD run. +Developed only for two processors, one for DEM and one for CFD run. [Related commands:] diff --git a/doc/forceModel_ArchimedesIB.html b/doc/forceModel_ArchimedesIB.html index df087d3..0146856 100644 --- a/doc/forceModel_ArchimedesIB.html +++ b/doc/forceModel_ArchimedesIB.html @@ -47,7 +47,7 @@ ArchimedesIBProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.

    Restrictions:

    diff --git a/doc/forceModel_ArchimedesIB.txt b/doc/forceModel_ArchimedesIB.txt index 4b26bb3..b9aca33 100644 --- a/doc/forceModel_ArchimedesIB.txt +++ b/doc/forceModel_ArchimedesIB.txt @@ -42,7 +42,7 @@ ArchimedesIBProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method. [Restrictions:] diff --git a/doc/forceModel_DiFeliceDrag.html b/doc/forceModel_DiFeliceDrag.html index 1fe8dac..9b02164 100644 --- a/doc/forceModel_DiFeliceDrag.html +++ b/doc/forceModel_DiFeliceDrag.html @@ -28,7 +28,7 @@ DiFeliceDragProps
  • density = name of the finite volume gravity field -
  • interpolation = flag to use interolate interpolated voidfraction and velocity values (normally off) +
  • interpolation = flag to use interpolated voidfraction and velocity values (normally off) diff --git a/doc/forceModel_DiFeliceDrag.txt b/doc/forceModel_DiFeliceDrag.txt index b2e0c85..7180d17 100644 --- a/doc/forceModel_DiFeliceDrag.txt +++ b/doc/forceModel_DiFeliceDrag.txt @@ -24,7 +24,7 @@ DiFeliceDragProps {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l -{interpolation} = flag to use interolate interpolated voidfraction and velocity values (normally off) :l +{interpolation} = flag to use interpolated voidfraction and velocity values (normally off) :l :ule [Examples:] diff --git a/doc/forceModel_GidaspowDrag.html b/doc/forceModel_GidaspowDrag.html index 197227a..0523427 100644 --- a/doc/forceModel_GidaspowDrag.html +++ b/doc/forceModel_GidaspowDrag.html @@ -21,15 +21,23 @@ GidaspowDragProps { velFieldName "U"; densityFieldName "density"; + voidfractionFieldName "voidfraction"; phi "scalar"; + interpolation; + implDEM; };
    • U = name of the finite volume fluid velocity field
    • density = name of the finite volume gravity field +
    • voidfraction = name of the finite volume voidfraction field +
    • phi = drag correction factor (in doubt 1) +
    • interpolation = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values + +implDEM = (optional, normally off) flag to use implicit formulation of drag on DEM side:l

    Examples: @@ -42,11 +50,12 @@ GidaspowDragProps { velFieldName "U"; densityFieldName "rho"; + voidfractionFieldName "voidfraction"; }

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Egrun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments" ,ChemEngScience). +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Ergun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments", ChemEngScience).

    Restrictions:

    diff --git a/doc/forceModel_GidaspowDrag.txt b/doc/forceModel_GidaspowDrag.txt index 9a5af51..8357170 100644 --- a/doc/forceModel_GidaspowDrag.txt +++ b/doc/forceModel_GidaspowDrag.txt @@ -19,12 +19,18 @@ GidaspowDragProps \{ velFieldName "U"; densityFieldName "density"; + voidfractionFieldName "voidfraction"; phi "scalar"; + interpolation; + implDEM; \}; :pre {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l +{voidfraction} = name of the finite volume voidfraction field :l {phi} = drag correction factor (in doubt 1) :l +{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l +{implDEM} = (optional, normally off) flag to use implicit formulation of drag on DEM side:l :ule [Examples:] @@ -37,11 +43,12 @@ GidaspowDragProps \{ velFieldName "U"; densityFieldName "rho"; + voidfractionFieldName "voidfraction"; \} :pre [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Egrun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments" ,ChemEngScience). +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Ergun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments", ChemEngScience). [Restrictions:] diff --git a/doc/forceModel_KochHillDrag.html b/doc/forceModel_KochHillDrag.html index 94857f5..db34b8a 100644 --- a/doc/forceModel_KochHillDrag.html +++ b/doc/forceModel_KochHillDrag.html @@ -23,6 +23,7 @@ KochHillDragProps densityFieldName "density"; voidfractionFieldName "voidfraction"; interpolation; + implDEM; };
    • U = name of the finite volume fluid velocity field @@ -31,10 +32,9 @@ KochHillDragProps
    • voidfraction = name of the finite volume voidfraction field -
    • interpolation = flag to use interpolated voidfraction and fluid velocity values (normally off) - -
    • implDEM = flag to use implicit formulation of drag on DEM side (normally off) +
    • interpolation = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values +implDEM = (optional, normally off) flag to use implicit formulation of drag on DEM side:l

    Examples: @@ -52,7 +52,7 @@ KochHillDragProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds" ,ChemEngScience). +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds", ChemEngScience).

    Restrictions:

    diff --git a/doc/forceModel_KochHillDrag.txt b/doc/forceModel_KochHillDrag.txt index 565c820..5a783fe 100644 --- a/doc/forceModel_KochHillDrag.txt +++ b/doc/forceModel_KochHillDrag.txt @@ -21,13 +21,14 @@ KochHillDragProps densityFieldName "density"; voidfractionFieldName "voidfraction"; interpolation; + implDEM; \}; :pre {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l {voidfraction} = name of the finite volume voidfraction field :l -{interpolation} = flag to use interpolated voidfraction and fluid velocity values (normally off) :l -{implDEM} = flag to use implicit formulation of drag on DEM side (normally off) :l +{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l +{implDEM} = (optional, normally off) flag to use implicit formulation of drag on DEM side:l :ule [Examples:] @@ -45,7 +46,7 @@ KochHillDragProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds" ,ChemEngScience). +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds", ChemEngScience). [Restrictions:] diff --git a/doc/forceModel_LaEuScalarTemp.html b/doc/forceModel_LaEuScalarTemp.html index 03f3cd3..c0075c9 100644 --- a/doc/forceModel_LaEuScalarTemp.html +++ b/doc/forceModel_LaEuScalarTemp.html @@ -28,6 +28,8 @@ LaEuScalarTempProps lambda value; Cp value1; densityFieldName "density"; + interpolation; + verbose; };
    • U = name of the finite volume fluid velocity field @@ -48,6 +50,10 @@ LaEuScalarTempProps
    • density = name of the finite volume fluid density field +
    • interpolation = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values + +
    • verbose = (normally off) for verbose run +

    Examples: @@ -71,7 +77,7 @@ LaEuScalarTempProps

    Description:

    -

    This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112 +

    This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112

    Restrictions:

    diff --git a/doc/forceModel_LaEuScalarTemp.txt b/doc/forceModel_LaEuScalarTemp.txt index 6c0daac..a2b8690 100644 --- a/doc/forceModel_LaEuScalarTemp.txt +++ b/doc/forceModel_LaEuScalarTemp.txt @@ -26,6 +26,8 @@ LaEuScalarTempProps lambda value; Cp value1; densityFieldName "density"; + interpolation; + verbose; \}; :pre {U} = name of the finite volume fluid velocity field :ulb,l @@ -37,6 +39,8 @@ LaEuScalarTempProps {value} = fluid thermal conductivity \[W/(m*K)\] :l {value1} = fluid specific heat capacity \[W*s/(kg*K)\] :l {density} = name of the finite volume fluid density field :l +{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l +{verbose} = (normally off) for verbose run :l :ule [Examples:] @@ -60,7 +64,7 @@ LaEuScalarTempProps [Description:] -This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112 +This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112 [Restrictions:] diff --git a/doc/forceModel_ShirgaonkarIB.html b/doc/forceModel_ShirgaonkarIB.html index 5956cc2..5e198cf 100644 --- a/doc/forceModel_ShirgaonkarIB.html +++ b/doc/forceModel_ShirgaonkarIB.html @@ -47,7 +47,7 @@ ShirgaonkarIBProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.

    References:

    diff --git a/doc/forceModel_ShirgaonkarIB.txt b/doc/forceModel_ShirgaonkarIB.txt index f9a6223..9f488cf 100644 --- a/doc/forceModel_ShirgaonkarIB.txt +++ b/doc/forceModel_ShirgaonkarIB.txt @@ -42,7 +42,7 @@ ShirgaonkarIBProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method. [References:] diff --git a/doc/forceModel_gradPForce.html b/doc/forceModel_gradPForce.html index 410cd20..f555313 100644 --- a/doc/forceModel_gradPForce.html +++ b/doc/forceModel_gradPForce.html @@ -31,7 +31,7 @@ gradPForceProps
  • U = name of the finite volume fluid velocity field -
  • interpolation = flag to use interolate interpolated pressure values (normally off) +
  • interpolation = flag to use interpolated pressure values (normally off) diff --git a/doc/forceModel_gradPForce.txt b/doc/forceModel_gradPForce.txt index c1d2bdf..7a0801d 100644 --- a/doc/forceModel_gradPForce.txt +++ b/doc/forceModel_gradPForce.txt @@ -26,7 +26,7 @@ gradPForceProps {pressure} = name of the finite volume fluid pressure field :ulb,l {density} = name of the finite volume gravity field :l {U} = name of the finite volume fluid velocity field :l -{interpolation} = flag to use interolate interpolated pressure values (normally off) :l +{interpolation} = flag to use interpolated pressure values (normally off) :l :ule [Examples:] diff --git a/doc/forceModel_particleCellVolume.html b/doc/forceModel_particleCellVolume.html index d906882..c34aa71 100644 --- a/doc/forceModel_particleCellVolume.html +++ b/doc/forceModel_particleCellVolume.html @@ -21,7 +21,7 @@ particleCellVolumeProps { upperThreshold value; lowerThreshold value2; - verbous; + verbose; };
  • value = only cells with a field value (magnitude) lower than this upper threshold are considered @@ -40,13 +40,13 @@ particleCellVolumeProps { upperThreshold 0.999; lowerThreshold 0; - verbous; + verbose; }

    Description:

    This "forceModel" does not influence the particles or the simulation - it is a postprocessing tool! The total volume of the particles as they are represented on the CFD mesh is calculated. Further the total volume of the cells particles are in is calculated. -At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can be can the be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given. +At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can then be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given.

    Restrictions:

    diff --git a/doc/forceModel_particleCellVolume.txt b/doc/forceModel_particleCellVolume.txt index 21bc23d..93b1dbf 100644 --- a/doc/forceModel_particleCellVolume.txt +++ b/doc/forceModel_particleCellVolume.txt @@ -19,7 +19,7 @@ particleCellVolumeProps \{ upperThreshold value; lowerThreshold value2; - verbous; + verbose; \}; :pre {value} = only cells with a field value (magnitude) lower than this upper threshold are considered :l @@ -36,13 +36,13 @@ particleCellVolumeProps \{ upperThreshold 0.999; lowerThreshold 0; - verbous; + verbose; \} :pre [Description:] This "forceModel" does not influence the particles or the simulation - it is a postprocessing tool! The total volume of the particles as they are represented on the CFD mesh is calculated. Further the total volume of the cells particles are in is calculated. -At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can be can the be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given. +At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can then be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given. [Restrictions:] diff --git a/doc/forceModel_viscForce.html b/doc/forceModel_viscForce.html index 73b6ad9..ebd76ec 100644 --- a/doc/forceModel_viscForce.html +++ b/doc/forceModel_viscForce.html @@ -28,7 +28,7 @@ viscForceProps
  • density = name of the finite volume gravity field -
  • interpolation = flag to use interolate interpolated stress values (normally off) +
  • interpolation = flag to use interpolated stress values (normally off) @@ -46,7 +46,7 @@ viscForceProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability" ,JFM). +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM).

    Restrictions:

    diff --git a/doc/forceModel_viscForce.txt b/doc/forceModel_viscForce.txt index a7986d1..8577846 100644 --- a/doc/forceModel_viscForce.txt +++ b/doc/forceModel_viscForce.txt @@ -24,7 +24,7 @@ viscForceProps {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l -{interpolation} = flag to use interolate interpolated stress values (normally off) :l +{interpolation} = flag to use interpolated stress values (normally off) :l :ule [Examples:] @@ -41,7 +41,7 @@ viscForceProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability" ,JFM). +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM). [Restrictions:] diff --git a/doc/githubAccess_public.html b/doc/githubAccess_public.html index 2ca4118..b27e709 100644 --- a/doc/githubAccess_public.html +++ b/doc/githubAccess_public.html @@ -17,7 +17,7 @@

    Description:

    -

    This routine describes how to setup a github account and pull repositories of the CFDEM(R)project. +

    This routine describes how to set up a github account and pull repositories of the CFDEM(R)project. After setting some environment variables LIGGGHTS(R) and CFDEM(R)coupling can be compiled

    Procedure: @@ -81,7 +81,7 @@ git pull

    gedit ~/.bashrc & 
     
    -

    add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively): +

    add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively):

    #================================================#
     #- source cfdem env vars
    @@ -107,7 +107,7 @@ export CFDEM_PIZZA_DIR=$HOME/LIGGGHTS/PIZZA/gran_pizza_17Aug10/src
     $CFDEM_SRC_DIR
     $CFDEM_LIGGGHTS_SRC_DIR 
     
    -

    should give "...: is a directory" otherwise something went wrong and the environment variables in ~/bashrc are not set correctly. +

    should give "...: is a directory" otherwise something went wrong and the environment variables in ~/.bashrc are not set correctly.

    To specify the paths of pizza, please check the settings in $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/bashrc.

    @@ -139,7 +139,7 @@ Changes in $CFDEM_TUT_DIR will be lost after every git stash!

    Additional Installations:

    -

    Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postporcessing tool "lpp" you need python-numpy package installed: +

    Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postprocessing tool "lpp" you need python-numpy package installed:

    sudo apt-get install python-numpy 
     
    @@ -149,9 +149,9 @@ Changes in $CFDEM_TUT_DIR will be lost after every git stash!
    git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/lpp mylpp 
     
    -

    Backward Compatibility: +

    Backwards Compatibility:

    -

    Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backward compatibility as long as it works with reasonable effort. +

    Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backwards compatibility as long as it works with reasonable effort.

    The supported OpenFOAM(R) and LIGGGHTS(R) versions are stated in: src/lagrangian/cfdemParticle/cfdTools/versionInfo.H @@ -162,7 +162,7 @@ src/lagrangian/cfdemParticle/etc/OFversion/OFversion.H

    Troubleshooting:

    - -

    This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This makes sure that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another. +

    This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This ensures that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another.

    -

    Restrictions: +

    Restrictions:

    Only for immersed boundary solvers!

    diff --git a/doc/locateModel_engineSearchIB.txt b/doc/locateModel_engineSearchIB.txt index 9adbdcc..08b66a1 100644 --- a/doc/locateModel_engineSearchIB.txt +++ b/doc/locateModel_engineSearchIB.txt @@ -50,9 +50,9 @@ treeSearch false; will execute some geometric (linear) search using the last treeSearch true; will use a recursive tree structure to find the cell. :l :ule -This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This makes sure that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another. +This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This ensures that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another. -[Restrictions:] +[Restrictions:] Only for immersed boundary solvers! diff --git a/doc/momCoupleModel.html b/doc/momCoupleModel.html index d40ba87..2acae6a 100644 --- a/doc/momCoupleModel.html +++ b/doc/momCoupleModel.html @@ -29,6 +29,10 @@

    Note: This examples list might not be complete - please look for other models (momCoupleModel_XY) in this documentation.

    +

    Forces can be coupled in an implicit way to the fluid solver (i.e., when solving the Navier-Stokes equations, the fluid velocity at the new time will be considered for the coupling force). This implicit coupling is typically done for the drag forces (look for "impForces()" in the implementation of the drag model). Implicit coupling is more stable (especially important for dense flows), but conflicts Newton's third law. Explicit forces are imposed on the flow solver in an explicit fashion (look for "expForces()" in the implementation of the drag model), which is less stable, but does not conflict Newton's third law. +

    +

    Note that the variable "imExSplitFactor" can be set in the couplingProperties in order to treat implicitly defined forces (in the implementation of the force model) as explicit ones. "imExSplitFactor 1.0;" is set by default, meaning that all implicit forces will be considered implicitly, whereas "imExSplitFactor 0.0;" would mean that implicitly defined forces will be treated in an explicit fashion. +

    Description:

    The momCoupleModel is the base class for momentum exchange between DEM and CFD simulation. diff --git a/doc/momCoupleModel.txt b/doc/momCoupleModel.txt index cfbddc1..05db72e 100644 --- a/doc/momCoupleModel.txt +++ b/doc/momCoupleModel.txt @@ -27,6 +27,10 @@ momCoupleModels Note: This examples list might not be complete - please look for other models (momCoupleModel_XY) in this documentation. +Forces can be coupled in an implicit way to the fluid solver (i.e., when solving the Navier-Stokes equations, the fluid velocity at the new time will be considered for the coupling force). This implicit coupling is typically done for the drag forces (look for "impForces()" in the implementation of the drag model). Implicit coupling is more stable (especially important for dense flows), but conflicts Newton's third law. Explicit forces are imposed on the flow solver in an explicit fashion (look for "expForces()" in the implementation of the drag model), which is less stable, but does not conflict Newton's third law. + +Note that the variable "imExSplitFactor" can be set in the couplingProperties in order to treat implicitly defined forces (in the implementation of the force model) as explicit ones. "imExSplitFactor 1.0;" is set by default, meaning that all implicit forces will be considered implicitly, whereas "imExSplitFactor 0.0;" would mean that implicitly defined forces will be treated in an explicit fashion. + [Description:] The momCoupleModel is the base class for momentum exchange between DEM and CFD simulation. diff --git a/doc/momCoupleModel_explicitCouple.html b/doc/momCoupleModel_explicitCouple.html index 521d7c9..ac6b5ba 100644 --- a/doc/momCoupleModel_explicitCouple.html +++ b/doc/momCoupleModel_explicitCouple.html @@ -41,7 +41,7 @@ explicitCoupleProps

    The explicitCouple-model is a momCoupleModel model providing an explicit momentum source term for the CFD solver.

    -

    Restrictions: +

    Restrictions:

    Only for solvers that include explicit momentum exchange.

    diff --git a/doc/momCoupleModel_explicitCouple.txt b/doc/momCoupleModel_explicitCouple.txt index 58cd282..bdcb465 100644 --- a/doc/momCoupleModel_explicitCouple.txt +++ b/doc/momCoupleModel_explicitCouple.txt @@ -38,7 +38,7 @@ explicitCoupleProps The explicitCouple-model is a momCoupleModel model providing an explicit momentum source term for the CFD solver. -[Restrictions:] +[Restrictions:] Only for solvers that include explicit momentum exchange. diff --git a/doc/momCoupleModel_implicitCouple.html b/doc/momCoupleModel_implicitCouple.html index ca70b2c..f2b1a00 100644 --- a/doc/momCoupleModel_implicitCouple.html +++ b/doc/momCoupleModel_implicitCouple.html @@ -31,7 +31,7 @@ implicitCoupleProps
  • voidfraction = name of the finite volume voidfraction field -number = min value for local particle volume fraction to calculate the exchange filed (default SMALL):l +number = minimum value for local particle volume fraction to calculate the exchange filed (default SMALL):l

    Examples: @@ -51,7 +51,7 @@ implicitCoupleProps

    The implicitCouple-model is a momCoupleModel model providing an implicit momentum source term for the CFD solver.

    -

    Restrictions: +

    Restrictions:

    Only for solvers that include implicit momentum exchange.

    diff --git a/doc/momCoupleModel_implicitCouple.txt b/doc/momCoupleModel_implicitCouple.txt index e46a35c..08433ee 100644 --- a/doc/momCoupleModel_implicitCouple.txt +++ b/doc/momCoupleModel_implicitCouple.txt @@ -26,7 +26,7 @@ implicitCoupleProps {U} = name of the finite volume fluid velocity field :ulb,l {Us} = name of the finite volume granular velocity field :l {voidfraction} = name of the finite volume voidfraction field :l -{number} = min value for local particle volume fraction to calculate the exchange filed (default SMALL):l +{number} = minimum value for local particle volume fraction to calculate the exchange filed (default SMALL):l :ule [Examples:] @@ -46,7 +46,7 @@ implicitCoupleProps The implicitCouple-model is a momCoupleModel model providing an implicit momentum source term for the CFD solver. -[Restrictions:] +[Restrictions:] Only for solvers that include implicit momentum exchange. diff --git a/doc/momCoupleModel_noCouple.html b/doc/momCoupleModel_noCouple.html index 38dd7c3..0ec1e60 100644 --- a/doc/momCoupleModel_noCouple.html +++ b/doc/momCoupleModel_noCouple.html @@ -27,9 +27,9 @@

    Description:

    -

    The noCouple-model is a dummy momCoupleModel model providing an no momentum source term for the CFD solver. +

    The noCouple-model is a dummy momCoupleModel model providing a no momentum source term for the CFD solver.

    -

    Restrictions: +

    Restrictions:

    Only for solvers that include no momentum exchange, e.g. immersed boundary.

    diff --git a/doc/momCoupleModel_noCouple.txt b/doc/momCoupleModel_noCouple.txt index c608019..6972d30 100644 --- a/doc/momCoupleModel_noCouple.txt +++ b/doc/momCoupleModel_noCouple.txt @@ -26,9 +26,9 @@ momCoupleModels [Description:] -The noCouple-model is a dummy momCoupleModel model providing an no momentum source term for the CFD solver. +The noCouple-model is a dummy momCoupleModel model providing a no momentum source term for the CFD solver. -[Restrictions:] +[Restrictions:] Only for solvers that include no momentum exchange, e.g. immersed boundary. diff --git a/doc/probeModel.html b/doc/probeModel.html index 3871fe4..72309a3 100644 --- a/doc/probeModel.html +++ b/doc/probeModel.html @@ -31,7 +31,7 @@

    Description:

    -

    The probeModel feature allows one to implement various probing features in CFDEM. Currently, only the particleProbe model is implemented, that performs probing of particle forces. +

    The probeModel feature allows to implement various probing features in CFDEM. Currently, only the particleProbe model is implemented, that performs probing of particle forces.

    Restrictions:

    diff --git a/doc/probeModel.txt b/doc/probeModel.txt index 5e10acf..64826ed 100644 --- a/doc/probeModel.txt +++ b/doc/probeModel.txt @@ -29,7 +29,7 @@ Note: This examples list might not be complete - please check below for the list [Description:] -The probeModel feature allows one to implement various probing features in CFDEM. Currently, only the "particleProbe"_probeModel_particleProbe.html model is implemented, that performs probing of particle forces. +The probeModel feature allows to implement various probing features in CFDEM. Currently, only the "particleProbe"_probeModel_particleProbe.html model is implemented, that performs probing of particle forces. [Restrictions:] diff --git a/doc/smoothingModel_constDiffSmoothing.html b/doc/smoothingModel_constDiffSmoothing.html index faf3f45..cf5904a 100644 --- a/doc/smoothingModel_constDiffSmoothing.html +++ b/doc/smoothingModel_constDiffSmoothing.html @@ -39,15 +39,15 @@ constDiffSmoothingProps lowerLimit 0.1; upperLimit 1e10; smoothingLength 1500e-6; - smoothingLengthReferenceField 9000e-6; + smoothingLengthReferenceField 9000e-6; }

    Description:

    -

    The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothening the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit fource coupling algorithms. +

    The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothing the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit force coupling algorithms. Smoothing for reference fields is performed to "fill in" values in cells in which these reference fields are not specified. Values calculated in the cells (via Lagrangian-To-Euler mapping) are NOT changed! These reference fields are, e.g., the average particle velocity, which are not specified in all cells in case the flow is rather dilute.

    -

    Restrictions: This model is tested in a limited number of flow situations. +

    Restrictions: This model is tested in a limited number of flow situations.

    ATTENTION: In case a smoothing model is used in conjunction with "PimpleImEx" solvers, the fields "f" and "fSmooth" must be placed in the initial time directory! This is because zeroGradient boundary conditions for the fields "f" and "fSmooth" must be specified, otherwise the smoothing operation will give an Error.

    diff --git a/doc/smoothingModel_constDiffSmoothing.txt b/doc/smoothingModel_constDiffSmoothing.txt index b6dc6db..54f75cf 100644 --- a/doc/smoothingModel_constDiffSmoothing.txt +++ b/doc/smoothingModel_constDiffSmoothing.txt @@ -33,15 +33,15 @@ constDiffSmoothingProps lowerLimit 0.1; upperLimit 1e10; smoothingLength 1500e-6; - smoothingLengthReferenceField 9000e-6; + smoothingLengthReferenceField 9000e-6; \} :pre [Description:] -The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothening the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit fource coupling algorithms. +The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothing the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit force coupling algorithms. Smoothing for reference fields is performed to "fill in" values in cells in which these reference fields are not specified. Values calculated in the cells (via Lagrangian-To-Euler mapping) are NOT changed! These reference fields are, e.g., the average particle velocity, which are not specified in all cells in case the flow is rather dilute. -[Restrictions:] This model is tested in a limited number of flow situations. +[Restrictions:] This model is tested in a limited number of flow situations. ATTENTION: In case a smoothing model is used in conjunction with "PimpleImEx" solvers, the fields "f" and "fSmooth" must be placed in the initial time directory! This is because zeroGradient boundary conditions for the fields "f" and "fSmooth" must be specified, otherwise the smoothing operation will give an Error. diff --git a/doc/voidFractionModel_GaussVoidFraction.html b/doc/voidFractionModel_GaussVoidFraction.html index c976b46..2ad4fd9 100644 --- a/doc/voidFractionModel_GaussVoidFraction.html +++ b/doc/voidFractionModel_GaussVoidFraction.html @@ -18,17 +18,17 @@ GaussProps { maxCellsPerParticle number1; alphaMin number2; - scaleUpVol number3; - weight number4; + weight number3; + porosity number4; } -