compdyn / partmc

Particle-resolved stochastic atmospheric aerosol model
http://lagrange.mechse.illinois.edu/partmc/
GNU General Public License v2.0
28 stars 16 forks source link

Comp particles changing when averaging (from Joseph) #15

Closed mwest1066 closed 9 years ago

mwest1066 commented 9 years ago

Nicole reports that when Joseph did composition averaging, the number of computational particles changed.

nriemer commented 9 years ago

Joseph received from me a parcel_master_20121106 and a parcel_master_20130602.

For the 2012-master, there is a set of reference runs and composition-averaged runs on keeling: REF2012:

 /home/manabe/nriemer/a/atmos-ching1/parcel_master_20121106/scenarios/2_urban_plume2/out

COMP2012:

/home/manabe/nriemer/a/atmos-ching1/parcel_master_20121106/scenarios/3_condense/start

The number of computational particles in REF2012 and COMP2012 are the same.

For the 2013-master, there is also a set of reference runs and composition-averaged runs on keeling:

/home/manabe/nriemer/a/atmos-ching1/parcel_master_20130602/scenarios/3_condense/start

The REF2013 case is identical with the REF2012 case. The number of comp. particles in REF2013 and COMP2013 are different.

I compared the bin_average_comp.F90 in both directories:

/home/manabe/nriemer/a/atmos-ching1/parcel_master_20130602/src
[nriemer@manabe src]$ diff bin_average_comp.F90 /home/manabe/nriemer/a/atmos-ching1/parcel_master_20121106/src/bin_average_comp.F90 
1c1
< ! Copyright (C) 2009-2013 Matthew West
---
> ! Copyright (C) 2009-2012 Matthew West
86c86,87
<   call aero_state_bin_average_comp(aero_state, bin_grid, aero_data)
---
>   call aero_state_bin_average_comp(aero_state, bin_grid, aero_data, &
>        dry_volume)

For the 2013-master, dry_volume is not passed anymore to aero_state_bin_average_comp.

mwest1066 commented 9 years ago

For reference, the REF2012 version above (2012-11-06) is probably cd3d5104b6f079478fd36ac5d77cfdbd1b68bfb5 and the REF2013 version (2013-06-02) is probably 6bc2ab2a7539c2b74220bdb223b8a61084d6a0cd. The only difference between them is the merging of the branch weight_average:

*   6bc2ab2 2013-05-30 Matthew West Merge branch 'weight_average'
|\
| * 7ed72ca 2013-05-30 Matthew West fix aero_state_make_dry() to handle weighted particles correctly
| * 36db24f 2013-05-30 Matthew West remove dry_volume option for averaging; call aero_state_make_dry() first if desired
|/
* cd3d510 2012-10-09 Matthew West fix Doxygen comment formatting for conf_95_offset()
nriemer commented 9 years ago

The issue arises when the particles contain water, and in the averaging script the setting is:

 flag_dry_wet = "dry".

In this case, the particles are dried before averaging. If they are originally dry, the number of computational particles will not change. If they are originally wet, this will change the particle diameter, and the weightings and hence the number of computational particles might change.

mwest1066 commented 9 years ago

Nicole communicated with Joseph and they both confirmed that the REF2013 code (6bc2ab2a7539c2b74220bdb223b8a61084d6a0cd) preserves the number of computational particles when doing wet averaging, and changes the number of computational particles when doing dry averaging.

This is the expected, correct behavior. Dry averaging works by removing the water from all particles before averaging. Removing the water changes the particle diameters and thus requires re-weighting, which can change the number of computational particles. Because this is done to the whole population, the number of computational particles changed is actually quite small.

I'm closing this as notabug.