Differences between revisions 5 and 12 (spanning 7 versions)
Revision 5 as of 2021-08-05 09:37:53
Size: 2440
Editor: NicoleThomas
Comment:
Revision 12 as of 2021-08-11 10:16:22
Size: 5356
Editor: NicoleThomas
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= MESSy-CLaMS: Sedi =

== Subroutines ==
Line 7: Line 11:
|| init_random_seed (fluctuations) || NEU (fluctuations) || || init_random_seed (fluctuations) || init_random_seed (messy_clamssedi_fluctuations) ||
Line 11: Line 15:
|| add_sedi_init (data_io) || clamssedi_get_particles (messy_clamssedi_si) || || add_sedi_init (data_io) ||<|3(> clamssedi_get_particles (messy_clamssedi_si) <<BR>> -> gauss_noise (messy_clamssedi_fluctuations) <<BR>> -> gary_fluctuations (messy_clamssedi_fluctuations)||
|| gauss_noise (fluctuations) ||
|| gary_fluctuations (fluctuations) ||
Line 13: Line 19:
|| read_chem (data_io) <<BR>> set_cbox_level (sedi) <<BR>> set_cbox_kart (triang) <<BR>> (in chem: hetero_shi: sub. liquid) || clamssedi_get_airparcels (messy_clamssedi_si) <<BR>> -> clamssedi_prepare_airparcels <<BR>> ---> calc_parthno3 ||
|| gauss_noise (fluctuations) || NEU ||
|| gary_fluctuations (fluctuations) || NEU ||
|| read_chem (data_io) <<BR>> set_cbox_level (sedi) <<BR>> set_cbox_kart (triang) <<BR>> (in chem: hetero_shi: sub. liquid) || clamssedi_get_airparcels (messy_clamssedi_si) <<BR>><<BR>> -> clamssedi_prepare_airparcels <<BR>> ---> calc_parthno3 ||
Line 17: Line 21:
|| init_nat_rocks (sedi) <<BR>> -> get_triangles_for_tboxes (triang) <<BR>> -> initialize_nat_rocks (sedi) <<BR>> ---> interpolate_background_chem (compute) <<BR>> ---> calc_nucrate (compute) || sedi_prepare (messy_clamssedi) <<BR>> -> get_triangles_for_particle (messy_clamssedi_triang) <<BR>> -> interpolate_background_chem (messy_clamssedi_compute) <<BR>> -> calc_nucrate (messy_clamssedi_compute) ||
||  || clamssedi (messy_clamssedi) ||
|| compute_settling_velocity (compute) || 3. compute_settling_velocity (messy_clamssedi_compute) ||
|| compute_trajectory (compute_traj)  || 4. compute_trajectory (messy_clamssedi_traj) ||
|| get_temp_press (traj_utils) || 5. interpolate_param_one_point (messy_clams_tools_interpolreg) ||
|| get_tbox_level (sedi) || - ||
|| get_triangles_for_tboxes (triang) || -> in sedi_prepare ||
|| set_nat_rocks (sedi) <<BR>> -> interpolate_background_chem (compute) <<BR>> -> compute_particle_growth (compute) ||  <<BR>> 1. interpolate_ background_chem (messy_clamssedi_compute) <<BR>> 2. compute_particle_growth (messy_clamssedi_compute) ||
|| init_nat_rocks (sedi) <<BR>> -> get_triangles_for_tboxes (triang) <<BR>> -> initialize_nat_rocks (sedi) <<BR>> ---> interpolate_background_chem (compute) <<BR>> ---> calc_nucrate (compute) || sedi_prepare (messy_clamssedi) <<BR>> -> get_triangles_for_particle (messy_clamssedi_triang) <<BR>><<BR>> -> interpolate_background_chem (messy_clamssedi_compute) <<BR>> -> calc_nucrate (messy_clamssedi_compute) ||
|| <<BR>> ||<|7(> clamssedi (messy_clamssedi) <<BR>><<BR>>-> interpolate_ background_chem (messy_clamssedi_compute) <<BR>><<BR>> -> compute_particle_growth (messy_clamssedi_compute) <<BR>><<BR>> -> compute_settling_velocity (messy_clamssedi_compute) <<BR>><<BR>> -> compute_trajectory (messy_clamssedi_traj) <<BR>><<BR>> -> interpolate_param_one_point (messy_clams_tools_interpolreg) ||
|| compute_settling_velocity (compute) ||
|| compute_trajectory (compute_traj) ||
|| get_temp_press (traj_utils) ||
|| get_tbox_level (sedi) ||
|| get_triangles_for_tboxes (triang) ||
|| set_nat_rocks (sedi) <<BR>> -> interpolate_background_chem (compute) <<BR>> -> compute_particle_growth (compute) ||
Line 27: Line 31:
|| set_new_tboxes (sedi) ||<|2(> update_particles (messy_clamssedi_si) ||
|| refresh_tboxes (sedi) ||
|| set_new_sedi_init (data_io) || -> Messy-Output ||
|| write_changes_to_chem (data_io) || -> Channel-Kopplung ||



== Variablen ==

=== t_box / particles ===

==== CLaMS ====

''t_init'': in sedi eingelesene oder aus vorherigem Schritt vorhandene Partikel
Line 28: Line 46:
''t_add'': in create_positions neu erzeugte Partikel

''t_daten'': ''t_init'' + ''t_add''

''t_box:'' entspricht ''t_daten''

''t_box_level'': In Schichten aufgeteilte Partikel


==== MESSy-CLaMS ====

''t_init'', ''t_add'' und ''t_daten'' entfernt

''t_box'' umbenannt nach ''particles''

read_clams_particles
 Einlesen der bisherigen Partikel auf ''particles''

clamssedi_get_particles
 In create_positions neu erzeugte Partikel an ''particles'' anhängen

''t_box_level'' -> entfernt
     Die jeweilige Schicht und Triangelnummer des Partikels wird auf Komponenten von ''particles'' vermerkt: <<BR>>
        particles%lev_up, particles%lev_down<<BR>>
        particles%tr_ind_up, particles%tr_ind_down


=== c_box / airparcels ===

==== CLaMS ====

''c_box'': aus Chemie-Datei einlesen

''c_box_level'': nach Schichten aufgeteilte Luftpakete
   angelegt in in triang.f90, sub. get_cbox_level

''c_box_kart'': kartesische Koordinaten und Nachbarliste (Trianglen)



==== MESSy-CLaMS ====

''c_box'' umbenannt nach ''airparcels''

''c_box_level'' entfernt
   Level wird auf ''airparcels'' gespeichert:
     airparcels%ilev

''c_box_kart'' entfernt
   Kartesische Koordinaten und angrenzende Trianglenummer werden direkt auf airparcels gespeichert:
      c_box_kart%coor -> airparcels%coor<<BR>>
      c_box_kart%nb -> airparcels%ntriang<<BR>>
      c_box_kart%index -> airparcels%triang_ids



== Änderung in HNO3 ==

=== CLaMS ===

 * Änderung in HNO3 auf c_box_level merken
   compute_particle_growth: <<BR>>
   c_box_level%hno3 = ...

 * Zurückschreiben von HNO3 auf c_box:
   set_new_cboxes:<<BR>>
   c_box%hno3 = c_box_level%hno3

=== MESSy-CLaMS ===

 * vor sedi:
    Komponenten von ''airparcels'' von allen ranks mit MPI zusammenfügen:<<BR>>
    airparcels%hno3 enthält HNO3-Werte für alle Luftpakete

 * compute_particle_growth:
   Änderung in HNO3 auf Komponente diff_hno3 merken<<BR>>
   airparcels%diff_hno3 = ...

 * clams_si: update_airparcels:
   airparcels%diff_hno3 von allen ranks aufsummieren<<BR>>
   auf HNO3 (Channelobj.) auf die verschiedenen ranks zurückschreiben<<BR>>
   Channelobj. HNO3 = ...

 * im nächsten sedi-Aufruf:
   clamssedi_si: get_airparcels:<<BR>>
   airparcels%hno3 = HNO3

MESSy-CLaMS: Sedi

Subroutines

CLaMS Sedi

MESSy CLaMS Sedi

read_chem_global (data_io)

-> clams_sedi_init_coupling

read_bins (data_io)

get_airparcels (messy_clamssedi_si), s.u.

read_nucleation_table (compute)

read_nucleation_table (messy_clamssedi_data_io)

read_thetagrid (data_io)

get_init_grid (messy_clamssedi_data_io)

read_sedi_init (data_io)

read_clams_particles (messy_clamssedi_data_io)

init_random_seed (fluctuations)

init_random_seed (messy_clamssedi_fluctuations)

get_nboxes_init (data_io)

get_nairparcels_init (messy_clamssedi_data_io)

traj_init (traj_utils)

-

create_positions (pos_sedi)

create_position (messy_clamssedi_create_pos)

add_sedi_init (data_io)

clamssedi_get_particles (messy_clamssedi_si)
-> gauss_noise (messy_clamssedi_fluctuations)
-> gary_fluctuations (messy_clamssedi_fluctuations)

gauss_noise (fluctuations)

gary_fluctuations (fluctuations)

merge_data (compute)

-

read_chem (data_io)
set_cbox_level (sedi)
set_cbox_kart (triang)
(in chem: hetero_shi: sub. liquid)

clamssedi_get_airparcels (messy_clamssedi_si)

-> clamssedi_prepare_airparcels
---> calc_parthno3

triangulation (triang)

triangulation (messy_clamssedi_triang)

init_nat_rocks (sedi)
-> get_triangles_for_tboxes (triang)
-> initialize_nat_rocks (sedi)
---> interpolate_background_chem (compute)
---> calc_nucrate (compute)

sedi_prepare (messy_clamssedi)
-> get_triangles_for_particle (messy_clamssedi_triang)

-> interpolate_background_chem (messy_clamssedi_compute)
-> calc_nucrate (messy_clamssedi_compute)


clamssedi (messy_clamssedi)

-> interpolate_ background_chem (messy_clamssedi_compute)

-> compute_particle_growth (messy_clamssedi_compute)

-> compute_settling_velocity (messy_clamssedi_compute)

-> compute_trajectory (messy_clamssedi_traj)

-> interpolate_param_one_point (messy_clams_tools_interpolreg)

compute_settling_velocity (compute)

compute_trajectory (compute_traj)

get_temp_press (traj_utils)

get_tbox_level (sedi)

get_triangles_for_tboxes (triang)

set_nat_rocks (sedi)
-> interpolate_background_chem (compute)
-> compute_particle_growth (compute)

set_cbox_level (sedi)

update_airparcels (messy_clamssedi_si)

set_new_cboxes (sedi)

set_new_tboxes (sedi)

update_particles (messy_clamssedi_si)

refresh_tboxes (sedi)

set_new_sedi_init (data_io)

-> Messy-Output

write_changes_to_chem (data_io)

-> Channel-Kopplung

Variablen

t_box / particles

CLaMS

t_init: in sedi eingelesene oder aus vorherigem Schritt vorhandene Partikel

t_add: in create_positions neu erzeugte Partikel

t_daten: t_init + t_add

t_box: entspricht t_daten

t_box_level: In Schichten aufgeteilte Partikel

MESSy-CLaMS

t_init, t_add und t_daten entfernt

t_box umbenannt nach particles

read_clams_particles

  • Einlesen der bisherigen Partikel auf particles

clamssedi_get_particles

  • In create_positions neu erzeugte Partikel an particles anhängen

t_box_level -> entfernt

  • Die jeweilige Schicht und Triangelnummer des Partikels wird auf Komponenten von particles vermerkt:

    • particles%lev_up, particles%lev_down
      particles%tr_ind_up, particles%tr_ind_down

c_box / airparcels

CLaMS

c_box: aus Chemie-Datei einlesen

c_box_level: nach Schichten aufgeteilte Luftpakete

  • angelegt in in triang.f90, sub. get_cbox_level

c_box_kart: kartesische Koordinaten und Nachbarliste (Trianglen)

MESSy-CLaMS

c_box umbenannt nach airparcels

c_box_level entfernt

  • Level wird auf airparcels gespeichert:

    • airparcels%ilev

c_box_kart entfernt

  • Kartesische Koordinaten und angrenzende Trianglenummer werden direkt auf airparcels gespeichert:
    • c_box_kart%coor -> airparcels%coor
      c_box_kart%nb -> airparcels%ntriang
      c_box_kart%index -> airparcels%triang_ids

Änderung in HNO3

CLaMS

  • Änderung in HNO3 auf c_box_level merken
    • compute_particle_growth:
      c_box_level%hno3 = ...

  • Zurückschreiben von HNO3 auf c_box:
    • set_new_cboxes:
      c_box%hno3 = c_box_level%hno3

MESSy-CLaMS

  • vor sedi:
    • Komponenten von airparcels von allen ranks mit MPI zusammenfügen:
      airparcels%hno3 enthält HNO3-Werte für alle Luftpakete

  • compute_particle_growth:
    • Änderung in HNO3 auf Komponente diff_hno3 merken
      airparcels%diff_hno3 = ...

  • clams_si: update_airparcels:
    • airparcels%diff_hno3 von allen ranks aufsummieren
      auf HNO3 (Channelobj.) auf die verschiedenen ranks zurückschreiben
      Channelobj. HNO3 = ...

  • im nächsten sedi-Aufruf:
    • clamssedi_si: get_airparcels:
      airparcels%hno3 = HNO3

messy/sedi (last edited 2021-08-11 10:16:22 by NicoleThomas)