Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Adding passive tracer to be advected by model dynamics

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

yhwong

New member
Hi,

I am not familiar with the way WRF dynamics works, so please pardon me if these questions are quite basic. I would like to add a 3D passive tracer to my model, let's call it X. This tracer is dimensionless, and is supposed to be advected by the model dynamics. The tendency of X is calculated in a physics scheme (the UW shallow convection scheme). From what I understood, I should add X as one of the species in one of the 4D arrays in WRF (moisture, scalar, chem and tracer). I assume the "moisture" arrays are involved in budget calculations as well as other diagnostics calculations (e.g. pressure and air density), but I am not familiar with the difference between three other 4D arrays (scalar, tracer and chem). My questions are:

  • From what I can tell, the "scalar" and "tracer" arrays are treated the same way in the WRF code (please correct me if i am wrong). For convenience (since "scalar" is already included in Registry.EM_COMMON), can i simply declare X as a scalar? It would be accessed by calling scalar(i,k,j,P_X). Note that X is dimensionless.

  • Must a scalar (or tracer) species always have a tendency term associated with it? X_tend is calculated in the physics scheme, and X is then updated there (by calling the "physics_update" subroutine of the CAMZM package), should I also add X_tend to the rest of the code so that X is properly advected? e.g., should I add X_tend to module_physics_addtendc.F? Would this mean that X is updated twice (once in the physics scheme and then again by the model dynamics)? Perhaps my understanding of the way the diffusion/advection modules work is too rudimentary here...

  • Are there any other modules that I should modify in order for X to be properly used in the model dynamics?

Sorry for the long questions, I appreciate any help, advice or pointer anyone can give me. Thank you very much!
 
Hi,
please see my answers below:

Q1: From what I can tell, the "scalar" and "tracer" arrays are treated the same way in the WRF code (please correct me if i am wrong). For convenience (since "scalar" is already included in Registry.EM_COMMON), can i simply declare X as a scalar? It would be accessed by calling scalar(i,k,j,P_X). Note that X is dimensionless.

Answer: In WRF, the tracer array contains only passive scalars. The values in the tracer array do not impact the rest of the WRF simulation. The tracers have no mass, and do not physically interact with the physics or dynamics. Other than being advected, taking additional memory and computational time for transport, the tracer arrays do not change the WRF solution at all. Scalars mostly are the number concentration arrays associated with some of the moist species for the double moment microphysics schemes.

Q2. Must a scalar (or tracer) species always have a tendency term associated with it? X_tend is calculated in the physics scheme, and X is then updated there (by calling the "physics_update" subroutine of the CAMZM package), should I also add X_tend to the rest of the code so that X is properly advected? e.g., should I add X_tend to module_physics_addtendc.F? Would this mean that X is updated twice (once in the physics scheme and then again by the model dynamics)? Perhaps my understanding of the way the diffusion/advection modules work is too rudimentary here...
Are there any other modules that I should modify in order for X to be properly used in the model dynamics?

Answer: Scalars are involved in physics and dynamics while tracers are only involved in dynamics. Thus a scalar has a tendency term but a tracer doesn't. For the update of a physical variable, the physics scheme only calculates its tendency but not update the variable itself. All the update is done in the dynamic part (i.e., module_physics_addtendc.F)

For more information about the tracer option in WRF, please take a look at https://www2.mmm.ucar.edu/wrf/users/tutorial/presentation_pdfs/201907/gill_registry.pdf
 
Top