230 Commits

Author SHA1 Message Date
Grzegorz Kowal
3f6321cfe0 Add initial velocity configuration for binaries problem. 2008-12-31 12:57:31 -06:00
Grzegorz Kowal
6c620a97cf Implement boundary block exchange between processes.
Now, in the boundary subroutine we collect information about the blocks
which neighbors lay on a different processor. Using this information we
send neighboring blocks and update the block boundaries. This is the
initial implementation, not very well optimized and containg some bugs.
2008-12-31 12:02:36 -06:00
Grzegorz Kowal
398ffd385c Prepare subroutine 'boundary' in order to support MPI.
There are several conditions for the boundaries. If the neighbor block
is on the same processor do as usuall. If it lays on a different
processor, prepare it for exchange. After echanging blocks we need to
perform similar update as it would lay on the same processor, i.e. we
need to perform copying, restriction, or prolongation.
2008-12-29 07:36:06 -06:00
Grzegorz Kowal
90182faf2b Merge branch 'mpi' of /home/kowal/Web/godunov-amr into mpi 2008-12-28 17:28:16 -06:00
Grzegorz Kowal
20837eb739 Divide the initial blocks between processes.
The blocks of initial mesh are now divided between all processes. The
procedure updates also the %cpu field of all neighbors according to the
number of process they are running at.

The subroutine 'deallocate_block' takes care about the plist pointer
now. It also allows for the flexible removal of any block, even from the
middle of the list by updating fields %next and %prev of the previous
and next blocks, respectively.

In addition, we now store the %cpu field of each block in the HDF5 files
too.
2008-12-28 13:09:14 -06:00
Grzegorz Kowal
82843c43f4 Add TODO about the way of refinement with MPI. 2008-12-23 11:46:26 -06:00
Grzegorz Kowal
a07f970b5d Add TODO about the way of refinement with MPI. 2008-12-22 16:15:27 -06:00
Grzegorz Kowal
2719b0b451 Merge branch 'master' into mpi
Conflicts:

	src/mesh.F90
2008-12-22 16:08:51 -06:00
Grzegorz Kowal
0626f616cb Add problem specific domain initialization.
The domain initialization is performed in the problem.F90 now. This will
allow a user to initialize his own domain according to the defined
problem. Since the initialization in problem-dependent we don't need the
subroutine allocate_blocks anymore.
2008-12-22 15:34:02 -06:00
Grzegorz Kowal
5601bd6081 Add printing info about the MPI enabled. 2008-12-22 15:09:05 -06:00
Grzegorz Kowal
1f581e9610 Add new module for MPI handling.
A new 'mpitools' module has been added. This module contains subroutines
to initialize, deinitialize and handle MPI communication. This initial
version can now initialize and deinitialize parallelization. It does not
support full parallelization yet.
2008-12-22 14:57:31 -06:00
Grzegorz Kowal
d67f05d650 Add a new module for MPI communication. 2008-12-19 17:33:29 -06:00
Grzegorz Kowal
e0213bcca5 Change type of the field 'child' to blockref. 2008-12-19 17:24:36 -06:00
Grzegorz Kowal
e5878fc459 Remove references to the field 'pneigh'.
Since we now only use the field 'neigh' we don't need pointers stored in
'pneigh' anymore.
2008-12-19 16:46:17 -06:00
Grzegorz Kowal
f64bbd7e5e Use field neigh to assign and refer to neighbors.
We use the field 'neigh' instead of the field 'pneigh'. The field
'neigh' is of the type of 'blockref' which simplifies the reference to
the neighbors blocks when using MPI. Each reference contains two fields:
cpu and id. In MPI version we cannot use pointers stored in pneigh, but
using blockref structures we can refer to the blocks belonging to other
processors.
2008-12-19 16:36:07 -06:00
Grzegorz Kowal
c977c610ff Introduce new type of block reference by cpu and id.
The new type 'blockref' is a reference to a block by two integer
numbers, the first points to the cpu that block is running, and the
second one is the block identificator.
2008-12-19 00:19:44 -06:00
Grzegorz Kowal
1aa75ac2ef Change the leaf field of the block to be logical.
This change should speed up a bit the conditions, since it is faster
than the character comparisons.
2008-12-19 00:02:05 -06:00
Grzegorz Kowal
6fac1d38b2 Reorganization of the block subroutines.
Preparation of the block module for MPI support.
2008-12-18 23:47:58 -06:00
Grzegorz Kowal
a9c9cef27e Cosmetic changes to the block pointer type definition. 2008-12-18 22:51:08 -06:00
Grzegorz Kowal
1206194deb Add support for the shapes in the domain.
Now, we can define any shape for a given problem inside the domain,
which is not updated during the evolution. This allows for using the
sources of any kind in the problem studies, such as the colliding winds
in the binary stars.
2008-12-18 12:18:36 -06:00
Grzegorz Kowal
fe054b3caf Binary stars problem implemented.
I've implemented the problem of binary stars to study the colliding
winds.
2008-12-18 11:09:42 -06:00
Grzegorz Kowal
f5eb7d0fcf Restructured problem module to allow adding of more problems.
Now the subroutine init_problem call the initialization os selected
problem determined by the config parameter 'problem'. In this way we can
choose problem without recompiling the code.
2008-12-18 10:20:15 -06:00
Grzegorz Kowal
9b4abbd520 Added control of refinement/derefinement criterions.
Now we can control the levels of refinement/derefinement criterion from
the config file. The bounds of the domains are stored in the HDF5 files
from now.
2008-12-16 22:34:54 -06:00
Grzegorz Kowal
136fcb1daa Implemented open and reflective boundary conditions. 2008-12-16 19:56:07 -06:00
Grzegorz Kowal
96406e3f98 Store global attributes and coordinates.
Now we store global attributes like block dimensions and number of ghost
cells in the HDF5 output files. We store coordinates for each level as well.
2008-12-16 18:54:38 -06:00
Grzegorz Kowal
30bdd1cef9 HLLC solver implemented.
The HLLC solver is implemented now. It resolves contact discontinuities
properly. A small adjustment to the criterion has been done too.
2008-12-16 14:38:04 -06:00
Grzegorz Kowal
e56aee34c0 Play more with the refinements criterion. 2008-12-16 13:40:34 -06:00
Grzegorz Kowal
f673596f20 Refinement based on density. More cleanups. 2008-12-13 22:41:37 -06:00
Grzegorz Kowal
b39673bf85 Fixed generation of dx, dy, and dz.
The generation of dx, dy, dz for each level didn't include the base
grid, i.e. they were 2 times larger. Now it is fixed. Also plenty of
minor corrections in different places.
2008-12-13 21:05:51 -06:00
Grzegorz Kowal
505339c247 Write primitive variables instead of conservative.
Now we dump primitive variables in the HDF5 files.
2008-12-13 20:33:27 -06:00
Grzegorz Kowal
7bc74a39d9 Initial version of refinement/derefinement is working.
It looks like the refining and derefining work more or less, at least
without interrupting the execution. Nevertheless, there are still some
artifacts, like the lack of symmetry after some time or not efficient
derefining of the mesh. This could be cause by the solver, however.

