1140 Commits

Author SHA1 Message Date
9f8c490ce0 REFINEMENT: Extend the region for refinement criterion.
Now we calculate the refinement criterion over a region which is larger
than the block domain by one cell. It should allow to detect incoming
gradients earlier and result in gradents entering the already
refined block.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 12:46:23 -03:00
1395712472 BLOCKS: Remove all remainings after old %neigh pointers.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 12:39:40 -03:00
7a93ac16e0 BLOCKS: Rewrite check_block_neighbors().
This debuggin fuctions checks face, edge, and corner pointers and check
the corresponding pointers of the pointed neighbors, if they are
consistent, i.e. if they point to each other.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 12:20:49 -03:00
c1e5721fd4 DOMAINS: Remove initializarion of %neigh in setup_domain_default().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:09:21 -03:00
943d2d19ed BLOCKS: Rewrite iterate_over_neighbors() and remove iterate_over_face().
We can point all neighbors directly now, so it is enough to loop over
all of them.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:09:21 -03:00
49b3469ede IO: Do not store/restore %neigh pointers anymore.
These pointers won't be used anymore, and have been replaced by %faces,
%edges, and %corners.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:09:21 -03:00
b19352cb5e BOUNDARIES: Remove old boundary subroutines.
All subroutines which use %neigh field of meta block have been removed,
since the new format using %faces, %edges, and %corners is completed.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:09:21 -03:00
8d78e3c099 BOUNDARIES: Rewrite flux update subroutines.
This patch rewrites two subroutines boundary_fluxes() and related
block_update_flux() in order to use new pointers (faces in 3D and edges
in 2D). It also signficantly simplifies block_update_flux() comparing to
previous version correct_flux().

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:08:51 -03:00
2d8ce74616 BOUNDARIES: Correct argument descriptions in block_boundary_specific().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:08:46 -03:00
fa41c2a96e BOUNDARIES: Skip periodic boundaries in boundaries_specific().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:08:40 -03:00
e79a64c5a5 BOUNDARIES: Reimplement specific boundary conditions.
This patch introduces specific boundary conditions for new neighbor
pointers.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-24 00:08:25 -03:00
7d81648cdf IO: Put attribute subroutines in interfaces.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 22:13:48 -03:00
478adea863 IO: Restore face, edge, and corner pointers from restart file.
All neighbor pointers, face, edge, and corners are properly
restored from restart files during job restart.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 16:42:13 -03:00
8caa16c236 IO: Store face, edge, and corner pointers in restart file.
All neighbor pointers, face, edge, and corners are stored in restart
files in group 'metablocks'.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 16:22:29 -03:00
aae27192df IO: Put all read subroutines in interface definition.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 16:02:50 -03:00
1c8ca86d5d IO: Put write all subroutines in interface definition.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 15:33:38 -03:00
ba6b6c13ac BOUNDARIES: Call face boundary subroutines in boundary_variables().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 08:59:50 -03:00
24436a0150 BOUNDARIES: Fix MPI exchange IDs and correct comments.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 08:56:09 -03:00
6461e353cb BOUNDARIES: Add subroutine boundaries_face_prolong().
This subroutine scans over all leafs and update their face boundaries
prolongating lower level neighbors to higher level blocks.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 08:30:44 -03:00
c91faac5f4 BOUNDARIES: Add subroutine boundaries_face_restrict().
This subroutine scans over all leafs and update their face boundaries
restricting higher level neighbors to lower level ones.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 08:21:26 -03:00
7a9922facd BOUNDARIES: Add subroutine boundaries_face_copy().
This subroutine scans over all leafs and update their face boundaries if
both blocks lay on the same level.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 08:09:22 -03:00
b3d587727a BOUNDARIES: Add subroutine block_face_prolong().
This subroutine extracts the face region from the domain of input
variable array by prolongating it to output array.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 07:55:02 -03:00
5fd6d9d664 BOUNDARIES: Add subroutine block_face_restrict().
This subroutine extracts the face region from the domain of input
variable array by restricting it to output array.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 07:48:43 -03:00
fc34acfed0 BOUNDARIES: Add subroutine block_face_copy().
This subroutine extracts the face region from the domain of input
variable array by copying it to output array.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 07:47:29 -03:00
b94bcf472c BLOCKS: Add 3D neighbor' pointers update in derefine_block().
This adds the neighbor' pointer update in 3D case in derefine_block().

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 04:23:49 -03:00
5268d1eac9 BLOCKS: Add 3D neighbor pointer update in derefine_block().
This adds the neighbor pointer update in 3D case in derefine_block().

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 04:21:01 -03:00
847a202285 BLOCKS: Add 3D neighbor' pointers update in refine_block().
This adds the neighbor' pointer update in 3D case in refine_block().

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 04:17:11 -03:00
c3f12c2984 BLOCKS: Add 3D neighbor pointer update in refine_block().
This adds the neighbor pointer update in 3D case in refine_block().

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 04:12:26 -03:00
94262bd3a2 BLOCKS: Remove unnecessary variables in refine_block().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 04:04:30 -03:00
ebed23ef71 BLOCKS: Rewrite 2D neighbor' pointers update in derefine_block().
This update of 2D neighbor' pointers for derefined block iterates
over corners instead of updating each neighbor's pointer
explicitely. It updates both, edge and corner neighbor pointers
of connected neighbors at once.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 03:51:00 -03:00
939f3106cb BLOCKS: Rewrite 2D neighbor pointers update in derefine_block().
This update of 2D neighbor pointers for derefined block iterates over
corners instead of updating each neighbor pointer explicitely. It
updates both, edge and corner neighbor pointers at once.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 03:50:42 -03:00
2b9513e776 BLOCKS: Rewrite 2D neighbor' pointers update in refine_block().
This update of 2D neighbor' pointers iterates over corners instead
of updating each neighbor's pointer explicitely. It updates both,
edge and corner neighbor pointers of connected neighbors at once.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 03:36:04 -03:00
5f932ff906 BLOCKS: Add missing variables in refine_block().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 03:35:09 -03:00
1f7e65b359 BLOCKS: Rewrite 2D neighbor pointers update in refine_block().
This update of 2D neighbor pointers iterates over corners instead of
updating each neighbor pointer explicitely. It updates both, edge and
corner neighbor pointers at once.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 03:25:06 -03:00
75653bf226 BLOCKS: Remove 3D face neighbor pointer update in refine_block().
This non-working update of the face neighbor pointers will be replaced.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-22 03:15:57 -03:00
85f72fe1e0 BLOCKS: Don't set interior corner pointers if neighbor at lower level.
If we refine a block, and the neighbor lays at the same level of the
parent, do not assign the child's interior corner pointer. Those
pointers are null then.

