<p><b>fanglin.yang@noaa.gov</b> 2012-05-08 20:15:13 -0600 (Tue, 08 May 2012)</p><p>update 20120508 10PM<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/GFS_Initialize.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/GFS_Initialize.f        2012-05-09 02:13:03 UTC (rev 1880)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/GFS_Initialize.f        2012-05-09 02:15:13 UTC (rev 1881)
@@ -26,33 +26,52 @@
 !!USES:
 !
 !fy USE GFS_GetCf_ESMFMod
- USE MACHINE, ONLY : kind_io4, kind_phys
- USE namelist_def, ONLY : ndsl, nst_fcst
+!fy USE MACHINE, ONLY : kind_io4, kind_phys
+!fy USE namelist_def, ONLY : ndsl, nst_fcst
 !fy use gfsio_module , only : gfsio_init
- use module_ras , only : nrcmax, fix_ncld_hr
- use gfs_internalstate_module
+!fy use module_ras , only : nrcmax, fix_ncld_hr
 
+  use machine 
+  use resol_def 
+  use layout1  
+  use vert_def  
+  use date_def    
+  use gg_def    
+  use coordinate_def
+  use namelist_def  
+  use mpi_def 
+  use ozne_def 
+  use Sfc_Flx_ESMFMod
+  use Nst_Var_ESMFMod
+  use d3d_def
+  use gfsmisc_def
+! use cmp_comm , only : Coupler_id
+
+
  IMPLICIT none
 
  CONTAINS
 
 !=============================================================================================
 !fy SUBROUTINE GFS_Initialize(gcGFS, gis, clock, rc)
- SUBROUTINE GFS_Initialize(me,fhour,levs_mpas,ncell,xlon,xlat,              &amp;
-                           lats_node_r,dt_mpas,nlunit,gfs_namelist,gis)
+ SUBROUTINE GFS_Initialize(me,fhour,levs_mpas,ncell,xlon_mpas,xlat_mpas, &amp;
+                           lats_node_r,dt_mpas,nlunit,gfs_namelist)
 !=============================================================================================
 
- integer(kind=kind_io4), intent(in)   :: me           !me=0 is master task
- integer(kind=kind_io4), intent(in)   :: levs_mpas    !MPAS vertical layers                
- integer(kind=kind_io4), intent(in)   :: ncell        !MPAS number of cells for each task
- integer(kind=kind_io4), intent(in)   :: nlunit       !unit to read gfs_namelist
- integer,                intent(in)   :: lats_node_r  !latitude points, 1 for MPAS
- real(kind=kind_phys),   intent(in)   :: dt_mpas      !MPAS timestep in seconds
- real(kind=kind_phys),   intent(in)   :: fhour        !MPAS forecast time 
- real(kind=kind_phys),   intent(in)   :: xlon(ncell)  !MPAS cell longitude             
- real(kind=kind_phys),   intent(in)   :: xlat(ncell)  !MPAS cell latitude              
+ integer(kind=kind_io4), intent(in)   :: me                !me=0 is master task
+ integer(kind=kind_io4), intent(in)   :: levs_mpas         !MPAS vertical layers                
+ integer(kind=kind_io4), intent(in)   :: ncell             !MPAS number of cells for each task
+ integer(kind=kind_io4), intent(in)   :: nlunit            !unit to read gfs_namelist
+ integer,                intent(in)   :: lats_node_r       !latitude points, 1 for MPAS
+ real(kind=kind_phys),   intent(in)   :: dt_mpas           !MPAS timestep in seconds
+ real(kind=kind_phys),   intent(in)   :: fhour             !MPAS forecast time 
+ real(kind=kind_phys),   intent(in)   :: xlon_mpas(ncell)  !MPAS cell longitude             
+ real(kind=kind_phys),   intent(in)   :: xlat_mpas(ncell)  !MPAS cell latitude              
  character (len=*),      intent(in)   :: gfs_namelist
 
+ TYPE(Sfc_Var_Data)    :: sfc_fld
+ TYPE(Flx_Var_Data)    :: flx_fld
+ TYPE(Nst_Var_Data)    :: nst_fld
 
 ! This subroutine set up the internal state variables,
 ! allocate internal state arrays for initializing the GFS system.
@@ -60,7 +79,7 @@
 
 !fy TYPE(ESMF_VM)                                   :: vm_local   ! ESMF virtual machine
 !fy TYPE(ESMF_GridComp),              INTENT(inout) :: gcGFS
-  TYPE(GFS_InternalState), POINTER, INTENT(inout) :: gis
+!fy  TYPE(GFS_InternalState), POINTER, INTENT(inout) :: gis
 !fy TYPE(ESMF_Clock),                 INTENT(inout) :: clock
 ! INTEGER,                          INTENT(out)   :: rc
 !fy INTEGER,             DIMENSION(mpi_status_size) :: status
@@ -95,46 +114,56 @@
 
 !fy npe_single_member = gis%npe_single_member
 !fy print *,' npe_single_member=',npe_single_member
- CALL COMPNS(gis%DELTIM,gis%IRET,                                            &amp;
-!            gis%ntrac,   gis%nxpt, gis%nypt, gis%jintmx, gis%jcap,          &amp;
-             gis%ntrac,                       gis%jcapg,  gis%jcap,          &amp;
-             gis%levs,    gis%levr, gis%lonf, gis%lonr,   gis%latg, gis%latr,&amp;
-             gis%ntoz,    gis%ntcw, gis%ncld, gis%lsoil,  gis%nmtvr,         &amp;
-!fy          gis%num_p3d, gis%num_p2d, me,    gis%nam_gfs%nlunit, gis%nam_gfs%gfs_namelist)
-             gis%num_p3d, gis%num_p2d, me,    nlunit, gfs_namelist)
+!fy CALL COMPNS(gis%DELTIM,gis%IRET,                                            &amp;
+!fy!            gis%ntrac,   gis%nxpt, gis%nypt, gis%jintmx, gis%jcap,          &amp;
+!fy             gis%ntrac,                       gis%jcapg,  gis%jcap,          &amp;
+!fy             gis%levs,    gis%levr, gis%lonf, gis%lonr,   gis%latg, gis%latr,&amp;
+!fy             gis%ntoz,    gis%ntcw, gis%ncld, gis%lsoil,  gis%nmtvr,         &amp;
+!fy             gis%num_p3d, gis%num_p2d, me,    gis%nam_gfs%nlunit, gis%nam_gfs%gfs_namelist)
 
+ CALL COMPNS(DELTIM,IRET,                               &amp;
+             ntrac,   jcapg,  jcap,                     &amp;
+             levs,    levr, lonf, lonr,   latg, latr,   &amp;
+             ntoz,    ntcw, ncld, lsoil,  nmtvr,        &amp;
+             num_p3d, num_p2d, me, nlunit, gfs_namelist)
+
 !---------------
 !--for MPAS use ncell points for each task
- gis%lonr=ncell
- gis%latr=1               !lat dimention is meaningless for MPAS cells
- gis%deltim=dt_mpas
- if(levs_mpas.ne.gis%levs) gis%levs=levs_mpas
+ if(lonr.ne.ncell) lonr=ncell
+ if(ngptc.gt.lonr) ngptc=lonr
+ if(levs_mpas.ne.levs) levs=levs_mpas
+ latr=1                    !lat dimention is not used for MPAS cells
+ deltim=dt_mpas
+ ipt_lats_node_r=1
+ if(latg.lt.1) latg=880    !total latitudinal points, not really used
+
 !---------------
 
 !
  CALL set_soilveg(me,nlunit)
- call set_tracer_const(gis%ntrac,me,nlunit)        
+!fy call set_tracer_const(gis%ntrac,me,nlunit)        
+ call set_tracer_const(ntrac,me,nlunit)        
 !
 
-      ntrac   = gis%ntrac
-!     nxpt    = gis%nxpt
-!     nypt    = gis%nypt
-!     jintmx  = gis%jintmx
-      jcapg   = gis%jcapg
-      jcap    = gis%jcap
-      levs    = gis%levs
-      levr    = gis%levr
-      lonf    = gis%lonf
-      lonr    = gis%lonr
-      latg    = gis%latg
-      latr    = gis%latr
-      ntoz    = gis%ntoz
-      ntcw    = gis%ntcw
-      ncld    = gis%ncld
-      lsoil   = gis%lsoil
-      nmtvr   = gis%nmtvr
-      num_p3d = gis%num_p3d
-      num_p2d = gis%num_p2d
+!fy      ntrac   = gis%ntrac
+!fy!     nxpt    = gis%nxpt
+!fy!     nypt    = gis%nypt
+!fy!     jintmx  = gis%jintmx
+!fy      jcapg   = gis%jcapg
+!fy      jcap    = gis%jcap
+!fy      levs    = gis%levs
+!fy      levr    = gis%levr
+!fy      lonf    = gis%lonf
+!fy      lonr    = gis%lonr
+!fy      latg    = gis%latg
+!fy      latr    = gis%latr
+!fy      ntoz    = gis%ntoz
+!fy      ntcw    = gis%ntcw
+!fy      ncld    = gis%ncld
+!fy      lsoil   = gis%lsoil
+!fy      nmtvr   = gis%nmtvr
+!fy      num_p3d = gis%num_p3d
+!fy      num_p2d = gis%num_p2d
 !fy   if (gis%nam_gfs%Total_Member &lt;= 1) then
 !fy     ens_nam=' '
 !fy   else
@@ -150,7 +179,7 @@
       if (levs .gt. 99) ivsupa  = 200509
 !
       levh   = ntrac*levs
-      gis%levh = levh             ! Added by Weiyu
+!fy      gis%levh = levh             ! Added by Weiyu
 !     latgd  = latg+ 2*jintmx 
       latgd  = latg
       jcap1  = jcap+1 
@@ -204,11 +233,14 @@
 
 !
       if (ntrac-ncld-1 &gt; 0) then
-        allocate ( gis%fscav(ntrac-ncld-1), stat = ierr )
-        gis%fscav = 0.0
+!fy     allocate ( gis%fscav(ntrac-ncld-1), stat = ierr )
+!fy     gis%fscav = 0.0
+        allocate ( fscav(ntrac-ncld-1), stat = ierr )
+        fscav = 0.0
       endif
 
-      gis%lnt2    = lnt2
+!fy   gis%lnt2    = lnt2
+      lnt2    = lnt2
 
 !fy   allocate(lat1s_a(0:jcap))
 !fy   allocate(lat1s_r(0:jcap))
@@ -226,6 +258,11 @@
       allocate(sinlat_r(latr))
       allocate(coslat_r(latr))
 
+!---for MPAS
+      allocate(sinlat_r2(lonr,latr))
+      allocate(coslat_r2(lonr,latr))
+!---for MPAS
+
 !fy   allocate(am(levs,levs))
 !fy   allocate(bm(levs,levs))
 !fy   allocate(cm(levs,levs))
@@ -284,8 +321,8 @@
 !fy      d_m  =444444444.
 !
 
-      allocate(z(lnt2))
-      allocate(z_r(lnt2))
+!fy   allocate(z(lnt2))
+!fy   allocate(z_r(lnt2))
 !
       nfluxes = 153
 !fy   allocate(fmm(lonr*latr,nfluxes),lbmm(lonr*latr,nfluxes))
@@ -293,9 +330,9 @@
 
 !
 !fy   allocate(gis%LONSPERLAT(latg))
+!fy   allocate(gis%lonsperlar(latr))
+      allocate(lonsperlar(latr))
 
-      allocate(gis%lonsperlar(latr))
-
 !fy   if ( .not. ndsl ) then
 !***********************************************************************
 !fy     if (redgg_a) then
@@ -339,13 +376,14 @@
 !fy     endif
 !fy   endif
 
-      gis%lonsperlar = lonr     !for MPAS
+      lonsperlar = lonr     !for MPAS
 !***********************************************************************
 !
       if (ras) then
         if (fix_ncld_hr) then
 !         nrcm = min(nrcmax, levs-1) * (gis%deltim/1200) + 0.50001
-          nrcm = min(nrcmax, levs-1) * (gis%deltim/1200) + 0.10001
+!fy       nrcm = min(nrcmax, levs-1) * (gis%deltim/1200) + 0.10001
+          nrcm = min(nrcmax, levs-1) * (deltim/1200) + 0.10001
 !         nrcm = min(nrcmax, levs-1) * min(1.0,gis%deltim/360) + 0.1
         else
           nrcm = min(nrcmax, levs-1)
@@ -398,7 +436,8 @@
 !     pl_pres(:) = log(0.1*pl_pres(:))       ! Natural log of pres in cbars
       pl_pres(:) = log(100.0*pl_pres(:))     ! Natural log of pres in Pa
 !
-      allocate(gis%OZPLIN(LATSOZP,LEVOZP,pl_coeff,timeoz)) !OZONE P-L coeffcients
+!fy   allocate(gis%OZPLIN(LATSOZP,LEVOZP,pl_coeff,timeoz)) !OZONE P-L coeffcients
+      allocate(OZPLIN(LATSOZP,LEVOZP,pl_coeff,timeoz)) !OZONE P-L coeffcients
 !     endif
 !
 !
@@ -456,32 +495,32 @@
       kwrq = 3*levs+0*levh+2   !  rqe/o_ls
 
 !
-      gis%P_GZ  = 0*LEVS+0*LEVH+1  !      GZE/O(LNTE/OD,2),
-      gis%P_ZEM = 0*LEVS+0*LEVH+2  !     ZEME/O(LNTE/OD,2,LEVS),
-      gis%P_DIM = 1*LEVS+0*LEVH+2  !     DIME/O(LNTE/OD,2,LEVS),
-      gis%P_TEM = 2*LEVS+0*LEVH+2  !     TEME/O(LNTE/OD,2,LEVS),
-      gis%P_RM  = 3*LEVS+0*LEVH+2  !      RME/O(LNTE/OD,2,LEVH),
-      gis%P_QM  = 3*LEVS+1*LEVH+2  !      QME/O(LNTE/OD,2),
-      gis%P_ZE  = 3*LEVS+1*LEVH+3  !      ZEE/O(LNTE/OD,2,LEVS),
-      gis%P_DI  = 4*LEVS+1*LEVH+3  !      DIE/O(LNTE/OD,2,LEVS),
-      gis%P_TE  = 5*LEVS+1*LEVH+3  !      TEE/O(LNTE/OD,2,LEVS),
-      gis%P_RQ  = 6*LEVS+1*LEVH+3  !      RQE/O(LNTE/OD,2,LEVH),
-      gis%P_Q   = 6*LEVS+2*LEVH+3  !       QE/O(LNTE/OD,2),
-      gis%P_DLAM= 6*LEVS+2*LEVH+4  !  DPDLAME/O(LNTE/OD,2),
-      gis%P_DPHI= 6*LEVS+2*LEVH+5  !  DPDPHIE/O(LNTE/OD,2),
-      gis%P_ULN = 6*LEVS+2*LEVH+6  !     ULNE/O(LNTE/OD,2,LEVS),
-      gis%P_VLN = 7*LEVS+2*LEVH+6  !     VLNE/O(LNTE/OD,2,LEVS),
-      gis%P_W   = 8*LEVS+2*LEVH+6  !       WE/O(LNTE/OD,2,LEVS),
-      gis%P_X   = 9*LEVS+2*LEVH+6  !       XE/O(LNTE/OD,2,LEVS),
-      gis%P_Y   =10*LEVS+2*LEVH+6  !       YE/O(LNTE/OD,2,LEVS),
-      gis%P_RT  =11*LEVS+2*LEVH+6  !      RTE/O(LNTE/OD,2,LEVH),
-      gis%P_ZQ  =11*LEVS+3*LEVH+6  !      ZQE/O(LNTE/OD,2)
+!fy   gis%P_GZ  = 0*LEVS+0*LEVH+1  !      GZE/O(LNTE/OD,2),
+!fy   gis%P_ZEM = 0*LEVS+0*LEVH+2  !     ZEME/O(LNTE/OD,2,LEVS),
+!fy   gis%P_DIM = 1*LEVS+0*LEVH+2  !     DIME/O(LNTE/OD,2,LEVS),
+!fy   gis%P_TEM = 2*LEVS+0*LEVH+2  !     TEME/O(LNTE/OD,2,LEVS),
+!fy   gis%P_RM  = 3*LEVS+0*LEVH+2  !      RME/O(LNTE/OD,2,LEVH),
+!fy   gis%P_QM  = 3*LEVS+1*LEVH+2  !      QME/O(LNTE/OD,2),
+!fy   gis%P_ZE  = 3*LEVS+1*LEVH+3  !      ZEE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_DI  = 4*LEVS+1*LEVH+3  !      DIE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_TE  = 5*LEVS+1*LEVH+3  !      TEE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_RQ  = 6*LEVS+1*LEVH+3  !      RQE/O(LNTE/OD,2,LEVH),
+!fy   gis%P_Q   = 6*LEVS+2*LEVH+3  !       QE/O(LNTE/OD,2),
+!fy   gis%P_DLAM= 6*LEVS+2*LEVH+4  !  DPDLAME/O(LNTE/OD,2),
+!fy   gis%P_DPHI= 6*LEVS+2*LEVH+5  !  DPDPHIE/O(LNTE/OD,2),
+!fy   gis%P_ULN = 6*LEVS+2*LEVH+6  !     ULNE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_VLN = 7*LEVS+2*LEVH+6  !     VLNE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_W   = 8*LEVS+2*LEVH+6  !       WE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_X   = 9*LEVS+2*LEVH+6  !       XE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_Y   =10*LEVS+2*LEVH+6  !       YE/O(LNTE/OD,2,LEVS),
+!fy   gis%P_RT  =11*LEVS+2*LEVH+6  !      RTE/O(LNTE/OD,2,LEVH),
+!fy   gis%P_ZQ  =11*LEVS+3*LEVH+6  !      ZQE/O(LNTE/OD,2)
 !C
-      gis%LOTS = 5*LEVS+1*LEVH+3 
-      gis%LOTD = 6*LEVS+2*LEVH+0 
-      gis%LOTA = 3*LEVS+1*LEVH+1 
+!fy   gis%LOTS = 5*LEVS+1*LEVH+3 
+!fy   gis%LOTD = 6*LEVS+2*LEVH+0 
+!fy   gis%LOTA = 3*LEVS+1*LEVH+1 
 !C
-      allocate(gis%TEE1(LEVS))
+!fy   allocate(gis%TEE1(LEVS))
 
 !     gis%LSLAG=.FALSE.  ! IF FALSE EULERIAN SCHEME =.true. for semilag
 
@@ -554,10 +593,14 @@
 !fy        endif
 !fy      endif
 !C
-      gis%CONS0    =   0.0D0
-      gis%CONS0P5  =   0.5D0
-      gis%CONS1200 = 1200.D0
-      gis%CONS3600 = 3600.D0
+!fy   gis%CONS0    =   0.0D0
+!fy   gis%CONS0P5  =   0.5D0
+!fy   gis%CONS1200 = 1200.D0
+!fy   gis%CONS3600 = 3600.D0
+      CONS0    =   0.0D0
+      CONS0P5  =   0.5D0
+      CONS1200 = 1200.D0
+      CONS3600 = 3600.D0
 !C
 !fy      if (liope) then
 !fy         if (icolor.eq.2) then
@@ -591,13 +634,15 @@
 !fy      ALLOCATE ( gis%GLOBAL_LATS_A(LATG) )
 !C
 !fy      ALLOCATE (  gis%LATS_NODES_R(NODES) )
-         ALLOCATE ( gis%GLOBAL_LATS_R(LATR) )
+!fy      ALLOCATE ( gis%GLOBAL_LATS_R(LATR) )
+         ALLOCATE ( GLOBAL_LATS_R(LATR) )
 !C
 !     ALLOCATE (   gis%LATS_NODES_EXT(NODES) )
 !     ALLOCATE ( gis%GLOBAL_LATS_EXT(LATG+2*JINTMX+2*NYPT*(NODES-1)) )
 !C
 !C
-      gis%IPRINT = 0
+!fy   gis%IPRINT = 0
+      IPRINT = 0
 !     gis%LATS_NODES_EXT = 0
 
 ! For creating the ESMF interface state with the GFS
@@ -739,13 +784,21 @@
 !fy      ALLOCATE (      gis%PLNEW_R(LEN_TRIE_LS,LATR2) )
 !fy      ALLOCATE (      gis%PLNOW_R(LEN_TRIO_LS,LATR2) )
 !C
-      gis%MAXSTP=36
+!fy   gis%MAXSTP=36
+      MAXSTP=36
 

-      IF(ME.EQ.0) PRINT*,'FROM COMPNS : IRET=',gis%IRET,' NSOUT=',NSOUT, &amp;
+!fy   IF(ME.EQ.0) PRINT*,'FROM COMPNS : IRET=',gis%IRET,' NSOUT=',NSOUT, &amp;
+!fy    ' NSSWR=',NSSWR,' NSLWR=',NSLWR,' NSZER=',NSZER,' NSRES=',NSRES,  &amp;
+!fy    ' NSDFI=',NSDFI,' NSCYC=',NSCYC,' RAS=',RAS
+!fy   IF(gis%IRET.NE.0) THEN
+!fy     IF(ME.EQ.0) PRINT *,' INCOMPATIBLE NAMELIST - ABORTED IN MAIN'
+!fy     CALL MPI_QUIT(13)
+!fy   ENDIF
+
+      IF(ME.EQ.0) PRINT*,'FROM COMPNS : IRET=',IRET,' NSOUT=',NSOUT, &amp;
        ' NSSWR=',NSSWR,' NSLWR=',NSLWR,' NSZER=',NSZER,' NSRES=',NSRES,  &amp;
        ' NSDFI=',NSDFI,' NSCYC=',NSCYC,' RAS=',RAS
-      IF(gis%IRET.NE.0) THEN
+      IF(IRET.NE.0) THEN
         IF(ME.EQ.0) PRINT *,' INCOMPATIBLE NAMELIST - ABORTED IN MAIN'
         CALL MPI_QUIT(13)
       ENDIF
@@ -773,29 +826,43 @@
 !fy           gis%PLNEV_R,gis%PLNOD_R,gis%PDDEV_R,gis%PDDOD_R,             &amp;
 !fy           gis%PLNEW_R,gis%PLNOW_R,gis%colat1)
 !!
-      call sfcvar_aldata(lonr,lats_node_r,lsoil,gis%sfc_fld,ierr)
-      call flxvar_aldata(lonr,lats_node_r,gis%flx_fld,ierr)
+!fy   call sfcvar_aldata(lonr,lats_node_r,lsoil,gis%sfc_fld,ierr)
+!fy   call flxvar_aldata(lonr,lats_node_r,gis%flx_fld,ierr)
+      call sfcvar_aldata(lonr,lats_node_r,lsoil,sfc_fld,ierr)
+      call flxvar_aldata(lonr,lats_node_r,flx_fld,ierr)
 
 !li  added 05/31/2007 (for oceanic component)
 !    Modified by Moorthi
 !fy   call nstvar_aldata(lonr,lats_node_r,gis%nam_gfs%nst_fld,ierr)
 
-      ALLOCATE (   gis%XLON(LONR,LATS_NODE_R))
-      ALLOCATE (   gis%XLAT(LONR,LATS_NODE_R))
-      ALLOCATE (   gis%COSZDG(LONR,LATS_NODE_R))
-      ALLOCATE (   gis%SFALB(LONR,LATS_NODE_R))
-      ALLOCATE (   gis%HPRIME(LONR,NMTVR,LATS_NODE_R))
-      ALLOCATE (   gis%FLUXR(LONR,nfxr,LATS_NODE_R))
+!fy   ALLOCATE (   gis%XLON(LONR,LATS_NODE_R))
+!fy   ALLOCATE (   gis%XLAT(LONR,LATS_NODE_R))
+!fy   ALLOCATE (   gis%COSZDG(LONR,LATS_NODE_R))
+!fy   ALLOCATE (   gis%SFALB(LONR,LATS_NODE_R))
+!fy   ALLOCATE (   gis%HPRIME(LONR,NMTVR,LATS_NODE_R))
+!fy   ALLOCATE (   gis%FLUXR(LONR,nfxr,LATS_NODE_R))
 
+      ALLOCATE (   XLON(LONR,LATS_NODE_R))
+      ALLOCATE (   XLAT(LONR,LATS_NODE_R))
+      ALLOCATE (   COSZDG(LONR,LATS_NODE_R))
+      ALLOCATE (   SFALB(LONR,LATS_NODE_R))
+      ALLOCATE (   HPRIME(LONR,NMTVR,LATS_NODE_R))
+      ALLOCATE (   FLUXR(LONR,nfxr,LATS_NODE_R))
+
 !     gis%NBLCK = LONR/NGPTC + 1
-      ALLOCATE (   gis%SWH(LONR,LEVS,LATS_NODE_R))
-      ALLOCATE (   gis%HLW(LONR,LEVS,LATS_NODE_R))
-
-      ALLOCATE (gis%JINDX1(LATS_NODE_R),gis%JINDX2(LATS_NODE_R))
-      ALLOCATE (gis%DDY(LATS_NODE_R))
+!fy   ALLOCATE (   gis%SWH(LONR,LEVS,LATS_NODE_R))
+!fy   ALLOCATE (   gis%HLW(LONR,LEVS,LATS_NODE_R))
+!fy   ALLOCATE (gis%JINDX1(LATS_NODE_R),gis%JINDX2(LATS_NODE_R))
+!fy   ALLOCATE (gis%DDY(LATS_NODE_R))
+!fy   allocate (gis%phy_f3d(LONR,LEVS,num_p3d,lats_node_r))
+!fy   allocate (gis%phy_f2d(lonr,num_p2d,lats_node_r))
 !
-      allocate (gis%phy_f3d(LONR,LEVS,num_p3d,lats_node_r))
-      allocate (gis%phy_f2d(lonr,num_p2d,lats_node_r))
+      ALLOCATE (   SWH(LONR,LEVS,LATS_NODE_R))
+      ALLOCATE (   HLW(LONR,LEVS,LATS_NODE_R))
+      ALLOCATE (JINDX1(LATS_NODE_R),JINDX2(LATS_NODE_R))
+      ALLOCATE (DDY(LATS_NODE_R))
+      allocate (phy_f3d(LONR,LEVS,num_p3d,lats_node_r))
+      allocate (phy_f2d(lonr,num_p2d,lats_node_r))
 !
       call d3d_init(lonr,lats_node_r,levs,pl_coeff,ldiag3d,lggfs3d)
 
@@ -812,10 +879,10 @@
 !fy        if (num_p3d &gt; 0) gis%phy_f3d = 0.0
 !fy        if (num_p2d &gt; 0) gis%phy_f2d = 0.0
 !fy      endif
-      if (num_p3d &gt; 0) gis%phy_f3d = 0.0
-      if (num_p2d &gt; 0) gis%phy_f2d = 0.0
+      if (num_p3d &gt; 0) phy_f3d = 0.0
+      if (num_p2d &gt; 0) phy_f2d = 0.0
 !!
-      CALL countperf(0,18,0.)
+!fy   CALL countperf(0,18,0.)
 !!
 ! Modified by Weiyu.
 !-------------------
@@ -849,7 +916,7 @@
 !     ELSE
 !       ILAT=LATS_NODE_A
 !     ENDIF
-      CALL countperf(1,15,0.)
+!fy   CALL countperf(1,15,0.)
 !!
 !C......................................................................
 !C
@@ -893,7 +960,8 @@
 !fy             ,' sfc_ini=',gis%nam_gfs%sfc_ini
 !fy      print *,' nst_ini=',gis%nam_gfs%nst_ini
 !fy      CALL countperf(0,18,0.)
-      gis%pdryini = 0.0
+!fy   gis%pdryini = 0.0
+      pdryini = 0.0
 !fy      CALL spect_fields(gis%n1, gis%n2,                                &amp;
 !fy        gis%PDRYINI, gis%TRIE_LS,  gis%TRIO_LS,                        &amp;
 !fy        gis%LS_NODE, gis%LS_NODES, gis%MAX_LS_NODES,                   &amp;
@@ -904,14 +972,16 @@
 !fy        gis%nam_gfs%sig_ini, gis%nam_gfs%sig_ini2)
 !!
 
-      gis%LONSPERLAR=ncell   !MAPS
-      gis%GLOBAL_LATS_R=1    !MPAS
+!----added for MPAS
+      LONSPERLAR=ncell   !MAPS
+      GLOBAL_LATS_R=1    !MPAS
       do j=1,LATS_NODE_R
       do i=1,ncell
-        gis%XLON(LONR,LATS_NODE_R)=xlon(i)
-        gis%XLAT(LONR,LATS_NODE_R)=xlat(i)
+        XLON(LONR,LATS_NODE_R)=xlon_mpas(i)
+        XLAT(LONR,LATS_NODE_R)=xlat_mpas(i)
       enddo
       enddo
+!----for MPAS
 
 !fy????????????????????????????????? needed
 !fy   if(.not.adiab)then
@@ -1039,17 +1109,20 @@
 !     zero fluxes and diagnostics
 !fy   CALL countperf(0,14,0.)
 !
-      gis%zhour = fhour
-      gis%FLUXR = 0.
+!fy   gis%zhour = fhour
+!fy   gis%FLUXR = 0.
+      zhour = fhour
+      FLUXR = 0.
 !
-      call flx_init(gis%flx_fld,ierr)
+!fy   call flx_init(gis%flx_fld,ierr)
+      call flx_init(flx_fld,ierr)
 !
       call d3d_zero(ldiag3d,lggfs3d)
 
 !     if (ldiag3d) then
 !       call d3d_zero
 !     endif
-      CALL countperf(1,14,0.)
+!fy   CALL countperf(1,14,0.)
 !
  END SUBROUTINE GFS_Initialize
 !

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.ibm
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.ibm                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.ibm        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,670 @@
+FINCS    = -I/nwprod/lib/incmod/esmf_3_1_0rp2
+FINCM    = -I/nwprod/lib/incmod/w3_d
+
+ARCH    = -qarch=pwr6 -qtune=pwr6 -qcache=auto -qnohot
+PGSZ    = -bdatapsize:64K -bstackpsize:64K -btextpsize:4K
+
+OPTS     = -g -qsuffix=cpp=f -O3 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave $(ARCH)
+OPTS90   = -qsuffix=cpp=f -O3 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave $(ARCH)
+OPTS90A  = -qsuffix=cpp=f -O3 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave $(ARCH)
+ FFLAG90  = $(OPTS90) $(FINCS) $(FINCM) -qfree -NS2048
+ FFLAG90A = $(OPTS90A) $(FINCS) -qfree -NS2048
+ FFLAGS   = $(OPTS) $(TRAPS) -qfixed
+ FFLAGX   = $(OPTS) $(TRAPS) -qfixed
+ FFLAGIO  = $(OPTS) $(TRAPS) -qfixed
+ FFLAGY   = $(OPTS) -qfixed
+ FFLAGM   = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG) -NS2048 -qfixed
+ FFLAGM2  = $(OPTS) $(FINCS) $(FINCM) $(TRAPS) $(DEBUG) -NS2048 -qfixed
+ FFLAGM3  = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG) -NS2048 -qfree
+ FFLAGSF  = -g -O3 -qnosave -qfree=f90 -qcheck
+ FFLAGSI  = -g -O3 -qnosave -qfree=f90
+ FFLAGB   = -g -O3 -qnosave -qfixed
+
+ LDR     = mpxlf95_r -qsmp=noauto 
+LDFLAGS = -lessl_r -lmass -qsmp=noauto
+
+ESMFLIB  = /nwprod/lib
+LDFLAGS = -lessl_r -lmass -qsmp=noauto ${ESMFLIB}/libesmf_3_1_0rp2.a $(PGSZ)
+LIBS = -lC -L /nwprod/lib/ -l w3_d -l bacio_4 -lsp_d
+
+.SUFFIXES: .o .f .F .h
+#
+# *****************************************************************
+#
+#OBJS0        =                               \
+##           NameList_ESMFMod.o          \
+#           Sfc_Var_ESMFMod.o           \
+#           Nst_Var_ESMFMod.o            
+
+#          GFS_ESMFStateAddGetMod.o
+#          GFS_Standalone_ESMF_ENS.o
+#          GFS_InputFile2ImportState.o 
+
+
+OBJ_MOD        = machine.o             \
+          iounitdef.o           \
+          physcons.o            \
+          funcphys.o            \
+          progtm_module.o       \
+          rascnvv2.o            \
+          resol_def.o           \
+          gg_def.o              \
+          vert_def.o            \
+          sig_io.o              \
+          date_def.o            \
+          layout1.o             \
+          layout_grid_tracers.o \
+          namelist_def.o        \
+          namelist_soilveg.o    \
+          coordinate_def.o      \
+          tracer_const_h-new.o  \
+          mpi_def.o             \
+          sfcio_module.o        \
+           d3d_def.o             \
+          gfsmisc_def.o         \
+          nstio_module.o           \
+          module_nst_parameters.o  \
+          module_nst_water_prop.o  \
+          module_nst_model.o       \
+          calpreciptype.o          \
+          module_bfmicrophysics.o  \
+          mersenne_twister.o     \
+          Sfc_Var_ESMFMod.o      \
+          Nst_Var_ESMFMod.o       \
+          NameList_ESMFMod.o      \
+          GFS_Initialize.o
+
+
+
+OBJS    = \
+        gcycle.o\
+        compns.o\
+        fix_fields.o\
+        dotstep.o \
+        mpi_quit.o
+
+
+#OBJS_PORT        = \
+#fftpack.o \
+#four2grid.fftpack.o \
+#noblas.o\
+#funcphys_subsx.o\
+
+OBJS_RAD        =              \
+        radlw_param.o          \
+        radlw_datatb.o         \
+        radlw_main.o           \
+        radsw_param.o          \
+        radsw_datatb.o         \
+        radsw_main.o           \
+        radiation_astronomy.o  \
+        radiation_aerosols.o   \
+        radiation_gases.o      \
+        radiation_clouds.o     \
+        radiation_surface.o    \
+         gloopr.o              \
+        grrad.o                 
+
+#
+#gloopb.o
+#gbphys_adv_hyb_gc.o
+#gbphys_adv_hyb_gc_h-new.o
+OBJS_PHY= \
+        ozinterp.o           \
+        ozphys.o             \
+        gbphys.o             \
+        dcyc2.o              \
+        dcyc2.pre.rad.o      \
+        set_soilveg.o        \
+        sfc_drv.o            \
+        sfc_land.o           \
+        progt2.o             \
+        sfc_sice.o           \
+        sfc_ocean.o          \
+        sfc_nst.o            \
+        sfc_diff.o           \
+        sfc_diag.o           \
+        sflx.o               \
+        moninp.o             \
+        moninp1.o            \
+        moninq.o             \
+        moninq1.o            \
+        tridi2t3.o           \
+        gwdps.o              \
+        gwdc.o               \
+        sascnv.o             \
+        sascnvn.o            \
+        cnvc90.o             \
+        shalcv.o             \
+        shalcv_opr.o         \
+        shalcnv.o            \
+        lrgsclr.o            \
+        gscond.o             \
+        precpd.o             \
+        mstadb.o             \
+        mstadbtn.o           \
+        mstcnv.o             \
+        get_prs.o            \
+        gsmddrive.o           
+
+#omegtes.o            \
+#omegtes_gc.o         \
+#omegas.o             \
+#hyb2sig.o            \
+#hyb2press.o          \
+#hyb2press_gc.o       \
+#sig2press.o
+
+
+OBJS_IO= \
+        sfcsub.o              
+
+#read_fix.o            \
+#gribit.o              \
+#wrt3d.o               \
+#wrt3d_hyb.o           \
+#wrtg3d.o              \
+#wrtg3d_hyb.o          \
+#wrtsfc.o              \
+#para_fixio_w.o        \
+#para_nstio_w.o        \
+#treadeo.io.o          \
+#treadeo.gfsio.o       \
+#grid_to_spec.o        \
+#spect_to_grid.o       \
+#spect_tv_enthalpy_ps.o\
+#setsig.o              \
+#twriteeo.o            \
+#bafrio.o              \
+#spect_send.o          \
+#spect_write.o
+
+
+OBJS_CC= cmp.comm.o  
+#mpi_more.o  \
+#cmp.comm.o  \
+#atm.comm.o  \
+#tiles.o
+
+SRC        = $(OBJS0:.o=.f) $(OBJ_MOD:.o=.f) $(OBJS:.o=.f) $(OBJS_RAD:.o=.f) $(OBJS_PHY:.o=.f) $(OBJS_IO:.o=.f) $(OBJS_CC:.o=.f)
+#
+INCS = f_hpm.h mpi_inc.h function2
+
+#
+# *****************************************************************
+#
+all: model-mpi
+
+model-mpi: $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) 
+        $(LDR) $(LDFLAGS) -o $(EXEC) $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) $(LIBS)
+
+clean:
+        rm -f $(OBJ_MOD) $(OBJS0) $(OBJS) $(OBJS_RAD) $(OBJS_PHY) $(OBJS_IO) *.mod
+
+tar:
+        tar -cvf tar.gfs.r4r8 $(SRC) $(INCS) $(COMS) $(OBJS_PORT:.o=.f) lonsper* res* xx* Makefile* ini.* scr.* m*real_?
+
+.F.o:
+        $(F77) $(FFLAGS) -c -d $&lt; 
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $&lt; 
+.f.o:
+        $(F77) $(FFLAGS) -c $&lt; 
+
+
+omegas.o:        omegas.f
+                $(F77) $(FFLAGM) -c omegas.f
+
+#
+# *****************************************************************
+#
+cnvc90.o:        cnvc90.f
+                $(F77) $(FFLAGM) -c cnvc90.f
+
+calpreciptype.o:        calpreciptype.f
+                $(F77) $(FFLAGM3) -c calpreciptype.f
+
+dcyc2.o:        dcyc2.f
+                $(F77) $(FFLAGM) -c dcyc2.f
+
+dcyc2.pre.rad.o:        dcyc2.pre.rad.f
+                $(F77) $(FFLAGM) -c dcyc2.pre.rad.f
+
+digifilt.o:        digifilt.f
+                $(F77) $(FFLAGX) -c digifilt.f
+
+funcphys_subsx.o:        funcphys_subsx.f
+                $(F77) $(FFLAGM) -c funcphys_subsx.f
+
+gbphys_adv_hyb_gc.o:        gbphys_adv_hyb_gc.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc.f
+
+gbphys_adv_hyb_gc_h-new.o:        gbphys_adv_hyb_gc_h-new.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc_h-new.f
+
+#gbphys_call.o:        gbphys_call.f
+#                $(F77) $(FFLAGM) -c gbphys_call.f
+
+gbphys.o:        gbphys.f
+                $(F77) $(FFLAGM) -c gbphys.f
+
+get_prs.o:        get_prs.f
+                $(F77) $(FFLAGM) -c get_prs.f
+
+gscond.o:        gscond.f
+                $(F77) $(FFLAGM) -c gscond.f
+
+gsmddrive.o:        gsmddrive.f
+                $(F77) $(FFLAGM) -c gsmddrive.f
+
+reduce_lons_grid_module.o:        reduce_lons_grid_module.f
+                $(F77) $(FFLAGM) -c reduce_lons_grid_module.f
+
+module_bfmicrophysics.o:        module_bfmicrophysics.f
+                $(F77) $(FFLAGM) -c module_bfmicrophysics.f
+
+gwdps.o:        gwdps.f
+                $(F77) $(FFLAGM) -c gwdps.f
+
+gwdc.o:                gwdc.f
+                $(F77) $(FFLAGM) -c gwdc.f
+
+hyb2press_gc.o:        hyb2press_gc.f
+                $(F77) $(FFLAGM) -c hyb2press_gc.f
+
+hyb2press.o:        hyb2press.f
+                $(F77) $(FFLAGM) -c hyb2press.f
+
+hyb2sig.o:        hyb2sig.f
+                $(F77) $(FFLAGM) -c hyb2sig.f
+
+lrgsclr.o:        lrgsclr.f
+                $(F77) $(FFLAGM) -c lrgsclr.f
+
+moninp.o:        moninp.f
+                $(F77) $(FFLAGM) -c moninp.f
+
+moninp1.o:        moninp1.f
+                $(F77) $(FFLAGM) -c moninp1.f
+
+moninq.o:        moninq.f
+                $(F77) $(FFLAGM) -c moninq.f
+
+moninq1.o:        moninq1.f
+                $(F77) $(FFLAGM) -c moninq1.f
+
+mstadb.o:        mstadb.f
+                $(F77) $(FFLAGM) -c mstadb.f
+
+mstadbtn.o:        mstadbtn.f
+                $(F77) $(FFLAGM) -c mstadbtn.f
+
+mstcnv.o:        mstcnv.f
+                $(F77) $(FFLAGM) -c mstcnv.f
+
+omegtes_gc.o:        omegtes_gc.f
+                $(F77) $(FFLAGM) -c omegtes_gc.f
+
+omegtes.o:        omegtes.f
+                $(F77) $(FFLAGM) -c omegtes.f
+
+ozinterp.o:        ozinterp.f
+                $(F77) $(FFLAGM) -c ozinterp.f
+
+ozphys.o:        ozphys.f
+                $(F77) $(FFLAGM) -c ozphys.f
+
+precpd.o:        precpd.f
+                $(F77) $(FFLAGM) -c precpd.f
+
+rascnvv2.o:        rascnvv2.f
+                $(F77) $(FFLAGM) -c rascnvv2.f
+
+sfc_sice.o:        sfc_sice.f
+                $(F77) $(FFLAGM) -c sfc_sice.f
+
+set_soilveg.o:        set_soilveg.f
+                $(F77) $(FFLAGM) -c set_soilveg.f
+
+namelist_soilveg.o:        namelist_soilveg.f
+                $(F77) $(FFLAGM) -c namelist_soilveg.f
+
+sfc_land.o:        sfc_land.f
+                $(F77) $(FFLAGM) -c sfc_land.f
+                                                                            
+progt2.o:        progt2.f
+                $(F77) $(FFLAGM) -c progt2.f
+
+sfc_drv.o:        sfc_drv.f
+                $(F77) $(FFLAGM) -c sfc_drv.f
+
+sflx.o:         sflx.f
+                $(F77) $(FFLAGM) -c sflx.f
+
+sfc_ocean.o:        sfc_ocean.f
+                $(F77) $(FFLAGM) -c sfc_ocean.f
+
+sfc_nst.o:        sfc_nst.f
+                $(F77) $(FFLAGM) -c sfc_nst.f
+
+sfc_diff.o:        sfc_diff.f
+                $(F77) $(FFLAGM) -c sfc_diff.f
+
+sfc_diag.o:        sfc_diag.f
+                $(F77) $(FFLAGM) -c sfc_diag.f
+
+sascnv.o:        sascnv.f
+                $(F77) $(FFLAGM) -c sascnv.f
+
+sascnvn.o:        sascnvn.f
+                $(F77) $(FFLAGM) -c sascnvn.f
+
+tridi2t3.o:        tridi2t3.f
+                $(F77) $(FFLAGM) -c tridi2t3.f
+
+shalcv.o:        shalcv.f
+                $(F77) $(FFLAGM) -c shalcv.f
+
+shalcv_opr.o:        shalcv_opr.f
+                $(F77) $(FFLAGM) -c shalcv_opr.f
+
+shalcnv.o:        shalcnv.f
+                $(F77) $(FFLAGM) -c shalcnv.f
+
+sig2press.o:        sig2press.f
+                $(F77) $(FFLAGM) -c sig2press.f
+
+# *****************************************************************
+
+radlw_param.o:        radlw_param.f
+                $(F77) $(FFLAGM) -c radlw_param.f
+
+
+radlw_datatb.o:        radlw_datatb.f
+                $(F77) $(FFLAGM) -c radlw_datatb.f
+
+
+radlw_main.o:        radlw_main.f
+                $(F77) $(FFLAGM2) -c radlw_main.f
+
+radsw_param.o:        radsw_param.f
+                $(F77) $(FFLAGM) -c radsw_param.f
+
+radsw_datatb.o:        radsw_datatb.f
+                $(F77) $(FFLAGM) -c radsw_datatb.f
+
+radsw_main.o:        radsw_main.f
+                $(F77) $(FFLAGM2) -c radsw_main.f
+
+radiation_astronomy.o:        radiation_astronomy.f
+                $(F77) $(FFLAGM) -c radiation_astronomy.f
+
+radiation_aerosols.o:        radiation_aerosols.f
+                $(F77) $(FFLAGM) -c radiation_aerosols.f
+
+radiation_gases.o:        radiation_gases.f
+                $(F77) $(FFLAGM) -c radiation_gases.f
+
+radiation_clouds.o:        radiation_clouds.f
+                $(F77) $(FFLAGM) -c radiation_clouds.f
+
+radiation_surface.o:        radiation_surface.f
+                $(F77) $(FFLAGM) -c radiation_surface.f
+
+grrad.o:        grrad.f
+                $(F77) $(FFLAGM) -c grrad.f
+
+progtm_module.o:        progtm_module.f
+                $(F77) $(FFLAGM) -c progtm_module.f
+
+machine.o:        machine.f
+                $(F77) $(FFLAGM) -c machine.f
+
+num_parthds.o:        num_parthds.f
+                $(F77) $(FFLAGM) -c num_parthds.f
+
+kinds.o:        GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+
+peuc.o:                GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+
+pran.o:                GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+
+prana.o:        GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+
+#
+# *****************************************************************
+#
+physcons.o:        physcons.f
+                $(F77) $(FFLAG90) -c physcons.f
+
+iounitdef.o:        iounitdef.f
+                $(F77) $(FFLAG90) -c iounitdef.f
+
+funcphys.o:        funcphys.f
+                $(F77) $(FFLAG90) -c funcphys.f
+
+sfcio_module.o:        sfcio_module.f
+                $(F77) $(FFLAGSF) -c sfcio_module.f
+
+sigio_module.o:        sigio_module.f
+                $(F77) $(FFLAGSI) -c sigio_module.f
+
+gfsio_def.o:        gfsio_def.f
+                $(F77) $(FFLAGSI) -c gfsio_def.f
+
+gfsio_module.o:        gfsio_module.f
+                $(F77) $(FFLAGSI) -c gfsio_module.f
+
+sigio_r_module.o:        sigio_r_module.f
+                $(F77) $(FFLAGSI) -c sigio_r_module.f
+
+bafrio.o:        bafrio.f
+                $(F77) $(FFLAGB) -c bafrio.f
+
+#
+#sigdas.io.o:        sigdas.io.f
+##                $(F77) $(FFLAGIO) -c sigdas.io.f
+
+read_fix.o:        read_fix.f
+                $(F77) $(FFLAGX) -c read_fix.f
+
+softcount.o:        softcount.f
+                $(F77) $(FFLAGX) -c softcount.f
+
+gloopr.o:        gloopr.f
+                $(F77) $(FFLAGM2) -c gloopr.f
+
+gloopb.o:        gloopb.f
+                $(F77) $(FFLAGM2) -c gloopb.f
+
+sfcsub.o:        sfcsub.f
+                $(F77) $(FFLAGM) -c sfcsub.f
+
+gcycle.o:        gcycle.f
+                $(F77) $(FFLAGM) -c gcycle.f
+
+getaer.o:        getaer.f
+                $(F77) $(FFLAGIO) -c getaer.f
+
+wrt3d.o:        wrt3d.f
+                $(F77) $(FFLAGIO) -c wrt3d.f
+
+gribit.o:        gribit.f
+                $(F77) $(FFLAGIO) -c gribit.f
+
+wrtsfc.o:        wrtsfc.f
+                $(F77) $(FFLAGIO) -c wrtsfc.f
+
+para_fixio_w.o:                para_fixio_w.f
+                $(F77) $(FFLAGIO) -c para_fixio_w.f
+
+para_nstio_w.o:                para_nstio_w.f
+                $(F77) $(FFLAGIO) -c para_nstio_w.f
+
+#para_fixio_all_w.o:                para_fixio_all_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_all_w.f
+
+#para_fixio_iop_w.o:        para_fixio_iop_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_iop_w.f
+
+#conrad.o:        conrad.f
+#                $(F77) $(FFLAGIO) -c conrad.f
+
+#crhtab.o:        crhtab.f
+#                $(F77) $(FFLAGIO) -c crhtab.f
+
+treadeo.io.o:        treadeo.io.f
+                $(F77) $(FFLAGIO) -c treadeo.io.f
+
+treadeo.gfsio.o:        treadeo.gfsio.f
+                $(F77) $(FFLAGIO) -c treadeo.gfsio.f
+
+twriteeo.o:        twriteeo.f
+                $(F77) $(FFLAGIO) -c twriteeo.f
+
+spect_send.o:        spect_send.f
+                $(F77) $(FFLAGIO) -c spect_send.f
+
+spect_write.o:        spect_write.f
+                $(F77) $(FFLAGIO) -c spect_write.f
+
+spect_to_grid.o:        spect_to_grid.f
+                $(F77) $(FFLAGIO) -c spect_to_grid.f
+
+spect_tv_enthalpy_ps.o:        spect_tv_enthalpy_ps.f
+                $(F77) $(FFLAGIO) -c spect_tv_enthalpy_ps.f
+
+grid_to_spec.o:        grid_to_spec.f
+                $(F77) $(FFLAGIO) -c grid_to_spec.f
+
+wrtout.o:        wrtout.f
+                $(F77) $(FFLAGIO) -c wrtout.f
+
+nstio_module.o:         nstio_module.f
+                $(F77) $(FFLAG90) -c nstio_module.f
+
+module_nst_parameters.o:        module_nst_parameters.f
+                $(F77) $(FFLAG90) -c module_nst_parameters.f
+
+module_nst_water_prop.o:         module_nst_water_prop.f
+                $(F77) $(FFLAG90) -c module_nst_water_prop.f
+
+module_nst_model.o:                module_nst_model.f
+                $(F77) $(FFLAG90) -c module_nst_model.f
+
+NameList_ESMFMod.o:         NameList_ESMFMod.f
+                $(F77) $(FFLAG90) -c NameList_ESMFMod.f
+
+Sfc_Var_ESMFMod.o:        Sfc_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Sfc_Var_ESMFMod.f
+
+Nst_Var_ESMFMod.o:        Nst_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Nst_Var_ESMFMod.f
+
+Lib_ESMFStateAddGetMod.o:        Lib_ESMFStateAddGetMod.f
+                $(F77) $(FFLAG90) -c Lib_ESMFStateAddGetMod.f
+
+#GFS_ESMFStateAddGetMod.o:         GFS_ESMFStateAddGetMod.f
+#                $(F77) $(FFLAG90) -c GFS_ESMFStateAddGetMod.f
+
+GFS_InternalState_ESMFMod.o:         GFS_InternalState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_InternalState_ESMFMod.f
+
+GFS_ESMFStateMod.o:         GFS_ESMFStateMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFStateMod.f
+
+GFS_ErrMsgMod.o:         GFS_ErrMsgMod.f
+                $(F77) $(FFLAG90) -c GFS_ErrMsgMod.f
+
+GFS_GetCf_ESMFMod.o:         GFS_GetCf_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_GetCf_ESMFMod.f
+
+GFS_ESMFMod.o:         GFS_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFMod.f
+
+#GFS_Grid_fnl_ESMFMod.o:         GFS_Grid_fnl_ESMFMod.f
+        #$(F77) $(FFLAG90A) -c GFS_Grid_fnl_ESMFMod.f
+
+GFS_GridComp_ESMFMod.o:         GFS_GridComp_ESMFMod.f
+                $(F77) $(FFLAG90A) -c GFS_GridComp_ESMFMod.f
+
+#GFS_Initialize_ESMFMod.o:         GFS_Initialize_ESMFMod.f
+#                $(F77) $(FFLAG90) -c GFS_Initialize_ESMFMod.f
+
+GFS_Initialize.o:         GFS_Initialize.f
+                $(F77) $(FFLAG90) -c GFS_Initialize.f
+
+GFS_Run_ESMFMod.o:        GFS_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Run_ESMFMod.f
+
+GFS_Finalize_ESMFMod.o:        GFS_Finalize_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Finalize_ESMFMod.f
+
+GFS_InputFile2ImportState.o:         GFS_InputFile2ImportState.f
+                $(F77) $(FFLAG90) -c GFS_InputFile2ImportState.f
+
+#GFS_Standalone_ESMF_ENS.o:         GFS_Standalone_ESMF_ENS.f
+#                $(F77) $(FFLAG90) -c GFS_Standalone_ESMF_ENS.f
+
+GFS_ESMF.o:        GFS_ESMF.f
+                $(F77) $(FFLAG90) -c GFS_ESMF.f
+
+Grid_ESMFCreate.o:         Grid_ESMFCreate.f
+                $(F77) $(FFLAG90) -c Grid_ESMFCreate.f
+
+StartTimeGet_ESMF.o:         StartTimeGet_ESMF.f
+                $(F77) $(FFLAG90) -c StartTimeGet_ESMF.f
+
+Ensemble_sub.o:         Ensemble_sub.f
+                $(F77) $(FFLAG90) -c Ensemble_sub.f
+
+mpi_more.o:        mpi_more.f
+                $(F77) $(FFLAGS) -c mpi_more.f
+
+cmp.comm.o:        cmp.comm.f
+                $(F77) $(FFLAGS) -c cmp.comm.f
+
+atm.comm.o:        atm.comm.f
+                $(F77) $(FFLAGS) -c atm.comm.f
+
+tiles.o:        tiles.f
+                $(F77) $(FFLAGS) -c tiles.f
+
+GEFS_Cpl_InternalState_ESMFMod.o:        GEFS_Cpl_InternalState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_InternalState_ESMFMod.f
+
+GEFS_CplState_ESMFMod.o:        GEFS_CplState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplState_ESMFMod.f
+
+GEFS_Sto_Per_Scheme.o:        GEFS_Sto_Per_Scheme.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme.f
+
+GEFS_Cpl_Run_ESMFMod.o:        GEFS_Cpl_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_Run_ESMFMod.f
+
+GEFS_Cpl_ESMFMod.o:        GEFS_Cpl_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_ESMFMod.f
+
+GEFS_CplComp_ESMFMod.o:        GEFS_CplComp_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplComp_ESMFMod.f
+
+GFS_AddParameterToStateMod.o:        GFS_AddParameterToStateMod.f
+                $(F77) $(FFLAG90) -c GFS_AddParameterToStateMod.f
+
+GEFS_Sto_Per_Scheme_Step1.o:        GEFS_Sto_Per_Scheme_Step1.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step1.f
+
+GEFS_Sto_Per_Scheme_Step2.o:        GEFS_Sto_Per_Scheme_Step2.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step2.f
+
+GEFS_GetParameterFromStateMod.o:        GEFS_GetParameterFromStateMod.f
+                $(F77) $(FFLAG90) -c GEFS_GetParameterFromStateMod.f
+
+Cal_Sto_Coef.o:                GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+
+GEFS_bcst_global.o:        GEFS_bcst_global.f
+                $(F77) $(FFLAG90) -c GEFS_bcst_global.f


Property changes on: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.ibm
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.jet
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.jet                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.jet        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,678 @@
+
+EXEC = global_fcst
+F77= mpif90
+F90= mpif90
+LIBDIR=/scratch2/portfolios/NCEPDEV/global/save/Shrinivas.Moorthi/para/lib
+
+#
+ FINCS    = -I /scratch2/portfolios/NCEPDEV/global/save/Shrinivas.Moorthi/para/lib/incmod/esmf_3_1_0rp2
+ FINCM    = -I /scratch2/portfolios/NCEPDEV/global/save/Shrinivas.Moorthi/para/lib/nwprod/incmod/w3lib-2.0_d
+
+ ARCH    = 
+ PGSZ    = 
+
+ OPTS     = -O3 -convert big_endian -traceback -r8
+ OPTS90   = -O3 -convert big_endian -traceback -r8
+ OPTS90A  = -O3 -convert big_endian -traceback -r8
+
+ FFLAG90  = $(OPTS90) $(FINCS) -free
+ FFLAG90A = $(OPTS90A) $(FINCS) -free
+ FFLAGS   = $(OPTS) $(TRAPS) 
+ FFLAGX   = $(OPTS) $(TRAPS) 
+ FFLAGIO  = $(OPTS) $(TRAPS)
+ FFLAGY   = $(OPTS)
+ FFLAGM   = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG)
+ FFLAGM2  = $(OPTS) $(FINCS) $(FINCM) $(TRAPS) $(DEBUG)
+ FFLAGM3  = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG) -free
+ FFLAG_SER = -O3 -convert big_endian   -traceback -r8
+
+ FFLAGSF  = -O3 -convert big_endian  -traceback -FR
+ FFLAGSI  = -O3 -convert big_endian  -traceback -FR
+ FFLAGB   = -O3 -convert big_endian  -traceback
+
+ LDR     = mpif90
+
+ LDFLAGS = 
+##LIBS = -L$(MKL) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lstdc++ -limf -lm -lrt -ldl -L$(LIBDIR) -lsp_d -lw3lib-2.0_d -lbacio_4 -lesmf_3_1_0rp2 -threads
+##LIBS = -lstdc++ -limf -lm -lrt -ldl -threads -L$(LIBDIR) -lsp_d -lw3lib-2.0_d -lbacio_4 -lesmf_3_1_0rp2 -lsfcio_4 -lsigio_4 -L${MPICH}/lib -lmpichcxx -mkl=sequential \
+##      -L$(MKL) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide
+
+LIBS = -L$(MKL) -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lguide -L$(LIBDIR) -lesmf_3_1_0rp2 -lbacio_4 -lsp_d -lw3lib-2.0_d -lrt -lstdc++
+
+
+.SUFFIXES: .o .f .F .h
+#
+# *****************************************************************
+#
+#OBJS0  =                             \
+#          NameList_ESMFMod.o          \
+#          Sfc_Var_ESMFMod.o           \
+#          Nst_Var_ESMFMod.o
+
+OBJ_MOD = machine.o             \
+          iounitdef.o           \
+          physcons.o            \
+          funcphys.o            \
+          progtm_module.o       \
+          rascnvv2.o            \
+          resol_def.o           \
+          gg_def.o              \
+          vert_def.o            \
+          sig_io.o              \
+          date_def.o            \
+          layout1.o             \
+          layout_grid_tracers.o \
+          namelist_def.o        \
+          namelist_soilveg.o    \
+          coordinate_def.o      \
+          tracer_const_h-new.o  \
+          mpi_def.o             \
+          sfcio_module.o        \
+          d3d_def.o             \
+          gfsmisc_def.o         \
+          nstio_module.o           \
+          module_nst_parameters.o  \
+          module_nst_water_prop.o  \
+          module_nst_model.o       \
+          calpreciptype.o          \
+          module_bfmicrophysics.o  \
+          mersenne_twister.o     \
+          Sfc_Var_ESMFMod.o      \
+          Nst_Var_ESMFMod.o       \
+          NameList_ESMFMod.o      \
+          GFS_Initialize.o         
+
+OBJS    = \
+        gcycle.o\
+        compns.o\
+        fix_fields.o\
+        dotstep.o \
+        mpi_quit.o
+
+#OBJS_PORT        = \
+#        fftpack.o \
+#        four2grid.fftpack.o \
+#        noblas.o\
+#        funcphys_subsx.o\
+
+OBJS_RAD        =              \
+        radlw_param.o          \
+        radlw_datatb.o         \
+        radlw_main.o           \
+        radsw_param.o          \
+        radsw_datatb.o         \
+        radsw_main.o           \
+        radiation_astronomy.o  \
+        radiation_aerosols.o   \
+        radiation_gases.o      \
+        radiation_clouds.o     \
+        radiation_surface.o    \
+        grrad.o                \
+        gloopr.o
+
+#
+#        astronomy.o    \
+##        funcphys_subs.o
+
+
+#        gloopb.o             \
+OBJS_PHY= \
+        ozinterp.o           \
+        ozphys.o             \
+        gbphys.o             \
+        dcyc2.o              \
+        dcyc2.pre.rad.o      \
+        set_soilveg.o        \
+        sfc_drv.o            \
+        sfc_land.o           \
+        progt2.o             \
+        sfc_sice.o           \
+        sfc_ocean.o          \
+        sfc_nst.o            \
+        sfc_diff.o           \
+        sfc_diag.o           \
+        sflx.o               \
+        moninp.o             \
+        moninp1.o            \
+        moninq.o             \
+        moninq1.o            \
+        tridi2t3.o           \
+        gwdps.o              \
+        gwdc.o               \
+        sascnv.o             \
+        sascnvn.o            \
+        cnvc90.o             \
+        shalcv.o             \
+        shalcv_opr.o         \
+        shalcnv.o            \
+        lrgsclr.o            \
+        gscond.o             \
+        precpd.o             \
+        mstadb.o             \
+        mstadbtn.o           \
+        mstcnv.o             \
+        get_prs.o            \
+        gsmddrive.o          
+
+#        gbphys_call.o       \
+###funcphys_subsx.o   only srt gpxs was called in fix_fields -table not used
+
+OBJS_IO= \
+        sfcsub.o              
+
+#        read_fix.o            \
+#        gribit.o              \
+#        wrt3d.o               \
+#        wrt3d_hyb.o           \
+#        wrtg3d.o              \
+#        wrtg3d_hyb.o          \
+#        wrtsfc.o              \
+#        para_fixio_w.o        \
+#        para_nstio_w.o        \
+#        treadeo.io.o          \
+#        treadeo.gfsio.o       \
+#        grid_to_spec.o        \
+#        spect_to_grid.o       \
+#        spect_tv_enthalpy_ps.o\
+#        setsig.o              \
+#        twriteeo.o            \
+#        bafrio.o              \
+#        spect_send.o          \
+#        spect_write.o
+
+
+OBJS_CC= \
+        cmp.comm.o  
+#        mpi_more.o  \
+#        atm.comm.o  \
+#        tiles.o
+
+SRC        = $(OBJS0:.o=.f) $(OBJ_MOD:.o=.f) $(OBJS:.o=.f) $(OBJS_RAD:.o=.f) $(OBJS_PHY:.o=.f) $(OBJS_IO:.o=.f) $(OBJS_CC:.o=.f)
+#
+INCS = f_hpm.h mpi_inc.h function2
+
+#
+# *****************************************************************
+#
+all: model-mpi
+
+model-mpi: $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) 
+        $(LDR) -o $(EXEC) $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) $(LIBS) $(LDFLAGS)
+
+clean:
+        rm -f $(OBJ_MOD) $(OBJS0) $(OBJS) $(OBJS_RAD) $(OBJS_PHY) $(OBJS_IO) *.mod
+
+tar:
+        tar -cvf tar.gfs.r4r8 $(SRC) $(INCS) $(COMS) $(OBJS_PORT:.o=.f) lonsper* res* xx* Makefile* ini.* scr.* m*real_?
+
+.F.o:
+        $(F77) $(FFLAGS) -c -d $&lt; 
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $&lt; 
+.f.o:
+        $(F77) $(FFLAGS) -c $&lt; 
+
+
+omegas.o:        omegas.f
+                $(F77) $(FFLAGM) -c omegas.f
+
+#
+# *****************************************************************
+#
+cnvc90.o:        cnvc90.f
+                $(F77) $(FFLAGM) -c cnvc90.f
+
+calpreciptype.o:        calpreciptype.f
+                $(F77) $(FFLAGM3) -c calpreciptype.f
+
+dcyc2.o:        dcyc2.f
+                $(F77) $(FFLAGM) -c dcyc2.f
+
+dcyc2.pre.rad.o:        dcyc2.pre.rad.f
+                $(F77) $(FFLAGM) -c dcyc2.pre.rad.f
+
+digifilt.o:        digifilt.f
+                $(F77) $(FFLAGX) -c digifilt.f
+
+funcphys_subsx.o:        funcphys_subsx.f
+                $(F77) $(FFLAGM) -c funcphys_subsx.f
+
+gbphys_adv_hyb_gc.o:        gbphys_adv_hyb_gc.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc.f
+
+gbphys_adv_hyb_gc_h-new.o:        gbphys_adv_hyb_gc_h-new.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc_h-new.f
+
+#gbphys_call.o:        gbphys_call.f
+#                $(F77) $(FFLAGM) -c gbphys_call.f
+
+gbphys.o:        gbphys.f
+                $(F77) $(FFLAGM) -c gbphys.f
+
+get_prs.o:        get_prs.f
+                $(F77) $(FFLAGM) -c get_prs.f
+
+filtr1eo.o:     filtr1eo.f
+                $(F77) $(FFLAG_SER)   -c filtr1eo.f
+
+filtr2eo.o:     filtr2eo.f
+                $(F77) $(FFLAG_SER)   -c filtr2eo.f
+
+gscond.o:        gscond.f
+                $(F77) $(FFLAGM) -c gscond.f
+
+gsmddrive.o:        gsmddrive.f
+                $(F77) $(FFLAGM) -c gsmddrive.f
+
+reduce_lons_grid_module.o:        reduce_lons_grid_module.f
+                $(F77) $(FFLAGM) -c reduce_lons_grid_module.f
+
+module_bfmicrophysics.o:        module_bfmicrophysics.f
+                $(F77) $(FFLAGM) -c module_bfmicrophysics.f
+
+gwdps.o:        gwdps.f
+                $(F77) $(FFLAGM) -c gwdps.f
+
+gwdc.o:                gwdc.f
+                $(F77) $(FFLAGM) -c gwdc.f
+
+hyb2press_gc.o:        hyb2press_gc.f
+                $(F77) $(FFLAGM) -c hyb2press_gc.f
+
+hyb2press.o:        hyb2press.f
+                $(F77) $(FFLAGM) -c hyb2press.f
+
+hyb2sig.o:        hyb2sig.f
+                $(F77) $(FFLAGM) -c hyb2sig.f
+
+lrgsclr.o:        lrgsclr.f
+                $(F77) $(FFLAGM) -c lrgsclr.f
+
+moninp.o:        moninp.f
+                $(F77) $(FFLAGM) -c moninp.f
+
+moninp1.o:        moninp1.f
+                $(F77) $(FFLAGM) -c moninp1.f
+
+moninq.o:        moninq.f
+                $(F77) $(FFLAGM) -c moninq.f
+
+moninq1.o:        moninq1.f
+                $(F77) $(FFLAGM) -c moninq1.f
+
+mstadb.o:        mstadb.f
+                $(F77) $(FFLAGM) -c mstadb.f
+
+mstadbtn.o:        mstadbtn.f
+                $(F77) $(FFLAGM) -c mstadbtn.f
+
+mstcnv.o:        mstcnv.f
+                $(F77) $(FFLAGM) -c mstcnv.f
+
+omegtes_gc.o:        omegtes_gc.f
+                $(F77) $(FFLAGM) -c omegtes_gc.f
+
+omegtes.o:        omegtes.f
+                $(F77) $(FFLAGM) -c omegtes.f
+
+ozinterp.o:        ozinterp.f
+                $(F77) $(FFLAGM) -c ozinterp.f
+
+ozphys.o:        ozphys.f
+                $(F77) $(FFLAGM) -c ozphys.f
+
+precpd.o:        precpd.f
+                $(F77) $(FFLAGM) -c precpd.f
+
+rascnvv2.o:        rascnvv2.f
+                $(F77) $(FFLAGM) -c rascnvv2.f
+
+sfc_sice.o:        sfc_sice.f
+                $(F77) $(FFLAGM) -c sfc_sice.f
+
+set_soilveg.o:        set_soilveg.f
+                $(F77) $(FFLAGM) -c set_soilveg.f
+
+namelist_soilveg.o:        namelist_soilveg.f
+                $(F77) $(FFLAGM) -c namelist_soilveg.f
+
+sfc_land.o:        sfc_land.f
+                $(F77) $(FFLAGM) -c sfc_land.f
+                                                                            
+progt2.o:        progt2.f
+                $(F77) $(FFLAGM) -c progt2.f
+
+sfc_drv.o:        sfc_drv.f
+                $(F77) $(FFLAGM) -c sfc_drv.f
+
+sflx.o:         sflx.f
+                $(F77) $(FFLAGM) -c sflx.f
+
+sfc_ocean.o:        sfc_ocean.f
+                $(F77) $(FFLAGM) -c sfc_ocean.f
+
+sfc_nst.o:        sfc_nst.f
+                $(F77) $(FFLAGM) -c sfc_nst.f
+
+sfc_diff.o:        sfc_diff.f
+                $(F77) $(FFLAGM) -c sfc_diff.f
+
+sfc_diag.o:        sfc_diag.f
+                $(F77) $(FFLAGM) -c sfc_diag.f
+
+sascnv.o:        sascnv.f
+                $(F77) $(FFLAGM) -c sascnv.f
+
+sascnvn.o:        sascnvn.f
+                $(F77) $(FFLAGM) -c sascnvn.f
+
+tridi2t3.o:        tridi2t3.f
+                $(F77) $(FFLAGM) -c tridi2t3.f
+
+shalcv.o:        shalcv.f
+                $(F77) $(FFLAGM) -c shalcv.f
+
+shalcv_opr.o:        shalcv_opr.f
+                $(F77) $(FFLAGM) -c shalcv_opr.f
+
+shalcnv.o:        shalcnv.f
+                $(F77) $(FFLAGM) -c shalcnv.f
+
+sig2press.o:        sig2press.f
+                $(F77) $(FFLAGM) -c sig2press.f
+
+# *****************************************************************
+
+radlw_param.o:        radlw_param.f
+                $(F77) $(FFLAGM) -c radlw_param.f
+
+
+radlw_datatb.o:        radlw_datatb.f
+                $(F77) $(FFLAGM) -c radlw_datatb.f
+
+
+radlw_main.o:        radlw_main.f
+                $(F77) $(FFLAGM2) -c radlw_main.f
+
+radsw_param.o:        radsw_param.f
+                $(F77) $(FFLAGM) -c radsw_param.f
+
+radsw_datatb.o:        radsw_datatb.f
+                $(F77) $(FFLAGM) -c radsw_datatb.f
+
+radsw_main.o:        radsw_main.f
+                $(F77) $(FFLAGM2) -c radsw_main.f
+
+radiation_astronomy.o:        radiation_astronomy.f
+                $(F77) $(FFLAGM) -c radiation_astronomy.f
+
+radiation_aerosols.o:        radiation_aerosols.f
+                $(F77) $(FFLAGM) -c radiation_aerosols.f
+
+radiation_gases.o:        radiation_gases.f
+                $(F77) $(FFLAGM) -c radiation_gases.f
+
+radiation_clouds.o:        radiation_clouds.f
+                $(F77) $(FFLAGM) -c radiation_clouds.f
+
+radiation_surface.o:        radiation_surface.f
+                $(F77) $(FFLAGM) -c radiation_surface.f
+
+grrad.o:        grrad.f
+                $(F77) $(FFLAGM) -c grrad.f
+
+progtm_module.o:        progtm_module.f
+                $(F77) $(FFLAGM) -c progtm_module.f
+
+machine.o:        machine.f
+                $(F77) $(FFLAGM) -c machine.f
+
+num_parthds.o:        num_parthds.f
+                $(F77) $(FFLAGM) -c num_parthds.f
+
+kinds.o:        GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+
+peuc.o:                GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+
+pran.o:                GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+
+prana.o:        GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+
+#
+# *****************************************************************
+#
+physcons.o:        physcons.f
+                $(F77) $(FFLAG90) -c physcons.f
+
+iounitdef.o:        iounitdef.f
+                $(F77) $(FFLAG90) -c iounitdef.f
+
+funcphys.o:        funcphys.f
+                $(F77) $(FFLAG90) -c funcphys.f
+
+sfcio_module.o:        sfcio_module.f
+                $(F77) $(FFLAGSF) -c sfcio_module.f
+
+sigio_module.o:        sigio_module.f
+                $(F77) $(FFLAGSI) -c sigio_module.f
+
+gfsio_def.o:        gfsio_def.f
+                $(F77) $(FFLAGSI) -c gfsio_def.f
+
+gfsio_module.o:        gfsio_module.f
+                $(F77) $(FFLAGSI) -c gfsio_module.f
+
+sigio_r_module.o:        sigio_r_module.f
+                $(F77) $(FFLAGSI) -c sigio_r_module.f
+
+bafrio.o:        bafrio.f
+                $(F77) $(FFLAGB) -c bafrio.f
+
+#
+#sigdas.io.o:        sigdas.io.f
+##                $(F77) $(FFLAGIO) -c sigdas.io.f
+
+read_fix.o:        read_fix.f
+                $(F77) $(FFLAGX) -c read_fix.f
+
+softcount.o:        softcount.f
+                $(F77) $(FFLAGX) -c softcount.f
+
+gloopr.o:        gloopr.f
+                $(F77) $(FFLAG_SER) -c gloopr.f
+
+gloopb.o:        gloopb.f
+                $(F77) $(FFLAGM2) -c gloopb.f
+
+sfcsub.o:        sfcsub.f
+                $(F77) $(FFLAG_SER) -c sfcsub.f
+
+gcycle.o:        gcycle.f
+                $(F77) $(FFLAGM) -c gcycle.f
+
+getaer.o:        getaer.f
+                $(F77) $(FFLAGIO) -c getaer.f
+
+wrt3d.o:        wrt3d.f
+                $(F77) $(FFLAGIO) -c wrt3d.f
+
+gribit.o:        gribit.f
+                $(F77) $(FFLAGIO) -c gribit.f
+
+wrtsfc.o:        wrtsfc.f
+                $(F77) $(FFLAGIO) -c wrtsfc.f
+
+para_fixio_w.o:                para_fixio_w.f
+                $(F77) $(FFLAGIO) -c para_fixio_w.f
+
+para_nstio_w.o:                para_nstio_w.f
+                $(F77) $(FFLAGIO) -c para_nstio_w.f
+
+#para_fixio_all_w.o:                para_fixio_all_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_all_w.f
+
+#para_fixio_iop_w.o:        para_fixio_iop_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_iop_w.f
+
+#conrad.o:        conrad.f
+#                $(F77) $(FFLAGIO) -c conrad.f
+
+#crhtab.o:        crhtab.f
+#                $(F77) $(FFLAGIO) -c crhtab.f
+
+treadeo.io.o:        treadeo.io.f
+                $(F77) $(FFLAGIO) -c treadeo.io.f
+
+treadeo.gfsio.o:        treadeo.gfsio.f
+                $(F77) $(FFLAGIO) -c treadeo.gfsio.f
+
+twriteeo.o:        twriteeo.f
+                $(F77) $(FFLAGIO) -c twriteeo.f
+
+spect_send.o:        spect_send.f
+                $(F77) $(FFLAGIO) -c spect_send.f
+
+spect_write.o:        spect_write.f
+                $(F77) $(FFLAGIO) -c spect_write.f
+
+spect_to_grid.o:        spect_to_grid.f
+                $(F77) $(FFLAGIO) -c spect_to_grid.f
+
+spect_tv_enthalpy_ps.o:        spect_tv_enthalpy_ps.f
+                $(F77) $(FFLAGIO) -c spect_tv_enthalpy_ps.f
+
+grid_to_spec.o:        grid_to_spec.f
+                $(F77) $(FFLAGIO) -c grid_to_spec.f
+
+wrtout.o:        wrtout.f
+                $(F77) $(FFLAGIO) -c wrtout.f
+
+nstio_module.o:         nstio_module.f
+                $(F77) $(FFLAG90) -c nstio_module.f
+
+module_nst_parameters.o:        module_nst_parameters.f
+                $(F77) $(FFLAG90) -c module_nst_parameters.f
+
+module_nst_water_prop.o:         module_nst_water_prop.f
+                $(F77) $(FFLAG90) -c module_nst_water_prop.f
+
+module_nst_model.o:                module_nst_model.f
+                $(F77) $(FFLAG90) -c module_nst_model.f
+
+NameList_ESMFMod.o:         NameList_ESMFMod.f
+                $(F77) $(FFLAG90) -c NameList_ESMFMod.f
+
+Sfc_Var_ESMFMod.o:        Sfc_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Sfc_Var_ESMFMod.f
+
+Nst_Var_ESMFMod.o:        Nst_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Nst_Var_ESMFMod.f
+
+Lib_ESMFStateAddGetMod.o:        Lib_ESMFStateAddGetMod.f
+                $(F77) $(FFLAG90) -c Lib_ESMFStateAddGetMod.f
+
+#GFS_ESMFStateAddGetMod.o:         GFS_ESMFStateAddGetMod.f
+#                $(F77) $(FFLAG90) -c GFS_ESMFStateAddGetMod.f
+
+GFS_InternalState_ESMFMod.o:         GFS_InternalState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_InternalState_ESMFMod.f
+
+GFS_ESMFStateMod.o:         GFS_ESMFStateMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFStateMod.f
+
+GFS_ErrMsgMod.o:         GFS_ErrMsgMod.f
+                $(F77) $(FFLAG90) -c GFS_ErrMsgMod.f
+
+GFS_GetCf_ESMFMod.o:         GFS_GetCf_ESMFMod.f cmp.comm.o atm.comm.o
+                $(F77) $(FFLAG90) -c GFS_GetCf_ESMFMod.f
+
+GFS_ESMFMod.o:         GFS_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFMod.f
+
+#GFS_Grid_fnl_ESMFMod.o:         GFS_Grid_fnl_ESMFMod.f
+        #$(F77) $(FFLAG90A) -c GFS_Grid_fnl_ESMFMod.f
+
+GFS_GridComp_ESMFMod.o:         GFS_GridComp_ESMFMod.f
+                $(F77) $(FFLAG90A) -c GFS_GridComp_ESMFMod.f
+
+#GFS_Initialize_ESMFMod.o:         GFS_Initialize_ESMFMod.f
+#                $(F77) $(FFLAG90) -c GFS_Initialize_ESMFMod.f
+GFS_Initialize.o:         GFS_Initialize.f
+                $(F77) $(FFLAG90) -c GFS_Initialize.f
+
+GFS_Run_ESMFMod.o:        GFS_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Run_ESMFMod.f
+
+GFS_Finalize_ESMFMod.o:        GFS_Finalize_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Finalize_ESMFMod.f
+
+GFS_InputFile2ImportState.o:         GFS_InputFile2ImportState.f
+                $(F77) $(FFLAG90) -c GFS_InputFile2ImportState.f
+
+#GFS_Standalone_ESMF_ENS.o:         GFS_Standalone_ESMF_ENS.f
+#                $(F77) $(FFLAG90) -c GFS_Standalone_ESMF_ENS.f
+
+GFS_ESMF.o:        GFS_ESMF.f
+                $(F77) $(FFLAG90) -c GFS_ESMF.f
+
+Grid_ESMFCreate.o:         Grid_ESMFCreate.f
+                $(F77) $(FFLAG90) -c Grid_ESMFCreate.f
+
+StartTimeGet_ESMF.o:         StartTimeGet_ESMF.f
+                $(F77) $(FFLAG90) -c StartTimeGet_ESMF.f
+
+Ensemble_sub.o:         Ensemble_sub.f
+                $(F77) $(FFLAG90) -c Ensemble_sub.f
+
+mpi_more.o:        mpi_more.f
+                $(F77) $(FFLAGS) -c mpi_more.f
+
+cmp.comm.o:        cmp.comm.f
+                $(F77) $(FFLAGS) -c cmp.comm.f
+
+atm.comm.o:        atm.comm.f
+                $(F77) $(FFLAGS) -c atm.comm.f
+
+tiles.o:        tiles.f
+                $(F77) $(FFLAGS) -c tiles.f
+
+#GEFS_Cpl_InternalState_ESMFMod.o:        GEFS_Cpl_InternalState_ESMFMod.f
+#                $(F77) $(FFLAG90) -c GEFS_Cpl_InternalState_ESMFMod.f
+GEFS_Cpl_InternalState.o:        GEFS_Cpl_InternalState.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_InternalState.f
+
+GEFS_CplState_ESMFMod.o:        GEFS_CplState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplState_ESMFMod.f
+
+GEFS_Sto_Per_Scheme.o:        GEFS_Sto_Per_Scheme.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme.f
+
+GEFS_Cpl_Run_ESMFMod.o:        GEFS_Cpl_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_Run_ESMFMod.f
+
+GEFS_Cpl_ESMFMod.o:        GEFS_Cpl_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_ESMFMod.f
+
+GEFS_CplComp_ESMFMod.o:        GEFS_CplComp_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplComp_ESMFMod.f
+
+GFS_AddParameterToStateMod.o:        GFS_AddParameterToStateMod.f
+                $(F77) $(FFLAG90) -c GFS_AddParameterToStateMod.f
+
+GEFS_Sto_Per_Scheme_Step1.o:        GEFS_Sto_Per_Scheme_Step1.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step1.f
+
+GEFS_Sto_Per_Scheme_Step2.o:        GEFS_Sto_Per_Scheme_Step2.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step2.f
+
+GEFS_GetParameterFromStateMod.o:        GEFS_GetParameterFromStateMod.f
+                $(F77) $(FFLAG90) -c GEFS_GetParameterFromStateMod.f
+
+Cal_Sto_Coef.o:                GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+
+GEFS_bcst_global.o:        GEFS_bcst_global.f
+                $(F77) $(FFLAG90) -c GEFS_bcst_global.f