The refinement criterion is computed using pressure now.
2008-12-13 15:08:18 -06:00
Grzegorz Kowal
00e688eb5c Block boundary update implemented.
Now all block update their boundary values from the neighboring blocks.
Blocks of the same level copy their values, but block of different
levels shrink or expand the boundary values from the neighbor,
depending on the level change. In order to complete this I've
implemented subroutines expand and interpolate in the interpolation
module.

By default the boundary conditions are set to periodic. So far only this
type of conditions is supported, but the other types should be easy to
implement.
2008-12-12 16:39:03 -06:00
Grzegorz Kowal
d77dc8079e A few bugs fixed. Some reorganization of dimension variables. 2008-12-09 22:28:29 -06:00
Grzegorz Kowal
be78017530 Initial mesh generation is periodic now.
Also, some fixes in the boundary code.
2008-12-09 21:42:01 -06:00
Grzegorz Kowal
71a602156a New time integration method EULER. 2008-12-09 21:06:21 -06:00
Grzegorz Kowal
247ecd1178 Added more helpful dimension indices. 2008-12-09 21:02:33 -06:00
Grzegorz Kowal
936420c599 New module to handle the boundary conditions.
The subroutine 'boundary' sweeps over all leaf blocks. For each block it
sweeps over its neighbors and performs update of the boundaries. This is
an initial version yet, it supports only neighboring blocks of the same
level of refinement.
2008-12-09 20:37:31 -06:00
Grzegorz Kowal
2bc8d0452d Now we are writing fields to files.
The initial implementation of storing data in a HDF5 file has been
implemented.
2008-12-09 15:29:12 -06:00
Grzegorz Kowal
6d38fe6476 Added CFL condition and calculation of the new time step.
The function to calculate the maximum speed in the block has been added.
This function is used to determine the maximum speed globally, which is
next used to estimate the next time step.
2008-12-09 14:51:33 -06:00
Grzegorz Kowal
2f1a710bcd Added storing of data in subsequent steps.
A new parameter to control the time interval between writing data has
been added. Also the condition to check if data should be written has
been added in the main loop.
2008-12-09 12:42:10 -06:00
Grzegorz Kowal
c18a7a3065 Added storing of the final state. 2008-12-08 21:14:12 -06:00
Grzegorz Kowal
4d8b0ca643 Updated comments in the driver subroutine. 2008-12-08 21:11:17 -06:00
Grzegorz Kowal
76eaa8a98c Update comments in the timer module. 2008-12-08 21:09:48 -06:00
Grzegorz Kowal
7deada5a90 Updated comments in the evolution module. 2008-12-08 21:07:10 -06:00
Grzegorz Kowal
1756a144d4 Updated comments in the scheme module. 2008-12-08 21:04:20 -06:00
Grzegorz Kowal
5e611587e1 New module for interpolation.
This new module contains subroutines used to different kind of
interpolation. So far it is implemented only one subroutine used for
reconstruction of the left and right states from center values. This
interpolation has TVD property.
2008-12-08 20:53:29 -06:00
Grzegorz Kowal
9b946cb209 Added two subroutines to convert between variables.
Two subroutines, cons2prim and prim2cons, to convert between
conservative and primitive variables have been added.

New parameters, gammam1 and gammam1i have been added to the
configuration file. Both are derivation of gamma, first is gamma-1, the
secons 1/(gamma-1).
2008-12-08 20:38:46 -06:00
Grzegorz Kowal
b3eaa7b37e Subroutine to calculate fluxes and speeds implemented.
This subroutine calculates fluxes and speeds for hydrodynamic case only.
Adiabatic and isothermal equations of state are supported. I also added
new parameters, gamma and csnd to the config module.
2008-12-08 20:29:13 -06:00
Grzegorz Kowal
7be60a6788 Implement HLL flux approximation.
The most general HLL flux approximation has been implemented.
2008-12-08 20:16:37 -06:00
Grzegorz Kowal
c48f30bd20 Update sweeps over direction calculating dU.
We compute dFdx contribution along each direction and update total dU.
Apart from that I've added generation of coordinate variables, like dx,
dxi, etc. in the mesh module. The next step is to implement the HLL
solver.
2008-12-08 20:03:01 -06:00