OpenFPM_pdata  1.1.0
Project that contain the implementation of distributed structures
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Friends Pages
D< d, Field, Sys_eqs, impl > Class Template Reference

Derivative second order on h (spacing) More...

Detailed Description

template<unsigned int d, typename Field, typename Sys_eqs, unsigned int impl = CENTRAL>
class D< d, Field, Sys_eqs, impl >

Derivative second order on h (spacing)

Template Parameters
don which dimension derive
Fieldwhich field derive
implwhich implementation

Definition at line 28 of file Derivative.hpp.

#include <Derivative.hpp>

Static Private Member Functions

static void value (const grid_key_dx< Sys_eqs::dims > &pos, const grid_sm< Sys_eqs::dims, void > &gs, std::unordered_map< long int, typename Sys_eqs::stype > &cols, typename Sys_eqs::stype coeff)
 Calculate which colums of the Matrix are non zero. More...
 
static grid_key_dx< Sys_eqs::dims > position (grid_key_dx< Sys_eqs::dims > &pos, const grid_sm< Sys_eqs::dims, void > &gs, const comb< Sys_eqs::dims >(&s_pos)[Sys_eqs::nvar])
 Calculate the position where the derivative is calculated. More...
 

Member Function Documentation

template<unsigned int d, typename Field, typename Sys_eqs, unsigned int impl = CENTRAL>
static grid_key_dx<Sys_eqs::dims> D< d, Field, Sys_eqs, impl >::position ( grid_key_dx< Sys_eqs::dims > &  pos,
const grid_sm< Sys_eqs::dims, void > &  gs,
const comb< Sys_eqs::dims >(&)  s_pos[Sys_eqs::nvar] 
)
inlinestaticprivate

Calculate the position where the derivative is calculated.

In case of non staggered case this function just return a null grid_key, in case of staggered, it calculate how the operator shift the calculation in the cell

Parameters
posposition where we are calculating the derivative
gsGrid info
s_posstaggered position of the properties
Returns
where (in which cell) the derivative is calculated

Definition at line 59 of file Derivative.hpp.

template<unsigned int d, typename Field, typename Sys_eqs, unsigned int impl = CENTRAL>
static void D< d, Field, Sys_eqs, impl >::value ( const grid_key_dx< Sys_eqs::dims > &  pos,
const grid_sm< Sys_eqs::dims, void > &  gs,
std::unordered_map< long int, typename Sys_eqs::stype > &  cols,
typename Sys_eqs::stype  coeff 
)
inlinestaticprivate

Calculate which colums of the Matrix are non zero.

Parameters
posposition where the derivative is calculated
gsGrid info
colsnon-zero colums calculated by the function
coeffcoefficent (constant in front of the derivative)

Example

// grid size
size_t sz[2]={16,16};
// grid_dist_testing
// grid_sm
grid_sm<2,void> ginfo(sz);
// spacing
float spacing[2] = {0.5,0.3};
// Create several keys
// filled colums
std::unordered_map<long int,float> cols_x;
std::unordered_map<long int,float> cols_y;
D<x,Field<V,sys_nn>,sys_nn>::value(g_map,key11,ginfo,spacing,cols_x,1);
D<y,Field<V,sys_nn>,sys_nn>::value(g_map,key11,ginfo,spacing,cols_y,1);
BOOST_REQUIRE_EQUAL(cols_x.size(),2ul);
BOOST_REQUIRE_EQUAL(cols_y.size(),2ul);
BOOST_REQUIRE_EQUAL(cols_x[17+1],1/spacing[0]/2.0);
BOOST_REQUIRE_EQUAL(cols_x[17-1],-1/spacing[0]/2.0);
BOOST_REQUIRE_EQUAL(cols_y[17+16],1/spacing[1]/2.0);
BOOST_REQUIRE_EQUAL(cols_y[17-16],-1/spacing[1]/2.0);

Definition at line 42 of file Derivative.hpp.


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