107 Commits

Author SHA1 Message Date
788d328f7a Update years in copyright information.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-01-02 11:52:59 -02:00
7a4e402c8a BLOCKS, IO, MESH: Rename nchild to nchildren.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2013-12-27 17:58:40 -02:00
3052f9aa04 BLOCKS: Replace associate_blocks() with link/unlink_block().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2013-12-23 18:19:13 -02:00
853618b874 MESH: Replace deallocate_datablock() with remove_datablock().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2013-12-23 17:44:36 -02:00
42c39c5736 BLOCKS: Rewrite data block allocate/removal subroutines.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2013-12-23 17:40:49 -02:00
386fd36f5e Update copyright line.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2013-12-10 15:23:28 -02:00
Grzegorz Kowal
fd7b393415 Implement storing refinement criterion values if DEBUG is on. 2012-08-02 13:09:44 -03:00
Grzegorz Kowal
2e26d47362 Add two arrays of conserved variables to the block structure.
In these two arrays we store temporary states during the Runge-Kutta
integration.  The new pointer %u in the block structure points to the
current array of the conservative variables.
2012-07-31 14:14:42 -03:00
Grzegorz Kowal
b2ed1c4207 Deallocate primitive variable in deallocate_datablock(). 2012-07-27 22:03:57 -03:00
Grzegorz Kowal
18b4de6458 Add array Q in the data block structure to store primitive variables. 2012-07-27 21:45:35 -03:00
Grzegorz Kowal
36e821c27e Set the 3rd block dimension only if NDIMS==3. 2012-07-27 13:14:48 -03:00
Grzegorz Kowal
2a5e9bc89b Rename init_blocks() and clear_blocks() and describe them. 2012-07-22 22:47:25 -03:00
Grzegorz Kowal
dbfbabc613 Change the license to GNU General Public License version 3. 2012-07-22 12:30:20 -03:00
Grzegorz Kowal
f613d52ff3 Declare block bounds as real, not double precision values. 2011-06-07 20:59:16 -03:00
Grzegorz Kowal
862bbd264f Add more subroutines to set block fields.
- new subroutines to set ID, cpu, refine, config, etc. have been added
   to the BLOCK module;

 - use new subroutines in read_metablocks_h5();
2011-05-06 09:17:01 -03:00
Grzegorz Kowal
5bdc20c7db Fix bug introduced in 027f115394450c93b9317aa078f8c7ff7c3b3836.
- the problem was demonstrating in the way that after restart the
   number of leafs was set to zero; this was because while recreating
   the meta blocks structure we set nleafs directly instead of using
   metablock_set_leaf(); after using this subroutine we don't need to
   to set nleafs anymore, and the restart continues properly;
2011-05-06 08:50:16 -03:00
Grzegorz Kowal
00cc664b1f Export check_metablock if DEGUB flag is set. 2011-05-06 08:40:21 -03:00
Grzegorz Kowal
6ef7411ad3 Correct comments in init_blocks() and clear_blocks(). 2011-05-05 23:48:10 -03:00
Grzegorz Kowal
d4db46150b More comment fixes in BLOCKS module. 2011-05-05 23:41:42 -03:00
Grzegorz Kowal
b312279c7c Spell fixes and line breaking in the BLOCKS module. 2011-05-05 23:36:44 -03:00
Grzegorz Kowal
027f115394 Reorganize module BLOCKS.
- reorganize order of subroutines and separate them between groups for
   meta and data blocks, refinement, and private functions and
   subroutines;

 - change the copyright header; update to new email address;

 - make all module pointers, variables, and subroutines private and
   allow only for subset of them to be public;

 - improve the description of block structures;

 - add several functions to return module variables such as the number
   of meta and data blocks, the number of leafs, the last id, etc.;

 - update several subroutines from other modules which required some of
   the BLOCK module variables;
2011-05-05 18:25:24 -03:00
Grzegorz Kowal
dcd58927cc Remove remaining dependency of BLOCK on CONFIG modules.
- now, the BLOCK module dependends only on ERROR module; all other
   dependencies have been removed;