Property changes on: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.jet
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.ibm
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.ibm                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.ibm        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,824 @@
+####   make with mpxlf_r (threading) 
+#EXEC    =  f.applic.x   
+#F77     = mpxlf
+#
+#FINCS    = -I/global/save/wx23sm/BASELIBS/esmf_3_1_0rp2_src/esmf/mod/modO/AIX.default.64.mpi.default
+FINCS    = -I/nwprod/lib/incmod/esmf_3_1_0rp2
+ FINCM    = -I/nwprod/lib/incmod/w3_d
+#FINCM    = -I/global/save/wx23sm/GFS/f2010/trunk/para/lib/incmod/w3_d
+
+ARCH    = -qarch=pwr6 -qtune=pwr6 -qcache=auto -qnohot
+PGSZ    = -bdatapsize:64K -bstackpsize:64K -btextpsize:4K
+
+OPTS     = -g -qsuffix=cpp=f -O3 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave $(ARCH)
+OPTS90   = -qsuffix=cpp=f -O3 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave $(ARCH)
+OPTS90A  = -qsuffix=cpp=f -O3 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave $(ARCH)
+#TRAPS    = -qinitauto=7FBFFFFF -qflttrap=enable:overflow:zerodivide:invalid
+#TRAPS    = -qinitauto=7FBFFFFF -qflttrap=enable:overflow:zerodivide:invalid -qsigtrap=xl__trcedump
+#DEBUG    = -g -qfullpath -qcheck -qextchk
+#
+#FFLAGM  = -g -qsuffix=cpp=f -O0 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave -q fixed -qinitauto=7FBFFFFF -qflttrap=enable:overflow:zerodivide:invalid -qsigtrap=xl__trcedump -qcheck -qextchk -NS2048
+#FFLAGM2 = -g $(FINCM) -qsuffix=cpp=f -O0 -qrealsize=8 -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave -q fixed -qinitauto=7FBFFFFF -qflttrap=enable:overflow:zerodivide:invalid -qsigtrap=xl__trcedump -qcheck -qextchk -NS2048
+ FFLAG90  = $(OPTS90) $(FINCS) $(FINCM) -qfree -NS2048
+ FFLAG90A = $(OPTS90A) $(FINCS) -qfree -NS2048
+ FFLAGS   = $(OPTS) $(TRAPS) -qfixed
+ FFLAGX   = $(OPTS) $(TRAPS) -qfixed
+ FFLAGIO  = $(OPTS) $(TRAPS) -qfixed
+ FFLAGY   = $(OPTS) -qfixed
+ FFLAGM   = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG) -NS2048 -qfixed
+ FFLAGM2  = $(OPTS) $(FINCS) $(FINCM) $(TRAPS) $(DEBUG) -NS2048 -qfixed
+ FFLAGM3  = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG) -NS2048 -qfree
+ FFLAGSF  = -g -O3 -qnosave -qfree=f90 -qcheck
+ FFLAGSI  = -g -O3 -qnosave -qfree=f90
+ FFLAGB   = -g -O3 -qnosave -qfixed
+
+ LDR     = mpxlf95_r -qsmp=noauto 
+LDFLAGS = -lessl_r -lmass -qsmp=noauto
+
+#LIBS = -lC ${ESMFLIB} -L /nwprod/lib/ -l w3_d -l bacio_4
+#ESMFLIB  = /global/save/wx20wy/BASELIBS/esmf_3_1_0_src/AIX/lib/libO
+#LDFLAGS = -lessl_r -lmass -qsmp=noauto ${ESMFLIB}/libesmf.a ${ESMFLIB}/libnetcdf_stubs.a
+
+#ESMFLIB  = /global/save/wx23sm/BASELIBS/esmf_3_1_0rp2_src/esmf/lib/libO/AIX.default.64.mpi.default
+#LDFLAGS = -lessl_r -lmass -qsmp=noauto ${ESMFLIB}/libesmf.a $(PGSZ)
+ESMFLIB  = /nwprod/lib
+LDFLAGS = -lessl_r -lmass -qsmp=noauto ${ESMFLIB}/libesmf_3_1_0rp2.a $(PGSZ)
+LIBS = -lC -L /nwprod/lib/ -l w3_d -l bacio_4 -lsp_d
+#LIBS = -lC -L /global/save/wx23sm/GFS/f2010/trunk/para/lib -l bacio_4 -l w3_d -l sp_d
+
+.SUFFIXES: .o .f .F .h
+#
+# *****************************************************************
+#
+OBJS0        =                               \
+          NameList_ESMFMod.o          \
+          Sfc_Var_ESMFMod.o           \
+          Nst_Var_ESMFMod.o           \
+          GFS_ErrMsgMod.o             \
+          Lib_ESMFStateAddGetMod.o    \
+          GFS_InternalState_ESMFMod.o \
+          GFS_ESMFStateMod.o          \
+          GFS_GetCf_ESMFMod.o         \
+          GFS_Initialize_ESMFMod.o    \
+          GFS_Run_ESMFMod.o           \
+          GFS_Finalize_ESMFMod.o      \
+          GFS_AddParameterToStateMod.o \
+          GFS_GridComp_ESMFMod.o      \
+          Grid_ESMFCreate.o           \
+          StartTimeGet_ESMF.o         \
+          Ensemble_sub.o              \
+          GEFS_Cpl_InternalState_ESMFMod.o         \
+          GEFS_CplState_ESMFMod.o                  \
+          GEFS_four2fln_gg.o                        \
+          GEFS_uvoedz.o                            \
+          GEFS_uveodz.o                            \
+          GEFS_sumfln_slg_gg.o                     \
+          GEFS_dozeuv.o                            \
+          GEFS_dezouv.o                            \
+          GEFS_Sto_Per_Scheme_Step1.o              \
+          GEFS_Sto_Per_Scheme_Step2.o              \
+          GEFS_Cpl_Run_ESMFMod.o                   \
+          GEFS_Cpl_ESMFMod.o                       \
+          GEFS_GetParameterFromStateMod.o          \
+          GEFS_CplComp_ESMFMod.o                   \
+          GFS_ESMF.o                               \
+          Cal_Sto_Coef.o                           \
+          GEFS_bcst_global.o
+
+#          GFS_ESMFStateAddGetMod.o
+#          GFS_Standalone_ESMF_ENS.o
+#          GFS_InputFile2ImportState.o 
+
+
+OBJ_MOD        = machine.o             \
+          num_parthds.o         \
+          module.o              \
+          iounitdef.o           \
+          physcons.o            \
+          funcphys.o            \
+          progtm_module.o       \
+          rascnvv2.o            \
+          resol_def.o           \
+          gg_def.o              \
+          vert_def.o            \
+          sig_io.o              \
+          date_def.o            \
+          layout1.o             \
+          layout_grid_tracers.o \
+          namelist_def.o        \
+          namelist_soilveg.o    \
+          coordinate_def.o      \
+          tracer_const_h-new.o  \
+          reduce_lons_grid_module.o \
+          matrix_sig_def.o      \
+          mpi_def.o             \
+          semi_lag_def.o        \
+          deldifs_def.o         \
+          deldifs_hyb_slg_def.o       \
+          bfilt_def.o           \
+          sfcio_module.o        \
+          sigio_module.o        \
+          sigio_r_module.o      \
+          reduce_lons_grid_module.o \
+          gfsio_module.o        \
+          gfsio_def.o           \
+           d3d_def.o             \
+          nstio_module.o           \
+          module_nst_parameters.o  \
+          module_nst_water_prop.o  \
+          module_nst_model.o       \
+          calpreciptype.o          \
+          module_bfmicrophysics.o  \
+           kinds.o                  \
+           peuc.o                   \
+           pran.o                   \
+          prana.o                  \
+          layout_lag.o             \
+          slglat.o                 \
+          slgshr.o                 \
+          pmgrid.o                 \
+          set_longgs.o             \
+          get_cd_hyb_slg.o         \
+          sltini_all.o             \
+          set_halos_lag_sn.o       \
+          getcon_lag.o             \
+          gfidi_speed.o            \
+          plot85_a_h.o             \
+          setlats_lag.o            \
+          gfidi_tracers.o          \
+          slgscan_all_redgg.o      \
+          get_topo_grid_grad.o     \
+          mpi_tracers_a_to_b.o     \
+          gloopa_tracers.o         \
+          ndsl_pack.o                   \
+          ndsl_para.o                   \
+          sicdif_hyb_slg.o
+
+
+OBJS        = \
+        get_cd_hyb.o get_am_bm_hyb.o\
+        get_cd_hyb_gc.o get_am_bm_hyb_gc.o\
+        wrt3d_hyb.o\
+        wrtg3d_hyb.o\
+        setlats.o\
+        getysk.o\
+        getysk_gc.o\
+        ifshuff.o\
+        shuffle_grid.o\
+        digifilt.o\
+        gcycle.o\
+        wrtout.o\
+        grid_collect.o\
+        info.o\
+        four_to_grid.o\
+        hpmdummy.o\
+        coundummy.o\
+        damp_speed.o\
+        deldifs.o\
+        deldifs_tracers.o\
+        deldifs_hyb_ecm.o\
+        get_tc_ecm.o\
+        fix_fields.o\
+        spect_fields.o\
+        delnpe.o\
+        delnpo.o \
+        dezouv.o\
+        impadj_sig.locl.o\
+        impadj_slg.locl.o\
+        impadj_hyb.locl.o\
+        impadj_hyb.locl_gc.o\
+        dozeuv.o\
+        epslon.o\
+        filtr1eo.o \
+        filtr2eo.o\
+        get_ls_node.o\
+        get_lats_node_shuff_a_fix.o\
+        get_lats_node_shuff_r_fix.o\
+        getcon.o \
+        gfidi_sig.o\
+        gfidi_hyb.o\
+        gfidi_hyb_gc.o\
+        gfidi_hyb_gc_h-new.o\
+        gfidi_hyb_gc_ndsl.o\
+        ndsl_advecth.o\
+        glats.o\
+        gloopa_opt_gg.o\
+        lon_lat_para.o\
+        compns.o\
+        gozrineo.o\
+        pln2eo.o \
+        rms_spect.o \
+        uvoedz.o                     \
+        mpi_quit.o                   \
+        sicdif_sig.o                 \
+        sicdif_hyb.o                 \
+        sicdif_hyb_gc.o              \
+        dotstep_tracers.o            \
+        ensemble_wrt.o               \
+        gather_times.o               \
+        four2fln_gg.o                \
+        sortrx.o                     \
+        sumfln_slg_gg.o              \
+        sumder2_slg_gg.o             \
+        triseori.o                   \
+        uveodz.o                     \
+        ysminv.o                     \
+        ver_sig.o       
+
+
+##        wrtout_hyb.not.sure.o
+
+##        bartrieo.o\
+OBJS_PORT        = \
+        fftpack.o \
+        four2grid.fftpack.o \
+        noblas.o\
+        funcphys_subsx.o\
+
+OBJS_RAD        =              \
+        radlw_param.o          \
+        radlw_datatb.o         \
+        radlw_main.o           \
+        radsw_param.o          \
+        radsw_datatb.o         \
+        radsw_main.o           \
+        radiation_astronomy.o  \
+        radiation_aerosols.o   \
+        radiation_gases.o      \
+        radiation_clouds.o     \
+        radiation_surface.o    \
+        grrad.o                \
+        gloopr.o
+
+#
+#        astronomy.o    \
+##        funcphys_subs.o
+
+OBJS_PHY= \
+        ozinterp.o           \
+        ozphys.o             \
+        gloopb.o             \
+        gbphys.o             \
+        gbphys_adv_hyb_gc.o  \
+        gbphys_adv_hyb_gc_h-new.o \
+        dcyc2.o              \
+        dcyc2.pre.rad.o      \
+        set_soilveg.o        \
+        sfc_drv.o            \
+        sfc_land.o           \
+        progt2.o             \
+        sfc_sice.o           \
+        sfc_ocean.o          \
+        sfc_nst.o            \
+        sfc_diff.o           \
+        sfc_diag.o           \
+        sflx.o               \
+        moninp.o             \
+        moninp1.o            \
+        moninq.o             \
+        moninq1.o            \
+        tridi2t3.o           \
+        gwdps.o              \
+        gwdc.o               \
+        sascnv.o             \
+        sascnvn.o            \
+        cnvc90.o             \
+        shalcv.o             \
+        shalcv_opr.o         \
+        shalcnv.o            \
+        lrgsclr.o            \
+        gscond.o             \
+        precpd.o             \
+        mstadb.o             \
+        mstadbtn.o           \
+        mstcnv.o             \
+        get_prs.o            \
+        gsmddrive.o          \
+        omegtes.o            \
+        omegtes_gc.o         \
+        omegas.o             \
+        hyb2sig.o            \
+        hyb2press.o          \
+        hyb2press_gc.o       \
+        sig2press.o
+
+#        gbphys_call.o       \
+###funcphys_subsx.o   only srt gpxs was called in fix_fields -table not used
+
+OBJS_IO= \
+        read_fix.o            \
+        gribit.o              \
+        wrt3d.o               \
+        wrt3d_hyb.o           \
+        wrtg3d.o              \
+        wrtg3d_hyb.o          \
+        wrtsfc.o              \
+        para_fixio_w.o        \
+        para_nstio_w.o        \
+        sfcsub.o              \
+        treadeo.io.o          \
+        treadeo.gfsio.o       \
+        grid_to_spec.o        \
+        spect_to_grid.o       \
+        spect_tv_enthalpy_ps.o\
+        setsig.o              \
+        twriteeo.o            \
+        bafrio.o              \
+        spect_send.o          \
+        spect_write.o
+
+#        spect_tv_enthalpy_ps.o\   # To be used later
+
+#        para_fixio_all_w.o \
+#        para_fixio_iop_w.o \
+#        wrtsfc_all.o       \
+#        wrtsfc_iop.o       \
+##         getaer.o           \
+##         conrad.o           \
+##         crhtab.o           \
+
+OBJS_CC= \
+        mpi_more.o  \
+        cmp.comm.o  \
+        atm.comm.o  \
+        tiles.o
+
+SRC        = $(OBJS0:.o=.f) $(OBJ_MOD:.o=.f) $(OBJS:.o=.f) $(OBJS_RAD:.o=.f) $(OBJS_PHY:.o=.f) $(OBJS_IO:.o=.f) $(OBJS_CC:.o=.f)
+#
+INCS = f_hpm.h mpi_inc.h function2
+
+#
+# *****************************************************************
+#
+all: model-mpi
+
+model-mpi: $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) 
+        $(LDR) $(LDFLAGS) -o $(EXEC) $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) $(LIBS)
+
+clean:
+        rm -f $(OBJ_MOD) $(OBJS0) $(OBJS) $(OBJS_RAD) $(OBJS_PHY) $(OBJS_IO) *.mod
+
+tar:
+        tar -cvf tar.gfs.r4r8 $(SRC) $(INCS) $(COMS) $(OBJS_PORT:.o=.f) lonsper* res* xx* Makefile* ini.* scr.* m*real_?
+
+.F.o:
+        $(F77) $(FFLAGS) -c -d $&lt; 
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $&lt; 
+.f.o:
+        $(F77) $(FFLAGS) -c $&lt; 
+
+
+omegas.o:        omegas.f
+                $(F77) $(FFLAGM) -c omegas.f
+
+#
+# *****************************************************************
+#
+cnvc90.o:        cnvc90.f
+                $(F77) $(FFLAGM) -c cnvc90.f
+
+calpreciptype.o:        calpreciptype.f
+                $(F77) $(FFLAGM3) -c calpreciptype.f
+
+dcyc2.o:        dcyc2.f
+                $(F77) $(FFLAGM) -c dcyc2.f
+
+dcyc2.pre.rad.o:        dcyc2.pre.rad.f
+                $(F77) $(FFLAGM) -c dcyc2.pre.rad.f
+
+digifilt.o:        digifilt.f
+                $(F77) $(FFLAGX) -c digifilt.f
+
+funcphys_subsx.o:        funcphys_subsx.f
+                $(F77) $(FFLAGM) -c funcphys_subsx.f
+
+gbphys_adv_hyb_gc.o:        gbphys_adv_hyb_gc.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc.f
+
+gbphys_adv_hyb_gc_h-new.o:        gbphys_adv_hyb_gc_h-new.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc_h-new.f
+
+#gbphys_call.o:        gbphys_call.f
+#                $(F77) $(FFLAGM) -c gbphys_call.f
+
+gbphys.o:        gbphys.f
+                $(F77) $(FFLAGM) -c gbphys.f
+
+get_prs.o:        get_prs.f
+                $(F77) $(FFLAGM) -c get_prs.f
+
+gscond.o:        gscond.f
+                $(F77) $(FFLAGM) -c gscond.f
+
+gsmddrive.o:        gsmddrive.f
+                $(F77) $(FFLAGM) -c gsmddrive.f
+
+reduce_lons_grid_module.o:        reduce_lons_grid_module.f
+                $(F77) $(FFLAGM) -c reduce_lons_grid_module.f
+
+module_bfmicrophysics.o:        module_bfmicrophysics.f
+                $(F77) $(FFLAGM) -c module_bfmicrophysics.f
+
+gwdps.o:        gwdps.f
+                $(F77) $(FFLAGM) -c gwdps.f
+
+gwdc.o:                gwdc.f
+                $(F77) $(FFLAGM) -c gwdc.f
+
+hyb2press_gc.o:        hyb2press_gc.f
+                $(F77) $(FFLAGM) -c hyb2press_gc.f
+
+hyb2press.o:        hyb2press.f
+                $(F77) $(FFLAGM) -c hyb2press.f
+
+hyb2sig.o:        hyb2sig.f
+                $(F77) $(FFLAGM) -c hyb2sig.f
+
+lrgsclr.o:        lrgsclr.f
+                $(F77) $(FFLAGM) -c lrgsclr.f
+
+moninp.o:        moninp.f
+                $(F77) $(FFLAGM) -c moninp.f
+
+moninp1.o:        moninp1.f
+                $(F77) $(FFLAGM) -c moninp1.f
+
+moninq.o:        moninq.f
+                $(F77) $(FFLAGM) -c moninq.f
+
+moninq1.o:        moninq1.f
+                $(F77) $(FFLAGM) -c moninq1.f
+
+mstadb.o:        mstadb.f
+                $(F77) $(FFLAGM) -c mstadb.f
+
+mstadbtn.o:        mstadbtn.f
+                $(F77) $(FFLAGM) -c mstadbtn.f
+
+mstcnv.o:        mstcnv.f
+                $(F77) $(FFLAGM) -c mstcnv.f
+
+omegtes_gc.o:        omegtes_gc.f
+                $(F77) $(FFLAGM) -c omegtes_gc.f
+
+omegtes.o:        omegtes.f
+                $(F77) $(FFLAGM) -c omegtes.f
+
+ozinterp.o:        ozinterp.f
+                $(F77) $(FFLAGM) -c ozinterp.f
+
+ozphys.o:        ozphys.f
+                $(F77) $(FFLAGM) -c ozphys.f
+
+precpd.o:        precpd.f
+                $(F77) $(FFLAGM) -c precpd.f
+
+rascnvv2.o:        rascnvv2.f
+                $(F77) $(FFLAGM) -c rascnvv2.f
+
+sfc_sice.o:        sfc_sice.f
+                $(F77) $(FFLAGM) -c sfc_sice.f
+
+set_soilveg.o:        set_soilveg.f
+                $(F77) $(FFLAGM) -c set_soilveg.f
+
+namelist_soilveg.o:        namelist_soilveg.f
+                $(F77) $(FFLAGM) -c namelist_soilveg.f
+
+sfc_land.o:        sfc_land.f
+                $(F77) $(FFLAGM) -c sfc_land.f
+                                                                            
+progt2.o:        progt2.f
+                $(F77) $(FFLAGM) -c progt2.f
+
+sfc_drv.o:        sfc_drv.f
+                $(F77) $(FFLAGM) -c sfc_drv.f
+
+sflx.o:         sflx.f
+                $(F77) $(FFLAGM) -c sflx.f
+
+sfc_ocean.o:        sfc_ocean.f
+                $(F77) $(FFLAGM) -c sfc_ocean.f
+
+sfc_nst.o:        sfc_nst.f
+                $(F77) $(FFLAGM) -c sfc_nst.f
+
+sfc_diff.o:        sfc_diff.f
+                $(F77) $(FFLAGM) -c sfc_diff.f
+
+sfc_diag.o:        sfc_diag.f
+                $(F77) $(FFLAGM) -c sfc_diag.f
+
+sascnv.o:        sascnv.f
+                $(F77) $(FFLAGM) -c sascnv.f
+
+sascnvn.o:        sascnvn.f
+                $(F77) $(FFLAGM) -c sascnvn.f
+
+tridi2t3.o:        tridi2t3.f
+                $(F77) $(FFLAGM) -c tridi2t3.f
+
+shalcv.o:        shalcv.f
+                $(F77) $(FFLAGM) -c shalcv.f
+
+shalcv_opr.o:        shalcv_opr.f
+                $(F77) $(FFLAGM) -c shalcv_opr.f
+
+shalcnv.o:        shalcnv.f
+                $(F77) $(FFLAGM) -c shalcnv.f
+
+sig2press.o:        sig2press.f
+                $(F77) $(FFLAGM) -c sig2press.f
+
+# *****************************************************************
+
+radlw_param.o:        radlw_param.f
+                $(F77) $(FFLAGM) -c radlw_param.f
+
+
+radlw_datatb.o:        radlw_datatb.f
+                $(F77) $(FFLAGM) -c radlw_datatb.f
+
+
+radlw_main.o:        radlw_main.f
+                $(F77) $(FFLAGM2) -c radlw_main.f
+
+radsw_param.o:        radsw_param.f
+                $(F77) $(FFLAGM) -c radsw_param.f
+
+radsw_datatb.o:        radsw_datatb.f
+                $(F77) $(FFLAGM) -c radsw_datatb.f
+
+radsw_main.o:        radsw_main.f
+                $(F77) $(FFLAGM2) -c radsw_main.f
+
+radiation_astronomy.o:        radiation_astronomy.f
+                $(F77) $(FFLAGM) -c radiation_astronomy.f
+
+radiation_aerosols.o:        radiation_aerosols.f
+                $(F77) $(FFLAGM) -c radiation_aerosols.f
+
+radiation_gases.o:        radiation_gases.f
+                $(F77) $(FFLAGM) -c radiation_gases.f
+
+radiation_clouds.o:        radiation_clouds.f
+                $(F77) $(FFLAGM) -c radiation_clouds.f
+
+radiation_surface.o:        radiation_surface.f
+                $(F77) $(FFLAGM) -c radiation_surface.f
+
+grrad.o:        grrad.f
+                $(F77) $(FFLAGM) -c grrad.f
+
+progtm_module.o:        progtm_module.f
+                $(F77) $(FFLAGM) -c progtm_module.f
+
+machine.o:        machine.f
+                $(F77) $(FFLAGM) -c machine.f
+
+num_parthds.o:        num_parthds.f
+                $(F77) $(FFLAGM) -c num_parthds.f
+
+kinds.o:        GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+
+peuc.o:                GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+
+pran.o:                GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+
+prana.o:        GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+
+#
+# *****************************************************************
+#
+physcons.o:        physcons.f
+                $(F77) $(FFLAG90) -c physcons.f
+
+iounitdef.o:        iounitdef.f
+                $(F77) $(FFLAG90) -c iounitdef.f
+
+funcphys.o:        funcphys.f
+                $(F77) $(FFLAG90) -c funcphys.f
+
+sfcio_module.o:        sfcio_module.f
+                $(F77) $(FFLAGSF) -c sfcio_module.f
+
+sigio_module.o:        sigio_module.f
+                $(F77) $(FFLAGSI) -c sigio_module.f
+
+gfsio_def.o:        gfsio_def.f
+                $(F77) $(FFLAGSI) -c gfsio_def.f
+
+gfsio_module.o:        gfsio_module.f
+                $(F77) $(FFLAGSI) -c gfsio_module.f
+
+sigio_r_module.o:        sigio_r_module.f
+                $(F77) $(FFLAGSI) -c sigio_r_module.f
+
+bafrio.o:        bafrio.f
+                $(F77) $(FFLAGB) -c bafrio.f
+
+#
+#sigdas.io.o:        sigdas.io.f
+##                $(F77) $(FFLAGIO) -c sigdas.io.f
+
+read_fix.o:        read_fix.f
+                $(F77) $(FFLAGX) -c read_fix.f
+
+softcount.o:        softcount.f
+                $(F77) $(FFLAGX) -c softcount.f
+
+gloopr.o:        gloopr.f
+                $(F77) $(FFLAGM2) -c gloopr.f
+
+gloopb.o:        gloopb.f
+                $(F77) $(FFLAGM2) -c gloopb.f
+
+sfcsub.o:        sfcsub.f
+                $(F77) $(FFLAGM) -c sfcsub.f
+
+gcycle.o:        gcycle.f
+                $(F77) $(FFLAGM) -c gcycle.f
+
+getaer.o:        getaer.f
+                $(F77) $(FFLAGIO) -c getaer.f
+
+wrt3d.o:        wrt3d.f
+                $(F77) $(FFLAGIO) -c wrt3d.f
+
+gribit.o:        gribit.f
+                $(F77) $(FFLAGIO) -c gribit.f
+
+wrtsfc.o:        wrtsfc.f
+                $(F77) $(FFLAGIO) -c wrtsfc.f
+
+para_fixio_w.o:                para_fixio_w.f
+                $(F77) $(FFLAGIO) -c para_fixio_w.f
+
+para_nstio_w.o:                para_nstio_w.f
+                $(F77) $(FFLAGIO) -c para_nstio_w.f
+
+#para_fixio_all_w.o:                para_fixio_all_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_all_w.f
+
+#para_fixio_iop_w.o:        para_fixio_iop_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_iop_w.f
+
+#conrad.o:        conrad.f
+#                $(F77) $(FFLAGIO) -c conrad.f
+
+#crhtab.o:        crhtab.f
+#                $(F77) $(FFLAGIO) -c crhtab.f
+
+treadeo.io.o:        treadeo.io.f
+                $(F77) $(FFLAGIO) -c treadeo.io.f
+
+treadeo.gfsio.o:        treadeo.gfsio.f
+                $(F77) $(FFLAGIO) -c treadeo.gfsio.f
+
+twriteeo.o:        twriteeo.f
+                $(F77) $(FFLAGIO) -c twriteeo.f
+
+spect_send.o:        spect_send.f
+                $(F77) $(FFLAGIO) -c spect_send.f
+
+spect_write.o:        spect_write.f
+                $(F77) $(FFLAGIO) -c spect_write.f
+
+spect_to_grid.o:        spect_to_grid.f
+                $(F77) $(FFLAGIO) -c spect_to_grid.f
+
+spect_tv_enthalpy_ps.o:        spect_tv_enthalpy_ps.f
+                $(F77) $(FFLAGIO) -c spect_tv_enthalpy_ps.f
+
+grid_to_spec.o:        grid_to_spec.f
+                $(F77) $(FFLAGIO) -c grid_to_spec.f
+
+wrtout.o:        wrtout.f
+                $(F77) $(FFLAGIO) -c wrtout.f
+
+nstio_module.o:         nstio_module.f
+                $(F77) $(FFLAG90) -c nstio_module.f
+
+module_nst_parameters.o:        module_nst_parameters.f
+                $(F77) $(FFLAG90) -c module_nst_parameters.f
+
+module_nst_water_prop.o:         module_nst_water_prop.f
+                $(F77) $(FFLAG90) -c module_nst_water_prop.f
+
+module_nst_model.o:                module_nst_model.f
+                $(F77) $(FFLAG90) -c module_nst_model.f
+
+NameList_ESMFMod.o:         NameList_ESMFMod.f
+                $(F77) $(FFLAG90) -c NameList_ESMFMod.f
+
+Sfc_Var_ESMFMod.o:        Sfc_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Sfc_Var_ESMFMod.f
+
+Nst_Var_ESMFMod.o:        Nst_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Nst_Var_ESMFMod.f
+
+Lib_ESMFStateAddGetMod.o:        Lib_ESMFStateAddGetMod.f
+                $(F77) $(FFLAG90) -c Lib_ESMFStateAddGetMod.f
+
+#GFS_ESMFStateAddGetMod.o:         GFS_ESMFStateAddGetMod.f
+#                $(F77) $(FFLAG90) -c GFS_ESMFStateAddGetMod.f
+
+GFS_InternalState_ESMFMod.o:         GFS_InternalState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_InternalState_ESMFMod.f
+
+GFS_ESMFStateMod.o:         GFS_ESMFStateMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFStateMod.f
+
+GFS_ErrMsgMod.o:         GFS_ErrMsgMod.f
+                $(F77) $(FFLAG90) -c GFS_ErrMsgMod.f
+
+GFS_GetCf_ESMFMod.o:         GFS_GetCf_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_GetCf_ESMFMod.f
+
+GFS_ESMFMod.o:         GFS_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFMod.f
+
+#GFS_Grid_fnl_ESMFMod.o:         GFS_Grid_fnl_ESMFMod.f
+        #$(F77) $(FFLAG90A) -c GFS_Grid_fnl_ESMFMod.f
+
+GFS_GridComp_ESMFMod.o:         GFS_GridComp_ESMFMod.f
+                $(F77) $(FFLAG90A) -c GFS_GridComp_ESMFMod.f
+
+GFS_Initialize_ESMFMod.o:         GFS_Initialize_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Initialize_ESMFMod.f
+
+GFS_Run_ESMFMod.o:        GFS_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Run_ESMFMod.f
+
+GFS_Finalize_ESMFMod.o:        GFS_Finalize_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Finalize_ESMFMod.f
+
+GFS_InputFile2ImportState.o:         GFS_InputFile2ImportState.f
+                $(F77) $(FFLAG90) -c GFS_InputFile2ImportState.f
+
+#GFS_Standalone_ESMF_ENS.o:         GFS_Standalone_ESMF_ENS.f
+#                $(F77) $(FFLAG90) -c GFS_Standalone_ESMF_ENS.f
+
+GFS_ESMF.o:        GFS_ESMF.f
+                $(F77) $(FFLAG90) -c GFS_ESMF.f
+
+Grid_ESMFCreate.o:         Grid_ESMFCreate.f
+                $(F77) $(FFLAG90) -c Grid_ESMFCreate.f
+
+StartTimeGet_ESMF.o:         StartTimeGet_ESMF.f
+                $(F77) $(FFLAG90) -c StartTimeGet_ESMF.f
+
+Ensemble_sub.o:         Ensemble_sub.f
+                $(F77) $(FFLAG90) -c Ensemble_sub.f
+
+mpi_more.o:        mpi_more.f
+                $(F77) $(FFLAGS) -c mpi_more.f
+
+cmp.comm.o:        cmp.comm.f
+                $(F77) $(FFLAGS) -c cmp.comm.f
+
+atm.comm.o:        atm.comm.f
+                $(F77) $(FFLAGS) -c atm.comm.f
+
+tiles.o:        tiles.f
+                $(F77) $(FFLAGS) -c tiles.f
+
+GEFS_Cpl_InternalState_ESMFMod.o:        GEFS_Cpl_InternalState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_InternalState_ESMFMod.f
+
+GEFS_CplState_ESMFMod.o:        GEFS_CplState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplState_ESMFMod.f
+
+GEFS_Sto_Per_Scheme.o:        GEFS_Sto_Per_Scheme.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme.f
+
+GEFS_Cpl_Run_ESMFMod.o:        GEFS_Cpl_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_Run_ESMFMod.f
+
+GEFS_Cpl_ESMFMod.o:        GEFS_Cpl_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_ESMFMod.f
+
+GEFS_CplComp_ESMFMod.o:        GEFS_CplComp_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplComp_ESMFMod.f
+
+GFS_AddParameterToStateMod.o:        GFS_AddParameterToStateMod.f
+                $(F77) $(FFLAG90) -c GFS_AddParameterToStateMod.f
+
+GEFS_Sto_Per_Scheme_Step1.o:        GEFS_Sto_Per_Scheme_Step1.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step1.f
+
+GEFS_Sto_Per_Scheme_Step2.o:        GEFS_Sto_Per_Scheme_Step2.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step2.f
+
+GEFS_GetParameterFromStateMod.o:        GEFS_GetParameterFromStateMod.f
+                $(F77) $(FFLAG90) -c GEFS_GetParameterFromStateMod.f
+
+Cal_Sto_Coef.o:                GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+
+GEFS_bcst_global.o:        GEFS_bcst_global.f
+                $(F77) $(FFLAG90) -c GEFS_bcst_global.f


