- the interpolation used in the prolongation of boundaries requires the
boundary values from the neighbor, thus if we prolongate the
boundaries before restricting the neighbor boundaries the values
might be incorrect resulting in a wrong interpolation; separating
prolontation from copying and restriction and moving it to the last
step of update procedure solves the problem of incorrect
interpolation and in consequence wrong update of boundaries;
- in the case when kx = ky = 0 and kz <> 0 all components of
directional vectors e1 and e2 become zero; fix this situation by
rotating the system, so e1 lays in the YZ plane instead of XY plane;
- now the meta blocks are inserted in the chain in the proper order and
their config flags are set accordingly to the block neighbors; this
should work in 2D and 3D, as well;
note: in order of optimize the initial configuration we should first
sort the dimentions, then generate the proper configuration for
the sorted dimentions, and then rotate the domain back to the
original dimensions updating the config flags properly; this
require a bit of thinking so we leave the user for now, how to
orient the domain properly;
- rewrite subroutine domain_default() to support arbitrary number of
blocks along each dimension for the lowest level; the lowest level
block dimension is set in rdims vector; this version supports 2D for
now;
- in order to find the boundary value for normal magnetic field
component we use the divergence free condition, i.e., we need to
calculate normal direvatived perpendicular components; now we used
the derivative calculation with the proper limiting in order to keep
the consistency of the scheme;
- in the interpolation module the new function has been added returning
the limited derivative;
- call subroutine evolve_forcing() before the update of all blocks;
this subroutine evolves the forcing source terms by an interval dt in
the Fourier space; then during the update the forcing Fourier
coefficients will be transformed to real space for each block
separately;
- implement subroutine evolve_forcing() which evolves the driving
components in Fourier space during the one hydrodynamic timestep; the
integrated forcing Fourier components are stored in module array
ftab; this complex array will be used to calculate forcing in real
space for each block;