Skip to content
Open
6 changes: 5 additions & 1 deletion src/core_atmosphere/dynamics/mpas_atm_time_integration.F
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,10 @@ subroutine atm_srk3(domain, dt, itimestep)
real (kind=RKIND) :: time_dyn_step
logical, parameter :: debug = .false.

character(len=StrKIND) :: errmsg
integer :: errflg



!
! Retrieve configuration options
Expand Down Expand Up @@ -1652,7 +1656,7 @@ subroutine atm_srk3(domain, dt, itimestep)
!$OMP PARALLEL DO
do thread=1,nThreads
call driver_microphysics ( block % configs, mesh, state, 2, diag, diag_physics, tend, itimestep, &
cellSolveThreadStart(thread), cellSolveThreadEnd(thread))
cellSolveThreadStart(thread), cellSolveThreadEnd(thread), errmsg, errflg)
end do
!$OMP END PARALLEL DO
call mpas_timer_stop('microphysics')
Expand Down
12 changes: 8 additions & 4 deletions src/core_atmosphere/physics/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ifeq ($(CORE),atmosphere)
COREDEF = -Dmpas
endif

all: lookup_tables core_physics_init core_physics_wrf core_physics
all: lookup_tables core_physics_init core_physics_wrf core_physics_sima core_physics

dummy:
echo "****** compiling physics ******"
Expand Down Expand Up @@ -51,10 +51,13 @@ lookup_tables:
core_physics_wrf: core_physics_init
(cd physics_wrf; $(MAKE) all COREDEF="$(COREDEF)")

core_physics_sima: core_physics_init
(cd physics_sima; $(MAKE) all COREDEF="$(COREDEF)")

core_physics_init: $(OBJS_init)
ar -ru libphys.a $(OBJS_init)

core_physics: core_physics_wrf
core_physics: core_physics_wrf core_physics_sima
($(MAKE) phys_interface COREDEF="$(COREDEF)")
ar -ru libphys.a $(OBJS)

Expand Down Expand Up @@ -194,6 +197,7 @@ mpas_atmphys_update.o: \
clean:
$(RM) *.o *.mod *.f90 libphys.a
( cd physics_wrf; $(MAKE) clean )
( cd physics_sima; $(MAKE) clean )
@# Certain systems with intel compilers generate *.i files
@# This removes them during the clean process
$(RM) *.i
Expand All @@ -202,7 +206,7 @@ clean:
$(RM) $@ $*.mod
ifeq "$(GEN_F90)" "true"
$(CPP) $(CPPFLAGS) $(COREDEF) $(HYDROSTATIC) $(CPPINCLUDES) $< > $*.f90
$(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I./physics_wrf -I.. -I../../framework -I../../external/esmf_time_f90
$(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I./physics_wrf -I./physics_sima -I.. -I../../framework -I../../external/esmf_time_f90
else
$(FC) $(CPPFLAGS) $(COREDEF) $(HYDROSATIC) $(FFLAGS) -c $*.F $(CPPINCLUDES) $(FCINCLUDES) -I./physics_wrf -I.. -I../../framework -I../../external/esmf_time_f90
$(FC) $(CPPFLAGS) $(COREDEF) $(HYDROSATIC) $(FFLAGS) -c $*.F $(CPPINCLUDES) $(FCINCLUDES) -I./physics_wrf -I./physics_sima -I.. -I../../framework -I../../external/esmf_time_f90
endif
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ module mpas_atmphys_driver_microphysics
!wrf physics:
use module_mp_kessler
use module_mp_thompson
!mchen use module_mp_wsm6
use module_mp_wsm6

implicit none
Expand Down Expand Up @@ -276,7 +277,7 @@ subroutine microphysics_init(dminfo,configs,mesh,sfc_input,diag_physics)
end subroutine microphysics_init

!=================================================================================================================
subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,tend,itimestep,its,ite)
subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,tend,itimestep,its,ite,errmsg,errflg)
!=================================================================================================================

!input arguments:
Expand All @@ -286,6 +287,10 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten
integer,intent(in):: time_lev
integer,intent(in):: itimestep
integer,intent(in):: its,ite

!out arguments:
character(len=*), intent(out):: errmsg
integer, intent(out):: errflg

!inout arguments:
type(mpas_pool_type),intent(inout):: state
Expand Down Expand Up @@ -378,6 +383,7 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten
graupel = graupelnc_p , graupelncv = graupelncv_p , sr = sr_p , &
re_cloud = recloud_p , re_ice = reice_p , re_snow = resnow_p , &
has_reqc = has_reqc , has_reqi = has_reqi , has_reqs = has_reqs , &
errmsg = errmsg , errflg = errflg , &
ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , &
ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , &
its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte &
Expand Down
36 changes: 36 additions & 0 deletions src/core_atmosphere/physics/physics_sima/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
.SUFFIXES: .F .o

all: dummy physics_sima

dummy:
echo "****** compiling physics_sima ******"

OBJS = \
module_mp_wsm6.o \
wsm6_run.o \
module_mp_radar.o

physics_sima: $(OBJS)
ar -ru ./../libphys.a $(OBJS)

# DEPENDENCIES:
module_mp_wsm6.o: \
wsm6_run.o \
module_mp_radar.o

wsm6_run.o: \
module_mp_radar.o

clean:
$(RM) *.f90 *.o *.mod
@# Certain systems with intel compilers generate *.i files
@# This removes them during the clean process
$(RM) *.i

.F.o:
ifeq "$(GEN_F90)" "true"
$(CPP) $(CPPFLAGS) $(COREDEF) $(CPPINCLUDES) $< > $*.f90
$(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I.. -I../../../framework -I../../../external/esmf_time_f90
else
$(FC) $(CPPFLAGS) $(COREDEF) $(FFLAGS) -c $*.F $(CPPINCLUDES) $(FCINCLUDES) -I.. -I../../../framework -I../../../external/esmf_time_f90
endif
Loading