Index: palm/trunk/SOURCE/mod_particle_attributes.f90
===================================================================
--- palm/trunk/SOURCE/mod_particle_attributes.f90	(revision 3720)
+++ palm/trunk/SOURCE/mod_particle_attributes.f90	(revision 3786)
@@ -25,4 +25,7 @@
 ! -----------------
 ! $Id$
+! interoperable C datatypes introduced in particle type to avoid compiler warnings
+! 
+! 3720 2019-02-06 13:19:55Z knoop
 ! time_prel replaced by last_particle_release_time
 ! 
@@ -217,31 +220,37 @@
     REAL(wp), DIMENSION(:), ALLOCATABLE     ::  log_z_z0   !< Precalculate LOG(z/z0)
 
-
+!
+!-- WARNING: For compatibility of derived types, the BIND attribute is required, and interoperable C
+!-- datatypes must be used. These type are hard wired here! So changes in working precision (wp, iwp)
+!-- will not affect the particle_type!
+!-- The main reason for introducing the interoperable datatypes was to avoid compiler warnings of
+!-- the gfortran compiler.
+!-- The BIND attribite is required because of C_F_POINTER usage in the pmc particle interface.
     TYPE, BIND(C) ::  particle_type
-        REAL(wp)     ::  aux1          !< auxiliary multi-purpose feature
-        REAL(wp)     ::  aux2          !< auxiliary multi-purpose feature
-        REAL(wp)     ::  radius        !< radius of particle
-        REAL(wp)     ::  age           !< age of particle
-        REAL(wp)     ::  age_m         !<
-        REAL(wp)     ::  dt_sum        !<
-        REAL(wp)     ::  e_m           !< interpolated sgs tke
-        REAL(wp)     ::  origin_x      !< origin x-position of particle (changed cyclic bc)
-        REAL(wp)     ::  origin_y      !< origin y-position of particle (changed cyclic bc)
-        REAL(wp)     ::  origin_z      !< origin z-position of particle (changed cyclic bc)
-        REAL(wp)     ::  rvar1         !<
-        REAL(wp)     ::  rvar2         !<
-        REAL(wp)     ::  rvar3         !<
-        REAL(wp)     ::  speed_x       !< speed of particle in x
-        REAL(wp)     ::  speed_y       !< speed of particle in y
-        REAL(wp)     ::  speed_z       !< speed of particle in z
-        REAL(wp)     ::  weight_factor !< weighting factor
-        REAL(wp)     ::  x             !< x-position
-        REAL(wp)     ::  y             !< y-position
-        REAL(wp)     ::  z             !< z-position
-        INTEGER(iwp) ::  class         !< radius class needed for collision
-        INTEGER(iwp) ::  group         !< number of particle group
-        INTEGER(idp) ::  id            !< particle ID (64 bit integer)
+        REAL(C_DOUBLE) ::  aux1          !< auxiliary multi-purpose feature
+        REAL(C_DOUBLE) ::  aux2          !< auxiliary multi-purpose feature
+        REAL(C_DOUBLE) ::  radius        !< radius of particle
+        REAL(C_DOUBLE) ::  age           !< age of particle
+        REAL(C_DOUBLE) ::  age_m         !<
+        REAL(C_DOUBLE) ::  dt_sum        !<
+        REAL(C_DOUBLE) ::  e_m           !< interpolated sgs tke
+        REAL(C_DOUBLE) ::  origin_x      !< origin x-position of particle (changed cyclic bc)
+        REAL(C_DOUBLE) ::  origin_y      !< origin y-position of particle (changed cyclic bc)
+        REAL(C_DOUBLE) ::  origin_z      !< origin z-position of particle (changed cyclic bc)
+        REAL(C_DOUBLE) ::  rvar1         !<
+        REAL(C_DOUBLE) ::  rvar2         !<
+        REAL(C_DOUBLE) ::  rvar3         !<
+        REAL(C_DOUBLE) ::  speed_x       !< speed of particle in x
+        REAL(C_DOUBLE) ::  speed_y       !< speed of particle in y
+        REAL(C_DOUBLE) ::  speed_z       !< speed of particle in z
+        REAL(C_DOUBLE) ::  weight_factor !< weighting factor
+        REAL(C_DOUBLE) ::  x             !< x-position
+        REAL(C_DOUBLE) ::  y             !< y-position
+        REAL(C_DOUBLE) ::  z             !< z-position
+        INTEGER(C_INT) ::  class         !< radius class needed for collision
+        INTEGER(C_INT) ::  group         !< number of particle group
+        INTEGER(C_LONG_LONG) ::  id            !< particle ID (64 bit integer)
         LOGICAL(C_BOOL) ::  particle_mask !< if this parameter is set to false the particle will be deleted
-        INTEGER(iwp) ::  block_nr      !< number for sorting (removable?)
+        INTEGER(C_INT) ::  block_nr      !< number for sorting (removable?)
     END TYPE particle_type
 