Property changes on: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.ibm
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.jet
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.jet                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.jet        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,829 @@
+
+EXEC = global_fcst
+F77= mpif90
+F90= mpif90
+LIBDIR=/mnt/pan2/projects/emcda/dkleist/nwprod/lib
+
+#
+ FINCS    = -I /mnt/pan2/projects/emcda/dkleist/nwprod/incmod/esmf_3_1_0rp2
+ FINCM    = -I /mnt/pan2/projects/emcda/dkleist/nwprod/incmod/w3lib-2.0_d
+## FINCG   = -I /mnt/pan2/projects/emcda/dkleist/nwprod/incmod/sigio_4
+## FINCC   = -I /mnt/pan2/projects/emcda/dkleist/nwprod/incmod/sfcio_4
+
+ ARCH    = 
+ PGSZ    = 
+
+ OPTS     = -O3 -convert big_endian -traceback -r8
+ OPTS90   = -O3 -convert big_endian -traceback -r8
+ OPTS90A  = -O3 -convert big_endian -traceback -r8
+
+ FFLAG90  = $(OPTS90) $(FINCS) -free
+ FFLAG90A = $(OPTS90A) $(FINCS) -free
+ FFLAGS   = $(OPTS) $(TRAPS) 
+ FFLAGX   = $(OPTS) $(TRAPS) 
+ FFLAGIO  = $(OPTS) $(TRAPS)
+ FFLAGY   = $(OPTS)
+ FFLAGM   = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG)
+ FFLAGM2  = $(OPTS) $(FINCS) $(FINCM) $(TRAPS) $(DEBUG)
+ FFLAGM3  = $(OPTS) $(FINCS) $(TRAPS) $(DEBUG) -free
+ FFLAG_SER = -O3 -convert big_endian   -traceback -r8
+
+ FFLAGSF  = -O3 -convert big_endian  -traceback -FR
+ FFLAGSI  = -O3 -convert big_endian  -traceback -FR
+ FFLAGB   = -O3 -convert big_endian  -traceback
+
+ LDR     = mpif90
+
+ LDFLAGS = 
+ LIBDIR = /mnt/pan2/projects/emcda/dkleist/nwprod/lib
+##LIBS = -L$(MKL) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lstdc++ -limf -lm -lrt -ldl -L$(LIBDIR) -lsp_d -lw3lib-2.0_d -lbacio_4 -lesmf_3_1_0rp2 -threads
+##LIBS = -lstdc++ -limf -lm -lrt -ldl -threads -L$(LIBDIR) -lsp_d -lw3lib-2.0_d -lbacio_4 -lesmf_3_1_0rp2 -lsfcio_4 -lsigio_4 -L${MPICH}/lib -lmpichcxx -mkl=sequential \
+##      -L$(MKL) -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide
+
+LIBS = -L$(MKL) -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lguide -L$(LIBDIR) -lesmf_3_1_0rp2 -lbacio_4 -lsp_d -lw3lib-2.0_d -lrt -lstdc++
+
+
+.SUFFIXES: .o .f .F .h
+#
+# *****************************************************************
+#
+OBJS0        =                               \
+          NameList_ESMFMod.o          \
+          Sfc_Var_ESMFMod.o           \
+          Nst_Var_ESMFMod.o           \
+          GFS_ErrMsgMod.o             \
+          Lib_ESMFStateAddGetMod.o    \
+          GFS_InternalState_ESMFMod.o \
+          GFS_ESMFStateMod.o          \
+          GFS_GetCf_ESMFMod.o         \
+          GFS_Initialize_ESMFMod.o    \
+          GFS_Run_ESMFMod.o           \
+          GFS_Finalize_ESMFMod.o      \
+          GFS_AddParameterToStateMod.o \
+          GFS_GridComp_ESMFMod.o      \
+          Grid_ESMFCreate.o           \
+          StartTimeGet_ESMF.o         \
+          Ensemble_sub.o              \
+          GEFS_Cpl_InternalState_ESMFMod.o         \
+          GEFS_CplState_ESMFMod.o                  \
+          GEFS_four2fln_gg.o                        \
+          GEFS_uvoedz.o                            \
+          GEFS_uveodz.o                            \
+          GEFS_sumfln_slg_gg.o                     \
+          GEFS_dozeuv.o                            \
+          GEFS_dezouv.o                            \
+          GEFS_Sto_Per_Scheme_Step1.o              \
+          GEFS_Sto_Per_Scheme_Step2.o              \
+          GEFS_Cpl_Run_ESMFMod.o                   \
+          GEFS_Cpl_ESMFMod.o                       \
+          GEFS_GetParameterFromStateMod.o          \
+          GEFS_CplComp_ESMFMod.o                   \
+          GFS_ESMF.o                               \
+          Cal_Sto_Coef.o                           \
+          GEFS_bcst_global.o
+
+#          GFS_ESMFStateAddGetMod.o
+#          GFS_Standalone_ESMF_ENS.o
+#          GFS_InputFile2ImportState.o 
+
+
+OBJ_MOD        = machine.o             \
+          num_parthds.o         \
+          module.o              \
+          iounitdef.o           \
+          physcons.o            \
+          funcphys.o            \
+          progtm_module.o       \
+          rascnvv2.o            \
+          mersenne_twister.o    \
+          resol_def.o           \
+          gg_def.o              \
+          vert_def.o            \
+          sig_io.o              \
+          date_def.o            \
+          layout1.o             \
+          layout_grid_tracers.o \
+          namelist_def.o        \
+          namelist_soilveg.o    \
+          coordinate_def.o      \
+          tracer_const_h-new.o  \
+          reduce_lons_grid_module.o \
+          matrix_sig_def.o      \
+          mpi_def.o             \
+          semi_lag_def.o        \
+          deldifs_def.o         \
+          deldifs_hyb_slg_def.o       \
+          bfilt_def.o           \
+          reduce_lons_grid_module.o \
+          gfsio_module.o        \
+          gfsio_def.o           \
+          sigio_module.o        \
+          sigio_r_module.o      \
+          sfcio_module.o        \
+          d3d_def.o             \
+          nstio_module.o           \
+          module_nst_parameters.o  \
+          module_nst_water_prop.o  \
+          module_nst_model.o       \
+          calpreciptype.o          \
+          module_bfmicrophysics.o  \
+          kinds.o                  \
+          peuc.o                   \
+          pran.o                   \
+          prana.o                  \
+          layout_lag.o             \
+          slglat.o                 \
+          slgshr.o                 \
+          pmgrid.o                 \
+          set_longgs.o             \
+          get_cd_hyb_slg.o         \
+          sltini_all.o             \
+          set_halos_lag_sn.o       \
+          getcon_lag.o             \
+          gfidi_speed.o            \
+          plot85_a_h.o             \
+          setlats_lag.o            \
+          gfidi_tracers.o          \
+          slgscan_all_redgg.o      \
+          get_topo_grid_grad.o     \
+          mpi_tracers_a_to_b.o     \
+          gloopa_tracers.o         \
+          ndsl_pack.o                   \
+          ndsl_para.o                   \
+          sicdif_hyb_slg.o
+
+
+OBJS        = \
+        get_cd_hyb.o get_am_bm_hyb.o\
+        get_cd_hyb_gc.o get_am_bm_hyb_gc.o\
+        wnew.o\
+        wrt3d_hyb.o\
+        wrtg3d_hyb.o\
+        setlats.o\
+        getysk.o\
+        getysk_gc.o\
+        ifshuff.o\
+        shuffle_grid.o\
+        digifilt.o\
+        gcycle.o\
+        wrtout.o\
+        grid_collect.o\
+        info.o\
+        four_to_grid.o\
+        hpmdummy.o\
+        coundummy.o\
+        damp_speed.o\
+        deldifs.o\
+        deldifs_tracers.o\
+        deldifs_hyb_ecm.o\
+        get_tc_ecm.o\
+        fix_fields.o\
+        spect_fields.o\
+        delnpe.o\
+        delnpo.o \
+        dezouv.o\
+        impadj_sig.locl.o\
+        impadj_slg.locl.o\
+        impadj_hyb.locl.o\
+        impadj_hyb.locl_gc.o\
+        dozeuv.o\
+        epslon.o\
+        filtr1eo.o \
+        filtr2eo.o\
+        get_ls_node.o\
+        get_lats_node_shuff_a_fix.o\
+        get_lats_node_shuff_r_fix.o\
+        getcon.o \
+        gfidi_sig.o\
+        gfidi_hyb.o\
+        gfidi_hyb_gc.o\
+        gfidi_hyb_gc_h-new.o\
+        gfidi_hyb_gc_ndsl.o\
+        ndsl_advecth.o\
+        glats.o\
+        gloopa_opt_gg.o\
+        lon_lat_para.o\
+        compns.o\
+        gozrineo.o\
+        pln2eo.o \
+        rms_spect.o \
+        uvoedz.o                     \
+        mpi_quit.o                   \
+        sicdif_sig.o                 \
+        sicdif_hyb.o                 \
+        sicdif_hyb_gc.o              \
+        dotstep_tracers.o            \
+        ensemble_wrt.o               \
+        gather_times.o               \
+        four2fln_gg.o                \
+        sortrx.o                     \
+        sumfln_slg_gg.o              \
+        sumder2_slg_gg.o             \
+        triseori.o                   \
+        uveodz.o                     \
+        ysminv.o                     \
+        ver_sig.o       
+
+
+##        wrtout_hyb.not.sure.o
+
+##        bartrieo.o\
+OBJS_PORT        = \
+        fftpack.o \
+        four2grid.fftpack.o \
+        noblas.o\
+        funcphys_subsx.o\
+
+OBJS_RAD        =              \
+        radlw_param.o          \
+        radlw_datatb.o         \
+        radlw_main.o           \
+        radsw_param.o          \
+        radsw_datatb.o         \
+        radsw_main.o           \
+        radiation_astronomy.o  \
+        radiation_aerosols.o   \
+        radiation_gases.o      \
+        radiation_clouds.o     \
+        radiation_surface.o    \
+        grrad.o                \
+        gloopr.o
+
+#
+#        astronomy.o    \
+##        funcphys_subs.o
+
+OBJS_PHY= \
+        ozinterp.o           \
+        ozphys.o             \
+        gloopb.o             \
+        gbphys.o             \
+        gbphys_adv_hyb_gc.o  \
+        gbphys_adv_hyb_gc_h-new.o \
+        dcyc2.o              \
+        dcyc2.pre.rad.o      \
+        set_soilveg.o        \
+        sfc_drv.o            \
+        sfc_land.o           \
+        progt2.o             \
+        sfc_sice.o           \
+        sfc_ocean.o          \
+        sfc_nst.o            \
+        sfc_diff.o           \
+        sfc_diag.o           \
+        sflx.o               \
+        moninp.o             \
+        moninp1.o            \
+        moninq.o             \
+        moninq1.o            \
+        tridi2t3.o           \
+        gwdps.o              \
+        gwdc.o               \
+        sascnv.o             \
+        sascnvn.o            \
+        cnvc90.o             \
+        shalcv.o             \
+        shalcv_opr.o         \
+        shalcnv.o            \
+        lrgsclr.o            \
+        gscond.o             \
+        precpd.o             \
+        mstadb.o             \
+        mstadbtn.o           \
+        mstcnv.o             \
+        get_prs.o            \
+        gsmddrive.o          \
+        omegtes.o            \
+        omegtes_gc.o         \
+        omegas.o             \
+        hyb2sig.o            \
+        hyb2press.o          \
+        hyb2press_gc.o       \
+        sig2press.o
+
+#        gbphys_call.o       \
+###funcphys_subsx.o   only srt gpxs was called in fix_fields -table not used
+
+OBJS_IO= \
+        read_fix.o            \
+        gribit.o              \
+        wrt3d.o               \
+        wrt3d_hyb.o           \
+        wrtg3d.o              \
+        wrtg3d_hyb.o          \
+        wrtsfc.o              \
+        para_fixio_w.o        \
+        para_nstio_w.o        \
+        sfcsub.o              \
+        treadeo.io.o          \
+        treadeo.gfsio.o       \
+        grid_to_spec.o        \
+        spect_to_grid.o       \
+        spect_tv_enthalpy_ps.o\
+        setsig.o              \
+        twriteeo.o            \
+        bafrio.o              \
+        spect_send.o          \
+        spect_write.o
+
+#        spect_tv_enthalpy_ps.o\   # To be used later
+
+#        para_fixio_all_w.o \
+#        para_fixio_iop_w.o \
+#        wrtsfc_all.o       \
+#        wrtsfc_iop.o       \
+##         getaer.o           \
+##         conrad.o           \
+##         crhtab.o           \
+
+OBJS_CC= \
+        mpi_more.o  \
+        cmp.comm.o  \
+        atm.comm.o  \
+        tiles.o
+
+SRC        = $(OBJS0:.o=.f) $(OBJ_MOD:.o=.f) $(OBJS:.o=.f) $(OBJS_RAD:.o=.f) $(OBJS_PHY:.o=.f) $(OBJS_IO:.o=.f) $(OBJS_CC:.o=.f)
+#
+INCS = f_hpm.h mpi_inc.h function2
+
+#
+# *****************************************************************
+#
+all: model-mpi
+
+model-mpi: $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) 
+        $(LDR) -o $(EXEC) $(OBJ_MOD) $(OBJS_CC) $(OBJS0) $(OBJS) $(OBJS_PHY) $(OBJS_RAD) $(OBJS_IO) $(LIBS) $(LDFLAGS)
+
+clean:
+        rm -f $(OBJ_MOD) $(OBJS0) $(OBJS) $(OBJS_RAD) $(OBJS_PHY) $(OBJS_IO) *.mod
+
+tar:
+        tar -cvf tar.gfs.r4r8 $(SRC) $(INCS) $(COMS) $(OBJS_PORT:.o=.f) lonsper* res* xx* Makefile* ini.* scr.* m*real_?
+
+.F.o:
+        $(F77) $(FFLAGS) -c -d $&lt; 
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $&lt; 
+.f.o:
+        $(F77) $(FFLAGS) -c $&lt; 
+
+
+omegas.o:        omegas.f
+                $(F77) $(FFLAGM) -c omegas.f
+
+#
+# *****************************************************************
+#
+cnvc90.o:        cnvc90.f
+                $(F77) $(FFLAGM) -c cnvc90.f
+
+calpreciptype.o:        calpreciptype.f
+                $(F77) $(FFLAGM3) -c calpreciptype.f
+
+dcyc2.o:        dcyc2.f
+                $(F77) $(FFLAGM) -c dcyc2.f
+
+dcyc2.pre.rad.o:        dcyc2.pre.rad.f
+                $(F77) $(FFLAGM) -c dcyc2.pre.rad.f
+
+digifilt.o:        digifilt.f
+                $(F77) $(FFLAGX) -c digifilt.f
+
+funcphys_subsx.o:        funcphys_subsx.f
+                $(F77) $(FFLAGM) -c funcphys_subsx.f
+
+gbphys_adv_hyb_gc.o:        gbphys_adv_hyb_gc.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc.f
+
+gbphys_adv_hyb_gc_h-new.o:        gbphys_adv_hyb_gc_h-new.f
+                $(F77) $(FFLAGM) -c gbphys_adv_hyb_gc_h-new.f
+
+#gbphys_call.o:        gbphys_call.f
+#                $(F77) $(FFLAGM) -c gbphys_call.f
+
+gbphys.o:        gbphys.f
+                $(F77) $(FFLAGM) -c gbphys.f
+
+get_prs.o:        get_prs.f
+                $(F77) $(FFLAGM) -c get_prs.f
+
+filtr1eo.o:     filtr1eo.f
+                $(F77) $(FFLAG_SER)   -c filtr1eo.f
+
+filtr2eo.o:     filtr2eo.f
+                $(F77) $(FFLAG_SER)   -c filtr2eo.f
+
+gscond.o:        gscond.f
+                $(F77) $(FFLAGM) -c gscond.f
+
+gsmddrive.o:        gsmddrive.f
+                $(F77) $(FFLAGM) -c gsmddrive.f
+
+reduce_lons_grid_module.o:        reduce_lons_grid_module.f
+                $(F77) $(FFLAGM) -c reduce_lons_grid_module.f
+
+module_bfmicrophysics.o:        module_bfmicrophysics.f
+                $(F77) $(FFLAGM) -c module_bfmicrophysics.f
+
+gwdps.o:        gwdps.f
+                $(F77) $(FFLAGM) -c gwdps.f
+
+gwdc.o:                gwdc.f
+                $(F77) $(FFLAGM) -c gwdc.f
+
+hyb2press_gc.o:        hyb2press_gc.f
+                $(F77) $(FFLAGM) -c hyb2press_gc.f
+
+hyb2press.o:        hyb2press.f
+                $(F77) $(FFLAGM) -c hyb2press.f
+
+hyb2sig.o:        hyb2sig.f
+                $(F77) $(FFLAGM) -c hyb2sig.f
+
+lrgsclr.o:        lrgsclr.f
+                $(F77) $(FFLAGM) -c lrgsclr.f
+
+moninp.o:        moninp.f
+                $(F77) $(FFLAGM) -c moninp.f
+
+moninp1.o:        moninp1.f
+                $(F77) $(FFLAGM) -c moninp1.f
+
+moninq.o:        moninq.f
+                $(F77) $(FFLAGM) -c moninq.f
+
+moninq1.o:        moninq1.f
+                $(F77) $(FFLAGM) -c moninq1.f
+
+mstadb.o:        mstadb.f
+                $(F77) $(FFLAGM) -c mstadb.f
+
+mstadbtn.o:        mstadbtn.f
+                $(F77) $(FFLAGM) -c mstadbtn.f
+
+mstcnv.o:        mstcnv.f
+                $(F77) $(FFLAGM) -c mstcnv.f
+
+omegtes_gc.o:        omegtes_gc.f
+                $(F77) $(FFLAGM) -c omegtes_gc.f
+
+omegtes.o:        omegtes.f
+                $(F77) $(FFLAGM) -c omegtes.f
+
+ozinterp.o:        ozinterp.f
+                $(F77) $(FFLAGM) -c ozinterp.f
+
+ozphys.o:        ozphys.f
+                $(F77) $(FFLAGM) -c ozphys.f
+
+precpd.o:        precpd.f
+                $(F77) $(FFLAGM) -c precpd.f
+
+rascnvv2.o:        rascnvv2.f
+                $(F77) $(FFLAGM) -c rascnvv2.f
+
+sfc_sice.o:        sfc_sice.f
+                $(F77) $(FFLAGM) -c sfc_sice.f
+
+set_soilveg.o:        set_soilveg.f
+                $(F77) $(FFLAGM) -c set_soilveg.f
+
+namelist_soilveg.o:        namelist_soilveg.f
+                $(F77) $(FFLAGM) -c namelist_soilveg.f
+
+sfc_land.o:        sfc_land.f
+                $(F77) $(FFLAGM) -c sfc_land.f
+                                                                            
+progt2.o:        progt2.f
+                $(F77) $(FFLAGM) -c progt2.f
+
+sfc_drv.o:        sfc_drv.f
+                $(F77) $(FFLAGM) -c sfc_drv.f
+
+sflx.o:         sflx.f
+                $(F77) $(FFLAGM) -c sflx.f
+
+sfc_ocean.o:        sfc_ocean.f
+                $(F77) $(FFLAGM) -c sfc_ocean.f
+
+sfc_nst.o:        sfc_nst.f
+                $(F77) $(FFLAGM) -c sfc_nst.f
+
+sfc_diff.o:        sfc_diff.f
+                $(F77) $(FFLAGM) -c sfc_diff.f
+
+sfc_diag.o:        sfc_diag.f
+                $(F77) $(FFLAGM) -c sfc_diag.f
+
+sascnv.o:        sascnv.f
+                $(F77) $(FFLAGM) -c sascnv.f
+
+sascnvn.o:        sascnvn.f
+                $(F77) $(FFLAGM) -c sascnvn.f
+
+tridi2t3.o:        tridi2t3.f
+                $(F77) $(FFLAGM) -c tridi2t3.f
+
+shalcv.o:        shalcv.f
+                $(F77) $(FFLAGM) -c shalcv.f
+
+shalcv_opr.o:        shalcv_opr.f
+                $(F77) $(FFLAGM) -c shalcv_opr.f
+
+shalcnv.o:        shalcnv.f
+                $(F77) $(FFLAGM) -c shalcnv.f
+
+sig2press.o:        sig2press.f
+                $(F77) $(FFLAGM) -c sig2press.f
+
+# *****************************************************************
+
+radlw_param.o:        radlw_param.f
+                $(F77) $(FFLAGM) -c radlw_param.f
+
+
+radlw_datatb.o:        radlw_datatb.f
+                $(F77) $(FFLAGM) -c radlw_datatb.f
+
+
+radlw_main.o:        radlw_main.f
+                $(F77) $(FFLAGM2) -c radlw_main.f
+
+radsw_param.o:        radsw_param.f
+                $(F77) $(FFLAGM) -c radsw_param.f
+
+radsw_datatb.o:        radsw_datatb.f
+                $(F77) $(FFLAGM) -c radsw_datatb.f
+
+radsw_main.o:        radsw_main.f
+                $(F77) $(FFLAGM2) -c radsw_main.f
+
+radiation_astronomy.o:        radiation_astronomy.f
+                $(F77) $(FFLAGM) -c radiation_astronomy.f
+
+radiation_aerosols.o:        radiation_aerosols.f
+                $(F77) $(FFLAGM) -c radiation_aerosols.f
+
+radiation_gases.o:        radiation_gases.f
+                $(F77) $(FFLAGM) -c radiation_gases.f
+
+radiation_clouds.o:        radiation_clouds.f
+                $(F77) $(FFLAGM) -c radiation_clouds.f
+
+radiation_surface.o:        radiation_surface.f
+                $(F77) $(FFLAGM) -c radiation_surface.f
+
+grrad.o:        grrad.f
+                $(F77) $(FFLAGM) -c grrad.f
+
+progtm_module.o:        progtm_module.f
+                $(F77) $(FFLAGM) -c progtm_module.f
+
+machine.o:        machine.f
+                $(F77) $(FFLAGM) -c machine.f
+
+num_parthds.o:        num_parthds.f
+                $(F77) $(FFLAGM) -c num_parthds.f
+
+kinds.o:        GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/kinds.f90
+
+peuc.o:                GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/peuc.f90
+
+pran.o:                GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/pran.f90
+
+prana.o:        GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/prana.f90
+
+#
+# *****************************************************************
+#
+physcons.o:        physcons.f
+                $(F77) $(FFLAG90) -c physcons.f
+
+iounitdef.o:        iounitdef.f
+                $(F77) $(FFLAG90) -c iounitdef.f
+
+funcphys.o:        funcphys.f
+                $(F77) $(FFLAG90) -c funcphys.f
+
+sfcio_module.o:        sfcio_module.f
+                $(F77) $(FFLAGSF) -c sfcio_module.f
+
+sigio_module.o:        sigio_module.f
+                $(F77) $(FFLAGSI) -c sigio_module.f
+
+gfsio_def.o:        gfsio_def.f
+                $(F77) $(FFLAGSI) -c gfsio_def.f
+
+gfsio_module.o:        gfsio_module.f
+                $(F77) $(FFLAGSI) -c gfsio_module.f
+
+sigio_r_module.o:        sigio_r_module.f
+                $(F77) $(FFLAGSI) -c sigio_r_module.f
+
+bafrio.o:        bafrio.f
+                $(F77) $(FFLAGB) -c bafrio.f
+
+#
+#sigdas.io.o:        sigdas.io.f
+##                $(F77) $(FFLAGIO) -c sigdas.io.f
+
+read_fix.o:        read_fix.f
+                $(F77) $(FFLAGX) -c read_fix.f
+
+softcount.o:        softcount.f
+                $(F77) $(FFLAGX) -c softcount.f
+
+gloopr.o:        gloopr.f
+                $(F77) $(FFLAG_SER) -c gloopr.f
+
+gloopb.o:        gloopb.f
+                $(F77) $(FFLAGM2) -c gloopb.f
+
+sfcsub.o:        sfcsub.f
+                $(F77) $(FFLAG_SER) -c sfcsub.f
+
+gcycle.o:        gcycle.f
+                $(F77) $(FFLAGM) -c gcycle.f
+
+getaer.o:        getaer.f
+                $(F77) $(FFLAGIO) -c getaer.f
+
+wrt3d.o:        wrt3d.f
+                $(F77) $(FFLAGIO) -c wrt3d.f
+
+gribit.o:        gribit.f
+                $(F77) $(FFLAGIO) -c gribit.f
+
+wrtsfc.o:        wrtsfc.f
+                $(F77) $(FFLAGIO) -c wrtsfc.f
+
+para_fixio_w.o:                para_fixio_w.f
+                $(F77) $(FFLAGIO) -c para_fixio_w.f
+
+para_nstio_w.o:                para_nstio_w.f
+                $(F77) $(FFLAGIO) -c para_nstio_w.f
+
+#para_fixio_all_w.o:                para_fixio_all_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_all_w.f
+
+#para_fixio_iop_w.o:        para_fixio_iop_w.f
+#                $(F77) $(FFLAGIO) -c para_fixio_iop_w.f
+
+#conrad.o:        conrad.f
+#                $(F77) $(FFLAGIO) -c conrad.f
+
+#crhtab.o:        crhtab.f
+#                $(F77) $(FFLAGIO) -c crhtab.f
+
+treadeo.io.o:        treadeo.io.f
+                $(F77) $(FFLAGIO) -c treadeo.io.f
+
+treadeo.gfsio.o:        treadeo.gfsio.f
+                $(F77) $(FFLAGIO) -c treadeo.gfsio.f
+
+twriteeo.o:        twriteeo.f
+                $(F77) $(FFLAGIO) -c twriteeo.f
+
+spect_send.o:        spect_send.f
+                $(F77) $(FFLAGIO) -c spect_send.f
+
+spect_write.o:        spect_write.f
+                $(F77) $(FFLAGIO) -c spect_write.f
+
+spect_to_grid.o:        spect_to_grid.f
+                $(F77) $(FFLAGIO) -c spect_to_grid.f
+
+spect_tv_enthalpy_ps.o:        spect_tv_enthalpy_ps.f
+                $(F77) $(FFLAGIO) -c spect_tv_enthalpy_ps.f
+
+grid_to_spec.o:        grid_to_spec.f
+                $(F77) $(FFLAGIO) -c grid_to_spec.f
+
+wrtout.o:        wrtout.f
+                $(F77) $(FFLAGIO) -c wrtout.f
+
+nstio_module.o:         nstio_module.f
+                $(F77) $(FFLAG90) -c nstio_module.f
+
+module_nst_parameters.o:        module_nst_parameters.f
+                $(F77) $(FFLAG90) -c module_nst_parameters.f
+
+module_nst_water_prop.o:         module_nst_water_prop.f
+                $(F77) $(FFLAG90) -c module_nst_water_prop.f
+
+module_nst_model.o:                module_nst_model.f
+                $(F77) $(FFLAG90) -c module_nst_model.f
+
+NameList_ESMFMod.o:         NameList_ESMFMod.f
+                $(F77) $(FFLAG90) -c NameList_ESMFMod.f
+
+Sfc_Var_ESMFMod.o:        Sfc_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Sfc_Var_ESMFMod.f
+
+Nst_Var_ESMFMod.o:        Nst_Var_ESMFMod.f
+                $(F77) $(FFLAG90) -c Nst_Var_ESMFMod.f
+
+Lib_ESMFStateAddGetMod.o:        Lib_ESMFStateAddGetMod.f
+                $(F77) $(FFLAG90) -c Lib_ESMFStateAddGetMod.f
+
+#GFS_ESMFStateAddGetMod.o:         GFS_ESMFStateAddGetMod.f
+#                $(F77) $(FFLAG90) -c GFS_ESMFStateAddGetMod.f
+
+GFS_InternalState_ESMFMod.o:         GFS_InternalState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_InternalState_ESMFMod.f
+
+GFS_ESMFStateMod.o:         GFS_ESMFStateMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFStateMod.f
+
+GFS_ErrMsgMod.o:         GFS_ErrMsgMod.f
+                $(F77) $(FFLAG90) -c GFS_ErrMsgMod.f
+
+GFS_GetCf_ESMFMod.o:         GFS_GetCf_ESMFMod.f cmp.comm.o atm.comm.o
+                $(F77) $(FFLAG90) -c GFS_GetCf_ESMFMod.f
+
+GFS_ESMFMod.o:         GFS_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_ESMFMod.f
+
+#GFS_Grid_fnl_ESMFMod.o:         GFS_Grid_fnl_ESMFMod.f
+        #$(F77) $(FFLAG90A) -c GFS_Grid_fnl_ESMFMod.f
+
+GFS_GridComp_ESMFMod.o:         GFS_GridComp_ESMFMod.f
+                $(F77) $(FFLAG90A) -c GFS_GridComp_ESMFMod.f
+
+GFS_Initialize_ESMFMod.o:         GFS_Initialize_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Initialize_ESMFMod.f
+
+GFS_Run_ESMFMod.o:        GFS_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Run_ESMFMod.f
+
+GFS_Finalize_ESMFMod.o:        GFS_Finalize_ESMFMod.f
+                $(F77) $(FFLAG90) -c GFS_Finalize_ESMFMod.f
+
+GFS_InputFile2ImportState.o:         GFS_InputFile2ImportState.f
+                $(F77) $(FFLAG90) -c GFS_InputFile2ImportState.f
+
+#GFS_Standalone_ESMF_ENS.o:         GFS_Standalone_ESMF_ENS.f
+#                $(F77) $(FFLAG90) -c GFS_Standalone_ESMF_ENS.f
+
+GFS_ESMF.o:        GFS_ESMF.f
+                $(F77) $(FFLAG90) -c GFS_ESMF.f
+
+Grid_ESMFCreate.o:         Grid_ESMFCreate.f
+                $(F77) $(FFLAG90) -c Grid_ESMFCreate.f
+
+StartTimeGet_ESMF.o:         StartTimeGet_ESMF.f
+                $(F77) $(FFLAG90) -c StartTimeGet_ESMF.f
+
+Ensemble_sub.o:         Ensemble_sub.f
+                $(F77) $(FFLAG90) -c Ensemble_sub.f
+
+mpi_more.o:        mpi_more.f
+                $(F77) $(FFLAGS) -c mpi_more.f
+
+cmp.comm.o:        cmp.comm.f
+                $(F77) $(FFLAGS) -c cmp.comm.f
+
+atm.comm.o:        atm.comm.f
+                $(F77) $(FFLAGS) -c atm.comm.f
+
+tiles.o:        tiles.f
+                $(F77) $(FFLAGS) -c tiles.f
+
+GEFS_Cpl_InternalState_ESMFMod.o:        GEFS_Cpl_InternalState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_InternalState_ESMFMod.f
+
+GEFS_CplState_ESMFMod.o:        GEFS_CplState_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplState_ESMFMod.f
+
+GEFS_Sto_Per_Scheme.o:        GEFS_Sto_Per_Scheme.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme.f
+
+GEFS_Cpl_Run_ESMFMod.o:        GEFS_Cpl_Run_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_Run_ESMFMod.f
+
+GEFS_Cpl_ESMFMod.o:        GEFS_Cpl_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_Cpl_ESMFMod.f
+
+GEFS_CplComp_ESMFMod.o:        GEFS_CplComp_ESMFMod.f
+                $(F77) $(FFLAG90) -c GEFS_CplComp_ESMFMod.f
+
+GFS_AddParameterToStateMod.o:        GFS_AddParameterToStateMod.f
+                $(F77) $(FFLAG90) -c GFS_AddParameterToStateMod.f
+
+GEFS_Sto_Per_Scheme_Step1.o:        GEFS_Sto_Per_Scheme_Step1.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step1.f
+
+GEFS_Sto_Per_Scheme_Step2.o:        GEFS_Sto_Per_Scheme_Step2.f
+                $(F77) $(FFLAG90) -c GEFS_Sto_Per_Scheme_Step2.f
+
+GEFS_GetParameterFromStateMod.o:        GEFS_GetParameterFromStateMod.f
+                $(F77) $(FFLAG90) -c GEFS_GetParameterFromStateMod.f
+
+Cal_Sto_Coef.o:                GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+                $(F90) $(FFLAG90) -c GEFS_Cpl_Cal_Sto_Coef.fd/Cal_Sto_Coef.f90
+
+GEFS_bcst_global.o:        GEFS_bcst_global.f
+                $(F77) $(FFLAG90) -c GEFS_bcst_global.f


