OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | List of all members
olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR > Class Template Reference

PostProcessor for setting a constant density outlet. More...

#include <freeEnergyPostProcessor3D.h>

+ Inheritance diagram for olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >:
+ Collaboration diagram for olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >:

Public Member Functions

 FreeEnergyDensityOutletCoupling3D (int x0_, int x1_, int y0_, int y1_, int z0_, int z1_, T rho_, std::vector< BlockStructureD< 3 > * > partners_)
 
 FreeEnergyDensityOutletCoupling3D (T rho_, std::vector< BlockStructureD< 3 > * > partners_)
 
int extent () const override
 Extent of application area (0 for purely local operations)
 
int extent (int whichDirection) const override
 Extent of application area along a direction (0 or 1)
 
void process (BlockLattice< T, DESCRIPTOR > &blockLattice) override
 Execute post-processing step.
 
void processSubDomain (BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_) override
 Execute post-processing step on a sublattice.
 
- Public Member Functions inherited from olb::PostProcessor3D< T, DESCRIPTOR >
 PostProcessor3D ()
 
virtual ~PostProcessor3D ()
 
std::string & getName ()
 read and write access to name
 
std::string const & getName () const
 read only access to name
 
int getPriority () const
 read only access to priority
 

Additional Inherited Members

- Protected Attributes inherited from olb::PostProcessor3D< T, DESCRIPTOR >
int _priority
 

Detailed Description

template<typename T, typename DESCRIPTOR>
class olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >

PostProcessor for setting a constant density outlet.

This should be used before the bulk chemical potential post- processor because it depends upon the result of this.

Definition at line 133 of file freeEnergyPostProcessor3D.h.

Constructor & Destructor Documentation

◆ FreeEnergyDensityOutletCoupling3D() [1/2]

template<typename T , typename DESCRIPTOR >
olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >::FreeEnergyDensityOutletCoupling3D ( int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_,
T rho_,
std::vector< BlockStructureD< 3 > * > partners_ )
Parameters
[in]rho_- Gives the value of the constraint.
[in]partners_- Contains one partner lattice for two fluid components, or two lattices for three components.

Definition at line 444 of file freeEnergyPostProcessor3D.hh.

447 : x0(x0_), x1(x1_), y0(y0_), y1(y1_), z0(z0_), z1(z1_),
448 rho(rho_), partners(partners_)
449{
450 this->getName() = "FreeEnergyDensityOutletCoupling3D";
451}
std::string & getName()
read and write access to name

References olb::PostProcessor3D< T, DESCRIPTOR >::getName().

+ Here is the call graph for this function:

◆ FreeEnergyDensityOutletCoupling3D() [2/2]

template<typename T , typename DESCRIPTOR >
olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >::FreeEnergyDensityOutletCoupling3D ( T rho_,
std::vector< BlockStructureD< 3 > * > partners_ )
Parameters
[in]rho_- Gives the value of the constraint.
[in]partners_- Contains one partner lattice for two fluid components, or two lattices for three components.

Definition at line 454 of file freeEnergyPostProcessor3D.hh.

456 : x0(0), x1(0), y0(0), y1(0), z0(0), z1(0), rho(rho_), partners(partners_)
457{
458 this->getName() = "FreeEnergyDensityOutletCoupling3D";
459}

References olb::PostProcessor3D< T, DESCRIPTOR >::getName().

+ Here is the call graph for this function:

Member Function Documentation

◆ extent() [1/2]

template<typename T , typename DESCRIPTOR >
int olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >::extent ( ) const
inlineoverridevirtual

Extent of application area (0 for purely local operations)

Implements olb::PostProcessor3D< T, DESCRIPTOR >.

Definition at line 142 of file freeEnergyPostProcessor3D.h.

143 {
144 return 0;
145 }

◆ extent() [2/2]

template<typename T , typename DESCRIPTOR >
int olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >::extent ( int direction) const
inlineoverridevirtual

Extent of application area along a direction (0 or 1)

Implements olb::PostProcessor3D< T, DESCRIPTOR >.

Definition at line 146 of file freeEnergyPostProcessor3D.h.

147 {
148 return 0;
149 }

◆ process()

template<typename T , typename DESCRIPTOR >
void olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >::process ( BlockLattice< T, DESCRIPTOR > & blockLattice)
overridevirtual

Execute post-processing step.

Implements olb::PostProcessor3D< T, DESCRIPTOR >.

Definition at line 499 of file freeEnergyPostProcessor3D.hh.

501{
502 processSubDomain(blockLattice, x0, x1, y0, y1, z0, z1);
503}
void processSubDomain(BlockLattice< T, DESCRIPTOR > &blockLattice, int x0_, int x1_, int y0_, int y1_, int z0_, int z1_) override
Execute post-processing step on a sublattice.

◆ processSubDomain()

template<typename T , typename DESCRIPTOR >
void olb::FreeEnergyDensityOutletCoupling3D< T, DESCRIPTOR >::processSubDomain ( BlockLattice< T, DESCRIPTOR > & blockLattice,
int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_ )
overridevirtual

Execute post-processing step on a sublattice.

Implements olb::PostProcessor3D< T, DESCRIPTOR >.

Definition at line 462 of file freeEnergyPostProcessor3D.hh.

465{
466 // If partners.size() == 1: two fluid components
467 // If partners.size() == 2: three fluid components
468 BlockLattice<T,DESCRIPTOR> *partnerLattice1 = static_cast<BlockLattice<T,DESCRIPTOR> *>(partners[0]);
469 BlockLattice<T,DESCRIPTOR> *partnerLattice2 = 0;
470 if (partners.size() > 1) {
471 partnerLattice2 = static_cast<BlockLattice<T,DESCRIPTOR> *>(partners[1]);
472 }
473
474 int newX0, newX1, newY0, newY1, newZ0, newZ1;
475 if ( util::intersect ( x0, x1, y0, y1, z0, z1,
476 x0_, x1_, y0_, y1_, z0_, z1_,
477 newX0, newX1, newY0, newY1, newZ0, newZ1 ) ) {
478 for (int iX=newX0; iX<=newX1; ++iX) {
479 for (int iY=newY0; iY<=newY1; ++iY) {
480 for (int iZ=newZ0; iZ<=newZ1; ++iZ) {
481
482 T rho0, phi, psi;
483 rho0 = blockLattice.get(iX,iY,iZ).computeRho();
484 phi = partnerLattice1->get(iX,iY,iZ).computeRho();
485 blockLattice.get(iX,iY,iZ).defineRho(rho);
486 partnerLattice1->get(iX,iY,iZ).defineRho(phi * rho / rho0);
487 if (partners.size() > 1) {
488 psi = partnerLattice2->get(iX,iY,iZ).computeRho();
489 partnerLattice2->get(iX,iY,iZ).defineRho(psi * rho / rho0);
490 }
491
492 }
493 }
494 }
495 }
496}
bool intersect(int x0, int x1, int y0, int y1, int x0_, int x1_, int y0_, int y1_, int &newX0, int &newX1, int &newY0, int &newY1)
Definition util.h:89

References olb::BlockLattice< T, DESCRIPTOR >::get(), and olb::util::intersect().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: