[Wrf-users] Parallelisation, global average, imposed nudging and moisture variables in idealised experiments

Maxime Colin m.colin at unsw.edu.au
Wed Nov 9 22:37:27 MST 2016


Hello everyone,


We are using WRF in an idealised set-up, with fixed SST and doubly periodic boundary conditions (Radiative-Convective Equilibrium).

I am running with dmpar configuration only (MPI calls active but no OMP), on 240 CPUs, for a 202*202*69 domain.


In one of our experiment, we need to be able to keep the mean profiles of temperature and water vapour mixing ratio fixed, so we have decided to add a module for this type of nudging into WRF. This module is called directly by solve_em.F at the very beginning of the solver. Unfortunately, the results exhibit a very strange behaviour of the variables, which seems to be due to parallelisation at first sight.

1) How to get the water vapour mixing ratio inside the WRF code? Am I right to use moist(ims,kms,jms,P_QV) when calling the new subroutine that implements our profile nudging, in solve_em.F?

2) If I understand properly, the subroutine should use the "p" indices, as it is already parallelised and as in my case, the tile indices and the p indices are the same (we do not use smpar). Is it right to compute the average temperature and water vapour mixing ratio over the whole domain via the following way?

    DO k = kps , kpe
       sum_var_hor = 0.
       count_hor = 0.
       DO j = jps, min(jpe,jde-1)
       DO i = ips, min(ipe,ide-1)
          sum_var_hor = sum_var_hor + QV_CURR(i,k,j)
          count_hor = count_hor + 1.
       END DO
       END DO
       sum_var_hor = wrf_dm_sum_real ( sum_var_hor )
       count_hor   = wrf_dm_sum_real ( count_hor )
       var_hor_average(k) = sum_var_hor / count_hor

3) Carrying on from the computation of the global average, I am trying to push the values at each level in one direction so that the mean value at that level relaxes towards a target profile. This is what I have called profile nudging. Is the following code doing the expected job in relaxing ALL points by a value that only depends on the vertical axis?

      dQV_CURR_strong_nudging(k) =  - ( var_hor_average(k)  - QVAPOR_target_prof(k) ) * nudging_coefficient_var
       DO j = jps, min(jpe,jde-1)  !jps , jpe
       DO i = ips, min(ipe,ide-1)  !ips , ipe
          write(6,*) 'i and j are ', i, j
          QV_CURR(i,k,j) =  QV_CURR(i,k,j) + dQV_CURR_strong_nudging(k)
       END DO
       END DO

To give everybody an idea of what the problem looks like, I attach an (x,y) view of potential temperature and water vapour mixing ratio which show the weirdest behaviour ever.

I have been working on this for ages, and can't find where my code is wrong, and why it gives this weird division into 16 bands on the y axis only, as my code is very symmetric on x and y.

I could also point out that this weird behaviour seems to vanish when I only implement the profile nudging on potential temperature only (not relaxing water vapour at all).

Thank you very much for your help,

Kind regards,

Maxime.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/wrf-users/attachments/20161110/3301b08a/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: T_strong_nudg_on_Qvap_only_output2_level1.jpg
Type: image/jpeg
Size: 222879 bytes
Desc: T_strong_nudg_on_Qvap_only_output2_level1.jpg
Url : http://mailman.ucar.edu/pipermail/wrf-users/attachments/20161110/3301b08a/attachment-0002.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: QVAPOR_strong_nudg_on_Qvap_only_output2_level1.jpg
Type: image/jpeg
Size: 299976 bytes
Desc: QVAPOR_strong_nudg_on_Qvap_only_output2_level1.jpg
Url : http://mailman.ucar.edu/pipermail/wrf-users/attachments/20161110/3301b08a/attachment-0003.jpg 


More information about the Wrf-users mailing list