Property changes on: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile_GFS.jet
___________________________________________________________________
Added: svn:executable
   + *

Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/dotstep.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/dotstep.f        2012-05-09 02:13:03 UTC (rev 1880)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/dotstep.f        2012-05-09 02:15:13 UTC (rev 1881)
@@ -3,7 +3,7 @@
 !
 !=========================================================================
        SUBROUTINE do_tstep_gfs(sfc_mpas,air_mpas,dt_mpas,
-     &amp;     kdt_mpas,fhour_mpas,date_mpas,levs_mpas,
+     &amp;     kdt_mpas,fhour_mpas,idate_mpas,levs_mpas,
      &amp;     ncell_mpas,nsfc_mpas,nair_mpas,xlat_mpas,
      &amp;     xlon_mpas,nodes_mpas,node0_mpas,nlunit_mpas,
      &amp;     gfs_namelist_mpas)
@@ -27,10 +27,10 @@
       use Sfc_Flx_ESMFMod
       use Nst_Var_ESMFMod
       use d3d_def
+      use gfsmisc_def
       use cmp_comm            , only : Coupler_id
 
       use GFS_Initialize_module
-      use gfs_internalstate_module
 !---------------------------------------------------------------------
 
       IMPLICIT NONE
@@ -38,39 +38,18 @@
       TYPE(Sfc_Var_Data)    :: sfc_fld
       TYPE(Flx_Var_Data)    :: flx_fld
       TYPE(Nst_Var_Data)    :: nst_fld
-      TYPE(GFS_InternalState), POINTER   :: gis ! the internal state pointer.
 !!     
-      real,        parameter:: rlapse=0.65e-2, omz1=10.0
-      integer               :: IERR,I,J,K,L,LOCL,N,kdt
-      integer               :: iprint
+!!    real(kind_phys), parameter :: pi=3.1415926535897931
+      integer               :: IERR,I,J,K,L,LOCL,N
       real*8                :: dt_warm, tem1, tem2
-      real(kind=kind_evod)  :: deltim,phour,zhour
-      real(kind=kind_evod)  :: slag,sdec,cdec,batah
-      real(kind=kind_phys)  :: pdryini
-      logical               :: lsout
-
-      integer,  allocatable :: lonsperlar(:)
-      integer,  allocatable :: jindx1(:),jindx2(:)
-      real,     allocatable :: ozplin(:,:,:,:)     !OZONE PL Coeff
-
-      real (kind=kind_rad),  allocatable ::  
-     &amp;      xlat(:,:), xlon(:,:),
-     &amp;      coszdg(:,:), hprime(:,:,:),
-     &amp;      fluxr(:,:,:), sfalb(:,:), swh(:,:,:), hlw(:,:,:)
-      real (kind=kind_phys), allocatable ::
-     &amp;      phy_f3d(:,:,:,:), phy_f2d(:,:,:), ddy(:), fscav(:)
-      real(kind=kind_evod),  allocatable ::
-     &amp;      global_times_b(:,:), global_times_r(:,:)
-
       integer ifirst
       data ifirst /1/
       save ifirst
 
-
 !-----mpas related fileds--------
        integer(kind=kind_io4)  :: kdt_mpas,levs_mpas,ncell_mpas,
      &amp;    nodes_mpas,node0_mpas,nlunit_mpas,nsfc_mpas,nair_mpas
-       integer(kind=kind_io4)  :: date_mpas(4)
+       integer(kind=kind_io4)  :: idate_mpas(4)
        character(len=*)        :: gfs_namelist_mpas
 
        real(kind=kind_phys) :: dt_mpas,fhour_mpas
@@ -78,6 +57,18 @@
        real(kind=kind_phys) :: xlon_mpas(ncell_mpas)
        real(kind=kind_phys) :: sfc_mpas(nsfc_mpas,ncell_mpas)
        real(kind=kind_phys) :: air_mpas(nair_mpas,ncell_mpas,levs_mpas)
+
+! --prsi  : model interface level pressure in Pasca
+! --prsl  : model integer layer pressure in Pasca
+! --gu    : model layer zonal wind m/s   
+! --gv    : model layer meridional wind m/s   
+! --vvel  : model layer vertical velocity in Pascal/sec
+! --gt    : model layer temperature in K
+! --gr    : model layer specific humidity in gm/gm
+! --gtrace: model layer tracer (ozne and cloud water) mass mixing ratio
+       real (kind=kind_phys), allocatable :: prsi(:,:,:), prsl(:,:,:),
+     &amp;                     gu(:,:,:),gv(:,:,:),vvel(:,:,:),
+     &amp;                     gt(:,:,:),gr(:,:,:), gtrace(:,:,:,:)
 !-----mpas related fileds--------
 
 !****************************************************************************
@@ -90,40 +81,43 @@
 !--to read in GFS namelist file and set up running parameters, 
 !--and to read in most static boundary conditions.
 
-      lats_node_r=1                     !for MPAS use 1-D block for each node
-      kdt=kdt_mpas                     
-      nodes=nodes_mpas                
-      me=node0_mpas                  
-      fhour=fhour_mpas
-      phour=fhour_mpas
 
       if(ifirst &gt; 0) then
 
+!--GFS initial condition date, 1-hour,2-month,3-day,4-year
+       do j=1,4
+        idate(j)=idate_mpas(j)
+       enddo
+       lats_node_r=1             !for MPAS use 1-D block for each node
+
        call GFS_Initialize(node0_mpas,fhour_mpas,levs_mpas,ncell_mpas,
      &amp;   xlon_mpas,xlat_mpas,lats_node_r,dt_mpas,nlunit_mpas,
-     &amp;   gfs_namelist_mpas,gis)
+     &amp;   gfs_namelist_mpas)
 
-       allocate ( lonsperlar(latr) )
-       allocate ( xlon(lonr,lats_node_r),
-     &amp;           xlat(lonr,lats_node_r),
-     &amp;           coszdg(lonr,lats_node_r),
-     &amp;           hprime(lonr,nmtvr,lats_node_r),
-     &amp;           fluxr(lonr,NFXR,lats_node_r),
-     &amp;           sfalb(lonr,lats_node_r),
-     &amp;           swh(lonr,levs,lats_node_r),
-     &amp;           hlw(lonr,levs,lats_node_r) )
-       allocate (           
-     &amp;     phy_f3d(LONR,LEVS,num_p3d,lats_node_r),
-     &amp;     phy_f2d(lonr,num_p2d,lats_node_r),
-     &amp;     ddy(lats_node_r), fscav(ntrac-ncld-1) )
+         nodes=nodes_mpas                
+         me=node0_mpas                  
+         do j=1,latr
+         do i=1,lonr
+          sinlat_r2(i,j)=sin(xlat_mpas(i)) 
+          coslat_r2(i,j)=cos(xlat_mpas(i))  !xlat_mpas in radian
+         enddo
+         enddo
 
-       allocate ( jindx1(lats_node_r),jindx2(lats_node_r) )
-       allocate ( ozplin(latsozp, levozp,pl_coeff,timeoz) )
-       allocate ( global_times_b(latr,nodes), 
-     &amp;           global_times_r(latr,nodes) )
+        allocate ( prsi(lonr,levp1,lats_node_r) )
+        allocate ( prsl(lonr,levs,lats_node_r) )   
+        allocate ( gu(lonr,levs,lats_node_r) )
+        allocate ( gv(lonr,levs,lats_node_r) )
+        allocate ( gt(lonr,levs,lats_node_r) )
+        allocate ( vvel(lonr,levs,lats_node_r) )
+        allocate ( gr(lonr,levs,lats_node_r) )
+        allocate ( gtrace(lonr,levs,ntrac-1,lats_node_r) )                                 
 
        ifirst=0
       endif
+
+      kdt=kdt_mpas                     
+      fhour=fhour_mpas
+      phour=fhour_mpas
 !------------------------------------------------------------
 
 !!        if(.not. adiab) then
@@ -183,25 +177,30 @@
 
           if (lsswr .or. lslwr) then         ! Radiation Call!
             if(.not. adiab) then
-              call gloopr
-     &amp;          (phour,
-     &amp;           xlon,xlat,coszdg,flx_fld%coszen,
-     &amp;           sfc_fld%slmsk,sfc_fld%sheleg,sfc_fld%SNCOVR,
-     &amp;           sfc_fld%SNOALB,sfc_fld%ZORL,sfc_fld%TSEA,
-     &amp;           HPRIME,SFALB,sfc_fld%ALVSF,sfc_fld%ALNSF,
-     &amp;           sfc_fld%ALVWF,sfc_fld%ALNWF,sfc_fld%FACSF,
-     &amp;           sfc_fld%FACWF,sfc_fld%CV,sfc_fld%CVT ,
-     &amp;           sfc_fld%CVB,SWH,HLW,flx_fld%SFCNSW,flx_fld%SFCDLW,
-     &amp;           sfc_fld%FICE,sfc_fld%TISFC,flx_fld%SFCDSW,
-     &amp;           flx_fld%sfcemis,                                    ! yth 4/09
-     &amp;           flx_fld%TSFLW,FLUXR,phy_f3d,SLAG,SDEC,CDEC,KDT,
-     &amp;           global_times_r)
-            endif               ! second  if.not.adiab
+             call gloopr
+!---input
+     &amp;       (lonsperlar,global_lats_r,phour,xlon,xlat,kdt,
+     &amp;        sfc_fld%slmsk,sfc_fld%sheleg, 
+     &amp;        sfc_fld%zorl, sfc_fld%tsea,
+     &amp;        sfc_fld%alvsf, sfc_fld%alnsf, sfc_fld%alvwf, 
+     &amp;        sfc_fld%alnwf, sfc_fld%facsf, sfc_fld%facwf,
+     &amp;        sfc_fld%cv, sfc_fld%cvt, sfc_fld%cvb, sfc_fld%FICE, 
+     &amp;        sfc_fld%tisfc, sfc_fld%sncovr, sfc_fld%snoalb,
+     &amp;        hprime,phy_f3d,
+     &amp;        prsi,prsl,gt,gr,gtrace,vvel,
+!--in and out
+     &amp;        fluxr,
+!--output
+     &amp;        swh,hlw,
+     &amp;        coszdg, flx_fld%coszen, flx_fld%sfcnsw, 
+     &amp;        flx_fld%sfcdlw, flx_fld%tsflw,
+     &amp;        flx_fld%sfcdsw, sfalb, flx_fld%sfcemis,
+     &amp;        slag,sdec,cdec)
+           endif
           endif  !sswr .or. lslwr
 
 
 !set to zero for every timestep
