ESCOMP / ESCOMP/CAM-SIMA

cnst_ndropmixed is not currently handled - vdiff, CLUBB impacted

Open
#445 0 comments 0 reactions 0 assignees View on GitHub
discussion enhancement
Dominant language
No language data
Stars
9
Forks
22
Avg merge
8d 5h
Merged PRs (30d)
4

Description

### Issue Type

Other (please describe below)

### Issue Description

Many places throughout CAM use a flag called `cnst_ndropmixed(m)` which flags whether this constituent is vertically mixed by `dropmixnuc`. If yes, then vertical diffusion and CLUBB will ignore this species when doing mixing.
* in `vertical_diffusion` this is handled by the `do_diffusion_const(m)` (standard name `flag_for_ccpp_constituent_vertical_diffusion`) flag in `vertical_diffusion_diffuse_tracers_run`. This logical array is populated by looking at `dropmixnuc` (in CAM's to-be-obsolete vertical_diffusion_init) and hardcoded in CCPPized `init` phase
* in CLUBB (not yet CCPPized), `clubb_intr` checks the flag directly:
```fortran
do m = 1, pcnst
if (cnst_ndropmixed(m)) then
lq(m)=.false.
! Droplet number is transported in dropmixnuc, therefore we
! do NOT want CLUBB to apply transport tendencies to avoid double
! counting. Else, we apply tendencies.
edsclr_dim = edsclr_dim-1
endif
enddo
```

This flag is set in multiple places throughout current CAM code.
* For chemical species, modal aerosol species, the `chemistry.F90`'s register phase:
```fortran
if ( index(lng_name,'_a')>0 ) then ! modal aerosol species undergoes ndrop activation mixing
ndropmixed = .true.
endif
```

* For `NUMLIQ` only, `micro_pumas_cam.F90` (MG)'s register phase:
```fortran
! Droplet number is transported in dropmixnuc, therefore we
! do NOT want CLUBB to apply transport tendencies to avoid double
! counting.
ndropmixed = prog_modal_aero.or.(carma_model(:10)=='trop_strat')

call cnst_add(cnst_names(3), mwh2o, cpair, 0._r8, ixnumliq, ndropmixed=ndropmixed, &
longname='Grid box averaged cloud liquid number', is_convtran1=.true.)
```

There is no infrastructure in the constituent properties object to handle this for now. This will significantly impact answers even before `ndrop` is CCPPized, because it changes the behavior of the diffusion solver (in CAM5+) and CLUBB (in CAM6+)

cc @adamrher @cacraigucar @nusbaume @peverwhee

### Will this change answers?

Yes

### Will you be implementing this yourself?

Yes, but I will need some help

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.