2011-05-05 16:59:51 -03:00
Grzegorz Kowal
f590f85b72 Move the level resolution array to MESH module.
- the level resolution array 'res' has been moved to mesh module, where
   it should belong; due to this it needs to be provided as an argument
   to subroutines in BLOCK and PROBLEM modules which use it;

 - the level resolution array stores block resolutions in each
   directions, so it is now a two dimensional array, with the dimensions
   corresponding to the number of levels and number of dimensions;

 - update subroutine write_coordinates_h5() to store the level
   resolution array properly;
2011-05-05 16:51:35 -03:00
Grzegorz Kowal
e28a0a83c8 Make module BLOCKS independent of VARIABLES.
- add a new subroutine set_datablock_dims() to set dimensions of the
   allocatable arrays in data blocks; this subroutine is called from
   init_mesh(), which is the right place to initiate BLOCK module;

 - remove dependency of blocks.o on variables.o;

 - boundaries.o depends on timers.o;
2011-05-05 15:56:38 -03:00
Grzegorz Kowal
8f86cb231e Add an array for numerical fluxes to block structure.
- the purpose of a new allocatable array in the block structure is to
   store the numerical fluxes, which need to be synchronized, and then
   used to update conserved variables in a conservative way;
2011-04-30 12:11:57 -03:00
Grzegorz Kowal
fc32225dc1 Change the license to GNU General Public License, version 2. 2011-04-29 11:21:30 -03:00
Grzegorz Kowal
0ff433e16b Rename the code from Godunov-AMR to AMUN. 2011-04-25 13:44:34 -03:00
Grzegorz Kowal
e25bc4f573 Merge branch 'master' into 'job_restart'.
Conflicts:
	src/driver.F90
2011-04-23 21:56:57 -03:00
Grzegorz Kowal
eaeae39aae Reset neighbor pointers of the refined block.
- this prevents storing wrong neighbors IDs in the HDF5 files;
2011-04-23 21:48:51 -03:00
Grzegorz Kowal
cfdf5002cb Use temporary pointer pchild in refine_block(). 2011-04-23 17:17:11 -03:00
Grzegorz Kowal
ae9112e1f6 Add subroutine check_metablock() to check individual meta blocks. 2011-04-21 14:13:25 -03:00
Grzegorz Kowal
aa80869645 Move generation if the level resolutions to init_blocks(). 2011-04-15 00:25:22 +02:00
Grzegorz Kowal
98c8471123 Fix appending new meta and data blocks. 2011-04-14 13:40:04 +02:00
Grzegorz Kowal
342858f12b Allocate all datablocks in read_attributes_h5(). 2011-04-14 10:26:43 +02:00
Grzegorz Kowal
a617de78ba Allocate all metablocks in read_attribute_h5(). 2011-04-14 00:37:41 +02:00
Grzegorz Kowal
2682d37d20 Update the copyright information. 2011-02-27 22:45:54 -03:00
Grzegorz Kowal
28cc35d0ab BLOCKS: remove the flux fields from data block structure.
- we do not use the flux fields so in order to save much more space
   remove them from the data block structure;
2010-12-14 10:35:42 -02:00
Grzegorz Kowal
ce32d86688 Add new field 'pos' in the meta block structure.
BLOCK STRUCTURE

 - add new field pos in the meta block structure determining the
   position of the current block in the parent block; this might be very
   useful in determining which boundary region should be updated;
 - add new subroutine metablock_set_position() which sets the position
   of the child in the parent block;
2010-12-01 09:31:38 -02:00
Grzegorz Kowal
226c2a3fe9 Move variable indices to new module 'variables'.
VARIABLES

 - create new module 'variables' which stores references to variable
   indices; we gonna store dofferent objects related to variables in
   this module;
2010-12-01 09:25:30 -02:00
Grzegorz Kowal
c72b862db4 Rename variable nblocks to mblocks.
BLOCK STRUCTURE

 - the global variable nblocks tells how many metablocks are allocated,
   thus its name is changed to mblocks;
 - remove unnecessary checking of the list allocation;