-          global_times_b = 0.0
 
           if(.not. adiab) then
             call gloopb
@@ -210,8 +209,8 @@
      &amp;         xlon,
      &amp;         swh,hlw,hprime,slag,sdec,cdec,
      &amp;         ozplin,jindx1,jindx2,ddy,pdryini,
-     &amp;         phy_f3d,  phy_f2d, gis%xlat,kdt,
-     &amp;         global_times_b,batah,lsout,fscav)
+     &amp;         phy_f3d,  phy_f2d, xlat,kdt,
+     &amp;         batah,lsout,fscav,ngptc)
           endif ! not.adiab
 
 !

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gfsmisc_def.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gfsmisc_def.f                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gfsmisc_def.f        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,28 @@
+      module gfsmisc_def
+      use machine
+
+      implicit none
+      save
+
+      logical, parameter    :: fix_ncld_hr=.true.
+      integer, parameter    :: nrcmax=30 ! Maximum number of random clouds per 1200s
+      real,    parameter    :: rlapse=0.65e-2, omz1=10.0
+
+      real (kind=kind_ior)  :: CONS0, CONS0P5, CONS1200, CONS3600
+      real (kind=kind_phys) :: pdryini
+      real (kind=kind_evod) :: phour,zhour,deltim
+      real (kind=kind_evod) :: slag,sdec,cdec,batah
+      integer               :: kdt,iret,iprint,MAXSTP
+      logical               :: lsout
+
+      integer,  allocatable :: lonsperlar(:),global_lats_r(:)
+      integer,  allocatable :: jindx1(:),jindx2(:)
+      real,     allocatable :: ozplin(:,:,:,:)     !OZONE PL Coeff
+      real (kind=kind_rad), allocatable ::  xlat(:,:), xlon(:,:),
+     &amp;     coszdg(:,:), hprime(:,:,:), fluxr(:,:,:), sfalb(:,:), 
+     &amp;     swh(:,:,:), hlw(:,:,:),
+     &amp;     sinlat_r2(:,:),coslat_r2(:,:)
+      real (kind=kind_phys), allocatable :: phy_f3d(:,:,:,:), 
+     &amp;     phy_f2d(:,:,:), ddy(:), fscav(:)
+
+      end module gfsmisc_def


Property changes on: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gfsmisc_def.f
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopr.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopr.f                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopr.f        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,496 @@
+!---modified from GFS gloopr.f for use in MPAS model
+!---vertical index is from surafce to top.
+!---Fanglin Yang, May 2012
+
+       subroutine gloopr
+!---input
+     &amp; (lonsperlar,global_lats_r,phour,xlon,xlat,kdt,
+     &amp;  slmsk,sheleg, zorl, tsea,
+     &amp;  alvsf, alnsf, alvwf, alnwf, facsf, facwf,   
+     &amp;  cv, cvt, cvb, fice, tisfc, sncovr, snoalb,
+     &amp;  hprime,phy_f3d,
+     &amp;  prsi,prsl,gt,gr,gr1,vvel,
+!--in and out
+     &amp;  fluxr,
+!--output
+     &amp;  swh,hlw,
+     &amp;  coszdg, coszen, sfcnsw, sfcdlw, tsflw,
+     &amp;  sfcdsw, sfalb, sfcemis,
+     &amp;  slag,sdec,cdec)
+!!
+#include &quot;f_hpm.h&quot;
+!
+      use machine    ,     only : kind_phys
+      use physcons   ,     only : con_rocp
+
+      use module_radiation_driver,   only : radinit, grrad
+      use module_radiation_astronomy,only : astronomy
+!
+!! ---  for optional spectral band heating outputs
+!!    use module_radsw_parameters,   only : NBDSW
+!!    use module_radlw_parameters,   only : NBDLW
+!
+      use resol_def
+      use layout1
+      use gg_def
+      use vert_def
+      use gfsmisc_def, only : sinlat_r2, coslat_r2
+      use date_def
+      use namelist_def
+      use d3d_def , only : cldcov
+      use mersenne_twister, only : random_setseed, random_index,        &amp;
+     &amp;                             random_stat
+!
+      implicit none
+      include 'mpif.h'
+!
+      real (kind=kind_phys), parameter :: QMIN =1.0e-10
+!
+!  --- ...  inputs:
+      integer, intent(in) ::  kdt
+      integer, intent(in) ::  lonsperlar(latr),global_lats_r(latr)
+      real (kind=kind_phys), dimension(lonr,lats_node_r), intent(in) :: &amp;
+     &amp;                       xlon, xlat, slmsk, sheleg, zorl, tsea,     &amp;
+     &amp;                       alvsf, alnsf, alvwf, alnwf, facsf, facwf,  &amp;
+     &amp;                       cv, cvt, cvb, FICE, tisfc, sncovr, snoalb
+      real (kind=kind_phys), intent(in) ::                              &amp;
+     &amp;                    hprime(lonr,nmtvr,lats_node_r), phour,        &amp;
+     &amp;                    phy_f3d(lonr,levs,num_p3d,lats_node_r)
+
+! --prsi  : model level pressure in Pasca   
+! --prsl  : model layer mean pressure in Pasca   
+! --gt    : model layer mean temperature in k
+! --gr    : layer specific humidity in gm/gm
+! --gr1   : layer tracer (ozne and cloud water) mass mixing ratio
+! --vvel  : layer mean vertical velocity in Pascal/sec     
+      real (kind=kind_phys), intent(inout) ::                           &amp;
+     &amp;   prsi(lonr,levp1,lats_node_r),prsl(lonr,levs,lats_node_r),      &amp;
+     &amp;   gt(lonr,levs,lats_node_r),gr(lonr,levs,lats_node_r),           &amp;
+     &amp;   gr1(lonr,levs,ntrac-1,lats_node_r),vvel(lonr,levs,lats_node_r)
+
+!
+!  --- ...  input and output:
+      real (kind=kind_phys), intent(inout) ::                           &amp;
+     &amp;                    fluxr (LONR,NFXR,LATS_NODE_R)
+
+!  --- ...  outputs:
+      real (kind=kind_phys), intent(out) ::                             &amp;
+     &amp;                    swh(LONR,LEVS,LATS_NODE_R),                   &amp;
+     &amp;                    hlw(LONR,LEVS,LATS_NODE_R)
+      real (kind=kind_phys),dimension(LONR,LATS_NODE_R), intent(out) :: &amp;
+     &amp;                    coszdg, coszen, sfcnsw, sfcdlw, tsflw,        &amp;
+     &amp;                    sfcdsw, sfalb, sfcemis
+      real (kind=kind_phys), intent(out) :: slag, sdec, cdec
+
+!! --- ...  optional spectral band heating rates
+!!    real (kind=kind_phys), optional, intent(out) ::                   &amp;
+!!   &amp;                 htrswb(NGPTC,LEVS,NBDSW,NBLCK,LATS_NODE_R),      &amp;
+!!   &amp;                 htrlwb(NGPTC,LEVS,NBDLW,NBLCK,LATS_NODE_R)
+
+!  --- ...  locals:
+      real(kind=kind_phys) :: prslk(lonr,levs,lats_node_r)  
+      real(kind=kind_phys) :: hlw_v(NGPTC,LEVS), swh_v(NGPTC,LEVS)
+
+      real (kind=kind_phys) :: si_loc(LEVR+1)
+
+      real (kind=kind_phys) :: f_ice(NGPTC,LEVS), f_rain(NGPTC,LEVS),   &amp;
+     &amp;                         r_rime(NGPTC,LEVS)
+
+      real (kind=kind_phys) :: cldcov_v(NGPTC,LEVS), fluxr_v(NGPTC,NFXR)
+      real (kind=kind_phys) :: flgmin_v(ngptc), work1, work2
+
+      real (kind=kind_phys) :: rinc(5), dtsw, dtlw, solcon, raddt
+
+      real (kind=kind_phys), save :: facoz
+
+      integer :: njeff, lon, lan, lat,                lons_lat
+      integer :: idat(8), jdat(8), DAYS(13), iday, imon, midmon, id
+      integer :: lmax
+
+!  ---  variables used for random number generator (thread safe mode)
+      type (random_stat) :: stat
+      integer :: numrdm(LONR*LATR*2), ixseed(LONR,LATS_NODE_R,2)
+      integer :: ipseed, icsdlw(NGPTC), icsdsw(NGPTC)
+      integer, parameter :: ipsdlim = 1.0e8      ! upper limit for random seeds
+
+      integer, save :: icwp, k1oz, k2oz, midm, midp, ipsd0
+
+!  ---  number of days in a month
+      data DAYS / 31,28,31,30,31,30,31,31,30,31,30,31,30 /
+
+!  --- ...  control parameters: 
+!           (some of the them may be moved into model namelist)
+
+!  ---  ICTM=yyyy#, controls time sensitive external data (e.g. CO2, solcon, aerosols, etc)
+!     integer, parameter :: ICTM =   -2 ! same as ICTM=0, but add seasonal cycle from
+!                                       ! climatology. no extrapolation.
+!     integer, parameter :: ICTM =   -1 ! use user provided external data set for the
+!                                       ! forecast time. no extrapolation.
+!     integer, parameter :: ICTM =    0 ! use data at initial cond time, if not
+!                                       ! available, use latest, no extrapolation.
+!!    integer, parameter :: ICTM =    1 ! use data at the forecast time, if not
+!                                       ! available, use latest and extrapolation.
+!     integer, parameter :: ICTM =yyyy0 ! use yyyy data for the forecast time,
+!                                       ! no further data extrapolation.
+!     integer, parameter :: ICTM =yyyy1 ! use yyyy data for the fcst. if needed, do
+!                                       ! extrapolation to match the fcst time.
+
+!  ---  ISOL controls solar constant data source
+!!    integer, parameter :: ISOL = 0   ! use prescribed solar constant
+!     integer, parameter :: ISOL = 1   ! use varying solar const with 11-yr cycle
+
+!  ---  ICO2 controls co2 data source for radiation
+!     integer, parameter :: ICO2 = 0   ! prescribed global mean value (old opernl)
+!!    integer, parameter :: ICO2 = 1   ! use obs co2 annual mean value only
+!     integer, parameter :: ICO2 = 2   ! use obs co2 monthly data with 2-d variation
+
+!  ---  IALB controls surface albedo for sw radiation
+!!    integer, parameter :: IALB = 0   ! use climatology alb, based on sfc type
+!     integer, parameter :: IALB = 1   ! use modis derived alb (to be developed)
+
+!  ---  IEMS controls surface emissivity and sfc air/ground temp for lw radiation
+!        ab: 2-digit control flags. a-for sfc temperature;  b-for emissivity
+!!    integer, parameter :: IEMS = 00  ! same air/ground temp; fixed emis = 1.0
+!!    integer, parameter :: IEMS = 01  ! same air/ground temp; varying veg typ based emis
+!!    integer, parameter :: IEMS = 10  ! diff air/ground temp; fixed emis = 1.0
+!!    integer, parameter :: IEMS = 11  ! diff air/ground temp; varying veg typ based emis
+
+!  ---  IAER  controls aerosols scheme selections
+!     Old definition
+!     integer, parameter :: IAER  = 1  ! opac climatology, without volc forcing
+!     integer, parameter :: IAER  =11  ! opac climatology, with volcanic forcing
+!     integer, parameter :: IAER  = 2  ! gocart prognostic, without volc forcing
+!     integer, parameter :: IAER  =12  ! gocart prognostic, with volcanic forcing
+!     New definition in this code IAER = abc (a:volcanic; b:lw; c:sw)
+!                             b, c values: (0:none; 1:opac; 2:gocart)
+!  IAER =   0 --&gt; no aerosol effect at all (volc, sw, lw)
+!       =   1 --&gt; only tropospheric sw aerosols, no trop-lw and volc
+!       =  10 --&gt; only tropospheric lw aerosols, no trop-sw and volc
+!       =  11 --&gt; both trop-sw and trop-lw aerosols, no volc
+!       = 100 --&gt; only strato-volc aeros, no trop-sw and trop-lw
+!       = 101 --&gt; only sw aeros (trop + volc), no lw aeros
+!       = 110 --&gt; only lw aeros (trop + volc), no sw aeros
+!       = 111 --&gt; both sw and lw aeros (trop + volc) 
+!
+
+!  ---  IOVR controls cloud overlapping method in radiation:
+!     integer, parameter :: IOVR_SW = 0  ! sw: random overlap clouds
+!!    integer, parameter :: IOVR_SW = 1  ! sw: max-random overlap clouds
+
+!     integer, parameter :: IOVR_LW = 0  ! lw: random overlap clouds
+!!    integer, parameter :: IOVR_LW = 1  ! lw: max-random overlap clouds
+
+!  ---  ISUBC controls sub-column cloud approximation in radiation:
+!     integer, parameter :: ISUBC_SW = 0 ! sw: without sub-col clds approx
+!     integer, parameter :: ISUBC_SW = 1 ! sw: sub-col clds with prescribed seeds
+!     integer, parameter :: ISUBC_SW = 2 ! sw: sub-col clds with random seeds
+
+!     integer, parameter :: ISUBC_LW = 0 ! lw: without sub-col clds approx
+!     integer, parameter :: ISUBC_LW = 1 ! lw: sub-col clds with prescribed seeds
+!     integer, parameter :: ISUBC_LW = 2 ! lw: sub-col clds with random seeds
+
+!  ---  iflip indicates model vertical index direction:
+!     integer, parameter :: IFLIP = 0    ! virtical profile index from top to bottom
+      integer, parameter :: IFLIP = 1    ! virtical profile index from bottom to top
+!
+!    The following parameters are from gbphys
+!
+      real (kind=kind_phys), parameter :: dxmax=-16.118095651,          &amp;
+     &amp;                dxmin=-9.800790154, dxinv=1.0/(dxmax-dxmin)
+
+      integer :: kr, kt, kd, kq, ku, kv, ierr, dimg, kx, ky
+      integer :: i, j, k, n
+      integer :: kdtphi,kdtlam,ks                                ! hmhj
+
+      logical :: change
+      logical, save :: first, sas_shal
+      data  first / .true. /
+!
+!  ---  for debug test use
+      real (kind=kind_phys) :: temlon, temlat, alon, alat
+      integer :: ipt
+      logical :: lprnt
+
+!===&gt; *** ...  begin here
+!
+!!
+      integer              kap,kar,kat,kau,kav,kdrlam
+      integer              ksd,ksplam,kspphi,ksq,ksr,kst
+      integer              ksu,ksv,ksz,node,item,jtem
+!!
+!!xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+!!
+!!
+      idat = 0
+      idat(1) = idate(4)
+      idat(2) = idate(2)
+      idat(3) = idate(3)
+      idat(5) = idate(1)
+      rinc = 0.
+      rinc(2) = fhour
+      call w3movdat(rinc, idat, jdat)
+!
+      if (ntoz .le. 0) then                ! Climatological Ozone!
+!
+!     if(me .eq. 0) WRITE (6,989) jdat(1),jdat(2),jdat(3),jdat(5)
+! 989 FORMAT(' UPDATING OZONE FOR ', I4,I3,I3,I3)
+!
+        IDAY   = jdat(3)
+        IMON   = jdat(2)
+        MIDMON = DAYS(IMON)/2 + 1
+        CHANGE = FIRST .OR.
+     &amp;          ( (IDAY .EQ. MIDMON) .AND. (jdat(5).EQ.0) )
+!
+        IF (CHANGE) THEN
+            IF (IDAY .LT. MIDMON) THEN
+               K1OZ = MOD(IMON+10,12) + 1
+               MIDM = DAYS(K1OZ)/2 + 1
+               K2OZ = IMON
+               MIDP = DAYS(K1OZ) + MIDMON
+            ELSE
+               K1OZ = IMON
+               MIDM = MIDMON
+               K2OZ = MOD(IMON,12) + 1
+               MIDP = DAYS(K2OZ)/2 + 1 + DAYS(K1OZ)
+            ENDIF
+        ENDIF
+!
+        IF (IDAY .LT. MIDMON) THEN
+           ID = IDAY + DAYS(K1OZ)
+        ELSE
+           ID = IDAY
+        ENDIF
+        FACOZ = real (ID-MIDM) / real (MIDP-MIDM)
+      endif
+!
+      if (first) then
+        sas_shal = sashal .and. (.not. ras)
+!
+!--a reference sigma for radiation initilization, k from surfce to top
+         do k = 1, levr+1
+           si_loc(k) = prsi(1,k,1)/prsi(1,1,1)
+         enddo
+
+!  --- determin prognostic/diagnostic cloud scheme
+        icwp   = 0
+        if (NTCW &gt; 0) icwp = 1
+
+!  ---  generate initial permutation seed for random number generator
+
+        if ( ISUBC_LW==2 .or. ISUBC_SW==2 ) then
+          ipsd0 = 17*idate(1) + 43*idate(2) + 37*idate(3) + 23*idate(4)
+          if ( me == 0 ) then
+            print *,'  Radiation sub-cloud initial seed =',ipsd0,       &amp;
+     &amp;              ' idate =',idate
+          endif
+        endif
+           
+        first = .false.
+           
+      endif         ! end_if_first
+!
+!===&gt; *** ...  radiation initialization
+!
+      dtsw  = 3600.0 * fhswr
+      dtlw  = 3600.0 * fhlwr
+      raddt = min(dtsw, dtlw)
+                                                                                                            
+      call radinit                                                      &amp;
+!  ---  input:
+     &amp;     ( si_loc, LEVR, IFLIP, idat, jdat, ICTM, ISOL, ICO2,         &amp;
+     &amp;       IAER, IALB, IEMS, ICWP, NUM_P3D, ISUBC_SW, ISUBC_LW,       &amp;
+     &amp;       IOVR_SW, IOVR_LW, me )
+!  ---  output: ( none )
+
+!
+!===&gt; *** ...  astronomy for sw radiation calculation.
+!
+!     print *,' calling astronomy'
+      call astronomy                                                    &amp;
+!  ---  inputs:
+     &amp;     ( lonsperlar, global_lats_r, sinlat_r2, coslat_r2, xlon,     &amp;
+     &amp;       fhswr, jdat,                                               &amp;
+     &amp;       LONR, LATS_NODE_R, LATR, IPT_LATS_NODE_R, lsswr, me,       &amp;
+!  ---  outputs:
+     &amp;       solcon, slag, sdec, cdec, coszen, coszdg                   &amp;
+     &amp;      )
+!     print *,' returned from astro'
+
+!
+!===&gt; *** ...  generate 2-d random seeds array for sub-grid cloud-radiation
+!
+      if ( ISUBC_LW==2 .or. ISUBC_SW==2 ) then
+        ipseed = mod(nint(100.0*sqrt(fhour*3600)), ipsdlim) + 1 + ipsd0
+
+        call random_setseed                                             &amp;
+!  ---  inputs:
+     &amp;     ( ipseed,                                                    &amp;
+!  ---  outputs:
+     &amp;       stat                                                       &amp;
+     &amp;      )
+        call random_index                                               &amp;
+!  ---  inputs:
+     &amp;     ( ipsdlim,                                                   &amp;
+!  ---  outputs:
+     &amp;       numrdm, stat                                               &amp;
+     &amp;     )
+
+        do k = 1, 2
+          do j = 1, lats_node_r
+            lat = global_lats_r(ipt_lats_node_r-1+j)
+            do i = 1, LONR
+              lat =xlat(i,j)
+              ixseed(i,j,k) = numrdm(i+(lat-1)*LONR+(k-1)*LATR)
+            enddo
+          enddo
+        enddo
+      endif
+
+!
+!
+!===&gt; *** ...  starting latitude loop
+!--------------------
+      do lan=1,lats_node_r
+        lat = global_lats_r(ipt_lats_node_r-1+j)
+        lons_lat = lonsperlar(lan)
+
+!  ---  vertical structure variable prslk and minimum water vapor mixing ratio 
+        do k=1,levr 
+        do i=1,lons_lat
+          prslk(i,k,lan) = prslk(i,k,lan)**con_rocp
+          gr(i,k,lan) = max(qmin,gr(i,k,lan))
+        enddo
+        enddo
+
+!!
+!$omp parallel do schedule(dynamic,1) private(lon,i,j,k)
+!$omp+private(cldcov_v,fluxr_v,f_ice,f_rain,r_rime)
+!$omp+private(prslk,flgmin_v,hlw_v,swh_v)
+!$omp+private(njeff,n,item,jtem,ks,work1,work2)
+!$omp+private(icsdsw,icsdlw)
+!$omp+private(lprnt,ipt)
+
+      do lon=1,lons_lat,ngptc
+!--------------------
+        NJEFF   = MIN(ngptc,lons_lat-lon+1)
+        lprnt = .false.
+!
+        do k=1,nfxr
+           do j=1,njeff
+             fluxr_v(j,k) = fluxr(lon+j-1,k,lan)
+           enddo
+         enddo
+!
+          if (num_p3d == 3) then
+            do k = 1, LEVR
+              do j = 1, njeff
+                jtem = lon-1+j
+                f_ice (j,k) = phy_f3d(jtem,k,1,lan)
+                f_rain(j,k) = phy_f3d(jtem,k,2,lan)
+                r_rime(j,k) = phy_f3d(jtem,k,3,lan)
+              enddo
+            enddo
+
+            work1=(log(coslat_r2(lon,lat)/(lons_lat*latg))-dxmin)*dxinv
+            work1 = max(0.0, min(1.0,work1))
+            work2 = flgmin(1)*work1 + flgmin(2)*(1.0-work1)
+            do j=1,njeff
+!             flgmin_v(j) = work2
+              flgmin_v(j) = 0.0     
+            enddo
+          else
+            do j=1,njeff
+              flgmin_v(j) = 0.0
+            enddo
+          endif
+
+!  *** ...  assign random seeds for sw and lw radiations
+
+          if ( ISUBC_LW==2 .or. ISUBC_SW==2 ) then
+            do j = 1, njeff
+              icsdsw(j) = ixseed(lon+j-1,lan,1)
+              icsdlw(j) = ixseed(lon+j-1,lan,2)
+            enddo
+          endif
+!
+!  *** ...  calling radiation driver
+!
+          call grrad                                                    &amp;
+!  ---  inputs:
+     &amp;     ( prsi(lon,1,lan),prsl(lon,1,lan),prslk(lon,1,lan),          &amp;
+     &amp;       gt(lon,1,lan),gr(lon,1,lan),gr1(lon,1,lan,1),              &amp;
+     &amp;       vvel(lon,1,lan),slmsk(lon,lan),                            &amp;
+     &amp;       xlon(lon,lan),xlat(lon,lan),tsea(lon,lan),                 &amp;
+     &amp;       sheleg(lon,lan),sncovr(lon,lan),snoalb(lon,lan),           &amp;
+     &amp;       zorl(lon,lan),hprime(lon,1,lan),                           &amp;
+     &amp;       alvsf(lon,lan),alnsf(lon,lan),alvwf(lon,lan),              &amp;
+     &amp;       alnwf(lon,lan),facsf(lon,lan),facwf(lon,lan),              &amp;
+     &amp;       fice(lon,lan),tisfc(lon,lan),                              &amp;
+     &amp;       solcon,coszen(lon,lan),coszdg(lon,lan),k1oz,k2oz,facoz,    &amp;
+     &amp;       cv(lon,lan),cvt(lon,lan),cvb(lon,lan),                     &amp;
+     &amp;       IOVR_SW,IOVR_LW,f_ice,f_rain,r_rime,flgmin_v,              &amp;
+     &amp;       icsdsw,icsdlw,NUM_P3D,NTCW-1,NCLD,NTOZ-1,NTRAC-1,NFXR,     &amp;
+     &amp;       dtlw,dtsw,lsswr,lslwr,lssav,sas_shal,norad_precip,         &amp;
+     &amp;       crick_proof, ccnorm,                                       &amp;
+     &amp;       ngptc,njeff,LEVR,IFLIP, me, lprnt,ipt,kdt,                 &amp;
+!    &amp;       ngptc,njeff,LEVR,IFLIP, me, lprnt,                         &amp;
+!  ---  outputs:
+     &amp;       swh_v,sfcnsw(lon,lan),sfcdsw(lon,lan),                     &amp;
+     &amp;       sfalb(lon,lan),                                            &amp;
+     &amp;       hlw_v,sfcdlw(lon,lan),tsflw(lon,lan),                      &amp;
+     &amp;       sfcemis(lon,lan),cldcov_v,                                 &amp;
+!  ---  input/output:
+     &amp;       fluxr_v                                                    &amp;
+     &amp;       )
+!
+!
+!     if (lprnt) print *,' returned from grrad for me=',me,' lan=',
+!    &amp;lan,' lat=',lat,' kdt=',kdt
+!     print *,' end gloopr HLW=',hlw(lon,:,lan),' lan=',lan
+!
+!        if (lprnt) print *,' swh_vg=',swh_v(ipt,:)
+!
+!
+          if (lssav) then
+            if (ldiag3d .or. lggfs3d) then
+              do k=1,levr
+                do j=1,njeff
+                  cldcov(lon+j-1,k,lan) = cldcov(lon+j-1,k,lan)         &amp;
+     &amp;                                  + cldcov_v(j,k) * raddt
+                enddo
+              enddo
+            endif
+          endif
+          do k=1,nfxr
+            do j=1,njeff
+              fluxr(lon+j-1,k,lan) = fluxr_v(j,k)
+            enddo
+          enddo
+          if (lslwr) then
+            do k=1,levr
+              do j=1,njeff
+                jtem = lon + j - 1
+                hlw(jtem,k,lan) = hlw_v(j,k)
+                swh(jtem,k,lan) = swh_v(j,k)
+              enddo
+            enddo
+            if (levr .lt. levs) then
+              do k=levr+1,levs
+                do j=1,njeff
+                  jtem = lon + j - 1
+                  hlw(jtem,k,lan) = hlw_v(j,levr)
+                  swh(jtem,k,lan) = swh_v(j,levr)
+                enddo
+              enddo
+            endif
+          endif
+!
+!!
+!     print *,' completed grrad for lan=',lan,' istrt=',istrt
+!--------------------
+      enddo      !end lon loop
+      enddo      !end lan loop
+!--------------------
+
+      return
+      end subroutine gloopr

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_ibm
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_ibm                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_ibm        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,25 @@
+#!/bin/ksh
+set -x 
+sorc_dir=$(pwd)
+exec_dir=$(pwd)
+#mkdir -p $exec_dir
+#
+#  Select Shallow convection option
+#
+#make_dir=/ptmp/$(logname)/sorc/f2011/$(basename $sorc_dir)
+#mkdir -p $make_dir
+#cd $make_dir
+#cd $make_dir || exit 99
+#[ $? -ne 0 ] &amp;&amp; exit 8
+#
+# rm $make_dir/*.o
+# rm  $make_dir/*.mod
+#
+#tar -cf- -C$sorc_dir .|tar -xf-
+#
+# export EXEC=&quot;$exec_dir/global_fcst&quot;
+#
+ export F77=mpxlf95_r
+ export F90=mpxlf95_r
+#
+ make -f Makefile.ibm


