- now the refinement criterion uses the second derivative and is
normalized properly to lay between 0.0 and 1.0; it is calculated in a
similar way as in the Flash code;
- in this way all flags are controlled from make.config and host
specific files choose the right compilers, options, and libraries,
depending on the chosen flags;
- correct calculating the amplitudes of the forcing components;
micro optimizations of the force initialization;
- correct the evolution of the forcing components so the power input
corresponds exactly to the defined power fpow;
- we don't need all components from a sphere in the Fourier space, only
half components are independent, so reduce it's number;
- correct the amplitude calculation so the proper amount of energy is
injected in the system;
- add a new module INTEGRALS which handles initialization and
calculation of the conserved variables and energies;
- add make dependencies to makefile;
- call the initialization, storage and termination subroutines from the
driver;
- we moved the calculation of trigonometric functions out of the loop,
and now we calculate the directional sinuses and cosinuses and
calculate the total value using the trigonometric relations; this
speeds up the inverse Fourier transform significantly;
- 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;