Index: /palm/trunk/SOURCE/advec_s_bc.f90
===================================================================
--- /palm/trunk/SOURCE/advec_s_bc.f90	(revision 1009)
+++ /palm/trunk/SOURCE/advec_s_bc.f90	(revision 1010)
@@ -4,5 +4,5 @@
 ! Current revisions:
 ! -----------------
-! 
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -69,5 +69,9 @@
              tendenz, t1, t2, zaehler
     REAL ::  fmax(2), fmax_l(2)
+#if defined( __nopointer )
+    REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  sk
+#else
     REAL, DIMENSION(:,:,:), POINTER ::  sk
+#endif
 
     REAL, DIMENSION(:,:), ALLOCATABLE ::  a0, a1, a12, a2, a22, immb, imme,  &
Index: /palm/trunk/SOURCE/advec_s_pw.f90
===================================================================
--- /palm/trunk/SOURCE/advec_s_pw.f90	(revision 1009)
+++ /palm/trunk/SOURCE/advec_s_pw.f90	(revision 1010)
@@ -4,5 +4,5 @@
 ! Current revisions:
 ! -----------------
-! 
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -57,5 +57,9 @@
        INTEGER ::  i, j, k
 
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  sk
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  sk
+#endif
  
 
@@ -94,5 +98,9 @@
        INTEGER ::  i, j, k
 
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  sk
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  sk
+#endif
 
 
Index: /palm/trunk/SOURCE/advec_s_up.f90
===================================================================
--- /palm/trunk/SOURCE/advec_s_up.f90	(revision 1009)
+++ /palm/trunk/SOURCE/advec_s_up.f90	(revision 1010)
@@ -4,4 +4,5 @@
 ! Current revisions:
 ! -----------------
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -54,5 +55,9 @@
 
        REAL ::  ukomp, vkomp, wkomp
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  sk
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  sk
+#endif
 
 
@@ -113,5 +118,9 @@
 
        REAL ::  ukomp, vkomp, wkomp
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  sk
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  sk
+#endif
 
 
Index: /palm/trunk/SOURCE/advec_ws.f90
===================================================================
--- /palm/trunk/SOURCE/advec_ws.f90	(revision 1009)
+++ /palm/trunk/SOURCE/advec_ws.f90	(revision 1010)
@@ -4,4 +4,5 @@
 ! Current revisions:
 ! ------------------
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -280,13 +281,17 @@
                    ibit7, ibit8, i_omp, j, k, k_mm, k_pp, k_ppp,  tn
        REAL    ::  diss_d, div, flux_d, u_comp, v_comp
-       REAL, DIMENSION(:,:,:), POINTER    :: sk
-       REAL, DIMENSION(nzb:nzt+1)         :: diss_n, diss_r, diss_t, flux_n,  &
-                                             flux_r, flux_t
-       REAL, DIMENSION(nzb+1:nzt,0:threads_per_task-1) :: swap_diss_y_local,  &
-                                                          swap_flux_y_local
-       REAL, DIMENSION(nzb+1:nzt,nys:nyn,0:threads_per_task-1) ::             &
-                                                          swap_diss_x_local,  &
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  sk
+#else
+       REAL, DIMENSION(:,:,:), POINTER    ::  sk
+#endif
+       REAL, DIMENSION(nzb:nzt+1)         ::  diss_n, diss_r, diss_t, flux_n,  &
+                                              flux_r, flux_t
+       REAL, DIMENSION(nzb+1:nzt,0:threads_per_task-1) ::  swap_diss_y_local,  &
+                                                           swap_flux_y_local
+       REAL, DIMENSION(nzb+1:nzt,nys:nyn,0:threads_per_task-1) ::              &
+                                                          swap_diss_x_local,   &
                                                           swap_flux_x_local
-       CHARACTER (LEN = *), INTENT(IN)    :: sk_char
+       CHARACTER (LEN = *), INTENT(IN)    ::  sk_char
 
 !
