From 09fe202de6a3f6030e2e74f543caa51a4f9408ce Mon Sep 17 00:00:00 2001
From: odemirel <odemirel@7c7fe9aa-52eb-4d9e-b0a8-ba7d787348e9>
Date: Thu, 6 May 2010 14:22:04 +0000
Subject: [PATCH] - Multigrid related updates such as missing USE statements,
 changed signatures of function calls - compiles but needs some further
 testing using the Maxwell client (coming soon)

git-svn-id: https://ppm.inf.ethz.ch/svn/ppmnumerics/branches/ngtopo/libppmnumerics@614 7c7fe9aa-52eb-4d9e-b0a8-ba7d787348e9
---
 src/ppm_mg_alloc_bc.f      |   2 +
 src/ppm_mg_alloc_field.f   |   2 +
 src/ppm_mg_core.f          |   1 +
 src/ppm_mg_finalize.f      |   2 +
 src/ppm_mg_init.f          |   4 +-
 src/ppm_mg_prolong.f       |   1 +
 src/ppm_mg_res_coarse.f    |   2 +-
 src/ppm_mg_res_fine.f      |   2 +-
 src/ppm_mg_restrict.f      |  74 +++++++++++---------
 src/ppm_mg_smooth_coarse.f | 140 ++++++++++++++++++++-----------------
 src/ppm_mg_smooth_fine.f   | 128 +++++++++++++++++----------------
 src/ppm_mg_solv.f          |  11 +--
 src/ppm_module_mg.f        |   6 ++
 src/ppm_module_mg_init.f   |  89 ++++++++++++-----------
 14 files changed, 247 insertions(+), 217 deletions(-)

diff --git a/src/ppm_mg_alloc_bc.f b/src/ppm_mg_alloc_bc.f
index bb66845..7504095 100644
--- a/src/ppm_mg_alloc_bc.f
+++ b/src/ppm_mg_alloc_bc.f
@@ -99,6 +99,8 @@
       USE ppm_module_substop
       USE ppm_module_error
       USE ppm_module_alloc
+      USE ppm_module_write
+
       IMPLICIT NONE
 
 #if    __KIND == __SINGLE_PRECISION | __KIND == __SINGLE_PRECISION_COMPLEX
diff --git a/src/ppm_mg_alloc_field.f b/src/ppm_mg_alloc_field.f
index dcacdbf..96348d4 100644
--- a/src/ppm_mg_alloc_field.f
+++ b/src/ppm_mg_alloc_field.f
@@ -102,6 +102,8 @@
       USE ppm_module_substart
       USE ppm_module_substop
       USE ppm_module_error
+      USE ppm_module_write
+
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION | __KIND == __SINGLE_PRECISION_COMPLEX
       INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_core.f b/src/ppm_mg_core.f
index 17a49f8..a5268c0 100644
--- a/src/ppm_mg_core.f
+++ b/src/ppm_mg_core.f
@@ -75,6 +75,7 @@
         USE ppm_module_substop
         USE ppm_module_error
         USE ppm_module_alloc
+        USE ppm_module_write
         IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
         INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_finalize.f b/src/ppm_mg_finalize.f
index abf4f73..af1e7c7 100644
--- a/src/ppm_mg_finalize.f
+++ b/src/ppm_mg_finalize.f
@@ -94,6 +94,8 @@
       USE ppm_module_substop
       USE ppm_module_error
       USE ppm_module_alloc
+      USE ppm_module_write
+
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION | __KIND == __SINGLE_PRECISION_COMPLEX
       INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_init.f b/src/ppm_mg_init.f
index cf4fb73..b154051 100644
--- a/src/ppm_mg_init.f
+++ b/src/ppm_mg_init.f
@@ -149,13 +149,13 @@
          !  Modules 
          !----------------------------------------------------------------------
          USE ppm_module_data
-         
          USE ppm_module_data_mg
          USE ppm_module_mg_alloc
          USE ppm_module_alloc
          USE ppm_module_mg_alloc
          USE ppm_module_error
-         USE ppm_module_mesh_derive
+         USE ppm_module_write
+         USE ppm_module_mesh
          USE ppm_module_substart
          USE ppm_module_substop
          USE ppm_module_typedef
diff --git a/src/ppm_mg_prolong.f b/src/ppm_mg_prolong.f
index d130b14..8cd98b6 100644
--- a/src/ppm_mg_prolong.f
+++ b/src/ppm_mg_prolong.f
@@ -92,6 +92,7 @@
          USE ppm_module_substop
          USE ppm_module_error
          USE ppm_module_alloc