This is not a problem for corner boundary update, since this corner
is updated in boundaries_edge_prolong, therefore all corners of the
finer blocks are fully consisten with their neighbors.

This also removes unnecessary condition check in
boundaries_corner_prolong().

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 19:03:53 -03:00
518f12b19e BOUNDARIES: Call boundaries_edge_prolong() in boundary_variables().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 13:26:31 -03:00
65cb4e747d BOUNDARIES: Add subroutine boundaries_edge_prolong().
This subroutine scans over all leaf blocks and their edge neighbor
pointers and updates edge boundary regions from neighbors at lower
levels.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 13:25:32 -03:00
62e7235a3a BOUNDARIES: Implement block_edge_prolong().
This subroutine takes the variable array of the neighbor, prolongs
it and extracts the edge region corresponding to the edge position.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 13:24:30 -03:00
89df65f754 BOUNDARIES: Call boundaries_edge_restrict() in boundary_variables().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 12:50:01 -03:00
3ef963eda4 BOUNDARIES: Add subroutine boundaries_edge_restrict().
This subroutines scans over all leaf blocks and their edge neighbor
pointers and updates edge boundary regions from neighbors at higher
level.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 12:48:52 -03:00
110c29a487 BOUNDARIES: Implement block_edge_restrict().
This subroutines takes the variable array of the neighbor, restricts
it and extracts the edge region corresponding to the edge position.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 12:38:54 -03:00
d2130c5cc6 BOUNDARIES: Call boundaries_edge_copy() in boundary_variables().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 12:29:26 -03:00
59f7ab45f0 BOUNDARIES: Add subroutine boundaries_edge_copy().
This subroutines scans over all leaf blocks and their edge neighbor
pointers and updates edge boundary regions from neighbor at lower
level.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 12:27:53 -03:00
18abac9639 BOUNDARIES: Copy half of edge in block_edge_copy().
We copy just the half of the edge in block_edge_copy(), since another
half is updated from a different corner.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 12:23:56 -03:00
6dcf96f4ab BOUNDARIES: Implement block_edge_copy().
This subroutines takes the variable array of the neighbor and extracts
the edge region corresponding to the edge position.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 11:45:52 -03:00
309eb2aad2 BOUNDARIES: Call boundaries_corner_prolong() in boundary_variables().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 11:36:17 -03:00
9254b5997a BOUNDARIES: Add subroutine boundaries_corner_prolong().
This subroutines scans over all leaf blocks and their corner neighbor
pointers and updates corner boundary regions from neighbor at lower
level.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 11:35:18 -03:00
8eb5a1aaff BOUNDARIES: Implement block_corner_prolong().
This subroutines takes the variable array of the lower level neighbor,
prolongates it and extracts the corner region corresponding to the
corner position.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 11:17:47 -03:00
b1fa32f8ba BOUNDARIES: Call boundaries_corner_restrict() in boundary_variables().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2014-07-15 11:11:25 -03:00