<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, &
- lats_node_r,dt_mpas,nlunit,gfs_namelist,gis)
+ SUBROUTINE GFS_Initialize(me,fhour,levs_mpas,ncell,xlon_mpas,xlat_mpas, &
+ 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, &
-! gis%ntrac, gis%nxpt, gis%nypt, gis%jintmx, gis%jcap, &
- gis%ntrac, gis%jcapg, gis%jcap, &
- gis%levs, gis%levr, gis%lonf, gis%lonr, gis%latg, gis%latr,&
- gis%ntoz, gis%ntcw, gis%ncld, gis%lsoil, gis%nmtvr, &
-!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, &
+!fy! gis%ntrac, gis%nxpt, gis%nypt, gis%jintmx, gis%jcap, &
+!fy gis%ntrac, gis%jcapg, gis%jcap, &
+!fy gis%levs, gis%levr, gis%lonf, gis%lonr, gis%latg, gis%latr,&
+!fy gis%ntoz, gis%ntcw, gis%ncld, gis%lsoil, gis%nmtvr, &
+!fy gis%num_p3d, gis%num_p2d, me, gis%nam_gfs%nlunit, gis%nam_gfs%gfs_namelist)
+ CALL COMPNS(DELTIM,IRET, &
+ ntrac, jcapg, jcap, &
+ levs, levr, lonf, lonr, latg, latr, &
+ ntoz, ntcw, ncld, lsoil, nmtvr, &
+ 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 <= 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 > 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, &
+!fy IF(ME.EQ.0) PRINT*,'FROM COMPNS : IRET=',gis%IRET,' NSOUT=',NSOUT, &
+!fy ' NSSWR=',NSSWR,' NSLWR=',NSLWR,' NSZER=',NSZER,' NSRES=',NSRES, &
+!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, &
' NSSWR=',NSSWR,' NSLWR=',NSLWR,' NSZER=',NSZER,' NSRES=',NSRES, &
' 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, &
!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 > 0) gis%phy_f3d = 0.0
!fy if (num_p2d > 0) gis%phy_f2d = 0.0
!fy endif
- if (num_p3d > 0) gis%phy_f3d = 0.0
- if (num_p2d > 0) gis%phy_f2d = 0.0
+ if (num_p3d > 0) phy_f3d = 0.0
+ if (num_p2d > 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, &
!fy gis%PDRYINI, gis%TRIE_LS, gis%TRIO_LS, &
!fy gis%LS_NODE, gis%LS_NODES, gis%MAX_LS_NODES, &
@@ -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 $<
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $<
+.f.o:
+        $(F77) $(FFLAGS) -c $<
+
+
+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 $<
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $<
+.f.o:
+        $(F77) $(FFLAGS) -c $<
+
+
+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 $<
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $<
+.f.o:
+        $(F77) $(FFLAGS) -c $<
+
+
+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 $<
+        #$(F77) $(FFLAGS) -c -d -WF,-DCLR:${RASV} $<
+.f.o:
+        $(F77) $(FFLAGS) -c $<
+
+
+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,
- & kdt_mpas,fhour_mpas,date_mpas,levs_mpas,
+ & kdt_mpas,fhour_mpas,idate_mpas,levs_mpas,
& ncell_mpas,nsfc_mpas,nair_mpas,xlat_mpas,
& xlon_mpas,nodes_mpas,node0_mpas,nlunit_mpas,
& 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 ::
- & xlat(:,:), xlon(:,:),
- & coszdg(:,:), hprime(:,:,:),
- & fluxr(:,:,:), sfalb(:,:), swh(:,:,:), hlw(:,:,:)
- real (kind=kind_phys), allocatable ::
- & phy_f3d(:,:,:,:), phy_f2d(:,:,:), ddy(:), fscav(:)
- real(kind=kind_evod), allocatable ::
- & 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,
& 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(:,:,:),
+ & gu(:,:,:),gv(:,:,:),vvel(:,:,:),
+ & 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 > 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,
& xlon_mpas,xlat_mpas,lats_node_r,dt_mpas,nlunit_mpas,
- & gfs_namelist_mpas,gis)
+ & gfs_namelist_mpas)
- allocate ( lonsperlar(latr) )
- allocate ( xlon(lonr,lats_node_r),
- & xlat(lonr,lats_node_r),
- & coszdg(lonr,lats_node_r),
- & hprime(lonr,nmtvr,lats_node_r),
- & fluxr(lonr,NFXR,lats_node_r),
- & sfalb(lonr,lats_node_r),
- & swh(lonr,levs,lats_node_r),
- & hlw(lonr,levs,lats_node_r) )
- allocate (
- & phy_f3d(LONR,LEVS,num_p3d,lats_node_r),
- & phy_f2d(lonr,num_p2d,lats_node_r),
- & 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),
- & 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
- & (phour,
- & xlon,xlat,coszdg,flx_fld%coszen,
- & sfc_fld%slmsk,sfc_fld%sheleg,sfc_fld%SNCOVR,
- & sfc_fld%SNOALB,sfc_fld%ZORL,sfc_fld%TSEA,
- & HPRIME,SFALB,sfc_fld%ALVSF,sfc_fld%ALNSF,
- & sfc_fld%ALVWF,sfc_fld%ALNWF,sfc_fld%FACSF,
- & sfc_fld%FACWF,sfc_fld%CV,sfc_fld%CVT ,
- & sfc_fld%CVB,SWH,HLW,flx_fld%SFCNSW,flx_fld%SFCDLW,
- & sfc_fld%FICE,sfc_fld%TISFC,flx_fld%SFCDSW,
- & flx_fld%sfcemis, ! yth 4/09
- & flx_fld%TSFLW,FLUXR,phy_f3d,SLAG,SDEC,CDEC,KDT,
- & global_times_r)
- endif ! second if.not.adiab
+ call gloopr
+!---input
+ & (lonsperlar,global_lats_r,phour,xlon,xlat,kdt,
+ & sfc_fld%slmsk,sfc_fld%sheleg,
+ & sfc_fld%zorl, sfc_fld%tsea,
+ & sfc_fld%alvsf, sfc_fld%alnsf, sfc_fld%alvwf,
+ & sfc_fld%alnwf, sfc_fld%facsf, sfc_fld%facwf,
+ & sfc_fld%cv, sfc_fld%cvt, sfc_fld%cvb, sfc_fld%FICE,
+ & sfc_fld%tisfc, sfc_fld%sncovr, sfc_fld%snoalb,
+ & hprime,phy_f3d,
+ & prsi,prsl,gt,gr,gtrace,vvel,
+!--in and out
+ & fluxr,
+!--output
+ & swh,hlw,
+ & coszdg, flx_fld%coszen, flx_fld%sfcnsw,
+ & flx_fld%sfcdlw, flx_fld%tsflw,
+ & flx_fld%sfcdsw, sfalb, flx_fld%sfcemis,
+ & 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 @@
& xlon,
& swh,hlw,hprime,slag,sdec,cdec,
& ozplin,jindx1,jindx2,ddy,pdryini,
- & phy_f3d, phy_f2d, gis%xlat,kdt,
- & global_times_b,batah,lsout,fscav)
+ & phy_f3d, phy_f2d, xlat,kdt,
+ & 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(:,:),
+ & coszdg(:,:), hprime(:,:,:), fluxr(:,:,:), sfalb(:,:),
+ & swh(:,:,:), hlw(:,:,:),
+ & sinlat_r2(:,:),coslat_r2(:,:)
+ real (kind=kind_phys), allocatable :: phy_f3d(:,:,:,:),
+ & 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
+ & (lonsperlar,global_lats_r,phour,xlon,xlat,kdt,
+ & slmsk,sheleg, zorl, tsea,
+ & alvsf, alnsf, alvwf, alnwf, facsf, facwf,
+ & cv, cvt, cvb, fice, tisfc, sncovr, snoalb,
+ & hprime,phy_f3d,
+ & prsi,prsl,gt,gr,gr1,vvel,
+!--in and out
+ & fluxr,
+!--output
+ & swh,hlw,
+ & coszdg, coszen, sfcnsw, sfcdlw, tsflw,
+ & sfcdsw, sfalb, sfcemis,
+ & slag,sdec,cdec)
+!!
+#include "f_hpm.h"
+!
+ 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, &
+ & 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) :: &
+ & xlon, xlat, slmsk, sheleg, zorl, tsea, &
+ & alvsf, alnsf, alvwf, alnwf, facsf, facwf, &
+ & cv, cvt, cvb, FICE, tisfc, sncovr, snoalb
+ real (kind=kind_phys), intent(in) :: &
+ & hprime(lonr,nmtvr,lats_node_r), phour, &
+ & 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) :: &
+ & prsi(lonr,levp1,lats_node_r),prsl(lonr,levs,lats_node_r), &
+ & gt(lonr,levs,lats_node_r),gr(lonr,levs,lats_node_r), &
+ & gr1(lonr,levs,ntrac-1,lats_node_r),vvel(lonr,levs,lats_node_r)
+
+!
+! --- ... input and output:
+ real (kind=kind_phys), intent(inout) :: &
+ & fluxr (LONR,NFXR,LATS_NODE_R)
+
+! --- ... outputs:
+ real (kind=kind_phys), intent(out) :: &
+ & swh(LONR,LEVS,LATS_NODE_R), &
+ & hlw(LONR,LEVS,LATS_NODE_R)
+ real (kind=kind_phys),dimension(LONR,LATS_NODE_R), intent(out) :: &
+ & coszdg, coszen, sfcnsw, sfcdlw, tsflw, &
+ & sfcdsw, sfalb, sfcemis
+ real (kind=kind_phys), intent(out) :: slag, sdec, cdec
+
+!! --- ... optional spectral band heating rates
+!! real (kind=kind_phys), optional, intent(out) :: &
+!! & htrswb(NGPTC,LEVS,NBDSW,NBLCK,LATS_NODE_R), &
+!! & 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), &
+ & 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 --> no aerosol effect at all (volc, sw, lw)
+! = 1 --> only tropospheric sw aerosols, no trop-lw and volc
+! = 10 --> only tropospheric lw aerosols, no trop-sw and volc
+! = 11 --> both trop-sw and trop-lw aerosols, no volc
+! = 100 --> only strato-volc aeros, no trop-sw and trop-lw
+! = 101 --> only sw aeros (trop + volc), no lw aeros
+! = 110 --> only lw aeros (trop + volc), no sw aeros
+! = 111 --> 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, &
+ & 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
+
+!===> *** ... 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.
+ & ( (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 > 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, &
+ & ' idate =',idate
+ endif
+ endif
+
+ first = .false.
+
+ endif ! end_if_first
+!
+!===> *** ... radiation initialization
+!
+ dtsw = 3600.0 * fhswr
+ dtlw = 3600.0 * fhlwr
+ raddt = min(dtsw, dtlw)
+
+ call radinit &
+! --- input:
+ & ( si_loc, LEVR, IFLIP, idat, jdat, ICTM, ISOL, ICO2, &
+ & IAER, IALB, IEMS, ICWP, NUM_P3D, ISUBC_SW, ISUBC_LW, &
+ & IOVR_SW, IOVR_LW, me )
+! --- output: ( none )
+
+!
+!===> *** ... astronomy for sw radiation calculation.
+!
+! print *,' calling astronomy'
+ call astronomy &
+! --- inputs:
+ & ( lonsperlar, global_lats_r, sinlat_r2, coslat_r2, xlon, &
+ & fhswr, jdat, &
+ & LONR, LATS_NODE_R, LATR, IPT_LATS_NODE_R, lsswr, me, &
+! --- outputs:
+ & solcon, slag, sdec, cdec, coszen, coszdg &
+ & )
+! print *,' returned from astro'
+
+!
+!===> *** ... 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 &
+! --- inputs:
+ & ( ipseed, &
+! --- outputs:
+ & stat &
+ & )
+ call random_index &
+! --- inputs:
+ & ( ipsdlim, &
+! --- outputs:
+ & numrdm, stat &
+ & )
+
+ 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
+
+!
+!
+!===> *** ... 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 &
+! --- inputs:
+ & ( prsi(lon,1,lan),prsl(lon,1,lan),prslk(lon,1,lan), &
+ & gt(lon,1,lan),gr(lon,1,lan),gr1(lon,1,lan,1), &
+ & vvel(lon,1,lan),slmsk(lon,lan), &
+ & xlon(lon,lan),xlat(lon,lan),tsea(lon,lan), &
+ & sheleg(lon,lan),sncovr(lon,lan),snoalb(lon,lan), &
+ & zorl(lon,lan),hprime(lon,1,lan), &
+ & alvsf(lon,lan),alnsf(lon,lan),alvwf(lon,lan), &
+ & alnwf(lon,lan),facsf(lon,lan),facwf(lon,lan), &
+ & fice(lon,lan),tisfc(lon,lan), &
+ & solcon,coszen(lon,lan),coszdg(lon,lan),k1oz,k2oz,facoz, &
+ & cv(lon,lan),cvt(lon,lan),cvb(lon,lan), &
+ & IOVR_SW,IOVR_LW,f_ice,f_rain,r_rime,flgmin_v, &
+ & icsdsw,icsdlw,NUM_P3D,NTCW-1,NCLD,NTOZ-1,NTRAC-1,NFXR, &
+ & dtlw,dtsw,lsswr,lslwr,lssav,sas_shal,norad_precip, &
+ & crick_proof, ccnorm, &
+ & ngptc,njeff,LEVR,IFLIP, me, lprnt,ipt,kdt, &
+! & ngptc,njeff,LEVR,IFLIP, me, lprnt, &
+! --- outputs:
+ & swh_v,sfcnsw(lon,lan),sfcdsw(lon,lan), &
+ & sfalb(lon,lan), &
+ & hlw_v,sfcdlw(lon,lan),tsflw(lon,lan), &
+ & sfcemis(lon,lan),cldcov_v, &
+! --- input/output:
+ & fluxr_v &
+ & )
+!
+!
+! if (lprnt) print *,' returned from grrad for me=',me,' lan=',
+! &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) &
+ & + 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 ] && exit 8
+#
+# rm $make_dir/*.o
+# rm $make_dir/*.mod
+#
+#tar -cf- -C$sorc_dir .|tar -xf-
+#
+# export EXEC="$exec_dir/global_fcst"
+#
+ 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 ] && exit 8
+#
+# rm $make_dir/*.o
+# rm $make_dir/*.mod
+#
+#tar -cf- -C$sorc_dir .|tar -xf-
+#
+# export EXEC="$exec_dir/global_fcst"
+#
+ 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 "saved" 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 "thread-safe" 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 "interactive" 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))&
+! call errmsg('RANDOM_SEED: more than one option set - some ignored')
+ size=nrest
+ elseif(present(put)) then ! restore from seed array
+! if(present(get))&
+! 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.
+ & 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)
+ & .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)),
+ & 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)),
+ & 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)),
+ & 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(:), &
+ real (kind=kind_phys), intent(in) :: sinlat(:,:), coslat(:,:), &
& xlon(:,:), fhswr
! & 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(:), &
+ real (kind=kind_phys), intent(in) :: sinlat(:,:), coslat(:,:), &
& xlon(:,:), dtswav, solhr, sdec, cdec, slag
! & 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
!===> ... 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) > 0.0001) istsun(i) = istsun(i) + 1
- enddo
enddo
+ enddo
! --- ... compute time averages
</font>
</pre>