Property changes on: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_ibm
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_jet
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_jet                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_jet        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,27 @@
+#!/bin/ksh
+set -x 
+sorc_dir=$(pwd)
+exec_dir=$(pwd)
+#mkdir -p $exec_dir
+#
+#  Select Shallow convection option
+#
+#make_dir=/mnt/pan2/projects/gnmip/$LOGNAME/ptmp/sorc/$(basename $sorc_dir)
+#mkdir -p $make_dir
+#cd $make_dir
+#cd $make_dir || exit 99
+#[ $? -ne 0 ] &amp;&amp; exit 8
+#
+# rm $make_dir/*.o
+# rm  $make_dir/*.mod
+#
+#tar -cf- -C$sorc_dir .|tar -xf-
+#
+# export EXEC=&quot;$exec_dir/global_fcst&quot;
+#
+ export F77=mpif90
+ export F90=mpif90
+ export FCC=mpicc
+ export CFLAGS=LINUX
+#
+ make -f Makefile.jet


Property changes on: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/makefile.sh_jet
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/mersenne_twister.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/mersenne_twister.f                                (rev 0)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/mersenne_twister.f        2012-05-09 02:15:13 UTC (rev 1881)
@@ -0,0 +1,500 @@
+!$$$  Module Documentation Block
+!
+! Module: mersenne_twister   Modern random number generator
+!   Prgmmr: Iredell          Org: W/NX23     date: 2005-06-14
+!
+! Abstract: This module calculates random numbers using the Mersenne twister.
+!   (It has been adapted to a Fortran 90 module from open source software.
+!   The comments from the original software are given below in the remarks.)
+!   The Mersenne twister (aka MT19937) is a state-of-the-art random number
+!   generator based on Mersenne primes and originally developed in 1997 by
+!   Matsumoto and Nishimura. It has a period before repeating of 2^19937-1,
+!   which certainly should be good enough for geophysical purposes. :-)
+!   Considering the algorithm's robustness, it runs fairly speedily.
+!   (Some timing statistics are given below in the remarks.)
+!   This adaptation uses the standard Fortran 90 random number interface,
+!   which can generate an arbitrary number of random numbers at one time.
+!   The random numbers generated are uniformly distributed between 0 and 1.
+!   The module also can generate random numbers from a Gaussian distribution
+!   with mean 0 and standard deviation 1, using a Numerical Recipes algorithm.
+!   The module also can generate uniformly random integer indices.
+!   There are also thread-safe versions of the generators in this adaptation,
+!   necessitating the passing of generator states which must be kept private.
+!
+! Program History Log:
+!   2005-06-14  Mark Iredell
+!
+! Usage: 
+!   The module can be compiled with 4-byte reals or with 8-byte reals, but
+!   4-byte integers are required. The module should be endian-independent.
+!   The Fortran 90 interfaces random_seed and random_number are overloaded
+!   and can be used as in the standard by adding the appropriate use statement
+!     use mersenne_twister
+!   In the below use cases, harvest is a real array of arbitrary size,
+!   and iharvest is an integer array of arbitrary size.
+!   To generate uniformly distributed random numbers between 0 and 1,
+!     call random_number(harvest)
+!   To generate Gaussian distributed random numbers with 0 mean and 1 sigma,
+!     call random_gauss(harvest)
+!   To generate uniformly distributed random integer indices between 0 and n,
+!     call random_index(n,iharvest)
+!   In standard &quot;saved&quot; mode, the random number generator can be used without
+!   setting a seed. But to set a seed, only 1 non-zero integer is required, e.g.
+!     call random_setseed(4357) ! set default seed
+!   The full generator state can be set via the standard interface random_seed,
+!   but it is recommended to use this method only to restore saved states, e.g.
+!     call random_seed(size=lsave)  ! get size of generator state seed array
+!     allocate isave(lsave)         ! allocate seed array
+!     call random_seed(get=isave)   ! fill seed array (then maybe save to disk)
+!     call random_seed(put=isave)   ! restore state (after read from disk maybe)
+!   Locally kept generator states can also be saved in a seed array, e.g.
+!     type(random_stat):: stat
+!     call random_seed(get=isave,stat=stat)  ! fill seed array
+!     call random_seed(put=isave,stat=stat)  ! restore state
+!   To generate random numbers in a threaded region, the &quot;thread-safe&quot; mode
+!   must be used where generator states of type random_state are passed, e.g.
+!     type(random_stat):: stat(8)
+!     do i=1,8                               ! threadable loop
+!       call random_setseed(7171*i,stat(i))  ! thread-safe call
+!     enddo
+!     do i=1,8                               ! threadable loop
+!       call random_number(harvest,stat(i))  ! thread-safe call
+!     enddo
+!     do i=1,8                               ! threadable loop
+!       call random_gauss(harvest,stat(i))   ! thread-safe call
+!     enddo
+!     do i=1,8                               ! threadable loop
+!       call random_index(n,iharvest,stat(i))! thread-safe call
+!     enddo
+!   There is also a relatively inefficient &quot;interactive&quot; mode available, where
+!   setting seeds and generating random numbers are done in the same call.
+!   There is also a functional mode available, returning one value at a time.
+!   
+! Public Defined Types:
+!   random_stat       Generator state (private contents)
+!   
+! Public Subprograms:
+!   random_seed         determine size or put or get state
+!     size              optional integer output size of seed array
+!     put               optional integer(:) input seed array
+!     get               optional integer(:) output seed array
+!     stat              optional type(random_stat) (thread-safe mode)
+!   random_setseed      set seed (thread-safe mode)
+!     inseed            integer seed input
+!     stat              type(random_stat) output
+!   random_setseed      set seed (saved mode)
+!     inseed            integer seed input
+!   random_number       get mersenne twister random numbers (thread-safe mode)
+!     harvest           real(:) numbers output
+!     stat              type(random_stat) input
+!   random_number       get mersenne twister random numbers (saved mode)
+!     harvest           real(:) numbers output
+!   random_number       get mersenne twister random numbers (interactive mode)
+!     harvest           real(:) numbers output
+!     inseed            integer seed input
+!   random_number_f     get mersenne twister random number (functional mode)
+!     harvest           real number output
+!   random_gauss        get gaussian random numbers (thread-safe mode)
+!     harvest           real(:) numbers output
+!     stat              type(random_stat) input
+!   random_gauss        get gaussian random numbers (saved mode)
+!     harvest           real(:) numbers output
+!   random_gauss        get gaussian random numbers (interactive mode)
+!     harvest           real(:) numbers output
+!     inseed            integer seed input
+!   random_gauss_f      get gaussian random number (functional mode)
+!     harvest           real number output
+!   random_index        get random indices (thread-safe mode)
+!     imax              integer maximum index input
+!     iharvest          integer(:) numbers output
+!     stat              type(random_stat) input
+!   random_index        get random indices (saved mode)
+!     imax              integer maximum index input
+!     iharvest          integer(:) numbers output
+!   random_index        get random indices (interactive mode)
+!     imax              integer maximum index input
+!     iharvest          integer(:) numbers output
+!     inseed            integer seed input
+!   random_index_f      get random index (functional mode)
+!     imax              integer maximum index input
+!     iharvest          integer number output
+!
+! Remarks:
+!   (1) Here are the comments in the original open source code:
+!     A C-program for MT19937: Real number version
+!     genrand() generates one pseudorandom real number (double)
+!     which is uniformly distributed on [0,1]-interval, for each
+!     call. sgenrand(seed) set initial values to the working area
+!     of 624 words. Before genrand(), sgenrand(seed) must be
+!     called once. (seed is any 32-bit integer except for 0).
+!     Integer generator is obtained by modifying two lines.
+!     Coded by Takuji Nishimura, considering the suggestions by
+!     Topher Cooper and Marc Rieffel in July-Aug. 1997.
+!     This library is free software; you can redistribute it and/or
+!     modify it under the terms of the GNU Library General Public
+!     License as published by the Free Software Foundation; either
+!     version 2 of the License, or (at your option) any later
+!     version.
+!     This library is distributed in the hope that it will be useful,
+!     but WITHOUT ANY WARRANTY; without even the implied warranty of
+!     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+!     See the GNU Library General Public License for more details.
+!     You should have received a copy of the GNU Library General
+!     Public License along with this library; if not, write to the
+!     Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+!     02111-1307  USA
+!     Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura.
+!     When you use this, send an email to: matumoto@math.keio.ac.jp
+!     with an appropriate reference to your work.
+!     Fortran translation by Hiroshi Takano.  Jan. 13, 1999.
+!
+!   (2) On a single IBM Power4 processor on the NCEP operational cluster (2005)
+!     each Mersenne twister random number takes less than 30 ns, about 3 times
+!     slower than the default random number generator, and each random number
+!     from a Gaussian distribution takes less than 150 ns.
+!     
+! Attributes:
+!   Language: Fortran 90
+!
+!$$$
+      module mersenne_twister
+        private
+!  Public declarations
+        public random_stat
+        public random_seed
+        public random_setseed
+        public random_number
+        public random_number_f
+        public random_gauss
+        public random_gauss_f
+        public random_index
+        public random_index_f
+!  Parameters
+        integer,parameter:: n=624
+        integer,parameter:: m=397
+        integer,parameter:: mata=-1727483681 ! constant vector a
+        integer,parameter:: umask=-2147483648 ! most significant w-r bits
+        integer,parameter:: lmask =2147483647 ! least significant r bits
+        integer,parameter:: tmaskb=-1658038656 ! tempering parameter
+        integer,parameter:: tmaskc=-272236544 ! tempering parameter
+        integer,parameter:: mag01(0:1)=(/0,mata/)
+        integer,parameter:: iseed=4357
+        integer,parameter:: nrest=n+6
+!  Defined types
+        type random_stat
+          private
+          integer:: mti=n+1
+          integer:: mt(0:n-1)
+          integer:: iset
+          real:: gset
+        end type
+!  Saved data
+        type(random_stat),save:: sstat
+!  Overloaded interfaces
+        interface random_setseed
+          module procedure random_setseed_s
+          module procedure random_setseed_t
+        end interface
+        interface random_number
+          module procedure random_number_i
+          module procedure random_number_s
+          module procedure random_number_t
+        end interface
+        interface random_gauss
+          module procedure random_gauss_i
+          module procedure random_gauss_s
+          module procedure random_gauss_t
+        end interface
+        interface random_index
+          module procedure random_index_i
+          module procedure random_index_s
+          module procedure random_index_t
+        end interface
+!  All the subprograms
+      contains
+!  Subprogram random_seed
+!  Sets and gets state; overloads Fortran 90 standard.
+        subroutine random_seed(size,put,get,stat)
+          implicit none
+          integer,intent(out),optional:: size
+          integer,intent(in),optional:: put(nrest)
+          integer,intent(out),optional:: get(nrest)
+          type(random_stat),intent(inout),optional:: stat
+          if(present(size)) then     ! return size of seed array
+!     if(present(put).or.present(get))&amp;
+!      call errmsg('RANDOM_SEED: more than one option set - some ignored')
+            size=nrest
+          elseif(present(put)) then  ! restore from seed array
+!     if(present(get))&amp;
+!      call errmsg('RANDOM_SEED: more than one option set - some ignored')
+            if(present(stat)) then
+              stat%mti=put(1)
+              stat%mt=put(2:n+1)
+              stat%iset=put(n+2)
+              stat%gset=transfer(put(n+3:nrest),stat%gset)
+              if(stat%mti.lt.0.or.stat%mti.gt.n.or.any(stat%mt.eq.0).or.
+     &amp;         stat%iset.lt.0.or.stat%iset.gt.1) then
+                call random_setseed_t(iseed,stat)
+!         call errmsg('RANDOM_SEED: invalid seeds put - default seeds used')
+              endif
+            else
+              sstat%mti=put(1)
+              sstat%mt=put(2:n+1)
+              sstat%iset=put(n+2)
+              sstat%gset=transfer(put(n+3:nrest),sstat%gset)
+              if(sstat%mti.lt.0.or.sstat%mti.gt.n.or.any(sstat%mt.eq.0)
+     &amp;         .or.sstat%iset.lt.0.or.sstat%iset.gt.1) then
+                call random_setseed_t(iseed,sstat)
+!         call errmsg('RANDOM_SEED: invalid seeds put - default seeds used')
+              endif
+            endif
+          elseif(present(get)) then  ! save to seed array
+            if(present(stat)) then
+              if(stat%mti.eq.n+1) call random_setseed_t(iseed,stat)
+              get(1)=stat%mti
+              get(2:n+1)=stat%mt
+              get(n+2)=stat%iset
+              get(n+3:nrest)=transfer(stat%gset,get,nrest-(n+3)+1)
+            else
+              if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat)
+              get(1)=sstat%mti
+              get(2:n+1)=sstat%mt
+              get(n+2)=sstat%iset
+              get(n+3:nrest)=transfer(sstat%gset,get,nrest-(n+3)+1)
+            endif
+          else                       ! reset default seed
+            if(present(stat)) then
+              call random_setseed_t(iseed,stat)
+            else
+              call random_setseed_t(iseed,sstat)
+            endif
+          endif
+        end subroutine
+!  Subprogram random_setseed_s
+!  Sets seed in saved mode.
+        subroutine random_setseed_s(inseed)
+          implicit none
+          integer,intent(in):: inseed
+          call random_setseed_t(inseed,sstat)
+        end subroutine
+!  Subprogram random_setseed_t
+!  Sets seed in thread-safe mode.
+        subroutine random_setseed_t(inseed,stat)
+          implicit none
+          integer,intent(in):: inseed
+          type(random_stat),intent(out):: stat
+          integer ii,mti
+          ii=inseed
+          if(ii.eq.0) ii=iseed
+          stat%mti=n
+          stat%mt(0)=iand(ii,-1)
+          do mti=1,n-1
+            stat%mt(mti)=iand(69069*stat%mt(mti-1),-1)
+          enddo
+          stat%iset=0
+          stat%gset=0.
+        end subroutine
+!  Subprogram random_number_f
+!  Generates random numbers in functional mode.
+        function random_number_f() result(harvest)
+          implicit none
+          real:: harvest
+          real h(1)
+          if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat)
+          call random_number_t(h,sstat)
+          harvest=h(1)
+        end function
+!  Subprogram random_number_i
+!  Generates random numbers in interactive mode.
+        subroutine random_number_i(harvest,inseed)
+          implicit none
+          real,intent(out):: harvest(:)
+          integer,intent(in):: inseed
+          type(random_stat) stat
+          call random_setseed_t(inseed,stat)
+          call random_number_t(harvest,stat)
+        end subroutine
+!  Subprogram random_number_s
+!  Generates random numbers in saved mode; overloads Fortran 90 standard.
+        subroutine random_number_s(harvest)
+          implicit none
+          real,intent(out):: harvest(:)
+          if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat)
+          call random_number_t(harvest,sstat)
+        end subroutine
+!  Subprogram random_number_t
+!  Generates random numbers in thread-safe mode.
+        subroutine random_number_t(harvest,stat)
+          implicit none
+          real, parameter  :: twop32=2.0**32
+          real, parameter  :: twop32m1i=1.0/(twop32-1.0)
+          real,intent(out):: harvest(:)
+          type(random_stat),intent(inout):: stat
+          integer j,kk,y
+          integer tshftu,tshfts,tshftt,tshftl
+          tshftu(y)=ishft(y,-11)
+          tshfts(y)=ishft(y,7)
+          tshftt(y)=ishft(y,15)
+          tshftl(y)=ishft(y,-18)
+          do j=1,size(harvest)
+            if(stat%mti.ge.n) then
+              do kk=0,n-m-1
+                y=ior(iand(stat%mt(kk),umask),iand(stat%mt(kk+1),lmask))
+                stat%mt(kk)=ieor(ieor(stat%mt(kk+m),ishft(y,-1)),
+     &amp;   mag01(iand(y,1)))
+              enddo
+              do kk=n-m,n-2
+                y=ior(iand(stat%mt(kk),umask),iand(stat%mt(kk+1),lmask))
+                stat%mt(kk)=ieor(ieor(stat%mt(kk+(m-n)),ishft(y,-1)),
+     &amp;   mag01(iand(y,1)))
+              enddo
+              y=ior(iand(stat%mt(n-1),umask),iand(stat%mt(0),lmask))
+              stat%mt(n-1)=ieor(ieor(stat%mt(m-1),ishft(y,-1)),
+     &amp;   mag01(iand(y,1)))
+              stat%mti=0
+            endif
+            y=stat%mt(stat%mti)
+            y=ieor(y,tshftu(y))
+            y=ieor(y,iand(tshfts(y),tmaskb))
+            y=ieor(y,iand(tshftt(y),tmaskc))
+            y=ieor(y,tshftl(y))
+            if(y.lt.0) then
+              harvest(j)=(real(y)+twop32)*twop32m1i
+            else
+              harvest(j)=real(y)*twop32m1i
+            endif
+            stat%mti=stat%mti+1
+          enddo
+        end subroutine
+!  Subprogram random_gauss_f
+!  Generates Gaussian random numbers in functional mode.
+        function random_gauss_f() result(harvest)
+          implicit none
+          real:: harvest
+          real h(1)
+          if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat)
+          call random_gauss_t(h,sstat)
+          harvest=h(1)
+        end function
+!  Subprogram random_gauss_i
+!  Generates Gaussian random numbers in interactive mode.
+        subroutine random_gauss_i(harvest,inseed)
+          implicit none
+          real,intent(out):: harvest(:)
+          integer,intent(in):: inseed
+          type(random_stat) stat
+          call random_setseed_t(inseed,stat)
+          call random_gauss_t(harvest,stat)
+        end subroutine
+!  Subprogram random_gauss_s
+!  Generates Gaussian random numbers in saved mode.
+        subroutine random_gauss_s(harvest)
+          implicit none
+          real,intent(out):: harvest(:)
+          if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat)
+          call random_gauss_t(harvest,sstat)
+        end subroutine
+!  Subprogram random_gauss_t
+!  Generates Gaussian random numbers in thread-safe mode.
+        subroutine random_gauss_t(harvest,stat)
+          implicit none
+          real,intent(out):: harvest(:)
+          type(random_stat),intent(inout):: stat
+          integer mx,my,mz,j
+          real r2(2),r,g1,g2
+          mz=size(harvest)
+          if(mz.le.0) return
+          mx=0
+          if(stat%iset.eq.1) then
+            mx=1
+            harvest(1)=stat%gset
+            stat%iset=0
+          endif
+          my=(mz-mx)/2*2+mx
+          do
+            call random_number_t(harvest(mx+1:my),stat)
+            do j=mx,my-2,2
+              call rgauss(harvest(j+1),harvest(j+2),r,g1,g2)
+              if(r.lt.1.) then
+                harvest(mx+1)=g1
+                harvest(mx+2)=g2
+                mx=mx+2
+              endif
+            enddo
+            if(mx.eq.my) exit
+          enddo
+          if(my.lt.mz) then
+            do
+              call random_number_t(r2,stat)
+              call rgauss(r2(1),r2(2),r,g1,g2)
+              if(r.lt.1.) exit
+            enddo
+            harvest(mz)=g1
+            stat%gset=g2
+            stat%iset=1
+          endif
+        contains
+!  Numerical Recipes algorithm to generate Gaussian random numbers.
+          subroutine rgauss(r1,r2,r,g1,g2)
+            real,intent(in):: r1,r2
+            real,intent(out):: r,g1,g2
+            real v1,v2,fac
+            v1=2.*r1-1.
+            v2=2.*r2-1.
+            r=v1**2+v2**2
+            if(r.lt.1.) then
+              fac=sqrt(-2.*log(r)/r)
+              g1=v1*fac
+              g2=v2*fac
+            endif
+          end subroutine
+        end subroutine
+!  Subprogram random_index_f
+!  Generates random indices in functional mode.
+        function random_index_f(imax) result(iharvest)
+          implicit none
+          integer,intent(in):: imax
+          integer:: iharvest
+          integer ih(1)
+          if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat)
+          call random_index_t(imax,ih,sstat)
+          iharvest=ih(1)
+        end function
+!  Subprogram random_index_i
+!  Generates random indices in interactive mode.
+        subroutine random_index_i(imax,iharvest,inseed)
+          implicit none
+          integer,intent(in):: imax
+          integer,intent(out):: iharvest(:)
+          integer,intent(in):: inseed
+          type(random_stat) stat
+          call random_setseed_t(inseed,stat)
+          call random_index_t(imax,iharvest,stat)
+        end subroutine
+!  Subprogram random_index_s
+!  Generates random indices in saved mode.
+        subroutine random_index_s(imax,iharvest)
+          implicit none
+          integer,intent(in):: imax
+          integer,intent(out):: iharvest(:)
+          if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat)
+          call random_index_t(imax,iharvest,sstat)
+        end subroutine
+!  Subprogram random_index_t
+!  Generates random indices in thread-safe mode.
+        subroutine random_index_t(imax,iharvest,stat)
+          implicit none
+          integer,intent(in):: imax
+          integer,intent(out):: iharvest(:)
+          type(random_stat),intent(inout):: stat
+          integer,parameter:: mh=n
+          integer i1,i2,mz
+          real h(mh)
+          mz=size(iharvest)
+          do i1=1,mz,mh
+            i2=min((i1-1)+mh,mz)
+            call random_number_t(h(:i2-(i1-1)),stat)
+            iharvest(i1:i2)=max(ceiling(h(:i2-(i1-1))*imax),1)
+          enddo
+        end subroutine
+      end module

Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/radiation_astronomy.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/radiation_astronomy.f        2012-05-09 02:13:03 UTC (rev 1880)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/radiation_astronomy.f        2012-05-09 02:15:13 UTC (rev 1881)
@@ -266,7 +266,7 @@
 !  inputs:                                                   dimension  !
 !    lons_lar      - num of grid pts on a given lat circle        (LATR)!
 !    glb_lats_r    - index for global latitudes                   (LATR)!
-!    sinlat,coslat - sin and cos of latitude                      (LATR)!
+!    sinlat,coslat - sin and cos of latitude                 (LON2,LATR)!
 !    xlon          - longitude in radians                    (LON2*LATD)!
 !    fhswr         - sw radiation calling interval in hour              !
 !    jdate         - current forecast date and time               (8)   !
@@ -297,7 +297,7 @@
 
       logical, intent(in) :: lsswr
 
-      real (kind=kind_phys), intent(in) :: sinlat(:), coslat(:),        &amp;
+      real (kind=kind_phys), intent(in) :: sinlat(:,:), coslat(:,:),    &amp;
      &amp;       xlon(:,:), fhswr
 !    &amp;       xlon(:,:), fhswr, deltim
 
@@ -613,7 +613,7 @@
       integer, intent(in) :: NLON2, LATD, IPT_LATR
       integer, intent(in) :: lons_lar(:), glb_lats_r(:)
 
-      real (kind=kind_phys), intent(in) :: sinlat(:), coslat(:),        &amp;
+      real (kind=kind_phys), intent(in) :: sinlat(:,:), coslat(:,:),     &amp;
      &amp;       xlon(:,:), dtswav, solhr, sdec, cdec, slag
 !    &amp;       xlon(:,:), dtswav, deltim, solhr, sdec, cdec, slag
 
@@ -623,7 +623,7 @@
 !  ---  locals:
       real (kind=kind_phys) :: coszn(NLON2), pid12, cns, ss, cc
 
-      integer :: istsun(NLON2), nstp, istp, nlon, nlnsp, i, it, j, lat
+      integer :: istsun(NLON2), nstp, istp, nlon, nlnsp, i, it,j,lat,lon
 
 !===&gt;  ...  begin here
 
@@ -641,21 +641,21 @@
         nlnsp = lons_lar(lat)
 
         do i = 1, NLON2
+          istsun(i) = 0
           coszen(i,j) = 0.0
-          istsun(i) = 0
         enddo
 
+        do i = 1, nlnsp
         do it = 1, istp
           cns = pid12 * (solhr - 12.0 + float(it-1)/float(nstp)) + slag
-          ss  = sinlat(lat) * sdec
-          cc  = coslat(lat) * cdec
+          ss  = sinlat(i,lat) * sdec
+          cc  = coslat(i,lat) * cdec
 
-          do i = 1, nlnsp
             coszn(i) = ss + cc * cos(cns + xlon(i,j))
             coszen(i,j) = coszen(i,j) + max(0.0, coszn(i))
             if (coszn(i) &gt; 0.0001) istsun(i) = istsun(i) + 1
-          enddo
         enddo
+        enddo
 
 !  --- ...  compute time averages
 

</font>
</pre>