2010-12-01 09:23:03 -02:00
Grzegorz Kowal
aab8831bbf Update the copyright info and fix the length of separating lines. 2010-10-13 03:32:10 -03:00
Grzegorz Kowal
c182e08352 Set the initial coordinates and calculate them during the refinement. 2010-10-11 22:46:07 -03:00
Grzegorz Kowal
8757789042 Add the field 'coord' to meta block structure.
BLOCK STRUCTURE

 - add a new field 'coord' to store block coordinates in the units of
   the effective resolution;
 - add a subroutine metablock_set_coord() to set the block coordinates;
2010-10-11 02:10:47 -03:00
Grzegorz Kowal
a8dd14def4 Heavy reawrite of the I/O module.
IO

 - the subroutine write_data() is now a wrapper subroutine which call
   the subroutine writing in a supported file format; the file format is
   chosen at the time of compilation;
 - the subroutine write_data_h5() is a new subroutine taking care of
   initialization and storage data in the HDF5 format; depending on the
   file type it calls subroutines to create specific groups and store
   the right data;
 - new subroutines write_atrributes_h5(), write_coordinates_h5(),
   write_variables_h(), write_variables_full_h5(),
   write_metablocks_h5(), write_datablocks_h5(), and number of other
   supporting subroutines to store all data in the proper format for job
   restart, vizualization, and debugging;

MAKE

 - add option to enable/disable HDF5 file compression;
2010-10-11 01:39:15 -03:00
Grzegorz Kowal
d54b57e1eb Cosmetic change in subroutine allocate_datablock() in blocks.F90. 2010-09-18 11:44:46 +02:00
Grzegorz Kowal
b6dc6095ac Make GNU compiler happy and fix indexing of emf. 2010-09-18 11:42:09 +02:00
Grzegorz Kowal
ed88bc2526 First step of implementation of time advance using new method.
BLOCK STRUCTURE

 - add new array to the data block structure to store the electromotive
   force components; these components are located at the centers of cell
   edges, in this way the CT update of the staggered magnetic field
   component will be easier;

EVOLUTION

 - add new subroutine advance() which performs several steps in order to
   advance the solution in time by one-step update; the substeps are the
   updates of the numerical flux, the flux boundary, the advance in time
   the solution, the updates of mesh structure, and the boundaries of
   conserved variables, and finally the new time step estimation;

 - add new subroutine update_flux() to update the numerical fluxes
   stored in the data blocks;

SCHEME

 - add new subroutine numerical_flux() to calculate fluxes at the proper
   locations;

 - add new logical argument to HLL and HLLC in order to specify if the
   flux should be returned as a numerical flux or its derivative;
2010-07-27 19:26:15 -03:00
Grzegorz Kowal
a2a7fbf3c4 Add a field for storing fluxes in the blocks.
BLOCK STRUCTURE

 - add a multidimensional array to store the numerical fluxes in the
   block structure; it seems that this is necessary for the boundary
   update, since the fluxes should be synchronized between blocks at
   different levels;
2010-07-26 20:46:45 -03:00
Grzegorz Kowal
88761c9622 Implement FLUXCT integration of the induction equation.
SCHEME

  - implement Flux-CT scheme for the staggered magnetic field
    integration;

BLOCK STRUCTURE

  - use more space efficient storage of the variables, which means
    storing only staggered components of magnetic field; cell-centered
    components are calculated only when necessary;

EVOLUTION

  - remove loops in the field updates; operations are performed on the
    arrays;

BOUNDARY CONDITIONS

  - remove loops in the bnd_copy; operations are calculated on the whole
    array now;

INTERPOLATION

  - subroutine magtocen() has been rewritten to avoid problems with the
    array allocation; now as an argument we enter the array of all
    variables; subroutine uses indices for the face-centered and
    cell-centered magnetic field components internally;

MAKE

  - add flag defining Flux-CT scheme;

PROBLEM

  - use predefined array variables instead of allocated;
2010-02-28 18:35:57 -03:00
Grzegorz Kowal
98849f3369 Prepare code for central differencing scheme for magnetic field. 2010-02-22 12:01:58 -03:00