@@ -1930,12 +1935,16 @@
        INTEGER ::  i, ibit0, ibit1, ibit2, ibit3, ibit4, ibit5, ibit6,        &
                    ibit7, ibit8, j, k, k_mm, k_pp, k_ppp, tn = 0
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  sk
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  sk
-       REAL    :: diss_d, div, flux_d, u_comp, v_comp
-       REAL, DIMENSION(nzb:nzt)   :: diss_n, diss_r, diss_t, flux_n, flux_r,  &
-                                     flux_t
-       REAL, DIMENSION(nzb+1:nzt) :: swap_diss_y_local, swap_flux_y_local
-       REAL, DIMENSION(nzb+1:nzt,nys:nyn) :: swap_diss_x_local,               &
-                                             swap_flux_x_local
-       CHARACTER (LEN = *), INTENT(IN)    :: sk_char
+#endif
+       REAL ::  diss_d, div, flux_d, u_comp, v_comp
+       REAL, DIMENSION(nzb:nzt)   ::  diss_n, diss_r, diss_t, flux_n, flux_r,  &
+                                      flux_t
+       REAL, DIMENSION(nzb+1:nzt) ::  swap_diss_y_local, swap_flux_y_local
+       REAL, DIMENSION(nzb+1:nzt,nys:nyn) ::  swap_diss_x_local,               &
+                                              swap_flux_x_local
+       CHARACTER (LEN = *), INTENT(IN)    ::  sk_char
 
 !
Index: /palm/trunk/SOURCE/buoyancy.f90
===================================================================
--- /palm/trunk/SOURCE/buoyancy.f90	(revision 1009)
+++ /palm/trunk/SOURCE/buoyancy.f90	(revision 1010)
@@ -4,5 +4,5 @@
 ! Currrent revisions:
 ! -----------------
-! 
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -81,5 +81,9 @@
        INTEGER ::  i, j, k, pr, wind_component
        REAL    ::  var_reference
-       REAL, DIMENSION(:,:,:), POINTER  ::  var
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var
+#else
+       REAL, DIMENSION(:,:,:), POINTER ::  var
+#endif
 
 
@@ -177,5 +181,9 @@
        INTEGER ::  i, j, k, pr, wind_component
        REAL    ::  var_reference
-       REAL, DIMENSION(:,:,:), POINTER  ::  var
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var
+#else
+       REAL, DIMENSION(:,:,:), POINTER ::  var
+#endif
 
 
@@ -254,5 +262,9 @@
 
        INTEGER ::  i, j, k, omp_get_thread_num, pr, tn
-       REAL, DIMENSION(:,:,:), POINTER  ::  var
+#if defined( __nopointer )
+       REAL, DIMENSION(:,:,:) ::  var
+#else
+       REAL, DIMENSION(:,:,:), POINTER ::  var
+#endif
 
 !
Index: /palm/trunk/SOURCE/diffusion_e.f90
===================================================================
--- /palm/trunk/SOURCE/diffusion_e.f90	(revision 1009)
+++ /palm/trunk/SOURCE/diffusion_e.f90	(revision 1010)
@@ -4,5 +4,5 @@
 ! Current revisions:
 ! -----------------
-!
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -80,5 +80,9 @@
        REAL    ::  dvar_dz, l_stable, phi_m, var_reference
 
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  var
+#endif
        REAL, DIMENSION(nzb+1:nzt,nys:nyn) ::  dissipation, l, ll
  
@@ -298,5 +302,9 @@
        REAL    ::  dvar_dz, l_stable, phi_m, var_reference
 
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  var
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  var
+#endif
        REAL, DIMENSION(nzb+1:nzt) ::  dissipation, l, ll
 
Index: /palm/trunk/SOURCE/diffusion_s.f90
===================================================================
--- /palm/trunk/SOURCE/diffusion_s.f90	(revision 1009)
+++ /palm/trunk/SOURCE/diffusion_s.f90	(revision 1010)
@@ -4,5 +4,5 @@
 ! Current revisions:
 ! ------------------
-!
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -71,5 +71,9 @@
        REAL    ::  wall_s_flux(0:4)
        REAL, DIMENSION(nysg:nyng,nxlg:nxrg) ::  s_flux_b, s_flux_t
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  s
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  s
+#endif
 
        DO  i = nxl, nxr
@@ -181,5 +185,9 @@
        REAL    ::  wall_s_flux(0:4)
        REAL, DIMENSION(nysg:nyng,nxlg:nxrg) ::  s_flux_b, s_flux_t
