MarkoRamius 4403f4e191 recurrence model: large, incomplete data bases
The standardRecModel class reads all fields of the data base at once. This
might create a problem in cases with a large number of snapshots and/or
a large mesh, as the machine's memory (RAM) would become a bottleneck.

Thus, the class gerhardsRecModel implements an incomplete data base, with
a user-defined number of slots M. In cases with a larger number of
snapshots on disk N, with N > M, the class will manage its data base
in a fashion similar to an operating system managing memory pages.

The class gerhardsRecModel implements a least-recently used (LRU)
algorithm, which vacates the least-used of the dataBase's M slots.
An integer list is used to track the slots' usage, each access to a
slot is logged, thus the least-used slot can be easily determined.

In order to fully utilize the LRU algorithm, the computation of the
recurrence matrix in sqrDiffNorm.C had to modified such, that three
nested for-loops are used, instead of two nested loops. Thus, a certain
number of additional, essentially no-op, loop iterations are expended
in order to accomodate the LRU algorithm. Keeping the two nested loops
would have reaped only part of LRU's potential gains.

In order to accomodate data base management in the classes derived
from the class recModel, some const specifiers had to be removed.
For informational purposes, a method has been added to the class.

The class gerhardsRecModel first checks the existence of all N
to-be-read fields, and then fills the data base with the first M
fields.

Further features included in this commit:

All elements of the recurrence model are initialized with the value of -1.0
Thus, some form of error checking is introduced, as negative values should not
remain within the matrix after computation has finished.

Skipping the 0 directory of the data base. This, might be useful when
using rStatAnalysis as post-processing tool.

The class multiIntervalPath was adapted to use OpenFOAM's
methods for parallel communication.

Reference:

  Modern Operating Systems
  Andrew S. Tannenbaum,
  Prentice Hall, 1992
2018-03-08 16:31:01 +11:00
2015-01-05 13:56:45 +01:00
2017-12-20 09:23:40 +01:00
2017-09-08 12:25:32 +02:00
2017-03-02 12:59:48 +01:00

/*---------------------------------------------------------------------------*\
    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-2015 DCS Computing GmbH, Linz
                                Copyright 2015-     JKU 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 provides models and solvers to realize coupled CFD-DEM simulations
    using LIGGGHTS and OpenFOAM.
    Note: this code is not part of OpenFOAM (see DISCLAIMER).
\*---------------------------------------------------------------------------*/


CFDEM(R) coupling provides an open source parallel coupled CFD-DEM framework 
combining the strengths of the LIGGGHTS(R) DEM code and the Open Source 
CFD package OpenFOAM(R)(*). The CFDEM(R)coupling toolbox allows to expand 
standard CFD solvers of OpenFOAM(R)(*) to include a coupling to the DEM 
code LIGGGHTS(R). 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 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 CFDEM(R)coupling
- "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.

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

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

Core development of CFDEM(R)coupling is done by 
Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012


/*---------------------------------------------------------------------------*\
(*) "OpenFOAM(R)" is a registered trade mark of OpenCFD Limited, a wholly owned subsidiary of the ESI Group.
This offering is not approved or endorsed by OpenCFD Limited, the producer of the OpenFOAM software and owner of the OPENFOAM® and OpenCFD® trade marks.
\*---------------------------------------------------------------------------*/
Description
This is an academic adaptation of the CFDEMcoupling software package, released by the Department of Particulate Flow Modelling at Johannes Kepler University in Linz, Austria http://www.jku.at/pfm
Readme GPL-3.0 79 MiB
Languages
C++ 92.2%
C 6.2%
Shell 1.1%
MATLAB 0.2%
Python 0.2%