+         USE ppm_module_write
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_res_coarse.f b/src/ppm_mg_res_coarse.f
index bfe6d1f..a45eaa7 100644
--- a/src/ppm_mg_res_coarse.f
+++ b/src/ppm_mg_res_coarse.f
@@ -90,7 +90,7 @@
         !-----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        
+        USE ppm_module_write
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
diff --git a/src/ppm_mg_res_fine.f b/src/ppm_mg_res_fine.f
index c29375e..f00f270 100644
--- a/src/ppm_mg_res_fine.f
+++ b/src/ppm_mg_res_fine.f
@@ -87,7 +87,7 @@
         !-----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        
+        USE ppm_module_write
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
diff --git a/src/ppm_mg_restrict.f b/src/ppm_mg_restrict.f
index f5f635b..df23f92 100644
--- a/src/ppm_mg_restrict.f
+++ b/src/ppm_mg_restrict.f
@@ -97,9 +97,12 @@
         !-----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        USE ppm_module_error
+        USE ppm_module_alloc
         USE ppm_module_substart
         USE ppm_module_substop
+        USE ppm_module_error
+        USE ppm_module_write
+        USE ppm_module_map
         IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
            INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -274,14 +277,15 @@
               ENDDO
             ENDDO   
           ENDDO 
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          ghostsize,info)
           DO isub=1,nsubs
             terr=>mgfield(isub,mlevm1)%err 
             pfc=>mgfield(isub,mlev)%fc 
@@ -352,14 +356,15 @@
             ENDDO   
            ENDDO
           ENDDO 
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          ghostsize,info)
 
 
             DO isub=1,nsubs
@@ -477,14 +482,16 @@
              ENDDO   
             ENDDO
           ENDDO 
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                          ghostsize,ppm_param_map_pop,info)
+
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          vecdim,ghostsize,info)
           DO isub=1,nsubs
             terr=>mgfield(isub,mlevm1)%err
             pfc=>mgfield(isub,mlev)%fc
@@ -573,14 +580,15 @@
             ENDDO
           ENDDO  
         ENDDO 
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                         ghostsize,ppm_param_map_ghost_get,info)
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                         ghostsize,ppm_param_map_push,info)
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                         ghostsize,ppm_param_map_send,info)
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          vecdim,ghostsize,info)
          DO isub=1,nsubs
            terr=>mgfield(isub,mlevm1)%err
            pfc=>mgfield(isub,mlev)%fc
diff --git a/src/ppm_mg_smooth_coarse.f b/src/ppm_mg_smooth_coarse.f
index 2c7afdb..fa82836 100644
--- a/src/ppm_mg_smooth_coarse.f
+++ b/src/ppm_mg_smooth_coarse.f
@@ -120,7 +120,8 @@
          USE ppm_module_error
          USE ppm_module_alloc
          USE ppm_module_map
-         
+         USE ppm_module_data_mesh
+         USE ppm_module_write
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -388,14 +389,16 @@
                !----------------------------------------------------------------
                !Communicate
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                            tuc(:,:)=uc_dummy(&
@@ -422,14 +425,15 @@
                ENDIF
               ENDDO!DO color   
               IF (isweep.EQ.nsweep) THEN
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info)
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info)
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info)
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info)
+               CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                            tuc(:,:)=uc_dummy(&
@@ -486,14 +490,15 @@
                !----------------------------------------------------------------
                !Communicate
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                  a=0
                  b=0
                  c=0
@@ -623,14 +628,15 @@
                   ENDIF
            ENDDO!DO color
                IF (isweep.EQ.nsweep) THEN
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+                CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+                CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+                CALL ppm_map_field_send(info)
+                !TODO: I'm not 100% sure about that since the signature
+                !has been changed dramatically
+                CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                ENDIF
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc  
@@ -690,14 +696,15 @@
                !----------------------------------------------------------------
                !Communicate 
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+               CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                   tuc(:,:,:)=uc_dummy(&
@@ -725,14 +732,15 @@
                     ENDIF
             ENDDO!DO color   
               IF (isweep.EQ.nsweep) THEN
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                   tuc(:,:,:)=uc_dummy(&
@@ -813,14 +821,15 @@
                !----------------------------------------------------------------
                !Communicate 
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+               CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+               CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+               CALL ppm_map_field_send(info)
+               !TODO: I'm not 100% sure about that since the signature
+               !has been changed dramatically
+               CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                  a=0
                  b=0
                  c=0
@@ -1006,14 +1015,15 @@
                    ENDIF 
            ENDDO!DO color
           IF (isweep.EQ.nsweep) THEN
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &             ghostsize,ppm_param_map_ghost_get,info) 
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &                   ghostsize,ppm_param_map_push,info) 
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &                   ghostsize,ppm_param_map_send,info) 
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &                ghostsize,ppm_param_map_pop,info) 
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                    DO isub=1,nsubs 
                     tuc=>mgfield(isub,mlev)%uc
                     DO k=1-ghostsize(3),max_node(3,mlev)+ghostsize(3)
