Skip to content

Commit 9534e14

Browse files
Change compiling flag for hydrostatic options (#828)
* Remove -DUSE_COND and -DMOIST_CAPPA compiling flags for hydrostatic runs; Fix the issue to write out omga and geopotential height for inline post * Add the conditions to calculate omega in post * Update CMakeLists.txt * revise conditions to calculate zint
1 parent 7147dac commit 9534e14

File tree

4 files changed

+50
-20
lines changed

4 files changed

+50
-20
lines changed

CMakeLists.txt

+8-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ set(USE_GFSL63 ON)
3737
if(MOVING_NEST)
3838
set(MOVING_NEST ON)
3939
endif()
40+
if(HYDRO)
41+
set(HYDRO ON)
42+
endif()
4043
add_subdirectory(atmos_cubed_sphere)
4144
target_compile_definitions(fv3 PRIVATE BYPASS_BREED_SLP_INLINE)
4245

@@ -61,7 +64,11 @@ if(NOT PARALLEL_NETCDF)
6164
endif()
6265

6366
if(MOVING_NEST)
64-
list(APPEND _fv3atm_defs_private MOVING_NEST MOIST_CAPPA USE_COND)
67+
list(APPEND _fv3atm_defs_private MOVING_NEST)
68+
if(NOT HYDRO)
69+
list(APPEND _fv3atm_defs_private MOIST_CAPPA USE_COND)
70+
endif()
71+
6572
if(DEBUG)
6673
list(APPEND _fv3atm_defs_private DEBUG)
6774
endif()

atmos_cubed_sphere

ccpp/CMakeLists.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,10 @@ endif(CCPP_32BIT)
8484

8585
#------------------------------------------------------------------------------
8686
# Add model-specific flags for C/C++/Fortran preprocessor
87-
add_definitions(-DMOIST_CAPPA -DUSE_COND -DNEMS_GSM)
88-
add_definitions(-DINTERNAL_FILE_NML)
87+
if(NOT HYDRO)
88+
add_definitions(-DMOIST_CAPPA -DUSE_COND -DNEMS_GSM)
89+
endif()
90+
add_definitions(-DINTERNAL_FILE_NML -DNEMS_GSM)
8991

9092
if(MULTI_GASES)
9193
add_definitions(-DMULTI_GASES)

io/post_fv3.F90

+37-16
Original file line numberDiff line numberDiff line change
@@ -3564,6 +3564,19 @@ subroutine set_postvars_fv3(wrt_int_state,grid_id,mype,mpicomp)
35643564
enddo
35653565
endif
35663566

3567+
! model level omga
3568+
if(trim(fieldname)=='omga') then
3569+
!$omp parallel do default(none) private(i,j,l) shared(lm,jsta,jend,ista,iend,omga,arrayr43d,fillvalue,spval)
3570+
do l=1,lm
3571+
do j=jsta,jend
3572+
do i=ista, iend
3573+
omga(i,j,l) = arrayr43d(i,j,l)
3574+
if(abs(arrayr43d(i,j,l)-fillvalue)<small) omga(i,j,l) = spval
3575+
enddo
3576+
enddo
3577+
enddo
3578+
endif
3579+
35673580
! soilt
35683581
if(trim(fieldname)=='soilt') then
35693582
!$omp parallel do default(none) private(i,j,l) shared(nsoil,jsta,jend,ista,iend,stc,arrayr43d,sm,sice,fillvalue,spval)
@@ -4268,22 +4281,6 @@ subroutine set_postvars_fv3(wrt_int_state,grid_id,mype,mpicomp)
42684281
enddo
42694282
enddo
42704283

4271-
do l=lm,1,-1
4272-
!$omp parallel do default(none) private(i,j) shared(l,jsta,jend,omga,wh,dpres,zint,spval,ista,iend)
4273-
do j=jsta,jend
4274-
do i=ista,iend
4275-
if(wh(i,j,l) /= spval) then
4276-
omga(i,j,l) = (-1.) * wh(i,j,l) * dpres(i,j,l)/zint(i,j,l)
4277-
zint(i,j,l) = zint(i,j,l) + zint(i,j,l+1)
4278-
else
4279-
omga(i,j,l) = spval
4280-
zint(i,j,l) = spval
4281-
endif
4282-
enddo
4283-
enddo
4284-
enddo
4285-
! print *,'in post_lam,omga 3d=',maxval(omga(ista:iend,jsta:jend,1)),minval(omga(ista:iend,jsta:jend,1)), &
4286-
! 'lm=',maxval(omga(ista:iend,jsta:jend,lm)),minval(omga(ista:iend,jsta:jend,lm))
42874284

42884285
! compute pint from top down
42894286
!$omp parallel do default(none) private(i,j) shared(jsta,jend,ak5,pint,ista,iend)
@@ -4343,6 +4340,29 @@ subroutine set_postvars_fv3(wrt_int_state,grid_id,mype,mpicomp)
43434340
end do
43444341
end do
43454342

4343+
do l=lm,1,-1
4344+
!$omp parallel do default(none) private(i,j) shared(l,jsta,jend,omga,wh,dpres,zint,alpint,q,t,spval,ista,iend)
4345+
do j=jsta,jend
4346+
do i=ista,iend
4347+
if(wh(i,j,l) /= spval) then
4348+
if(omga(i,j,l) == spval .and. dpres(i,j,l) /= spval .and. zint(i,j,l) /=spval) &
4349+
omga(i,j,l) = (-1.) * wh(i,j,l) * dpres(i,j,l)/zint(i,j,l)
4350+
if(zint(i,j,l+1) /=spval .and. zint(i,j,l) /=spval) &
4351+
zint(i,j,l) = zint(i,j,l) + zint(i,j,l+1)
4352+
else
4353+
if(zint(i,j,l+1) /=spval .and. t(i,j,l) /= spval .and. alpint(i,j,l+1) /= spval &
4354+
.and. alpint(i,j,l) /=spval .and. q(i,j,l) /= spval) then
4355+
zint(i,j,l) = zint(i,j,l+1)+(rgas/grav)*t(i,j,l)*(1.+fv*q(i,j,l))*(alpint(i,j,l+1)-alpint(i,j,l))
4356+
else
4357+
zint(i,j,l) = spval
4358+
endif
4359+
endif
4360+
enddo
4361+
enddo
4362+
enddo
4363+
! print *,'in post_lam,omga 3d=',maxval(omga(ista:iend,jsta:jend,1)),minval(omga(ista:iend,jsta:jend,1)), &
4364+
! 'lm=',maxval(omga(ista:iend,jsta:jend,lm)),minval(omga(ista:iend,jsta:jend,lm))
4365+
43464366
! compute zmid
43474367
do l=lm,1,-1
43484368
!$omp parallel do default(none) private(i,j) shared(l,jsta,jend,zmid,zint,pmid,alpint,spval,ista,iend)
@@ -4359,6 +4379,7 @@ subroutine set_postvars_fv3(wrt_int_state,grid_id,mype,mpicomp)
43594379
end do
43604380
end do
43614381

4382+
43624383
! surface potential T, and potential T at roughness length
43634384
!$omp parallel do default(none) private(i,j) shared(jsta,jend,ista,iend,spval,lp1,sm,ths,sst,thz0,sice,pint)
43644385
do j=jsta,jend

0 commit comments

Comments
 (0)