+#if defined( __nopointer )
+       REAL, DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ::  s
+#else
        REAL, DIMENSION(:,:,:), POINTER ::  s
+#endif
 
 !
Index: /palm/trunk/SOURCE/init_3d_model.f90
===================================================================
--- /palm/trunk/SOURCE/init_3d_model.f90	(revision 1009)
+++ /palm/trunk/SOURCE/init_3d_model.f90	(revision 1010)
@@ -7,5 +7,5 @@
 ! Current revisions:
 ! ------------------
-!
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -238,24 +238,44 @@
               z0h(nysg:nyng,nxlg:nxrg) )
 
-    ALLOCATE( d(nzb+1:nzt,nys:nyn,nxl:nxr),        &
-              e_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              e_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              e_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              kh(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
-              km(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
-              p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),    &
-              pt_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
-              pt_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
-              pt_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
-              tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
-              u_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              u_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              u_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              v_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              v_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              v_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              w_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
-              w_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+    ALLOCATE( d(nzb+1:nzt,nys:nyn,nxl:nxr),         &
+              kh(nzb:nzt+1,nysg:nyng,nxlg:nxrg),    &
+              km(nzb:nzt+1,nysg:nyng,nxlg:nxrg),    &
+              p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),     &
+              tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+
+#if defined( __nopointer )
+    ALLOCATE( e(nzb:nzt+1,nysg:nyng,nxlg:nxrg),     &
+              e_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              pt(nzb:nzt+1,nysg:nyng,nxlg:nxrg),    &
+              pt_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+              u(nzb:nzt+1,nysg:nyng,nxlg:nxrg),     &
+              u_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              v(nzb:nzt+1,nysg:nyng,nxlg:nxrg),     &
+              v_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              w(nzb:nzt+1,nysg:nyng,nxlg:nxrg),     &
+              w_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              te_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+              tpt_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
+              tu_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+              tv_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+              tw_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#else
+    ALLOCATE( e_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              e_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              e_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              pt_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+              pt_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+              pt_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
+              u_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              u_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              u_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              v_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              v_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              v_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              w_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+              w_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
               w_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#endif
+
 !
 !-- Following array is required for perturbation pressure within the iterative
@@ -280,17 +300,31 @@
 !
 !--    3D-humidity/scalar arrays
+#if defined( __nopointer )
+       ALLOCATE( q(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+                 q_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
+                 tq_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#else
        ALLOCATE( q_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
                  q_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
                  q_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#endif
 
 !
 !--    3D-arrays needed for humidity only
        IF ( humidity )  THEN
+#if defined( __nopointer )
+          ALLOCATE( vpt(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#else
           ALLOCATE( vpt_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#endif
 
           IF ( cloud_physics ) THEN
 !
 !--          Liquid water content
+#if defined( __nopointer )
+             ALLOCATE ( ql(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#else
              ALLOCATE ( ql_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#endif
 !
 !--          Precipitation amount and rate (only needed if output is switched)
@@ -301,9 +335,15 @@
           IF ( cloud_droplets )  THEN
 !
-!--          Liquid water content, change in liquid water content,
-!--          real volume of particles (with weighting), volume of particles
+!--          Liquid water content, change in liquid water content
+#if defined( __nopointer )
+             ALLOCATE ( ql(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
+                        ql_c(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#else
              ALLOCATE ( ql_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
-                        ql_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
-                        ql_v(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
+                        ql_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#endif
+!
+!--          Real volume of particles (with weighting), volume of particles
+             ALLOCATE ( ql_v(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
                         ql_vp(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
           ENDIF
@@ -316,4 +356,11 @@
        ALLOCATE( saswsb(nysg:nyng,nxlg:nxrg), &
                  saswst(nysg:nyng,nxlg:nxrg) )
+#if defined( __nopointer )
+       ALLOCATE( prho(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+                 rho(nzb:nzt+1,nysg:nyng,nxlg:nxrg),    &
+                 sa(nzb:nzt+1,nysg:nyng,nxlg:nxrg),     &
+                 sa_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),   &
+                 tsa_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
+#else
        ALLOCATE( prho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
                  rho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
@@ -324,4 +371,5 @@
        rho  => rho_1  ! routines calc_mean_profile and diffusion_e require
                       ! density to be apointer
+#endif
        IF ( humidity_remote )  THEN
           ALLOCATE( qswst_remote(nysg:nyng,nxlg:nxrg))
@@ -412,4 +460,5 @@
 
 
+#if ! defined( __nopointer )
 !
 !-- Initial assignment of the pointers
@@ -433,4 +482,5 @@
        sa => sa_1;  sa_p => sa_2;  tsa_m => sa_3
     ENDIF
+#endif
 
 !
Index: /palm/trunk/SOURCE/modules.f90
===================================================================
--- /palm/trunk/SOURCE/modules.f90	(revision 1009)
+++ /palm/trunk/SOURCE/modules.f90	(revision 1010)
@@ -4,5 +4,5 @@
 ! Current revisions:
 ! -----------------
-!
+! pointer free version can be generated with cpp switch __nopointer
 !
 ! Former revisions:
@@ -359,4 +359,10 @@
           v_m_s, w_m_l, w_m_n, w_m_r, w_m_s
 
+#if defined( __nopointer )
+    REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET ::                             &
+          e, e_p, p, prho, pt, pt_p, q, q_p, ql, ql_c, ql_v, ql_vp, rho, sa,   &
+          sa_p, te_m, tpt_m, tq_m, tsa_m, tu_m, tv_m, tw_m, u, u_p, v, v_p,    &
+          vpt, w, w_p
+#else
     REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET ::                             &
           e_1, e_2, e_3, p, prho_1, pt_1, pt_2, pt_3, q_1, q_2, q_3, ql_v,     &
@@ -367,4 +373,5 @@
           e, e_p, prho, pt, pt_p, q, q_p, ql, ql_c, rho, sa, sa_p, te_m,       &
           tpt_m, tq_m, tsa_m, tu_m, tv_m, tw_m, u, u_p, v, v_p, vpt, w, w_p
+#endif
 
     REAL, DIMENSION(:,:,:,:), ALLOCATABLE ::  rif_wall
@@ -1021,6 +1028,9 @@
 
           CHARACTER (LEN=*), INTENT(IN)   ::  sk_char
+#if defined( __nopointer )
+          REAL, DIMENSION(:,:,:) ::  sk
+#else
           REAL, DIMENSION(:,:,:), POINTER ::  sk
-
+#endif
        END SUBROUTINE advec_s_bc
 
Index: /palm/trunk/SOURCE/swap_timelevel.f90
===================================================================
--- /palm/trunk/SOURCE/swap_timelevel.f90	(revision 1009)
+++ /palm/trunk/SOURCE/swap_timelevel.f90	(revision 1010)
@@ -4,5 +4,5 @@
 ! Current revisions:
 ! -----------------
-!
+! cpp switch __nopointer added for pointer free version
 !
 ! Former revisions:
@@ -46,7 +46,4 @@
     IMPLICIT NONE
 
-
-    CALL cpu_log( log_point(28), 'swap_timelevel', 'start' )
-
 !
 !-- Incrementing timestep counter
@@ -55,4 +52,25 @@
 !
 !-- Swap of variables
+#if defined( __nopointer )
+    CALL cpu_log( log_point(28), 'swap_timelevel (nop)', 'start' )
+
+    u  = u_p
+    v  = v_p
+    w  = w_p
+    pt = pt_p
+    IF ( .NOT. constant_diffusion )  THEN
+       e = e_p
+    ENDIF
+    IF ( ocean )  THEN
+       sa = sa_p
+    ENDIF
+    IF ( humidity  .OR.  passive_scalar )  THEN
+       q = q_p
+    ENDIF
+
+    CALL cpu_log( log_point(28), 'swap_timelevel (nop)', 'stop' )
+#else
+    CALL cpu_log( log_point(28), 'swap_timelevel', 'start' )
+
     SELECT CASE ( MOD( timestep_count, 2 ) )
 
@@ -94,4 +112,5 @@
 
     CALL cpu_log( log_point(28), 'swap_timelevel', 'stop' )
+#endif
 
  END SUBROUTINE swap_timelevel