diff --git a/src/ppm_mg_smooth_fine.f b/src/ppm_mg_smooth_fine.f
index 7bbaafb..559ab9c 100644
--- a/src/ppm_mg_smooth_fine.f
+++ b/src/ppm_mg_smooth_fine.f
@@ -114,7 +114,8 @@
          USE ppm_module_error
          USE ppm_module_alloc
          USE ppm_module_map
-         
+         USE ppm_module_data_mesh
+         USE ppm_module_write
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -353,14 +354,14 @@ dz=dz_d
               !----------------------------------------------------------------
               !Communicate
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
             DO isub=1,nsubs
               DO j=start(2,isub,1),istop(2,isub,1)
                  DO i=start(1,isub,1)+mod(j+color,2),istop(1,isub,1),2
@@ -373,14 +374,13 @@ dz=dz_d
              ENDDO !isub
         ENDDO!DO color
         IF (isweep.EQ.nsweep) THEN
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
 
         ENDIF
       ENDDO
@@ -481,14 +481,13 @@ dz=dz_d
               !Communicate red(even) if color==0 or communicate black(odd)
               !if color==1
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
               DO isub=1,nsubs
               DO k=start(3,isub,1)+e(isub),istop(3,isub,1)-g(isub)
                  DO j=start(2,isub,1)+c(isub),istop(2,isub,1)-d(isub)
@@ -512,14 +511,13 @@ dz=dz_d
            ENDDO!subs
         ENDDO!DO color
         IF (isweep.EQ.nsweep) THEN
-             CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
         ENDIF
       ENDDO
 #endif
@@ -535,14 +533,14 @@ dz=dz_d
               !Communicate red(even) if color==0 or communicate black(odd)
               !if color==1
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
            DO isub=1,nsubs
               DO j=start(2,isub,1),istop(2,isub,1)
                  DO i=start(1,isub,1)+mod(j+color,2),istop(1,isub,1),2
@@ -557,14 +555,14 @@ dz=dz_d
            ENDDO
         ENDDO!DO color
         IF (isweep.EQ.nsweep) THEN
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
          ENDIF
        ENDDO
 #elif __MESH_DIM == __3D
@@ -671,14 +669,14 @@ dz=dz_d
               !Communicate red(even) if color==0 or communicate black(odd)
               !if color==1
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
 #ifdef  __VECTOR
              DO isub=1,nsubs
               DO k=start(3,isub,1)+e(isub),istop(3,isub,1)-g(isub)
@@ -747,14 +745,14 @@ dz=dz_d
 #endif
           ENDDO!DO color
             IF (isweep.EQ.nsweep) THEN
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
            ENDIF
        ENDDO
             iopt = ppm_param_dealloc
diff --git a/src/ppm_mg_solv.f b/src/ppm_mg_solv.f
index 9f57ebd..eec243b 100644
--- a/src/ppm_mg_solv.f
+++ b/src/ppm_mg_solv.f
@@ -121,7 +121,7 @@
          !----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        
+        USE ppm_module_data_mesh
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
@@ -131,6 +131,7 @@
         USE ppm_module_mg_res
         USE ppm_module_mg_prolong
         USE ppm_module_mg_smooth
+        USE ppm_module_write
          IMPLICIT NONE
 #ifdef __MPI
        INCLUDE  'mpif.h'
@@ -583,8 +584,8 @@
               ENDIF
              uc_dummy(:,:,:,:)=0.0_MK
 #endif
-           CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(i),&
-     &                             ghostsize,ppm_param_map_init,info) 
+           CALL ppm_map_field_ghost_init(topoid,mesh_id_g(i),&
+     &                             ghostsize,info)
 #if __MESH_DIM == __2D
              iopt = ppm_param_dealloc
              ldl3(1) = 1-ghostsize(1)
@@ -658,8 +659,8 @@
               ENDIF
              uc_dummy(:,:,:,:,:)=0.0_MK
 #endif
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(i),&
-     &                             ghostsize,ppm_param_map_init,info) 
+           CALL ppm_map_field_ghost_init(topoid,mesh_id_g(i),&
+     &                             ghostsize,info)
 #if __MESH_DIM == __2D
              iopt = ppm_param_dealloc
              ldl4(1) = 1-ghostsize(1)
