Index: palm/trunk/SOURCE/check_parameters.f90
===================================================================
--- palm/trunk/SOURCE/check_parameters.f90	(revision 2077)
+++ palm/trunk/SOURCE/check_parameters.f90	(revision 2084)
@@ -20,5 +20,5 @@
 ! Current revisions:
 ! -----------------
-! 
+! Removed anelastic + multigrid error message
 ! 
 ! Former revisions:
@@ -874,12 +874,4 @@
                         'momentum_advec = "ws-scheme"'
        CALL message( 'check_parameters', 'PA0447', 1, 2, 0, 6, 0 )
-    ENDIF
-    IF ( TRIM( approximation ) == 'anelastic'   .AND.   &
-         TRIM( psolver ) == 'multigrid' )  THEN
-       message_string = 'Anelastic approximation currently only supports: ' // &
-                        'psolver = "poisfft", ' // &
-                        'psolver = "sor" and ' // &
-                        'psolver = "multigrid_noopt"'
-       CALL message( 'check_parameters', 'PA0448', 1, 2, 0, 6, 0 )
     ENDIF
     IF ( TRIM( approximation ) == 'anelastic'   .AND.   &
Index: palm/trunk/SOURCE/poismg_mod.f90
===================================================================
--- palm/trunk/SOURCE/poismg_mod.f90	(revision 2077)
+++ palm/trunk/SOURCE/poismg_mod.f90	(revision 2084)
@@ -20,5 +20,5 @@
 ! Current revisions:
 ! -----------------
-! 
+! Bugfix: missing rho_air_mg even/odd sorting implemented
 ! 
 ! Former revisions:
@@ -108,4 +108,6 @@
     REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE ::  f1_mg_b, f2_mg_b, f3_mg_b  !< blocked version of f1_mg ...
 
+    REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE ::  rho_air_mg_b               !< blocked version of rho_air_mg
+
     INTERFACE poismg
        MODULE PROCEDURE poismg
@@ -315,7 +317,7 @@
                 kp1 = k-ind_even_odd
                 r(k,j,i) = f_mg(k,j,i)                                         &
-                      - rho_air_mg(k,l) * ddx2_mg(l) *                         &
+                      - rho_air_mg_b(k,l) * ddx2_mg(l) *                         &
                       ( p_mg(k,j,i+1) +  p_mg(k,j,i-1)  )                      &
-                      - rho_air_mg(k,l) * ddy2_mg(l) *                         &
+                      - rho_air_mg_b(k,l) * ddy2_mg(l) *                         &
                       ( p_mg(k,j+1,i) + p_mg(k,j-1,i)  )                       &
                       - f2_mg_b(k,l) * p_mg(kp1,j,i)                           &
@@ -328,7 +330,7 @@
                 kp1 = k+ind_even_odd+1
                 r(k,j,i) = f_mg(k,j,i)                                         &
-                      - rho_air_mg(k,l) * ddx2_mg(l) *                         &
+                      - rho_air_mg_b(k,l) * ddx2_mg(l) *                         &
                       ( p_mg(k,j,i+1) +  p_mg(k,j,i-1)  )                      &
-                      - rho_air_mg(k,l) * ddy2_mg(l) *                         &
+                      - rho_air_mg_b(k,l) * ddy2_mg(l) *                         &
                       ( p_mg(k,j+1,i) + p_mg(k,j-1,i)  )                       &
                       - f2_mg_b(k,l) * p_mg(kp1,j,i)                           &
@@ -761,7 +763,7 @@
                          kp1 = k-ind_even_odd
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -780,7 +782,7 @@
                          kp1 = k-ind_even_odd
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -799,7 +801,7 @@
                          kp1 = k+ind_even_odd+1
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -818,7 +820,7 @@
                          kp1 = k+ind_even_odd+1
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -849,7 +851,7 @@
                          j   = jj
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -858,7 +860,7 @@
                          j = jj+2
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -875,7 +877,7 @@
                          j   = jj
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -884,7 +886,7 @@
                          j = jj+2
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -901,7 +903,7 @@
                          j   = jj
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -910,7 +912,7 @@
                          j = jj+2
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -927,7 +929,7 @@
                          j   = jj
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -936,7 +938,7 @@
                          j = jj+2
                          p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * (               &
-                                 rho_air_mg(k,l) * ddx2_mg(l) *                &
+                                 rho_air_mg_b(k,l) * ddx2_mg(l) *                &
                                ( p_mg(k,j,i+1) + p_mg(k,j,i-1) )               &
-                               + rho_air_mg(k,l) * ddy2_mg(l) *                &
+                               + rho_air_mg_b(k,l) * ddy2_mg(l) *                &
                                ( p_mg(k,j+1,i) + p_mg(k,j-1,i) )               &
                                + f2_mg_b(k,l) * p_mg(kp1,j,i)                  &
@@ -1753,5 +1755,5 @@
 
        USE arrays_3d,                                                          &
-           ONLY:  f1_mg, f2_mg, f3_mg
+           ONLY:  f1_mg, f2_mg, f3_mg, rho_air_mg
 
        USE control_parameters,                                                 &
@@ -1779,5 +1781,6 @@
        ALLOCATE( f1_mg_b(nzb:nzt+1,maximum_grid_level),                        &
                  f2_mg_b(nzb:nzt+1,maximum_grid_level),                        &
-                 f3_mg_b(nzb:nzt+1,maximum_grid_level) )
+                 f3_mg_b(nzb:nzt+1,maximum_grid_level),                        &
+                 rho_air_mg_b(nzb:nzt+1,maximum_grid_level) )
 
 !
@@ -1800,4 +1803,7 @@
                                           f3_mg_b(nzb:nzt_mg(grid_level)+1,l), &
                                           l )
+          CALL sort_k_to_even_odd_blocks( rho_air_mg(nzb+1:nzt_mg(grid_level),l),   &
+                                          rho_air_mg_b(nzb:nzt_mg(grid_level)+1,l), &
+                                          l )
        ENDDO
 