diff --git a/src/ppm_module_mg.f b/src/ppm_module_mg.f
index 1fab505..2b853a7 100644
--- a/src/ppm_module_mg.f
+++ b/src/ppm_module_mg.f
@@ -33,5 +33,11 @@
          USE ppm_module_mg_init
          USE ppm_module_mg_solv
          USE ppm_module_mg_finalize
+         USE ppm_module_mg_alloc
+         USE ppm_module_mg_core
+         USE ppm_module_mg_prolong
+         USE ppm_module_mg_res
+         USE ppm_module_mg_restrict
+         USE ppm_module_mg_smooth
          
       END MODULE ppm_module_mg
diff --git a/src/ppm_module_mg_init.f b/src/ppm_module_mg_init.f
index 214e920..ed91a64 100644
--- a/src/ppm_module_mg_init.f
+++ b/src/ppm_module_mg_init.f
@@ -1,23 +1,23 @@
-!-------------------------------------------------------------------------
-! Module         :            ppm_module_mg_init
-!-------------------------------------------------------------------------
-!
-! Purpose       :  module of the initialization routine
-!               
-!
-! Remarks       : 
-!
-! References    : 
-!
-! Revisions     :
-!-------------------------------------------------------------------------
-!
-!-------------------------------------------------------------------------
-!  Parallel Particle Mesh Library (PPM)
-!  Institute of Computational Science
-!  ETH Zentrum, Hirschengraben 84
-!  CH-8092 Zurich, Switzerland
-!-------------------------------------------------------------------------
+      !-------------------------------------------------------------------------
+      ! Module         :            ppm_module_mg_init
+      !-------------------------------------------------------------------------
+      !
+      ! Purpose       :  module of the initialization routine
+      !
+      !
+      ! Remarks       :
+      !
+      ! References    :
+      !
+      ! Revisions     :
+      !-------------------------------------------------------------------------
+      !
+      !-------------------------------------------------------------------------
+      !  Parallel Particle Mesh Library (PPM)
+      !  Institute of Computational Science
+      !  ETH Zentrum, Hirschengraben 84
+      !  CH-8092 Zurich, Switzerland
+      !-------------------------------------------------------------------------
 
 
 #define __SINGLE_PRECISION 1
@@ -29,30 +29,29 @@
 #define __SFIELD           9
 #define __VFIELD          10
 
-MODULE ppm_module_mg_init   
-  !--------------------------------------------------------------------------
-  !Modules
-  !-----------------------------------------------------------------------------
-
-
-  !-----------------------------------------------------------------------------
-
-  INTERFACE ppm_mg_init
-     MODULE PROCEDURE ppm_mg_init_2d_sca_s
-     MODULE PROCEDURE ppm_mg_init_2d_sca_d
-     MODULE PROCEDURE ppm_mg_init_3d_sca_s
-     MODULE PROCEDURE ppm_mg_init_3d_sca_d
-     MODULE PROCEDURE ppm_mg_init_2d_vec_s
-     MODULE PROCEDURE ppm_mg_init_2d_vec_d
-     MODULE PROCEDURE ppm_mg_init_3d_vec_s
-     MODULE PROCEDURE ppm_mg_init_3d_vec_d
-  END INTERFACE
-
-  !-----------------------------------------------------------------------------
-  ! INCLUDE THE SOURCES
-  !-----------------------------------------------------------------------------
-
-CONTAINS
+      MODULE ppm_module_mg_init
+      !-----------------------------------------------------------------
+      !Modules
+      !-----------------------------------------------------------------
+
+      !-----------------------------------------------------------------
+
+        INTERFACE ppm_mg_init
+           MODULE PROCEDURE ppm_mg_init_2d_sca_s
+           MODULE PROCEDURE ppm_mg_init_2d_sca_d
+           MODULE PROCEDURE ppm_mg_init_3d_sca_s
+           MODULE PROCEDURE ppm_mg_init_3d_sca_d
+           MODULE PROCEDURE ppm_mg_init_2d_vec_s
+           MODULE PROCEDURE ppm_mg_init_2d_vec_d
+           MODULE PROCEDURE ppm_mg_init_3d_vec_s
+           MODULE PROCEDURE ppm_mg_init_3d_vec_d
+        END INTERFACE
+
+      !-----------------------------------------------------------------
+      ! INCLUDE THE SOURCES
+      !-----------------------------------------------------------------
+
+       CONTAINS
 #define __DIM __SFIELD
 #define __MESH_DIM __2D
 #define __KIND __SINGLE_PRECISION
@@ -98,6 +97,6 @@ CONTAINS
 #undef __DIM
 
 
-END MODULE ppm_module_mg_init
+      END MODULE ppm_module_mg_init
 
 
-- 
GitLab