From 188f41f0066de81f0a049c0637db7fa7e8af38d1 Mon Sep 17 00:00:00 2001 From: fkhosrawi Date: Tue, 31 Oct 2023 14:35:54 +0000 Subject: [PATCH] deploy: 2d0bb90e4c2a66b6630cd8fe62240c5e51f09caa --- doxygen/annotated.html | 118 + doxygen/annotated_dup.js | 11 + doxygen/atm__conv_8c.html | 229 + doxygen/atm__conv_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 18 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 38312 bytes doxygen/atm__conv_8c_source.html | 182 + doxygen/atm__dist_8c.html | 551 + doxygen/atm__dist_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 14 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 29634 bytes doxygen/atm__dist_8c_source.html | 508 + doxygen/atm__init_8c.html | 314 + doxygen/atm__init_8c.js | 4 + doxygen/atm__init_8c_source.html | 290 + doxygen/atm__select_8c.html | 322 + doxygen/atm__select_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 19 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 43089 bytes doxygen/atm__select_8c_source.html | 274 + doxygen/atm__split_8c.html | 316 + doxygen/atm__split_8c.js | 4 + doxygen/atm__split_8c_source.html | 292 + doxygen/atm__stat_8c.html | 381 + doxygen/atm__stat_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 13 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 25358 bytes doxygen/atm__stat_8c_source.html | 339 + doxygen/bc_s.png | Bin 0 -> 676 bytes doxygen/bdwn.png | Bin 0 -> 147 bytes doxygen/cape_8c.html | 345 + doxygen/cape_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 45 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 142433 bytes doxygen/cape_8c_source.html | 271 + doxygen/classes.html | 118 + doxygen/closed.png | Bin 0 -> 132 bytes doxygen/day2doy_8c.html | 186 + doxygen/day2doy_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 2074 bytes doxygen/day2doy_8c_source.html | 153 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 195 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 31 + doxygen/doc.png | Bin 0 -> 746 bytes doxygen/doxygen.css | 1841 ++ doxygen/doxygen.svg | 26 + doxygen/doy2day_8c.html | 185 + doxygen/doy2day_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 2066 bytes doxygen/doy2day_8c_source.html | 152 + doxygen/dynsections.js | 128 + doxygen/files.html | 139 + doxygen/files_dup.js | 4 + doxygen/folderclosed.png | Bin 0 -> 616 bytes doxygen/folderopen.png | Bin 0 -> 597 bytes doxygen/functions.html | 115 + doxygen/functions_b.html | 120 + doxygen/functions_c.html | 159 + doxygen/functions_d.html | 112 + doxygen/functions_dup.js | 25 + doxygen/functions_e.html | 109 + doxygen/functions_g.html | 122 + doxygen/functions_h.html | 114 + doxygen/functions_i.html | 113 + doxygen/functions_k.html | 108 + doxygen/functions_l.html | 111 + doxygen/functions_m.html | 151 + doxygen/functions_n.html | 117 + doxygen/functions_o.html | 114 + doxygen/functions_p.html | 134 + doxygen/functions_q.html | 196 + doxygen/functions_r.html | 109 + doxygen/functions_s.html | 123 + doxygen/functions_t.html | 127 + doxygen/functions_u.html | 111 + doxygen/functions_v.html | 119 + doxygen/functions_vars.html | 115 + doxygen/functions_vars.js | 25 + doxygen/functions_vars_b.html | 120 + doxygen/functions_vars_c.html | 159 + doxygen/functions_vars_d.html | 112 + doxygen/functions_vars_e.html | 109 + doxygen/functions_vars_g.html | 122 + doxygen/functions_vars_h.html | 114 + doxygen/functions_vars_i.html | 113 + doxygen/functions_vars_k.html | 108 + doxygen/functions_vars_l.html | 111 + doxygen/functions_vars_m.html | 151 + doxygen/functions_vars_n.html | 117 + doxygen/functions_vars_o.html | 114 + doxygen/functions_vars_p.html | 134 + doxygen/functions_vars_q.html | 196 + doxygen/functions_vars_r.html | 109 + doxygen/functions_vars_s.html | 123 + doxygen/functions_vars_t.html | 127 + doxygen/functions_vars_u.html | 111 + doxygen/functions_vars_v.html | 119 + doxygen/functions_vars_w.html | 117 + doxygen/functions_vars_z.html | 114 + doxygen/functions_w.html | 117 + doxygen/functions_z.html | 114 + doxygen/globals.html | 112 + doxygen/globals_b.html | 108 + doxygen/globals_c.html | 124 + doxygen/globals_d.html | 119 + doxygen/globals_defs.html | 286 + doxygen/globals_dup.js | 24 + doxygen/globals_e.html | 112 + doxygen/globals_f.html | 111 + doxygen/globals_func.html | 108 + doxygen/globals_func.js | 19 + doxygen/globals_func_c.html | 117 + doxygen/globals_func_d.html | 109 + doxygen/globals_func_f.html | 108 + doxygen/globals_func_g.html | 112 + doxygen/globals_func_i.html | 113 + doxygen/globals_func_j.html | 108 + doxygen/globals_func_k.html | 108 + doxygen/globals_func_l.html | 113 + doxygen/globals_func_m.html | 135 + doxygen/globals_func_n.html | 108 + doxygen/globals_func_q.html | 109 + doxygen/globals_func_r.html | 140 + doxygen/globals_func_s.html | 112 + doxygen/globals_func_t.html | 112 + doxygen/globals_func_w.html | 126 + doxygen/globals_g.html | 113 + doxygen/globals_h.html | 108 + doxygen/globals_i.html | 120 + doxygen/globals_j.html | 108 + doxygen/globals_k.html | 109 + doxygen/globals_l.html | 120 + doxygen/globals_m.html | 140 + doxygen/globals_n.html | 132 + doxygen/globals_p.html | 116 + doxygen/globals_q.html | 109 + doxygen/globals_r.html | 147 + doxygen/globals_s.html | 120 + doxygen/globals_t.html | 119 + doxygen/globals_w.html | 127 + doxygen/globals_z.html | 110 + doxygen/graph_legend.html | 166 + doxygen/graph_legend.md5 | 1 + doxygen/graph_legend.png | Bin 0 -> 20802 bytes doxygen/index.html | 110 + doxygen/jquery.js | 35 + doxygen/jsec2time_8c.html | 186 + doxygen/jsec2time_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 1963 bytes doxygen/jsec2time_8c_source.html | 153 + doxygen/libtrac_8c.html | 12158 ++++++++++++ doxygen/libtrac_8c.js | 95 + ...306bc1616303cc969e103d6faca3593_cgraph.map | 5 + ...306bc1616303cc969e103d6faca3593_cgraph.md5 | 1 + ...306bc1616303cc969e103d6faca3593_cgraph.png | Bin 0 -> 4568 bytes ...44c272334c81fcf88f9f01c551c1bb1_cgraph.map | 6 + ...44c272334c81fcf88f9f01c551c1bb1_cgraph.md5 | 1 + ...44c272334c81fcf88f9f01c551c1bb1_cgraph.png | Bin 0 -> 6659 bytes ...0ab9cbb20f7bacc7bad573191f7cabb_cgraph.map | 7 + ...0ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 | 1 + ...0ab9cbb20f7bacc7bad573191f7cabb_cgraph.png | Bin 0 -> 9759 bytes ...5081510cdc536f13a7179118ef21687_cgraph.map | 6 + ...5081510cdc536f13a7179118ef21687_cgraph.md5 | 1 + ...5081510cdc536f13a7179118ef21687_cgraph.png | Bin 0 -> 6472 bytes ...cafe18e5c051e7107cb918a1dbd0db8_cgraph.map | 4 + ...cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 | 1 + ...cafe18e5c051e7107cb918a1dbd0db8_cgraph.png | Bin 0 -> 3381 bytes ...77456b731e2a0a531884a8390250b03_cgraph.map | 4 + ...77456b731e2a0a531884a8390250b03_cgraph.md5 | 1 + ...77456b731e2a0a531884a8390250b03_cgraph.png | Bin 0 -> 3120 bytes ...8828a87a5a435af28435a7976e499e4_cgraph.map | 9 + ...8828a87a5a435af28435a7976e499e4_cgraph.md5 | 1 + ...8828a87a5a435af28435a7976e499e4_cgraph.png | Bin 0 -> 16160 bytes ...d35c49f4a1313a00a0b6da2f9bb877c_cgraph.map | 4 + ...d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 | 1 + ...d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png | Bin 0 -> 4092 bytes ...5d13994c6a0e753baf0e0df39bc8645_cgraph.map | 4 + ...5d13994c6a0e753baf0e0df39bc8645_cgraph.md5 | 1 + ...5d13994c6a0e753baf0e0df39bc8645_cgraph.png | Bin 0 -> 2640 bytes ...cdb424353dfdea020de7512894ef08f_cgraph.map | 4 + ...cdb424353dfdea020de7512894ef08f_cgraph.md5 | 1 + ...cdb424353dfdea020de7512894ef08f_cgraph.png | Bin 0 -> 2528 bytes ...0393f78fb69719a43e79b54dace29b5_cgraph.map | 4 + ...0393f78fb69719a43e79b54dace29b5_cgraph.md5 | 1 + ...0393f78fb69719a43e79b54dace29b5_cgraph.png | Bin 0 -> 2686 bytes ...1f5ab8ff7acad400fe7332b6b53288a_cgraph.map | 5 + ...1f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 | 1 + ...1f5ab8ff7acad400fe7332b6b53288a_cgraph.png | Bin 0 -> 4216 bytes ...531cb279e09061a6f34a73695c7b692_cgraph.map | 5 + ...531cb279e09061a6f34a73695c7b692_cgraph.md5 | 1 + ...531cb279e09061a6f34a73695c7b692_cgraph.png | Bin 0 -> 4473 bytes ...5e1b76bdf16030222665374ecc02e18_cgraph.map | 6 + ...5e1b76bdf16030222665374ecc02e18_cgraph.md5 | 1 + ...5e1b76bdf16030222665374ecc02e18_cgraph.png | Bin 0 -> 7308 bytes ...6873d15f57e990c702ec46e5016abd8_cgraph.map | 4 + ...6873d15f57e990c702ec46e5016abd8_cgraph.md5 | 1 + ...6873d15f57e990c702ec46e5016abd8_cgraph.png | Bin 0 -> 2792 bytes ...9757e2569c3f96f57e291fdbe3ddc29_cgraph.map | 12 + ...9757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 | 1 + ...9757e2569c3f96f57e291fdbe3ddc29_cgraph.png | Bin 0 -> 20057 bytes ...2786d005ed312f3c9ba2fac7cd544fc_cgraph.map | 4 + ...2786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 | 1 + ...2786d005ed312f3c9ba2fac7cd544fc_cgraph.png | Bin 0 -> 2036 bytes ...6ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.map | 8 + ...6ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 | 1 + ...6ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png | Bin 0 -> 13282 bytes ...84686ab1a1db21abc1c65b66d9db10a_cgraph.map | 11 + ...84686ab1a1db21abc1c65b66d9db10a_cgraph.md5 | 1 + ...84686ab1a1db21abc1c65b66d9db10a_cgraph.png | Bin 0 -> 18640 bytes ...afa769139ff29d1aa185e317f2f69c7_cgraph.map | 4 + ...afa769139ff29d1aa185e317f2f69c7_cgraph.md5 | 1 + ...afa769139ff29d1aa185e317f2f69c7_cgraph.png | Bin 0 -> 3036 bytes ...f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.map | 9 + ...f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 | 1 + ...f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png | Bin 0 -> 19321 bytes ...0ca26c59c2fca1fda54a29dfd3625b6_cgraph.map | 7 + ...0ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 | 1 + ...0ca26c59c2fca1fda54a29dfd3625b6_cgraph.png | Bin 0 -> 8761 bytes ...e748a53552146213c2716ca829d345f_cgraph.map | 37 + ...e748a53552146213c2716ca829d345f_cgraph.md5 | 1 + ...e748a53552146213c2716ca829d345f_cgraph.png | Bin 0 -> 137220 bytes ...bdd741d54d2111b3341ef04d826b475_cgraph.map | 4 + ...bdd741d54d2111b3341ef04d826b475_cgraph.md5 | 1 + ...bdd741d54d2111b3341ef04d826b475_cgraph.png | Bin 0 -> 2835 bytes ...d75be729f28e7e8927561210d81e48c_cgraph.map | 6 + ...d75be729f28e7e8927561210d81e48c_cgraph.md5 | 1 + ...d75be729f28e7e8927561210d81e48c_cgraph.png | Bin 0 -> 6795 bytes ...5998555c31d67b672339a2332f7ee1c_cgraph.map | 4 + ...5998555c31d67b672339a2332f7ee1c_cgraph.md5 | 1 + ...5998555c31d67b672339a2332f7ee1c_cgraph.png | Bin 0 -> 2598 bytes ...8e813ec34f6121b5fdd8652d29b10dc_cgraph.map | 4 + ...8e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 | 1 + ...8e813ec34f6121b5fdd8652d29b10dc_cgraph.png | Bin 0 -> 2588 bytes ...ba00889eeb600010467d8b62de94a36_cgraph.map | 7 + ...ba00889eeb600010467d8b62de94a36_cgraph.md5 | 1 + ...ba00889eeb600010467d8b62de94a36_cgraph.png | Bin 0 -> 6921 bytes ...3e201b153aa01202bb286d650ef07c5_cgraph.map | 5 + ...3e201b153aa01202bb286d650ef07c5_cgraph.md5 | 1 + ...3e201b153aa01202bb286d650ef07c5_cgraph.png | Bin 0 -> 5281 bytes ...697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map | 5 + ...697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 | 1 + ...697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png | Bin 0 -> 6078 bytes ...8054000249eb04a88fc06bba77dd573_cgraph.map | 5 + ...8054000249eb04a88fc06bba77dd573_cgraph.md5 | 1 + ...8054000249eb04a88fc06bba77dd573_cgraph.png | Bin 0 -> 4585 bytes ...bf877af94269d0aa1c94b7c50121df8_cgraph.map | 4 + ...bf877af94269d0aa1c94b7c50121df8_cgraph.md5 | 1 + ...bf877af94269d0aa1c94b7c50121df8_cgraph.png | Bin 0 -> 1991 bytes ...3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map | 6 + ...3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 | 1 + ...3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png | Bin 0 -> 8687 bytes ...93b6fdc706c932016eb2586f35dc985_cgraph.map | 4 + ...93b6fdc706c932016eb2586f35dc985_cgraph.md5 | 1 + ...93b6fdc706c932016eb2586f35dc985_cgraph.png | Bin 0 -> 2628 bytes ...ad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map | 5 + ...ad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 | 1 + ...ad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png | Bin 0 -> 5043 bytes ...af12f02099c61792e04447367f1c37d_cgraph.map | 34 + ...af12f02099c61792e04447367f1c37d_cgraph.md5 | 1 + ...af12f02099c61792e04447367f1c37d_cgraph.png | Bin 0 -> 109838 bytes ...afd1410822189cadee393d5cec50a59_cgraph.map | 4 + ...afd1410822189cadee393d5cec50a59_cgraph.md5 | 1 + ...afd1410822189cadee393d5cec50a59_cgraph.png | Bin 0 -> 3454 bytes ...61cf973263fcc45574daa27d0dec8cd_cgraph.map | 4 + ...61cf973263fcc45574daa27d0dec8cd_cgraph.md5 | 1 + ...61cf973263fcc45574daa27d0dec8cd_cgraph.png | Bin 0 -> 2491 bytes ...8d8e4969b972ebf2bfea8ad774b9822_cgraph.map | 8 + ...8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 | 1 + ...8d8e4969b972ebf2bfea8ad774b9822_cgraph.png | Bin 0 -> 12186 bytes ...9583382a3025752eaaf56a1fcc3380f_cgraph.map | 6 + ...9583382a3025752eaaf56a1fcc3380f_cgraph.md5 | 1 + ...9583382a3025752eaaf56a1fcc3380f_cgraph.png | Bin 0 -> 6255 bytes ...aaa3090b6f7f9f471fbd24392304341_cgraph.map | 4 + ...aaa3090b6f7f9f471fbd24392304341_cgraph.md5 | 1 + ...aaa3090b6f7f9f471fbd24392304341_cgraph.png | Bin 0 -> 2727 bytes ...2d95b1eb426ead1c25fe5f198f476c9_cgraph.map | 8 + ...2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 | 1 + ...2d95b1eb426ead1c25fe5f198f476c9_cgraph.png | Bin 0 -> 10452 bytes ...5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map | 5 + ...5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 | 1 + ...5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png | Bin 0 -> 4724 bytes ...b5aaa2ee2de7b0625084e6a18503996_cgraph.map | 5 + ...b5aaa2ee2de7b0625084e6a18503996_cgraph.md5 | 1 + ...b5aaa2ee2de7b0625084e6a18503996_cgraph.png | Bin 0 -> 5022 bytes doxygen/libtrac_8c_source.html | 8170 ++++++++ doxygen/libtrac_8h.html | 15569 ++++++++++++++++ doxygen/libtrac_8h.js | 207 + ...306bc1616303cc969e103d6faca3593_cgraph.map | 5 + ...306bc1616303cc969e103d6faca3593_cgraph.md5 | 1 + ...306bc1616303cc969e103d6faca3593_cgraph.png | Bin 0 -> 4568 bytes ...44c272334c81fcf88f9f01c551c1bb1_cgraph.map | 6 + ...44c272334c81fcf88f9f01c551c1bb1_cgraph.md5 | 1 + ...44c272334c81fcf88f9f01c551c1bb1_cgraph.png | Bin 0 -> 6659 bytes ...0ab9cbb20f7bacc7bad573191f7cabb_cgraph.map | 7 + ...0ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 | 1 + ...0ab9cbb20f7bacc7bad573191f7cabb_cgraph.png | Bin 0 -> 9759 bytes ...5081510cdc536f13a7179118ef21687_cgraph.map | 6 + ...5081510cdc536f13a7179118ef21687_cgraph.md5 | 1 + ...5081510cdc536f13a7179118ef21687_cgraph.png | Bin 0 -> 6472 bytes ...cafe18e5c051e7107cb918a1dbd0db8_cgraph.map | 4 + ...cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 | 1 + ...cafe18e5c051e7107cb918a1dbd0db8_cgraph.png | Bin 0 -> 3381 bytes ...77456b731e2a0a531884a8390250b03_cgraph.map | 4 + ...77456b731e2a0a531884a8390250b03_cgraph.md5 | 1 + ...77456b731e2a0a531884a8390250b03_cgraph.png | Bin 0 -> 3120 bytes ...8828a87a5a435af28435a7976e499e4_cgraph.map | 9 + ...8828a87a5a435af28435a7976e499e4_cgraph.md5 | 1 + ...8828a87a5a435af28435a7976e499e4_cgraph.png | Bin 0 -> 16160 bytes ...d35c49f4a1313a00a0b6da2f9bb877c_cgraph.map | 4 + ...d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 | 1 + ...d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png | Bin 0 -> 4092 bytes ...5d13994c6a0e753baf0e0df39bc8645_cgraph.map | 4 + ...5d13994c6a0e753baf0e0df39bc8645_cgraph.md5 | 1 + ...5d13994c6a0e753baf0e0df39bc8645_cgraph.png | Bin 0 -> 2640 bytes ...cdb424353dfdea020de7512894ef08f_cgraph.map | 4 + ...cdb424353dfdea020de7512894ef08f_cgraph.md5 | 1 + ...cdb424353dfdea020de7512894ef08f_cgraph.png | Bin 0 -> 2528 bytes ...0393f78fb69719a43e79b54dace29b5_cgraph.map | 4 + ...0393f78fb69719a43e79b54dace29b5_cgraph.md5 | 1 + ...0393f78fb69719a43e79b54dace29b5_cgraph.png | Bin 0 -> 2686 bytes ...1f5ab8ff7acad400fe7332b6b53288a_cgraph.map | 5 + ...1f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 | 1 + ...1f5ab8ff7acad400fe7332b6b53288a_cgraph.png | Bin 0 -> 4216 bytes ...531cb279e09061a6f34a73695c7b692_cgraph.map | 5 + ...531cb279e09061a6f34a73695c7b692_cgraph.md5 | 1 + ...531cb279e09061a6f34a73695c7b692_cgraph.png | Bin 0 -> 4473 bytes ...5e1b76bdf16030222665374ecc02e18_cgraph.map | 6 + ...5e1b76bdf16030222665374ecc02e18_cgraph.md5 | 1 + ...5e1b76bdf16030222665374ecc02e18_cgraph.png | Bin 0 -> 7308 bytes ...6873d15f57e990c702ec46e5016abd8_cgraph.map | 4 + ...6873d15f57e990c702ec46e5016abd8_cgraph.md5 | 1 + ...6873d15f57e990c702ec46e5016abd8_cgraph.png | Bin 0 -> 2792 bytes ...9757e2569c3f96f57e291fdbe3ddc29_cgraph.map | 12 + ...9757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 | 1 + ...9757e2569c3f96f57e291fdbe3ddc29_cgraph.png | Bin 0 -> 20057 bytes ...2786d005ed312f3c9ba2fac7cd544fc_cgraph.map | 4 + ...2786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 | 1 + ...2786d005ed312f3c9ba2fac7cd544fc_cgraph.png | Bin 0 -> 2036 bytes ...6ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.map | 8 + ...6ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 | 1 + ...6ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png | Bin 0 -> 13282 bytes ...84686ab1a1db21abc1c65b66d9db10a_cgraph.map | 11 + ...84686ab1a1db21abc1c65b66d9db10a_cgraph.md5 | 1 + ...84686ab1a1db21abc1c65b66d9db10a_cgraph.png | Bin 0 -> 18640 bytes ...afa769139ff29d1aa185e317f2f69c7_cgraph.map | 4 + ...afa769139ff29d1aa185e317f2f69c7_cgraph.md5 | 1 + ...afa769139ff29d1aa185e317f2f69c7_cgraph.png | Bin 0 -> 3036 bytes ...f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.map | 9 + ...f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 | 1 + ...f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png | Bin 0 -> 19321 bytes ...0ca26c59c2fca1fda54a29dfd3625b6_cgraph.map | 7 + ...0ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 | 1 + ...0ca26c59c2fca1fda54a29dfd3625b6_cgraph.png | Bin 0 -> 8761 bytes ...e748a53552146213c2716ca829d345f_cgraph.map | 37 + ...e748a53552146213c2716ca829d345f_cgraph.md5 | 1 + ...e748a53552146213c2716ca829d345f_cgraph.png | Bin 0 -> 137220 bytes ...bdd741d54d2111b3341ef04d826b475_cgraph.map | 4 + ...bdd741d54d2111b3341ef04d826b475_cgraph.md5 | 1 + ...bdd741d54d2111b3341ef04d826b475_cgraph.png | Bin 0 -> 2835 bytes ...5998555c31d67b672339a2332f7ee1c_cgraph.map | 4 + ...5998555c31d67b672339a2332f7ee1c_cgraph.md5 | 1 + ...5998555c31d67b672339a2332f7ee1c_cgraph.png | Bin 0 -> 2598 bytes ...8e813ec34f6121b5fdd8652d29b10dc_cgraph.map | 4 + ...8e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 | 1 + ...8e813ec34f6121b5fdd8652d29b10dc_cgraph.png | Bin 0 -> 2588 bytes ...ba00889eeb600010467d8b62de94a36_cgraph.map | 7 + ...ba00889eeb600010467d8b62de94a36_cgraph.md5 | 1 + ...ba00889eeb600010467d8b62de94a36_cgraph.png | Bin 0 -> 6921 bytes ...3e201b153aa01202bb286d650ef07c5_cgraph.map | 5 + ...3e201b153aa01202bb286d650ef07c5_cgraph.md5 | 1 + ...3e201b153aa01202bb286d650ef07c5_cgraph.png | Bin 0 -> 5281 bytes ...697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map | 5 + ...697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 | 1 + ...697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png | Bin 0 -> 6078 bytes ...8054000249eb04a88fc06bba77dd573_cgraph.map | 5 + ...8054000249eb04a88fc06bba77dd573_cgraph.md5 | 1 + ...8054000249eb04a88fc06bba77dd573_cgraph.png | Bin 0 -> 4585 bytes ...bf877af94269d0aa1c94b7c50121df8_cgraph.map | 4 + ...bf877af94269d0aa1c94b7c50121df8_cgraph.md5 | 1 + ...bf877af94269d0aa1c94b7c50121df8_cgraph.png | Bin 0 -> 1991 bytes ...c3995f25d0dcba39704f2e5c5c93f16_cgraph.map | 6 + ...c3995f25d0dcba39704f2e5c5c93f16_cgraph.md5 | 1 + ...c3995f25d0dcba39704f2e5c5c93f16_cgraph.png | Bin 0 -> 6795 bytes ...3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map | 6 + ...3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 | 1 + ...3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png | Bin 0 -> 8687 bytes ...ad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map | 5 + ...ad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 | 1 + ...ad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png | Bin 0 -> 5043 bytes ...af12f02099c61792e04447367f1c37d_cgraph.map | 34 + ...af12f02099c61792e04447367f1c37d_cgraph.md5 | 1 + ...af12f02099c61792e04447367f1c37d_cgraph.png | Bin 0 -> 109838 bytes ...afd1410822189cadee393d5cec50a59_cgraph.map | 4 + ...afd1410822189cadee393d5cec50a59_cgraph.md5 | 1 + ...afd1410822189cadee393d5cec50a59_cgraph.png | Bin 0 -> 3454 bytes ...61cf973263fcc45574daa27d0dec8cd_cgraph.map | 4 + ...61cf973263fcc45574daa27d0dec8cd_cgraph.md5 | 1 + ...61cf973263fcc45574daa27d0dec8cd_cgraph.png | Bin 0 -> 2491 bytes ...8d8e4969b972ebf2bfea8ad774b9822_cgraph.map | 8 + ...8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 | 1 + ...8d8e4969b972ebf2bfea8ad774b9822_cgraph.png | Bin 0 -> 12186 bytes ...9583382a3025752eaaf56a1fcc3380f_cgraph.map | 6 + ...9583382a3025752eaaf56a1fcc3380f_cgraph.md5 | 1 + ...9583382a3025752eaaf56a1fcc3380f_cgraph.png | Bin 0 -> 6255 bytes ...aaa3090b6f7f9f471fbd24392304341_cgraph.map | 4 + ...aaa3090b6f7f9f471fbd24392304341_cgraph.md5 | 1 + ...aaa3090b6f7f9f471fbd24392304341_cgraph.png | Bin 0 -> 2727 bytes ...2d95b1eb426ead1c25fe5f198f476c9_cgraph.map | 8 + ...2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 | 1 + ...2d95b1eb426ead1c25fe5f198f476c9_cgraph.png | Bin 0 -> 10452 bytes ...5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map | 5 + ...5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 | 1 + ...5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png | Bin 0 -> 4724 bytes ...7c3d417479747cdf69cce6cae3599e5_cgraph.map | 4 + ...7c3d417479747cdf69cce6cae3599e5_cgraph.md5 | 1 + ...7c3d417479747cdf69cce6cae3599e5_cgraph.png | Bin 0 -> 2628 bytes ...b5aaa2ee2de7b0625084e6a18503996_cgraph.map | 5 + ...b5aaa2ee2de7b0625084e6a18503996_cgraph.md5 | 1 + ...b5aaa2ee2de7b0625084e6a18503996_cgraph.png | Bin 0 -> 5022 bytes doxygen/libtrac_8h_source.html | 2688 +++ doxygen/met__conv_8c.html | 257 + doxygen/met__conv_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 48 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 178778 bytes doxygen/met__conv_8c_source.html | 180 + doxygen/met__lapse_8c.html | 487 + doxygen/met__lapse_8c.js | 7 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 45 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 164917 bytes doxygen/met__lapse_8c_source.html | 359 + doxygen/met__map_8c.html | 507 + doxygen/met__map_8c.js | 6 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 48 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 201655 bytes doxygen/met__map_8c_source.html | 395 + doxygen/met__prof_8c.html | 458 + doxygen/met__prof_8c.js | 5 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 48 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 195037 bytes doxygen/met__prof_8c_source.html | 365 + doxygen/met__sample_8c.html | 379 + doxygen/met__sample_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 52 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 230634 bytes doxygen/met__sample_8c_source.html | 302 + doxygen/met__spec_8c.html | 427 + doxygen/met__spec_8c.js | 6 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 46 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 144928 bytes doxygen/met__spec_8c_source.html | 313 + doxygen/met__subgrid_8c.html | 404 + doxygen/met__subgrid_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 46 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 143693 bytes doxygen/met__subgrid_8c_source.html | 333 + doxygen/met__zm_8c.html | 506 + doxygen/met__zm_8c.js | 6 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 48 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 195037 bytes doxygen/met__zm_8c_source.html | 394 + doxygen/nav_f.png | Bin 0 -> 153 bytes doxygen/nav_g.png | Bin 0 -> 95 bytes doxygen/nav_h.png | Bin 0 -> 98 bytes doxygen/navtree.css | 147 + doxygen/navtree.js | 549 + doxygen/navtreedata.js | 56 + doxygen/navtreeindex0.js | 253 + doxygen/navtreeindex1.js | 253 + doxygen/navtreeindex2.js | 253 + doxygen/navtreeindex3.js | 146 + doxygen/open.png | Bin 0 -> 123 bytes doxygen/resize.js | 150 + doxygen/search/all_0.html | 37 + doxygen/search/all_0.js | 23 + doxygen/search/all_1.html | 37 + doxygen/search/all_1.js | 17 + doxygen/search/all_10.html | 37 + doxygen/search/all_10.js | 94 + doxygen/search/all_11.html | 37 + doxygen/search/all_11.js | 45 + doxygen/search/all_12.html | 37 + doxygen/search/all_12.js | 33 + doxygen/search/all_13.html | 37 + doxygen/search/all_13.js | 41 + doxygen/search/all_14.html | 37 + doxygen/search/all_14.js | 7 + doxygen/search/all_15.html | 37 + doxygen/search/all_15.js | 15 + doxygen/search/all_16.html | 37 + doxygen/search/all_16.js | 34 + doxygen/search/all_17.html | 37 + doxygen/search/all_17.js | 13 + doxygen/search/all_2.html | 37 + doxygen/search/all_2.js | 78 + doxygen/search/all_3.html | 37 + doxygen/search/all_3.js | 22 + doxygen/search/all_4.html | 37 + doxygen/search/all_4.js | 10 + doxygen/search/all_5.html | 37 + doxygen/search/all_5.js | 7 + doxygen/search/all_6.html | 37 + doxygen/search/all_6.js | 24 + doxygen/search/all_7.html | 37 + doxygen/search/all_7.js | 11 + doxygen/search/all_8.html | 37 + doxygen/search/all_8.js | 22 + doxygen/search/all_9.html | 37 + doxygen/search/all_9.js | 5 + doxygen/search/all_a.html | 37 + doxygen/search/all_a.js | 6 + doxygen/search/all_b.html | 37 + doxygen/search/all_b.js | 22 + doxygen/search/all_c.html | 37 + doxygen/search/all_c.js | 90 + doxygen/search/all_d.html | 37 + doxygen/search/all_d.js | 38 + doxygen/search/all_e.html | 37 + doxygen/search/all_e.js | 10 + doxygen/search/all_f.html | 37 + doxygen/search/all_f.js | 40 + doxygen/search/classes_0.html | 37 + doxygen/search/classes_0.js | 4 + doxygen/search/classes_1.html | 37 + doxygen/search/classes_1.js | 9 + doxygen/search/classes_2.html | 37 + doxygen/search/classes_2.js | 4 + doxygen/search/close.svg | 31 + doxygen/search/defines_0.html | 37 + doxygen/search/defines_0.js | 8 + doxygen/search/defines_1.html | 37 + doxygen/search/defines_1.js | 10 + doxygen/search/defines_10.html | 37 + doxygen/search/defines_10.js | 4 + doxygen/search/defines_11.html | 37 + doxygen/search/defines_11.js | 6 + doxygen/search/defines_2.html | 37 + doxygen/search/defines_2.js | 13 + doxygen/search/defines_3.html | 37 + doxygen/search/defines_3.js | 8 + doxygen/search/defines_4.html | 37 + doxygen/search/defines_4.js | 6 + doxygen/search/defines_5.html | 37 + doxygen/search/defines_5.js | 4 + doxygen/search/defines_6.html | 37 + doxygen/search/defines_6.js | 4 + doxygen/search/defines_7.html | 37 + doxygen/search/defines_7.js | 10 + doxygen/search/defines_8.html | 37 + doxygen/search/defines_8.js | 4 + doxygen/search/defines_9.html | 37 + doxygen/search/defines_9.js | 10 + doxygen/search/defines_a.html | 37 + doxygen/search/defines_a.js | 8 + doxygen/search/defines_b.html | 37 + doxygen/search/defines_b.js | 27 + doxygen/search/defines_c.html | 37 + doxygen/search/defines_c.js | 12 + doxygen/search/defines_d.html | 37 + doxygen/search/defines_d.js | 10 + doxygen/search/defines_e.html | 37 + doxygen/search/defines_e.js | 11 + doxygen/search/defines_f.html | 37 + doxygen/search/defines_f.js | 10 + doxygen/search/files_0.html | 37 + doxygen/search/files_0.js | 9 + doxygen/search/files_1.html | 37 + doxygen/search/files_1.js | 4 + doxygen/search/files_2.html | 37 + doxygen/search/files_2.js | 5 + doxygen/search/files_3.html | 37 + doxygen/search/files_3.js | 4 + doxygen/search/files_4.html | 37 + doxygen/search/files_4.js | 5 + doxygen/search/files_5.html | 37 + doxygen/search/files_5.js | 11 + doxygen/search/files_6.html | 37 + doxygen/search/files_6.js | 4 + doxygen/search/files_7.html | 37 + doxygen/search/files_7.js | 9 + doxygen/search/files_8.html | 37 + doxygen/search/files_8.js | 4 + doxygen/search/functions_0.html | 37 + doxygen/search/functions_0.js | 4 + doxygen/search/functions_1.html | 37 + doxygen/search/functions_1.js | 13 + doxygen/search/functions_2.html | 37 + doxygen/search/functions_2.js | 5 + doxygen/search/functions_3.html | 37 + doxygen/search/functions_3.js | 4 + doxygen/search/functions_4.html | 37 + doxygen/search/functions_4.js | 8 + doxygen/search/functions_5.html | 37 + doxygen/search/functions_5.js | 9 + doxygen/search/functions_6.html | 37 + doxygen/search/functions_6.js | 4 + doxygen/search/functions_7.html | 37 + doxygen/search/functions_7.js | 4 + doxygen/search/functions_8.html | 37 + doxygen/search/functions_8.js | 9 + doxygen/search/functions_9.html | 37 + doxygen/search/functions_9.js | 31 + doxygen/search/functions_a.html | 37 + doxygen/search/functions_a.js | 4 + doxygen/search/functions_b.html | 37 + doxygen/search/functions_b.js | 5 + doxygen/search/functions_c.html | 37 + doxygen/search/functions_c.js | 36 + doxygen/search/functions_d.html | 37 + doxygen/search/functions_d.js | 8 + doxygen/search/functions_e.html | 37 + doxygen/search/functions_e.js | 8 + doxygen/search/functions_f.html | 37 + doxygen/search/functions_f.js | 22 + doxygen/search/mag_sel.svg | 74 + doxygen/search/nomatches.html | 13 + doxygen/search/pages_0.html | 37 + doxygen/search/pages_0.js | 4 + doxygen/search/search.css | 274 + doxygen/search/search.js | 802 + doxygen/search/search_l.png | Bin 0 -> 567 bytes doxygen/search/search_m.png | Bin 0 -> 158 bytes doxygen/search/search_r.png | Bin 0 -> 553 bytes doxygen/search/searchdata.js | 33 + doxygen/search/variables_0.html | 37 + doxygen/search/variables_0.js | 11 + doxygen/search/variables_1.html | 37 + doxygen/search/variables_1.js | 16 + doxygen/search/variables_10.html | 37 + doxygen/search/variables_10.js | 19 + doxygen/search/variables_11.html | 37 + doxygen/search/variables_11.js | 23 + doxygen/search/variables_12.html | 37 + doxygen/search/variables_12.js | 7 + doxygen/search/variables_13.html | 37 + doxygen/search/variables_13.js | 15 + doxygen/search/variables_14.html | 37 + doxygen/search/variables_14.js | 13 + doxygen/search/variables_15.html | 37 + doxygen/search/variables_15.js | 10 + doxygen/search/variables_2.html | 37 + doxygen/search/variables_2.js | 55 + doxygen/search/variables_3.html | 37 + doxygen/search/variables_3.js | 8 + doxygen/search/variables_4.html | 37 + doxygen/search/variables_4.js | 5 + doxygen/search/variables_5.html | 37 + doxygen/search/variables_5.js | 18 + doxygen/search/variables_6.html | 37 + doxygen/search/variables_6.js | 10 + doxygen/search/variables_7.html | 37 + doxygen/search/variables_7.js | 9 + doxygen/search/variables_8.html | 37 + doxygen/search/variables_8.js | 4 + doxygen/search/variables_9.html | 37 + doxygen/search/variables_9.js | 7 + doxygen/search/variables_a.html | 37 + doxygen/search/variables_a.js | 47 + doxygen/search/variables_b.html | 37 + doxygen/search/variables_b.js | 13 + doxygen/search/variables_c.html | 37 + doxygen/search/variables_c.js | 10 + doxygen/search/variables_d.html | 37 + doxygen/search/variables_d.js | 30 + doxygen/search/variables_e.html | 37 + doxygen/search/variables_e.js | 92 + doxygen/search/variables_f.html | 37 + doxygen/search/variables_f.js | 5 + doxygen/sedi_8c.html | 206 + doxygen/sedi_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 1558 bytes doxygen/sedi_8c_source.html | 173 + doxygen/splitbar.png | Bin 0 -> 314 bytes doxygen/structatm__t.html | 252 + doxygen/structatm__t.js | 9 + doxygen/structcache__t.html | 231 + doxygen/structcache__t.js | 8 + doxygen/structclim__photo__t.html | 336 + doxygen/structclim__photo__t.js | 13 + doxygen/structclim__t.html | 462 + doxygen/structclim__t.js | 19 + doxygen/structclim__ts__t.html | 189 + doxygen/structclim__ts__t.js | 6 + doxygen/structclim__zm__t.html | 273 + doxygen/structclim__zm__t.js | 10 + doxygen/structctl__t.html | 6091 ++++++ doxygen/structctl__t.js | 287 + doxygen/structmet__t.html | 1155 ++ doxygen/structmet__t.js | 52 + doxygen/sync_off.png | Bin 0 -> 853 bytes doxygen/sync_on.png | Bin 0 -> 845 bytes doxygen/tab_a.png | Bin 0 -> 142 bytes doxygen/tab_b.png | Bin 0 -> 169 bytes doxygen/tab_h.png | Bin 0 -> 177 bytes doxygen/tab_s.png | Bin 0 -> 184 bytes doxygen/tabs.css | 1 + doxygen/time2jsec_8c.html | 192 + doxygen/time2jsec_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 1969 bytes doxygen/time2jsec_8c_source.html | 159 + doxygen/tnat_8c.html | 190 + doxygen/tnat_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 1988 bytes doxygen/tnat_8c_source.html | 161 + doxygen/trac_8c.html | 4328 +++++ doxygen/trac_8c.js | 33 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 52 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 231225 bytes ...d7701a95a327a1833ef16620838e71d_cgraph.map | 4 + ...d7701a95a327a1833ef16620838e71d_cgraph.md5 | 1 + ...d7701a95a327a1833ef16620838e71d_cgraph.png | Bin 0 -> 2057 bytes ...226e54dbf610f7701d0e60e7c55d1e9_cgraph.map | 9 + ...226e54dbf610f7701d0e60e7c55d1e9_cgraph.md5 | 1 + ...226e54dbf610f7701d0e60e7c55d1e9_cgraph.png | Bin 0 -> 19858 bytes ...2f35c3d4dac72ac9ba2406a97937dc1_cgraph.map | 8 + ...2f35c3d4dac72ac9ba2406a97937dc1_cgraph.md5 | 1 + ...2f35c3d4dac72ac9ba2406a97937dc1_cgraph.png | Bin 0 -> 10900 bytes ...ccd30026baf665758ff587cd2bebdb1_cgraph.map | 7 + ...ccd30026baf665758ff587cd2bebdb1_cgraph.md5 | 1 + ...ccd30026baf665758ff587cd2bebdb1_cgraph.png | Bin 0 -> 8941 bytes ...ce2c912d35ee727c5e8877d2f5c8958_cgraph.map | 8 + ...ce2c912d35ee727c5e8877d2f5c8958_cgraph.md5 | 1 + ...ce2c912d35ee727c5e8877d2f5c8958_cgraph.png | Bin 0 -> 11149 bytes ...923dc8f54a49d376cf6a486c848fd94_cgraph.map | 5 + ...923dc8f54a49d376cf6a486c848fd94_cgraph.md5 | 1 + ...923dc8f54a49d376cf6a486c848fd94_cgraph.png | Bin 0 -> 3502 bytes ...a9ad6d728173d5a51398880d2bc921b_cgraph.map | 6 + ...a9ad6d728173d5a51398880d2bc921b_cgraph.md5 | 1 + ...a9ad6d728173d5a51398880d2bc921b_cgraph.png | Bin 0 -> 6694 bytes ...bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.map | 8 + ...bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.md5 | 1 + ...bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.png | Bin 0 -> 10239 bytes ...cb8e26541d7628230dad82325b61b7e_cgraph.map | 10 + ...cb8e26541d7628230dad82325b61b7e_cgraph.md5 | 1 + ...cb8e26541d7628230dad82325b61b7e_cgraph.png | Bin 0 -> 17693 bytes ...ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.map | 8 + ...ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.md5 | 1 + ...ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.png | Bin 0 -> 8443 bytes ...a6ba19e5c74160151ae3f26785daeff_cgraph.map | 4 + ...a6ba19e5c74160151ae3f26785daeff_cgraph.md5 | 1 + ...a6ba19e5c74160151ae3f26785daeff_cgraph.png | Bin 0 -> 2630 bytes ...4353227dd6cb7d3392bf7bc804351fb_cgraph.map | 7 + ...4353227dd6cb7d3392bf7bc804351fb_cgraph.md5 | 1 + ...4353227dd6cb7d3392bf7bc804351fb_cgraph.png | Bin 0 -> 7273 bytes ...b33bc155cb4f8a9f6e201212814b3c4_cgraph.map | 7 + ...b33bc155cb4f8a9f6e201212814b3c4_cgraph.md5 | 1 + ...b33bc155cb4f8a9f6e201212814b3c4_cgraph.png | Bin 0 -> 10015 bytes ...5397325f4210ac4e89b977ca7026237_cgraph.map | 4 + ...5397325f4210ac4e89b977ca7026237_cgraph.md5 | 1 + ...5397325f4210ac4e89b977ca7026237_cgraph.png | Bin 0 -> 2427 bytes ...5c35d1543ff9173bf682dd933e8405c_cgraph.map | 7 + ...5c35d1543ff9173bf682dd933e8405c_cgraph.md5 | 1 + ...5c35d1543ff9173bf682dd933e8405c_cgraph.png | Bin 0 -> 8620 bytes ...89c50ca0fa9258e086d457a72463346_cgraph.map | 8 + ...89c50ca0fa9258e086d457a72463346_cgraph.md5 | 1 + ...89c50ca0fa9258e086d457a72463346_cgraph.png | Bin 0 -> 11220 bytes ...d049d36bf3caca319c1fb71e6fdc2b2_cgraph.map | 6 + ...d049d36bf3caca319c1fb71e6fdc2b2_cgraph.md5 | 1 + ...d049d36bf3caca319c1fb71e6fdc2b2_cgraph.png | Bin 0 -> 8070 bytes ...7a2e0f0de171b37383cd672db5e483e_cgraph.map | 8 + ...7a2e0f0de171b37383cd672db5e483e_cgraph.md5 | 1 + ...7a2e0f0de171b37383cd672db5e483e_cgraph.png | Bin 0 -> 10002 bytes ...bf12c1e87751c2142d687d509921a19_cgraph.map | 28 + ...bf12c1e87751c2142d687d509921a19_cgraph.md5 | 1 + ...bf12c1e87751c2142d687d509921a19_cgraph.png | Bin 0 -> 88706 bytes doxygen/trac_8c_source.html | 2981 +++ doxygen/tropo_8c.html | 615 + doxygen/tropo_8c.js | 5 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 47 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 161885 bytes ...e8df030d9d25b649ebd5e241021fbde_cgraph.map | 10 + ...e8df030d9d25b649ebd5e241021fbde_cgraph.md5 | 1 + ...e8df030d9d25b649ebd5e241021fbde_cgraph.png | Bin 0 -> 17814 bytes doxygen/tropo_8c_source.html | 457 + doxygen/tropo__sample_8c.html | 640 + doxygen/tropo__sample_8c.js | 6 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 14 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 29592 bytes ...0fe6de30950b5e6296a0d9bb8896970_cgraph.map | 4 + ...0fe6de30950b5e6296a0d9bb8896970_cgraph.md5 | 1 + ...0fe6de30950b5e6296a0d9bb8896970_cgraph.png | Bin 0 -> 2563 bytes doxygen/tropo__sample_8c_source.html | 502 + doxygen/tropo__zm_8c.html | 392 + doxygen/tropo__zm_8c.js | 5 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 8 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 10533 bytes doxygen/tropo__zm_8c_source.html | 339 + doxygen/wind_8c.html | 313 + doxygen/wind_8c.js | 4 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.map | 7 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.md5 | 1 + ...ddf1224851353fc92bfbff6f499fa97_cgraph.png | Bin 0 -> 9992 bytes doxygen/wind_8c_source.html | 281 + 821 files changed, 94683 insertions(+) create mode 100644 doxygen/annotated.html create mode 100644 doxygen/annotated_dup.js create mode 100644 doxygen/atm__conv_8c.html create mode 100644 doxygen/atm__conv_8c.js create mode 100644 doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/atm__conv_8c_source.html create mode 100644 doxygen/atm__dist_8c.html create mode 100644 doxygen/atm__dist_8c.js create mode 100644 doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/atm__dist_8c_source.html create mode 100644 doxygen/atm__init_8c.html create mode 100644 doxygen/atm__init_8c.js create mode 100644 doxygen/atm__init_8c_source.html create mode 100644 doxygen/atm__select_8c.html create mode 100644 doxygen/atm__select_8c.js create mode 100644 doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/atm__select_8c_source.html create mode 100644 doxygen/atm__split_8c.html create mode 100644 doxygen/atm__split_8c.js create mode 100644 doxygen/atm__split_8c_source.html create mode 100644 doxygen/atm__stat_8c.html create mode 100644 doxygen/atm__stat_8c.js create mode 100644 doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/atm__stat_8c_source.html create mode 100644 doxygen/bc_s.png create mode 100644 doxygen/bdwn.png create mode 100644 doxygen/cape_8c.html create mode 100644 doxygen/cape_8c.js create mode 100644 doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/cape_8c_source.html create mode 100644 doxygen/classes.html create mode 100644 doxygen/closed.png create mode 100644 doxygen/day2doy_8c.html create mode 100644 doxygen/day2doy_8c.js create mode 100644 doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/day2doy_8c_source.html create mode 100644 doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.js create mode 100644 doxygen/doc.png create mode 100644 doxygen/doxygen.css create mode 100644 doxygen/doxygen.svg create mode 100644 doxygen/doy2day_8c.html create mode 100644 doxygen/doy2day_8c.js create mode 100644 doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/doy2day_8c_source.html create mode 100644 doxygen/dynsections.js create mode 100644 doxygen/files.html create mode 100644 doxygen/files_dup.js create mode 100644 doxygen/folderclosed.png create mode 100644 doxygen/folderopen.png create mode 100644 doxygen/functions.html create mode 100644 doxygen/functions_b.html create mode 100644 doxygen/functions_c.html create mode 100644 doxygen/functions_d.html create mode 100644 doxygen/functions_dup.js create mode 100644 doxygen/functions_e.html create mode 100644 doxygen/functions_g.html create mode 100644 doxygen/functions_h.html create mode 100644 doxygen/functions_i.html create mode 100644 doxygen/functions_k.html create mode 100644 doxygen/functions_l.html create mode 100644 doxygen/functions_m.html create mode 100644 doxygen/functions_n.html create mode 100644 doxygen/functions_o.html create mode 100644 doxygen/functions_p.html create mode 100644 doxygen/functions_q.html create mode 100644 doxygen/functions_r.html create mode 100644 doxygen/functions_s.html create mode 100644 doxygen/functions_t.html create mode 100644 doxygen/functions_u.html create mode 100644 doxygen/functions_v.html create mode 100644 doxygen/functions_vars.html create mode 100644 doxygen/functions_vars.js create mode 100644 doxygen/functions_vars_b.html create mode 100644 doxygen/functions_vars_c.html create mode 100644 doxygen/functions_vars_d.html create mode 100644 doxygen/functions_vars_e.html create mode 100644 doxygen/functions_vars_g.html create mode 100644 doxygen/functions_vars_h.html create mode 100644 doxygen/functions_vars_i.html create mode 100644 doxygen/functions_vars_k.html create mode 100644 doxygen/functions_vars_l.html create mode 100644 doxygen/functions_vars_m.html create mode 100644 doxygen/functions_vars_n.html create mode 100644 doxygen/functions_vars_o.html create mode 100644 doxygen/functions_vars_p.html create mode 100644 doxygen/functions_vars_q.html create mode 100644 doxygen/functions_vars_r.html create mode 100644 doxygen/functions_vars_s.html create mode 100644 doxygen/functions_vars_t.html create mode 100644 doxygen/functions_vars_u.html create mode 100644 doxygen/functions_vars_v.html create mode 100644 doxygen/functions_vars_w.html create mode 100644 doxygen/functions_vars_z.html create mode 100644 doxygen/functions_w.html create mode 100644 doxygen/functions_z.html create mode 100644 doxygen/globals.html create mode 100644 doxygen/globals_b.html create mode 100644 doxygen/globals_c.html create mode 100644 doxygen/globals_d.html create mode 100644 doxygen/globals_defs.html create mode 100644 doxygen/globals_dup.js create mode 100644 doxygen/globals_e.html create mode 100644 doxygen/globals_f.html create mode 100644 doxygen/globals_func.html create mode 100644 doxygen/globals_func.js create mode 100644 doxygen/globals_func_c.html create mode 100644 doxygen/globals_func_d.html create mode 100644 doxygen/globals_func_f.html create mode 100644 doxygen/globals_func_g.html create mode 100644 doxygen/globals_func_i.html create mode 100644 doxygen/globals_func_j.html create mode 100644 doxygen/globals_func_k.html create mode 100644 doxygen/globals_func_l.html create mode 100644 doxygen/globals_func_m.html create mode 100644 doxygen/globals_func_n.html create mode 100644 doxygen/globals_func_q.html create mode 100644 doxygen/globals_func_r.html create mode 100644 doxygen/globals_func_s.html create mode 100644 doxygen/globals_func_t.html create mode 100644 doxygen/globals_func_w.html create mode 100644 doxygen/globals_g.html create mode 100644 doxygen/globals_h.html create mode 100644 doxygen/globals_i.html create mode 100644 doxygen/globals_j.html create mode 100644 doxygen/globals_k.html create mode 100644 doxygen/globals_l.html create mode 100644 doxygen/globals_m.html create mode 100644 doxygen/globals_n.html create mode 100644 doxygen/globals_p.html create mode 100644 doxygen/globals_q.html create mode 100644 doxygen/globals_r.html create mode 100644 doxygen/globals_s.html create mode 100644 doxygen/globals_t.html create mode 100644 doxygen/globals_w.html create mode 100644 doxygen/globals_z.html create mode 100644 doxygen/graph_legend.html create mode 100644 doxygen/graph_legend.md5 create mode 100644 doxygen/graph_legend.png create mode 100644 doxygen/index.html create mode 100644 doxygen/jquery.js create mode 100644 doxygen/jsec2time_8c.html create mode 100644 doxygen/jsec2time_8c.js create mode 100644 doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/jsec2time_8c_source.html create mode 100644 doxygen/libtrac_8c.html create mode 100644 doxygen/libtrac_8c.js create mode 100644 doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.map create mode 100644 doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.png create mode 100644 doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map create mode 100644 doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.png create mode 100644 doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map create mode 100644 doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.png create mode 100644 doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.map create mode 100644 doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.png create mode 100644 doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map create mode 100644 doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.png create mode 100644 doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.map create mode 100644 doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.png create mode 100644 doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.map create mode 100644 doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.png create mode 100644 doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.map create mode 100644 doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png create mode 100644 doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.map create mode 100644 doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.png create mode 100644 doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.map create mode 100644 doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.png create mode 100644 doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.map create mode 100644 doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.png create mode 100644 doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map create mode 100644 doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.png create mode 100644 doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.map create mode 100644 doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.png create mode 100644 doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.map create mode 100644 doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.png create mode 100644 doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.map create mode 100644 doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.png create mode 100644 doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.map create mode 100644 doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.png create mode 100644 doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map create mode 100644 doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.png create mode 100644 doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.map create mode 100644 doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png create mode 100644 doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map create mode 100644 doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.png create mode 100644 doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map create mode 100644 doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.png create mode 100644 doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.map create mode 100644 doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png create mode 100644 doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.map create mode 100644 doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.png create mode 100644 doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.map create mode 100644 doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.png create mode 100644 doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.map create mode 100644 doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.png create mode 100644 doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.map create mode 100644 doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.png create mode 100644 doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.map create mode 100644 doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.png create mode 100644 doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map create mode 100644 doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.png create mode 100644 doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.map create mode 100644 doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 create mode 100644 doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.png create mode 100644 doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.map create mode 100644 doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.png create mode 100644 doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map create mode 100644 doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png create mode 100644 doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.map create mode 100644 doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.png create mode 100644 doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.map create mode 100644 doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 create mode 100644 doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.png create mode 100644 doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map create mode 100644 doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png create mode 100644 doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.map create mode 100644 doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.png create mode 100644 doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map create mode 100644 doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 create mode 100644 doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png create mode 100644 doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.map create mode 100644 doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.md5 create mode 100644 doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.png create mode 100644 doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.map create mode 100644 doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.md5 create mode 100644 doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.png create mode 100644 doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.map create mode 100644 doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.png create mode 100644 doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.map create mode 100644 doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.png create mode 100644 doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map create mode 100644 doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 create mode 100644 doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.png create mode 100644 doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.map create mode 100644 doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 create mode 100644 doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.png create mode 100644 doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map create mode 100644 doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 create mode 100644 doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.png create mode 100644 doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map create mode 100644 doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 create mode 100644 doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png create mode 100644 doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map create mode 100644 doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 create mode 100644 doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.png create mode 100644 doxygen/libtrac_8c_source.html create mode 100644 doxygen/libtrac_8h.html create mode 100644 doxygen/libtrac_8h.js create mode 100644 doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.map create mode 100644 doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.png create mode 100644 doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map create mode 100644 doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.png create mode 100644 doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map create mode 100644 doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.png create mode 100644 doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.map create mode 100644 doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.png create mode 100644 doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map create mode 100644 doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.png create mode 100644 doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.map create mode 100644 doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.png create mode 100644 doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.map create mode 100644 doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.png create mode 100644 doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.map create mode 100644 doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png create mode 100644 doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.map create mode 100644 doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.png create mode 100644 doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.map create mode 100644 doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.png create mode 100644 doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.map create mode 100644 doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.png create mode 100644 doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map create mode 100644 doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.png create mode 100644 doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.map create mode 100644 doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.png create mode 100644 doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.map create mode 100644 doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.png create mode 100644 doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.map create mode 100644 doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.png create mode 100644 doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.map create mode 100644 doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.png create mode 100644 doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map create mode 100644 doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.png create mode 100644 doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.map create mode 100644 doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png create mode 100644 doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map create mode 100644 doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.png create mode 100644 doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map create mode 100644 doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.png create mode 100644 doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.map create mode 100644 doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png create mode 100644 doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.map create mode 100644 doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.png create mode 100644 doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.map create mode 100644 doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.png create mode 100644 doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.map create mode 100644 doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.png create mode 100644 doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.map create mode 100644 doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.png create mode 100644 doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map create mode 100644 doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.png create mode 100644 doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.map create mode 100644 doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 create mode 100644 doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.png create mode 100644 doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.map create mode 100644 doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 create mode 100644 doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.png create mode 100644 doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map create mode 100644 doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 create mode 100644 doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png create mode 100644 doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.map create mode 100644 doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 create mode 100644 doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.png create mode 100644 doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.map create mode 100644 doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 create mode 100644 doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.png create mode 100644 doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.map create mode 100644 doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.md5 create mode 100644 doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.png create mode 100644 doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map create mode 100644 doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 create mode 100644 doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png create mode 100644 doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map create mode 100644 doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 create mode 100644 doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png create mode 100644 doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.map create mode 100644 doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.md5 create mode 100644 doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.png create mode 100644 doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.map create mode 100644 doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.md5 create mode 100644 doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.png create mode 100644 doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.map create mode 100644 doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 create mode 100644 doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.png create mode 100644 doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.map create mode 100644 doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 create mode 100644 doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.png create mode 100644 doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map create mode 100644 doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 create mode 100644 doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.png create mode 100644 doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.map create mode 100644 doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 create mode 100644 doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.png create mode 100644 doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map create mode 100644 doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 create mode 100644 doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.png create mode 100644 doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map create mode 100644 doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 create mode 100644 doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png create mode 100644 doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.map create mode 100644 doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.md5 create mode 100644 doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.png create mode 100644 doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map create mode 100644 doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 create mode 100644 doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.png create mode 100644 doxygen/libtrac_8h_source.html create mode 100644 doxygen/met__conv_8c.html create mode 100644 doxygen/met__conv_8c.js create mode 100644 doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__conv_8c_source.html create mode 100644 doxygen/met__lapse_8c.html create mode 100644 doxygen/met__lapse_8c.js create mode 100644 doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__lapse_8c_source.html create mode 100644 doxygen/met__map_8c.html create mode 100644 doxygen/met__map_8c.js create mode 100644 doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__map_8c_source.html create mode 100644 doxygen/met__prof_8c.html create mode 100644 doxygen/met__prof_8c.js create mode 100644 doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__prof_8c_source.html create mode 100644 doxygen/met__sample_8c.html create mode 100644 doxygen/met__sample_8c.js create mode 100644 doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__sample_8c_source.html create mode 100644 doxygen/met__spec_8c.html create mode 100644 doxygen/met__spec_8c.js create mode 100644 doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__spec_8c_source.html create mode 100644 doxygen/met__subgrid_8c.html create mode 100644 doxygen/met__subgrid_8c.js create mode 100644 doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__subgrid_8c_source.html create mode 100644 doxygen/met__zm_8c.html create mode 100644 doxygen/met__zm_8c.js create mode 100644 doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/met__zm_8c_source.html create mode 100644 doxygen/nav_f.png create mode 100644 doxygen/nav_g.png create mode 100644 doxygen/nav_h.png create mode 100644 doxygen/navtree.css create mode 100644 doxygen/navtree.js create mode 100644 doxygen/navtreedata.js create mode 100644 doxygen/navtreeindex0.js create mode 100644 doxygen/navtreeindex1.js create mode 100644 doxygen/navtreeindex2.js create mode 100644 doxygen/navtreeindex3.js create mode 100644 doxygen/open.png create mode 100644 doxygen/resize.js create mode 100644 doxygen/search/all_0.html create mode 100644 doxygen/search/all_0.js create mode 100644 doxygen/search/all_1.html create mode 100644 doxygen/search/all_1.js create mode 100644 doxygen/search/all_10.html create mode 100644 doxygen/search/all_10.js create mode 100644 doxygen/search/all_11.html create mode 100644 doxygen/search/all_11.js create mode 100644 doxygen/search/all_12.html create mode 100644 doxygen/search/all_12.js create mode 100644 doxygen/search/all_13.html create mode 100644 doxygen/search/all_13.js create mode 100644 doxygen/search/all_14.html create mode 100644 doxygen/search/all_14.js create mode 100644 doxygen/search/all_15.html create mode 100644 doxygen/search/all_15.js create mode 100644 doxygen/search/all_16.html create mode 100644 doxygen/search/all_16.js create mode 100644 doxygen/search/all_17.html create mode 100644 doxygen/search/all_17.js create mode 100644 doxygen/search/all_2.html create mode 100644 doxygen/search/all_2.js create mode 100644 doxygen/search/all_3.html create mode 100644 doxygen/search/all_3.js create mode 100644 doxygen/search/all_4.html create mode 100644 doxygen/search/all_4.js create mode 100644 doxygen/search/all_5.html create mode 100644 doxygen/search/all_5.js create mode 100644 doxygen/search/all_6.html create mode 100644 doxygen/search/all_6.js create mode 100644 doxygen/search/all_7.html create mode 100644 doxygen/search/all_7.js create mode 100644 doxygen/search/all_8.html create mode 100644 doxygen/search/all_8.js create mode 100644 doxygen/search/all_9.html create mode 100644 doxygen/search/all_9.js create mode 100644 doxygen/search/all_a.html create mode 100644 doxygen/search/all_a.js create mode 100644 doxygen/search/all_b.html create mode 100644 doxygen/search/all_b.js create mode 100644 doxygen/search/all_c.html create mode 100644 doxygen/search/all_c.js create mode 100644 doxygen/search/all_d.html create mode 100644 doxygen/search/all_d.js create mode 100644 doxygen/search/all_e.html create mode 100644 doxygen/search/all_e.js create mode 100644 doxygen/search/all_f.html create mode 100644 doxygen/search/all_f.js create mode 100644 doxygen/search/classes_0.html create mode 100644 doxygen/search/classes_0.js create mode 100644 doxygen/search/classes_1.html create mode 100644 doxygen/search/classes_1.js create mode 100644 doxygen/search/classes_2.html create mode 100644 doxygen/search/classes_2.js create mode 100644 doxygen/search/close.svg create mode 100644 doxygen/search/defines_0.html create mode 100644 doxygen/search/defines_0.js create mode 100644 doxygen/search/defines_1.html create mode 100644 doxygen/search/defines_1.js create mode 100644 doxygen/search/defines_10.html create mode 100644 doxygen/search/defines_10.js create mode 100644 doxygen/search/defines_11.html create mode 100644 doxygen/search/defines_11.js create mode 100644 doxygen/search/defines_2.html create mode 100644 doxygen/search/defines_2.js create mode 100644 doxygen/search/defines_3.html create mode 100644 doxygen/search/defines_3.js create mode 100644 doxygen/search/defines_4.html create mode 100644 doxygen/search/defines_4.js create mode 100644 doxygen/search/defines_5.html create mode 100644 doxygen/search/defines_5.js create mode 100644 doxygen/search/defines_6.html create mode 100644 doxygen/search/defines_6.js create mode 100644 doxygen/search/defines_7.html create mode 100644 doxygen/search/defines_7.js create mode 100644 doxygen/search/defines_8.html create mode 100644 doxygen/search/defines_8.js create mode 100644 doxygen/search/defines_9.html create mode 100644 doxygen/search/defines_9.js create mode 100644 doxygen/search/defines_a.html create mode 100644 doxygen/search/defines_a.js create mode 100644 doxygen/search/defines_b.html create mode 100644 doxygen/search/defines_b.js create mode 100644 doxygen/search/defines_c.html create mode 100644 doxygen/search/defines_c.js create mode 100644 doxygen/search/defines_d.html create mode 100644 doxygen/search/defines_d.js create mode 100644 doxygen/search/defines_e.html create mode 100644 doxygen/search/defines_e.js create mode 100644 doxygen/search/defines_f.html create mode 100644 doxygen/search/defines_f.js create mode 100644 doxygen/search/files_0.html create mode 100644 doxygen/search/files_0.js create mode 100644 doxygen/search/files_1.html create mode 100644 doxygen/search/files_1.js create mode 100644 doxygen/search/files_2.html create mode 100644 doxygen/search/files_2.js create mode 100644 doxygen/search/files_3.html create mode 100644 doxygen/search/files_3.js create mode 100644 doxygen/search/files_4.html create mode 100644 doxygen/search/files_4.js create mode 100644 doxygen/search/files_5.html create mode 100644 doxygen/search/files_5.js create mode 100644 doxygen/search/files_6.html create mode 100644 doxygen/search/files_6.js create mode 100644 doxygen/search/files_7.html create mode 100644 doxygen/search/files_7.js create mode 100644 doxygen/search/files_8.html create mode 100644 doxygen/search/files_8.js create mode 100644 doxygen/search/functions_0.html create mode 100644 doxygen/search/functions_0.js create mode 100644 doxygen/search/functions_1.html create mode 100644 doxygen/search/functions_1.js create mode 100644 doxygen/search/functions_2.html create mode 100644 doxygen/search/functions_2.js create mode 100644 doxygen/search/functions_3.html create mode 100644 doxygen/search/functions_3.js create mode 100644 doxygen/search/functions_4.html create mode 100644 doxygen/search/functions_4.js create mode 100644 doxygen/search/functions_5.html create mode 100644 doxygen/search/functions_5.js create mode 100644 doxygen/search/functions_6.html create mode 100644 doxygen/search/functions_6.js create mode 100644 doxygen/search/functions_7.html create mode 100644 doxygen/search/functions_7.js create mode 100644 doxygen/search/functions_8.html create mode 100644 doxygen/search/functions_8.js create mode 100644 doxygen/search/functions_9.html create mode 100644 doxygen/search/functions_9.js create mode 100644 doxygen/search/functions_a.html create mode 100644 doxygen/search/functions_a.js create mode 100644 doxygen/search/functions_b.html create mode 100644 doxygen/search/functions_b.js create mode 100644 doxygen/search/functions_c.html create mode 100644 doxygen/search/functions_c.js create mode 100644 doxygen/search/functions_d.html create mode 100644 doxygen/search/functions_d.js create mode 100644 doxygen/search/functions_e.html create mode 100644 doxygen/search/functions_e.js create mode 100644 doxygen/search/functions_f.html create mode 100644 doxygen/search/functions_f.js create mode 100644 doxygen/search/mag_sel.svg create mode 100644 doxygen/search/nomatches.html create mode 100644 doxygen/search/pages_0.html create mode 100644 doxygen/search/pages_0.js create mode 100644 doxygen/search/search.css create mode 100644 doxygen/search/search.js create mode 100644 doxygen/search/search_l.png create mode 100644 doxygen/search/search_m.png create mode 100644 doxygen/search/search_r.png create mode 100644 doxygen/search/searchdata.js create mode 100644 doxygen/search/variables_0.html create mode 100644 doxygen/search/variables_0.js create mode 100644 doxygen/search/variables_1.html create mode 100644 doxygen/search/variables_1.js create mode 100644 doxygen/search/variables_10.html create mode 100644 doxygen/search/variables_10.js create mode 100644 doxygen/search/variables_11.html create mode 100644 doxygen/search/variables_11.js create mode 100644 doxygen/search/variables_12.html create mode 100644 doxygen/search/variables_12.js create mode 100644 doxygen/search/variables_13.html create mode 100644 doxygen/search/variables_13.js create mode 100644 doxygen/search/variables_14.html create mode 100644 doxygen/search/variables_14.js create mode 100644 doxygen/search/variables_15.html create mode 100644 doxygen/search/variables_15.js create mode 100644 doxygen/search/variables_2.html create mode 100644 doxygen/search/variables_2.js create mode 100644 doxygen/search/variables_3.html create mode 100644 doxygen/search/variables_3.js create mode 100644 doxygen/search/variables_4.html create mode 100644 doxygen/search/variables_4.js create mode 100644 doxygen/search/variables_5.html create mode 100644 doxygen/search/variables_5.js create mode 100644 doxygen/search/variables_6.html create mode 100644 doxygen/search/variables_6.js create mode 100644 doxygen/search/variables_7.html create mode 100644 doxygen/search/variables_7.js create mode 100644 doxygen/search/variables_8.html create mode 100644 doxygen/search/variables_8.js create mode 100644 doxygen/search/variables_9.html create mode 100644 doxygen/search/variables_9.js create mode 100644 doxygen/search/variables_a.html create mode 100644 doxygen/search/variables_a.js create mode 100644 doxygen/search/variables_b.html create mode 100644 doxygen/search/variables_b.js create mode 100644 doxygen/search/variables_c.html create mode 100644 doxygen/search/variables_c.js create mode 100644 doxygen/search/variables_d.html create mode 100644 doxygen/search/variables_d.js create mode 100644 doxygen/search/variables_e.html create mode 100644 doxygen/search/variables_e.js create mode 100644 doxygen/search/variables_f.html create mode 100644 doxygen/search/variables_f.js create mode 100644 doxygen/sedi_8c.html create mode 100644 doxygen/sedi_8c.js create mode 100644 doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/sedi_8c_source.html create mode 100644 doxygen/splitbar.png create mode 100644 doxygen/structatm__t.html create mode 100644 doxygen/structatm__t.js create mode 100644 doxygen/structcache__t.html create mode 100644 doxygen/structcache__t.js create mode 100644 doxygen/structclim__photo__t.html create mode 100644 doxygen/structclim__photo__t.js create mode 100644 doxygen/structclim__t.html create mode 100644 doxygen/structclim__t.js create mode 100644 doxygen/structclim__ts__t.html create mode 100644 doxygen/structclim__ts__t.js create mode 100644 doxygen/structclim__zm__t.html create mode 100644 doxygen/structclim__zm__t.js create mode 100644 doxygen/structctl__t.html create mode 100644 doxygen/structctl__t.js create mode 100644 doxygen/structmet__t.html create mode 100644 doxygen/structmet__t.js create mode 100644 doxygen/sync_off.png create mode 100644 doxygen/sync_on.png create mode 100644 doxygen/tab_a.png create mode 100644 doxygen/tab_b.png create mode 100644 doxygen/tab_h.png create mode 100644 doxygen/tab_s.png create mode 100644 doxygen/tabs.css create mode 100644 doxygen/time2jsec_8c.html create mode 100644 doxygen/time2jsec_8c.js create mode 100644 doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/time2jsec_8c_source.html create mode 100644 doxygen/tnat_8c.html create mode 100644 doxygen/tnat_8c.js create mode 100644 doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/tnat_8c_source.html create mode 100644 doxygen/trac_8c.html create mode 100644 doxygen/trac_8c.js create mode 100644 doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.map create mode 100644 doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.md5 create mode 100644 doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.png create mode 100644 doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.map create mode 100644 doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.md5 create mode 100644 doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.png create mode 100644 doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.map create mode 100644 doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.md5 create mode 100644 doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.png create mode 100644 doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.map create mode 100644 doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.md5 create mode 100644 doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.png create mode 100644 doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.map create mode 100644 doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.md5 create mode 100644 doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.png create mode 100644 doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.map create mode 100644 doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.md5 create mode 100644 doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.png create mode 100644 doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.map create mode 100644 doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.md5 create mode 100644 doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.png create mode 100644 doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.map create mode 100644 doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.md5 create mode 100644 doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.png create mode 100644 doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.map create mode 100644 doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.md5 create mode 100644 doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.png create mode 100644 doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.map create mode 100644 doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.md5 create mode 100644 doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.png create mode 100644 doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.map create mode 100644 doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.md5 create mode 100644 doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.png create mode 100644 doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.map create mode 100644 doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.md5 create mode 100644 doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.png create mode 100644 doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.map create mode 100644 doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.md5 create mode 100644 doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.png create mode 100644 doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.map create mode 100644 doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.md5 create mode 100644 doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.png create mode 100644 doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.map create mode 100644 doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.md5 create mode 100644 doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.png create mode 100644 doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.map create mode 100644 doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.md5 create mode 100644 doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.png create mode 100644 doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.map create mode 100644 doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.md5 create mode 100644 doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.png create mode 100644 doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.map create mode 100644 doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.md5 create mode 100644 doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.png create mode 100644 doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.map create mode 100644 doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.md5 create mode 100644 doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.png create mode 100644 doxygen/trac_8c_source.html create mode 100644 doxygen/tropo_8c.html create mode 100644 doxygen/tropo_8c.js create mode 100644 doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.map create mode 100644 doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.md5 create mode 100644 doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.png create mode 100644 doxygen/tropo_8c_source.html create mode 100644 doxygen/tropo__sample_8c.html create mode 100644 doxygen/tropo__sample_8c.js create mode 100644 doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.map create mode 100644 doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.md5 create mode 100644 doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.png create mode 100644 doxygen/tropo__sample_8c_source.html create mode 100644 doxygen/tropo__zm_8c.html create mode 100644 doxygen/tropo__zm_8c.js create mode 100644 doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/tropo__zm_8c_source.html create mode 100644 doxygen/wind_8c.html create mode 100644 doxygen/wind_8c.js create mode 100644 doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map create mode 100644 doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 create mode 100644 doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png create mode 100644 doxygen/wind_8c_source.html diff --git a/doxygen/annotated.html b/doxygen/annotated.html new file mode 100644 index 0000000000..684ce4d8a2 --- /dev/null +++ b/doxygen/annotated.html @@ -0,0 +1,118 @@ + + + + + + + +MPTRAC: Data Structures + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + + + + + + +
 Catm_tAtmospheric data
 Ccache_tCache data
 Cclim_photo_tClimatological data in form of photolysis rates
 Cclim_tClimatological data
 Cclim_ts_tClimatological data in form of time series
 Cclim_zm_tClimatological data in form of zonal means
 Cctl_tControl parameters
 Cmet_tMeteo data
+
+
+
+ + + + diff --git a/doxygen/annotated_dup.js b/doxygen/annotated_dup.js new file mode 100644 index 0000000000..bf0222d677 --- /dev/null +++ b/doxygen/annotated_dup.js @@ -0,0 +1,11 @@ +var annotated_dup = +[ + [ "atm_t", "structatm__t.html", "structatm__t" ], + [ "cache_t", "structcache__t.html", "structcache__t" ], + [ "clim_photo_t", "structclim__photo__t.html", "structclim__photo__t" ], + [ "clim_t", "structclim__t.html", "structclim__t" ], + [ "clim_ts_t", "structclim__ts__t.html", "structclim__ts__t" ], + [ "clim_zm_t", "structclim__zm__t.html", "structclim__zm__t" ], + [ "ctl_t", "structctl__t.html", "structctl__t" ], + [ "met_t", "structmet__t.html", "structmet__t" ] +]; \ No newline at end of file diff --git a/doxygen/atm__conv_8c.html b/doxygen/atm__conv_8c.html new file mode 100644 index 0000000000..dfb9491f36 --- /dev/null +++ b/doxygen/atm__conv_8c.html @@ -0,0 +1,229 @@ + + + + + + + +MPTRAC: atm_conv.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
atm_conv.c File Reference
+
+
+ +

Convert file format of air parcel data files. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Convert file format of air parcel data files.

+ +

Definition in file atm_conv.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file atm_conv.c.

+
29 {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm;
+
34
+
35 /* Check arguments... */
+
36 if (argc < 6)
+
37 ERRMSG("Give parameters: <ctl> <atm_in> <atm_in_type>"
+
38 " <atm_out> <atm_out_type>");
+
39
+
40 /* Allocate... */
+
41 ALLOC(atm, atm_t, 1);
+
42
+
43 /* Read control parameters... */
+
44 read_ctl(argv[1], argc, argv, &ctl);
+
45
+
46 /* Read atmospheric data... */
+
47 ctl.atm_type = atoi(argv[3]);
+
48 if (!read_atm(argv[2], &ctl, atm))
+
49 ERRMSG("Cannot open file!");
+
50
+
51 /* Write atmospheric data... */
+
52 if (ctl.atm_type_out == 3) {
+
53 /* For CLaMS trajectory files... */
+
54 ctl.t_start = ctl.t_stop;
+
55 ctl.atm_type_out = atoi(argv[5]);
+
56 write_atm(argv[4], &ctl, atm, ctl.t_stop);
+
57 } else {
+
58 /* Otherwise... */
+
59 ctl.atm_type_out = atoi(argv[5]);
+
60 write_atm(argv[4], &ctl, atm, 0);
+
61 }
+
62
+
63 /* Free... */
+
64 free(atm);
+
65
+
66 return EXIT_SUCCESS;
+
67}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
Atmospheric data.
Definition: libtrac.h:1660
+
Control parameters.
Definition: libtrac.h:799
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/atm__conv_8c.js b/doxygen/atm__conv_8c.js new file mode 100644 index 0000000000..83b776a976 --- /dev/null +++ b/doxygen/atm__conv_8c.js @@ -0,0 +1,4 @@ +var atm__conv_8c = +[ + [ "main", "atm__conv_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..ef1b109503 --- /dev/null +++ b/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..6e5b001b28 --- /dev/null +++ b/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +f5bc3b0612ddcc75d47efd12afaff780 \ No newline at end of file diff --git a/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/atm__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..020afe5764fc3a4ede0a5a45ece0879e37eb8112 GIT binary patch literal 38312 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 FzW^0vpoahe literal 0 HcmV?d00001 diff --git a/doxygen/atm__conv_8c_source.html b/doxygen/atm__conv_8c_source.html new file mode 100644 index 0000000000..edc7d20275 --- /dev/null +++ b/doxygen/atm__conv_8c_source.html @@ -0,0 +1,182 @@ + + + + + + + +MPTRAC: atm_conv.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
atm_conv.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm;
+
34
+
35 /* Check arguments... */
+
36 if (argc < 6)
+
37 ERRMSG("Give parameters: <ctl> <atm_in> <atm_in_type>"
+
38 " <atm_out> <atm_out_type>");
+
39
+
40 /* Allocate... */
+
41 ALLOC(atm, atm_t, 1);
+
42
+
43 /* Read control parameters... */
+
44 read_ctl(argv[1], argc, argv, &ctl);
+
45
+
46 /* Read atmospheric data... */
+
47 ctl.atm_type = atoi(argv[3]);
+
48 if (!read_atm(argv[2], &ctl, atm))
+
49 ERRMSG("Cannot open file!");
+
50
+
51 /* Write atmospheric data... */
+
52 if (ctl.atm_type_out == 3) {
+
53 /* For CLaMS trajectory files... */
+
54 ctl.t_start = ctl.t_stop;
+
55 ctl.atm_type_out = atoi(argv[5]);
+
56 write_atm(argv[4], &ctl, atm, ctl.t_stop);
+
57 } else {
+
58 /* Otherwise... */
+
59 ctl.atm_type_out = atoi(argv[5]);
+
60 write_atm(argv[4], &ctl, atm, 0);
+
61 }
+
62
+
63 /* Free... */
+
64 free(atm);
+
65
+
66 return EXIT_SUCCESS;
+
67}
+
int main(int argc, char *argv[])
Definition: atm_conv.c:27
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
Atmospheric data.
Definition: libtrac.h:1660
+
Control parameters.
Definition: libtrac.h:799
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
+
+ + + + diff --git a/doxygen/atm__dist_8c.html b/doxygen/atm__dist_8c.html new file mode 100644 index 0000000000..918181b701 --- /dev/null +++ b/doxygen/atm__dist_8c.html @@ -0,0 +1,551 @@ + + + + + + + +MPTRAC: atm_dist.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
atm_dist.c File Reference
+
+
+ +

Calculate transport deviations of trajectories. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Calculate transport deviations of trajectories.

+ +

Definition in file atm_dist.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file atm_dist.c.

+
29 {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm1, *atm2;
+
34
+
35 FILE *out;
+
36
+
37 double *ahtd, *aqtd, *avtd, ahtdm, aqtdm[NQ], avtdm, lat0, lat1,
+
38 *lat1_old, *lat2_old, *lh1, *lh2, lon0, lon1, *lon1_old, *lon2_old,
+
39 *lv1, *lv2, p0, p1, *rhtd, *rqtd, *rvtd, rhtdm, rqtdm[NQ], rvtdm,
+
40 t, t0 = 0, x0[3], x1[3], x2[3], z1, *z1_old, z2, *z2_old, *work, zscore;
+
41
+
42 int ens, f, init = 0, ip, iq, np;
+
43
+
44 /* Allocate... */
+
45 ALLOC(atm1, atm_t, 1);
+
46 ALLOC(atm2, atm_t, 1);
+
47 ALLOC(lon1_old, double,
+
48 NP);
+
49 ALLOC(lat1_old, double,
+
50 NP);
+
51 ALLOC(z1_old, double,
+
52 NP);
+
53 ALLOC(lh1, double,
+
54 NP);
+
55 ALLOC(lv1, double,
+
56 NP);
+
57 ALLOC(lon2_old, double,
+
58 NP);
+
59 ALLOC(lat2_old, double,
+
60 NP);
+
61 ALLOC(z2_old, double,
+
62 NP);
+
63 ALLOC(lh2, double,
+
64 NP);
+
65 ALLOC(lv2, double,
+
66 NP);
+
67 ALLOC(ahtd, double,
+
68 NP);
+
69 ALLOC(avtd, double,
+
70 NP);
+
71 ALLOC(aqtd, double,
+
72 NP * NQ);
+
73 ALLOC(rhtd, double,
+
74 NP);
+
75 ALLOC(rvtd, double,
+
76 NP);
+
77 ALLOC(rqtd, double,
+
78 NP * NQ);
+
79 ALLOC(work, double,
+
80 NP);
+
81
+
82 /* Check arguments... */
+
83 if (argc < 6)
+
84 ERRMSG("Give parameters: <ctl> <dist.tab> <param> <atm1a> <atm1b>"
+
85 " [<atm2a> <atm2b> ...]");
+
86
+
87 /* Read control parameters... */
+
88 read_ctl(argv[1], argc, argv, &ctl);
+
89 ens = (int) scan_ctl(argv[1], argc, argv, "DIST_ENS", -1, "-999", NULL);
+
90 p0 = P(scan_ctl(argv[1], argc, argv, "DIST_Z0", -1, "-1000", NULL));
+
91 p1 = P(scan_ctl(argv[1], argc, argv, "DIST_Z1", -1, "1000", NULL));
+
92 lat0 = scan_ctl(argv[1], argc, argv, "DIST_LAT0", -1, "-1000", NULL);
+
93 lat1 = scan_ctl(argv[1], argc, argv, "DIST_LAT1", -1, "1000", NULL);
+
94 lon0 = scan_ctl(argv[1], argc, argv, "DIST_LON0", -1, "-1000", NULL);
+
95 lon1 = scan_ctl(argv[1], argc, argv, "DIST_LON1", -1, "1000", NULL);
+
96 zscore = scan_ctl(argv[1], argc, argv, "DIST_ZSCORE", -1, "-999", NULL);
+
97
+
98 /* Write info... */
+
99 LOG(1, "Write transport deviations: %s", argv[2]);
+
100
+
101 /* Create output file... */
+
102 if (!(out = fopen(argv[2], "w")))
+
103 ERRMSG("Cannot create file!");
+
104
+
105 /* Write header... */
+
106 fprintf(out,
+
107 "# $1 = time [s]\n"
+
108 "# $2 = time difference [s]\n"
+
109 "# $3 = absolute horizontal distance (%s) [km]\n"
+
110 "# $4 = relative horizontal distance (%s) [%%]\n"
+
111 "# $5 = absolute vertical distance (%s) [km]\n"
+
112 "# $6 = relative vertical distance (%s) [%%]\n",
+
113 argv[3], argv[3], argv[3], argv[3]);
+
114 for (iq = 0; iq < ctl.nq; iq++)
+
115 fprintf(out,
+
116 "# $%d = %s absolute difference (%s) [%s]\n"
+
117 "# $%d = %s relative difference (%s) [%%]\n",
+
118 7 + 2 * iq, ctl.qnt_name[iq], argv[3], ctl.qnt_unit[iq],
+
119 8 + 2 * iq, ctl.qnt_name[iq], argv[3]);
+
120 fprintf(out, "# $%d = number of particles\n\n", 7 + 2 * ctl.nq);
+
121
+
122 /* Loop over file pairs... */
+
123 for (f = 4; f < argc; f += 2) {
+
124
+
125 /* Read atmopheric data... */
+
126 if (!read_atm(argv[f], &ctl, atm1) || !read_atm(argv[f + 1], &ctl, atm2))
+
127 continue;
+
128
+
129 /* Check if structs match... */
+
130 if (atm1->np != atm2->np)
+
131 ERRMSG("Different numbers of particles!");
+
132
+
133 /* Get time from filename... */
+
134 t = time_from_filename(argv[f], ctl.atm_type < 2 ? 20 : 19);
+
135
+
136 /* Save initial time... */
+
137 if (!init) {
+
138 init = 1;
+
139 t0 = t;
+
140 }
+
141
+
142 /* Init... */
+
143 np = 0;
+
144 for (ip = 0; ip < atm1->np; ip++) {
+
145 ahtd[ip] = avtd[ip] = rhtd[ip] = rvtd[ip] = 0;
+
146 for (iq = 0; iq < ctl.nq; iq++)
+
147 aqtd[iq * NP + ip] = rqtd[iq * NP + ip] = 0;
+
148 }
+
149
+
150 /* Loop over air parcels... */
+
151 for (ip = 0; ip < atm1->np; ip++) {
+
152
+
153 /* Check air parcel index... */
+
154 if (ctl.qnt_idx > 0
+
155 && (atm1->q[ctl.qnt_idx][ip] != atm2->q[ctl.qnt_idx][ip]))
+
156 ERRMSG("Air parcel index does not match!");
+
157
+
158 /* Check ensemble index... */
+
159 if (ctl.qnt_ens > 0
+
160 && (atm1->q[ctl.qnt_ens][ip] != ens
+
161 || atm2->q[ctl.qnt_ens][ip] != ens))
+
162 continue;
+
163
+
164 /* Check time... */
+
165 if (!gsl_finite(atm1->time[ip]) || !gsl_finite(atm2->time[ip]))
+
166 continue;
+
167
+
168 /* Check spatial range... */
+
169 if (atm1->p[ip] > p0 || atm1->p[ip] < p1
+
170 || atm1->lon[ip] < lon0 || atm1->lon[ip] > lon1
+
171 || atm1->lat[ip] < lat0 || atm1->lat[ip] > lat1)
+
172 continue;
+
173 if (atm2->p[ip] > p0 || atm2->p[ip] < p1
+
174 || atm2->lon[ip] < lon0 || atm2->lon[ip] > lon1
+
175 || atm2->lat[ip] < lat0 || atm2->lat[ip] > lat1)
+
176 continue;
+
177
+
178 /* Convert coordinates... */
+
179 geo2cart(0, atm1->lon[ip], atm1->lat[ip], x1);
+
180 geo2cart(0, atm2->lon[ip], atm2->lat[ip], x2);
+
181 z1 = Z(atm1->p[ip]);
+
182 z2 = Z(atm2->p[ip]);
+
183
+
184 /* Calculate absolute transport deviations... */
+
185 ahtd[np] = DIST(x1, x2);
+
186 avtd[np] = z1 - z2;
+
187 for (iq = 0; iq < ctl.nq; iq++)
+
188 aqtd[iq * NP + np] = atm1->q[iq][ip] - atm2->q[iq][ip];
+
189
+
190 /* Calculate relative transport deviations... */
+
191 if (f > 4) {
+
192
+
193 /* Get trajectory lengths... */
+
194 geo2cart(0, lon1_old[ip], lat1_old[ip], x0);
+
195 lh1[ip] += DIST(x0, x1);
+
196 lv1[ip] += fabs(z1_old[ip] - z1);
+
197
+
198 geo2cart(0, lon2_old[ip], lat2_old[ip], x0);
+
199 lh2[ip] += DIST(x0, x2);
+
200 lv2[ip] += fabs(z2_old[ip] - z2);
+
201
+
202 /* Get relative transport deviations... */
+
203 if (lh1[ip] + lh2[ip] > 0)
+
204 rhtd[np] = 200. * DIST(x1, x2) / (lh1[ip] + lh2[ip]);
+
205 if (lv1[ip] + lv2[ip] > 0)
+
206 rvtd[np] = 200. * (z1 - z2) / (lv1[ip] + lv2[ip]);
+
207 }
+
208
+
209 /* Get relative transport deviations... */
+
210 for (iq = 0; iq < ctl.nq; iq++)
+
211 rqtd[iq * NP + np] = 200. * (atm1->q[iq][ip] - atm2->q[iq][ip])
+
212 / (fabs(atm1->q[iq][ip]) + fabs(atm2->q[iq][ip]));
+
213
+
214 /* Save positions of air parcels... */
+
215 lon1_old[ip] = atm1->lon[ip];
+
216 lat1_old[ip] = atm1->lat[ip];
+
217 z1_old[ip] = z1;
+
218
+
219 lon2_old[ip] = atm2->lon[ip];
+
220 lat2_old[ip] = atm2->lat[ip];
+
221 z2_old[ip] = z2;
+
222
+
223 /* Increment air parcel counter... */
+
224 np++;
+
225 }
+
226
+
227 /* Filter data... */
+
228 if (zscore > 0 && np > 1) {
+
229
+
230 /* Get means and standard deviations of transport deviations... */
+
231 size_t n = (size_t) np;
+
232 double muh = gsl_stats_mean(ahtd, 1, n);
+
233 double muv = gsl_stats_mean(avtd, 1, n);
+
234 double sigh = gsl_stats_sd(ahtd, 1, n);
+
235 double sigv = gsl_stats_sd(avtd, 1, n);
+
236
+
237 /* Filter data... */
+
238 np = 0;
+
239 for (size_t i = 0; i < n; i++)
+
240 if (fabs((ahtd[i] - muh) / sigh) < zscore
+
241 && fabs((avtd[i] - muv) / sigv) < zscore) {
+
242 ahtd[np] = ahtd[i];
+
243 rhtd[np] = rhtd[i];
+
244 avtd[np] = avtd[i];
+
245 rvtd[np] = rvtd[i];
+
246 for (iq = 0; iq < ctl.nq; iq++) {
+
247 aqtd[iq * NP + np] = aqtd[iq * NP + (int) i];
+
248 rqtd[iq * NP + np] = rqtd[iq * NP + (int) i];
+
249 }
+
250 np++;
+
251 }
+
252 }
+
253
+
254 /* Get statistics... */
+
255 if (strcasecmp(argv[3], "mean") == 0) {
+
256 ahtdm = gsl_stats_mean(ahtd, 1, (size_t) np);
+
257 rhtdm = gsl_stats_mean(rhtd, 1, (size_t) np);
+
258 avtdm = gsl_stats_mean(avtd, 1, (size_t) np);
+
259 rvtdm = gsl_stats_mean(rvtd, 1, (size_t) np);
+
260 for (iq = 0; iq < ctl.nq; iq++) {
+
261 aqtdm[iq] = gsl_stats_mean(&aqtd[iq * NP], 1, (size_t) np);
+
262 rqtdm[iq] = gsl_stats_mean(&rqtd[iq * NP], 1, (size_t) np);
+
263 }
+
264 } else if (strcasecmp(argv[3], "stddev") == 0) {
+
265 ahtdm = gsl_stats_sd(ahtd, 1, (size_t) np);
+
266 rhtdm = gsl_stats_sd(rhtd, 1, (size_t) np);
+
267 avtdm = gsl_stats_sd(avtd, 1, (size_t) np);
+
268 rvtdm = gsl_stats_sd(rvtd, 1, (size_t) np);
+
269 for (iq = 0; iq < ctl.nq; iq++) {
+
270 aqtdm[iq] = gsl_stats_sd(&aqtd[iq * NP], 1, (size_t) np);
+
271 rqtdm[iq] = gsl_stats_sd(&rqtd[iq * NP], 1, (size_t) np);
+
272 }
+
273 } else if (strcasecmp(argv[3], "min") == 0) {
+
274 ahtdm = gsl_stats_min(ahtd, 1, (size_t) np);
+
275 rhtdm = gsl_stats_min(rhtd, 1, (size_t) np);
+
276 avtdm = gsl_stats_min(avtd, 1, (size_t) np);
+
277 rvtdm = gsl_stats_min(rvtd, 1, (size_t) np);
+
278 for (iq = 0; iq < ctl.nq; iq++) {
+
279 aqtdm[iq] = gsl_stats_min(&aqtd[iq * NP], 1, (size_t) np);
+
280 rqtdm[iq] = gsl_stats_min(&rqtd[iq * NP], 1, (size_t) np);
+
281 }
+
282 } else if (strcasecmp(argv[3], "max") == 0) {
+
283 ahtdm = gsl_stats_max(ahtd, 1, (size_t) np);
+
284 rhtdm = gsl_stats_max(rhtd, 1, (size_t) np);
+
285 avtdm = gsl_stats_max(avtd, 1, (size_t) np);
+
286 rvtdm = gsl_stats_max(rvtd, 1, (size_t) np);
+
287 for (iq = 0; iq < ctl.nq; iq++) {
+
288 aqtdm[iq] = gsl_stats_max(&aqtd[iq * NP], 1, (size_t) np);
+
289 rqtdm[iq] = gsl_stats_max(&rqtd[iq * NP], 1, (size_t) np);
+
290 }
+
291 } else if (strcasecmp(argv[3], "skew") == 0) {
+
292 ahtdm = gsl_stats_skew(ahtd, 1, (size_t) np);
+
293 rhtdm = gsl_stats_skew(rhtd, 1, (size_t) np);
+
294 avtdm = gsl_stats_skew(avtd, 1, (size_t) np);
+
295 rvtdm = gsl_stats_skew(rvtd, 1, (size_t) np);
+
296 for (iq = 0; iq < ctl.nq; iq++) {
+
297 aqtdm[iq] = gsl_stats_skew(&aqtd[iq * NP], 1, (size_t) np);
+
298 rqtdm[iq] = gsl_stats_skew(&rqtd[iq * NP], 1, (size_t) np);
+
299 }
+
300 } else if (strcasecmp(argv[3], "kurt") == 0) {
+
301 ahtdm = gsl_stats_kurtosis(ahtd, 1, (size_t) np);
+
302 rhtdm = gsl_stats_kurtosis(rhtd, 1, (size_t) np);
+
303 avtdm = gsl_stats_kurtosis(avtd, 1, (size_t) np);
+
304 rvtdm = gsl_stats_kurtosis(rvtd, 1, (size_t) np);
+
305 for (iq = 0; iq < ctl.nq; iq++) {
+
306 aqtdm[iq] = gsl_stats_kurtosis(&aqtd[iq * NP], 1, (size_t) np);
+
307 rqtdm[iq] = gsl_stats_kurtosis(&rqtd[iq * NP], 1, (size_t) np);
+
308 }
+
309 } else if (strcasecmp(argv[3], "absdev") == 0) {
+
310 ahtdm = gsl_stats_absdev_m(ahtd, 1, (size_t) np, 0.0);
+
311 rhtdm = gsl_stats_absdev_m(rhtd, 1, (size_t) np, 0.0);
+
312 avtdm = gsl_stats_absdev_m(avtd, 1, (size_t) np, 0.0);
+
313 rvtdm = gsl_stats_absdev_m(rvtd, 1, (size_t) np, 0.0);
+
314 for (iq = 0; iq < ctl.nq; iq++) {
+
315 aqtdm[iq] = gsl_stats_absdev_m(&aqtd[iq * NP], 1, (size_t) np, 0.0);
+
316 rqtdm[iq] = gsl_stats_absdev_m(&rqtd[iq * NP], 1, (size_t) np, 0.0);
+
317 }
+
318 } else if (strcasecmp(argv[3], "median") == 0) {
+
319 ahtdm = gsl_stats_median(ahtd, 1, (size_t) np);
+
320 rhtdm = gsl_stats_median(rhtd, 1, (size_t) np);
+
321 avtdm = gsl_stats_median(avtd, 1, (size_t) np);
+
322 rvtdm = gsl_stats_median(rvtd, 1, (size_t) np);
+
323 for (iq = 0; iq < ctl.nq; iq++) {
+
324 aqtdm[iq] = gsl_stats_median(&aqtd[iq * NP], 1, (size_t) np);
+
325 rqtdm[iq] = gsl_stats_median(&rqtd[iq * NP], 1, (size_t) np);
+
326 }
+
327 } else if (strcasecmp(argv[3], "mad") == 0) {
+
328 ahtdm = gsl_stats_mad0(ahtd, 1, (size_t) np, work);
+
329 rhtdm = gsl_stats_mad0(rhtd, 1, (size_t) np, work);
+
330 avtdm = gsl_stats_mad0(avtd, 1, (size_t) np, work);
+
331 rvtdm = gsl_stats_mad0(rvtd, 1, (size_t) np, work);
+
332 for (iq = 0; iq < ctl.nq; iq++) {
+
333 aqtdm[iq] = gsl_stats_mad0(&aqtd[iq * NP], 1, (size_t) np, work);
+
334 rqtdm[iq] = gsl_stats_mad0(&rqtd[iq * NP], 1, (size_t) np, work);
+
335 }
+
336 } else
+
337 ERRMSG("Unknown parameter!");
+
338
+
339 /* Write output... */
+
340 fprintf(out, "%.2f %.2f %g %g %g %g", t, t - t0,
+
341 ahtdm, rhtdm, avtdm, rvtdm);
+
342 for (iq = 0; iq < ctl.nq; iq++) {
+
343 fprintf(out, " ");
+
344 fprintf(out, ctl.qnt_format[iq], aqtdm[iq]);
+
345 fprintf(out, " ");
+
346 fprintf(out, ctl.qnt_format[iq], rqtdm[iq]);
+
347 }
+
348 fprintf(out, " %d\n", np);
+
349 }
+
350
+
351 /* Close file... */
+
352 fclose(out);
+
353
+
354 /* Free... */
+
355 free(atm1);
+
356 free(atm2);
+
357 free(lon1_old);
+
358 free(lat1_old);
+
359 free(z1_old);
+
360 free(lh1);
+
361 free(lv1);
+
362 free(lon2_old);
+
363 free(lat2_old);
+
364 free(z2_old);
+
365 free(lh2);
+
366 free(lv2);
+
367 free(ahtd);
+
368 free(avtd);
+
369 free(aqtd);
+
370 free(rhtd);
+
371 free(rvtd);
+
372 free(rqtd);
+
373 free(work);
+
374
+
375 return EXIT_SUCCESS;
+
376}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define DIST(a, b)
Compute Cartesian distance between two vectors.
Definition: libtrac.h:295
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/atm__dist_8c.js b/doxygen/atm__dist_8c.js new file mode 100644 index 0000000000..e9c643ed40 --- /dev/null +++ b/doxygen/atm__dist_8c.js @@ -0,0 +1,4 @@ +var atm__dist_8c = +[ + [ "main", "atm__dist_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..4aab25f268 --- /dev/null +++ b/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..0e51aa707b --- /dev/null +++ b/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +3724331021dd5dedfed15ed631a545a3 \ No newline at end of file diff --git a/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/atm__dist_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e76a59efad9506935c09d01f7770227b4aefe1ef GIT binary patch literal 29634 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 + + + + + + +MPTRAC: atm_dist.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
atm_dist.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm1, *atm2;
+
34
+
35 FILE *out;
+
36
+
37 double *ahtd, *aqtd, *avtd, ahtdm, aqtdm[NQ], avtdm, lat0, lat1,
+
38 *lat1_old, *lat2_old, *lh1, *lh2, lon0, lon1, *lon1_old, *lon2_old,
+
39 *lv1, *lv2, p0, p1, *rhtd, *rqtd, *rvtd, rhtdm, rqtdm[NQ], rvtdm,
+
40 t, t0 = 0, x0[3], x1[3], x2[3], z1, *z1_old, z2, *z2_old, *work, zscore;
+
41
+
42 int ens, f, init = 0, ip, iq, np;
+
43
+
44 /* Allocate... */
+
45 ALLOC(atm1, atm_t, 1);
+
46 ALLOC(atm2, atm_t, 1);
+
47 ALLOC(lon1_old, double,
+
48 NP);
+
49 ALLOC(lat1_old, double,
+
50 NP);
+
51 ALLOC(z1_old, double,
+
52 NP);
+
53 ALLOC(lh1, double,
+
54 NP);
+
55 ALLOC(lv1, double,
+
56 NP);
+
57 ALLOC(lon2_old, double,
+
58 NP);
+
59 ALLOC(lat2_old, double,
+
60 NP);
+
61 ALLOC(z2_old, double,
+
62 NP);
+
63 ALLOC(lh2, double,
+
64 NP);
+
65 ALLOC(lv2, double,
+
66 NP);
+
67 ALLOC(ahtd, double,
+
68 NP);
+
69 ALLOC(avtd, double,
+
70 NP);
+
71 ALLOC(aqtd, double,
+
72 NP * NQ);
+
73 ALLOC(rhtd, double,
+
74 NP);
+
75 ALLOC(rvtd, double,
+
76 NP);
+
77 ALLOC(rqtd, double,
+
78 NP * NQ);
+
79 ALLOC(work, double,
+
80 NP);
+
81
+
82 /* Check arguments... */
+
83 if (argc < 6)
+
84 ERRMSG("Give parameters: <ctl> <dist.tab> <param> <atm1a> <atm1b>"
+
85 " [<atm2a> <atm2b> ...]");
+
86
+
87 /* Read control parameters... */
+
88 read_ctl(argv[1], argc, argv, &ctl);
+
89 ens = (int) scan_ctl(argv[1], argc, argv, "DIST_ENS", -1, "-999", NULL);
+
90 p0 = P(scan_ctl(argv[1], argc, argv, "DIST_Z0", -1, "-1000", NULL));
+
91 p1 = P(scan_ctl(argv[1], argc, argv, "DIST_Z1", -1, "1000", NULL));
+
92 lat0 = scan_ctl(argv[1], argc, argv, "DIST_LAT0", -1, "-1000", NULL);
+
93 lat1 = scan_ctl(argv[1], argc, argv, "DIST_LAT1", -1, "1000", NULL);
+
94 lon0 = scan_ctl(argv[1], argc, argv, "DIST_LON0", -1, "-1000", NULL);
+
95 lon1 = scan_ctl(argv[1], argc, argv, "DIST_LON1", -1, "1000", NULL);
+
96 zscore = scan_ctl(argv[1], argc, argv, "DIST_ZSCORE", -1, "-999", NULL);
+
97
+
98 /* Write info... */
+
99 LOG(1, "Write transport deviations: %s", argv[2]);
+
100
+
101 /* Create output file... */
+
102 if (!(out = fopen(argv[2], "w")))
+
103 ERRMSG("Cannot create file!");
+
104
+
105 /* Write header... */
+
106 fprintf(out,
+
107 "# $1 = time [s]\n"
+
108 "# $2 = time difference [s]\n"
+
109 "# $3 = absolute horizontal distance (%s) [km]\n"
+
110 "# $4 = relative horizontal distance (%s) [%%]\n"
+
111 "# $5 = absolute vertical distance (%s) [km]\n"
+
112 "# $6 = relative vertical distance (%s) [%%]\n",
+
113 argv[3], argv[3], argv[3], argv[3]);
+
114 for (iq = 0; iq < ctl.nq; iq++)
+
115 fprintf(out,
+
116 "# $%d = %s absolute difference (%s) [%s]\n"
+
117 "# $%d = %s relative difference (%s) [%%]\n",
+
118 7 + 2 * iq, ctl.qnt_name[iq], argv[3], ctl.qnt_unit[iq],
+
119 8 + 2 * iq, ctl.qnt_name[iq], argv[3]);
+
120 fprintf(out, "# $%d = number of particles\n\n", 7 + 2 * ctl.nq);
+
121
+
122 /* Loop over file pairs... */
+
123 for (f = 4; f < argc; f += 2) {
+
124
+
125 /* Read atmopheric data... */
+
126 if (!read_atm(argv[f], &ctl, atm1) || !read_atm(argv[f + 1], &ctl, atm2))
+
127 continue;
+
128
+
129 /* Check if structs match... */
+
130 if (atm1->np != atm2->np)
+
131 ERRMSG("Different numbers of particles!");
+
132
+
133 /* Get time from filename... */
+
134 t = time_from_filename(argv[f], ctl.atm_type < 2 ? 20 : 19);
+
135
+
136 /* Save initial time... */
+
137 if (!init) {
+
138 init = 1;
+
139 t0 = t;
+
140 }
+
141
+
142 /* Init... */
+
143 np = 0;
+
144 for (ip = 0; ip < atm1->np; ip++) {
+
145 ahtd[ip] = avtd[ip] = rhtd[ip] = rvtd[ip] = 0;
+
146 for (iq = 0; iq < ctl.nq; iq++)
+
147 aqtd[iq * NP + ip] = rqtd[iq * NP + ip] = 0;
+
148 }
+
149
+
150 /* Loop over air parcels... */
+
151 for (ip = 0; ip < atm1->np; ip++) {
+
152
+
153 /* Check air parcel index... */
+
154 if (ctl.qnt_idx > 0
+
155 && (atm1->q[ctl.qnt_idx][ip] != atm2->q[ctl.qnt_idx][ip]))
+
156 ERRMSG("Air parcel index does not match!");
+
157
+
158 /* Check ensemble index... */
+
159 if (ctl.qnt_ens > 0
+
160 && (atm1->q[ctl.qnt_ens][ip] != ens
+
161 || atm2->q[ctl.qnt_ens][ip] != ens))
+
162 continue;
+
163
+
164 /* Check time... */
+
165 if (!gsl_finite(atm1->time[ip]) || !gsl_finite(atm2->time[ip]))
+
166 continue;
+
167
+
168 /* Check spatial range... */
+
169 if (atm1->p[ip] > p0 || atm1->p[ip] < p1
+
170 || atm1->lon[ip] < lon0 || atm1->lon[ip] > lon1
+
171 || atm1->lat[ip] < lat0 || atm1->lat[ip] > lat1)
+
172 continue;
+
173 if (atm2->p[ip] > p0 || atm2->p[ip] < p1
+
174 || atm2->lon[ip] < lon0 || atm2->lon[ip] > lon1
+
175 || atm2->lat[ip] < lat0 || atm2->lat[ip] > lat1)
+
176 continue;
+
177
+
178 /* Convert coordinates... */
+
179 geo2cart(0, atm1->lon[ip], atm1->lat[ip], x1);
+
180 geo2cart(0, atm2->lon[ip], atm2->lat[ip], x2);
+
181 z1 = Z(atm1->p[ip]);
+
182 z2 = Z(atm2->p[ip]);
+
183
+
184 /* Calculate absolute transport deviations... */
+
185 ahtd[np] = DIST(x1, x2);
+
186 avtd[np] = z1 - z2;
+
187 for (iq = 0; iq < ctl.nq; iq++)
+
188 aqtd[iq * NP + np] = atm1->q[iq][ip] - atm2->q[iq][ip];
+
189
+
190 /* Calculate relative transport deviations... */
+
191 if (f > 4) {
+
192
+
193 /* Get trajectory lengths... */
+
194 geo2cart(0, lon1_old[ip], lat1_old[ip], x0);
+
195 lh1[ip] += DIST(x0, x1);
+
196 lv1[ip] += fabs(z1_old[ip] - z1);
+
197
+
198 geo2cart(0, lon2_old[ip], lat2_old[ip], x0);
+
199 lh2[ip] += DIST(x0, x2);
+
200 lv2[ip] += fabs(z2_old[ip] - z2);
+
201
+
202 /* Get relative transport deviations... */
+
203 if (lh1[ip] + lh2[ip] > 0)
+
204 rhtd[np] = 200. * DIST(x1, x2) / (lh1[ip] + lh2[ip]);
+
205 if (lv1[ip] + lv2[ip] > 0)
+
206 rvtd[np] = 200. * (z1 - z2) / (lv1[ip] + lv2[ip]);
+
207 }
+
208
+
209 /* Get relative transport deviations... */
+
210 for (iq = 0; iq < ctl.nq; iq++)
+
211 rqtd[iq * NP + np] = 200. * (atm1->q[iq][ip] - atm2->q[iq][ip])
+
212 / (fabs(atm1->q[iq][ip]) + fabs(atm2->q[iq][ip]));
+
213
+
214 /* Save positions of air parcels... */
+
215 lon1_old[ip] = atm1->lon[ip];
+
216 lat1_old[ip] = atm1->lat[ip];
+
217 z1_old[ip] = z1;
+
218
+
219 lon2_old[ip] = atm2->lon[ip];
+
220 lat2_old[ip] = atm2->lat[ip];
+
221 z2_old[ip] = z2;
+
222
+
223 /* Increment air parcel counter... */
+
224 np++;
+
225 }
+
226
+
227 /* Filter data... */
+
228 if (zscore > 0 && np > 1) {
+
229
+
230 /* Get means and standard deviations of transport deviations... */
+
231 size_t n = (size_t) np;
+
232 double muh = gsl_stats_mean(ahtd, 1, n);
+
233 double muv = gsl_stats_mean(avtd, 1, n);
+
234 double sigh = gsl_stats_sd(ahtd, 1, n);
+
235 double sigv = gsl_stats_sd(avtd, 1, n);
+
236
+
237 /* Filter data... */
+
238 np = 0;
+
239 for (size_t i = 0; i < n; i++)
+
240 if (fabs((ahtd[i] - muh) / sigh) < zscore
+
241 && fabs((avtd[i] - muv) / sigv) < zscore) {
+
242 ahtd[np] = ahtd[i];
+
243 rhtd[np] = rhtd[i];
+
244 avtd[np] = avtd[i];
+
245 rvtd[np] = rvtd[i];
+
246 for (iq = 0; iq < ctl.nq; iq++) {
+
247 aqtd[iq * NP + np] = aqtd[iq * NP + (int) i];
+
248 rqtd[iq * NP + np] = rqtd[iq * NP + (int) i];
+
249 }
+
250 np++;
+
251 }
+
252 }
+
253
+
254 /* Get statistics... */
+
255 if (strcasecmp(argv[3], "mean") == 0) {
+
256 ahtdm = gsl_stats_mean(ahtd, 1, (size_t) np);
+
257 rhtdm = gsl_stats_mean(rhtd, 1, (size_t) np);
+
258 avtdm = gsl_stats_mean(avtd, 1, (size_t) np);
+
259 rvtdm = gsl_stats_mean(rvtd, 1, (size_t) np);
+
260 for (iq = 0; iq < ctl.nq; iq++) {
+
261 aqtdm[iq] = gsl_stats_mean(&aqtd[iq * NP], 1, (size_t) np);
+
262 rqtdm[iq] = gsl_stats_mean(&rqtd[iq * NP], 1, (size_t) np);
+
263 }
+
264 } else if (strcasecmp(argv[3], "stddev") == 0) {
+
265 ahtdm = gsl_stats_sd(ahtd, 1, (size_t) np);
+
266 rhtdm = gsl_stats_sd(rhtd, 1, (size_t) np);
+
267 avtdm = gsl_stats_sd(avtd, 1, (size_t) np);
+
268 rvtdm = gsl_stats_sd(rvtd, 1, (size_t) np);
+
269 for (iq = 0; iq < ctl.nq; iq++) {
+
270 aqtdm[iq] = gsl_stats_sd(&aqtd[iq * NP], 1, (size_t) np);
+
271 rqtdm[iq] = gsl_stats_sd(&rqtd[iq * NP], 1, (size_t) np);
+
272 }
+
273 } else if (strcasecmp(argv[3], "min") == 0) {
+
274 ahtdm = gsl_stats_min(ahtd, 1, (size_t) np);
+
275 rhtdm = gsl_stats_min(rhtd, 1, (size_t) np);
+
276 avtdm = gsl_stats_min(avtd, 1, (size_t) np);
+
277 rvtdm = gsl_stats_min(rvtd, 1, (size_t) np);
+
278 for (iq = 0; iq < ctl.nq; iq++) {
+
279 aqtdm[iq] = gsl_stats_min(&aqtd[iq * NP], 1, (size_t) np);
+
280 rqtdm[iq] = gsl_stats_min(&rqtd[iq * NP], 1, (size_t) np);
+
281 }
+
282 } else if (strcasecmp(argv[3], "max") == 0) {
+
283 ahtdm = gsl_stats_max(ahtd, 1, (size_t) np);
+
284 rhtdm = gsl_stats_max(rhtd, 1, (size_t) np);
+
285 avtdm = gsl_stats_max(avtd, 1, (size_t) np);
+
286 rvtdm = gsl_stats_max(rvtd, 1, (size_t) np);
+
287 for (iq = 0; iq < ctl.nq; iq++) {
+
288 aqtdm[iq] = gsl_stats_max(&aqtd[iq * NP], 1, (size_t) np);
+
289 rqtdm[iq] = gsl_stats_max(&rqtd[iq * NP], 1, (size_t) np);
+
290 }
+
291 } else if (strcasecmp(argv[3], "skew") == 0) {
+
292 ahtdm = gsl_stats_skew(ahtd, 1, (size_t) np);
+
293 rhtdm = gsl_stats_skew(rhtd, 1, (size_t) np);
+
294 avtdm = gsl_stats_skew(avtd, 1, (size_t) np);
+
295 rvtdm = gsl_stats_skew(rvtd, 1, (size_t) np);
+
296 for (iq = 0; iq < ctl.nq; iq++) {
+
297 aqtdm[iq] = gsl_stats_skew(&aqtd[iq * NP], 1, (size_t) np);
+
298 rqtdm[iq] = gsl_stats_skew(&rqtd[iq * NP], 1, (size_t) np);
+
299 }
+
300 } else if (strcasecmp(argv[3], "kurt") == 0) {
+
301 ahtdm = gsl_stats_kurtosis(ahtd, 1, (size_t) np);
+
302 rhtdm = gsl_stats_kurtosis(rhtd, 1, (size_t) np);
+
303 avtdm = gsl_stats_kurtosis(avtd, 1, (size_t) np);
+
304 rvtdm = gsl_stats_kurtosis(rvtd, 1, (size_t) np);
+
305 for (iq = 0; iq < ctl.nq; iq++) {
+
306 aqtdm[iq] = gsl_stats_kurtosis(&aqtd[iq * NP], 1, (size_t) np);
+
307 rqtdm[iq] = gsl_stats_kurtosis(&rqtd[iq * NP], 1, (size_t) np);
+
308 }
+
309 } else if (strcasecmp(argv[3], "absdev") == 0) {
+
310 ahtdm = gsl_stats_absdev_m(ahtd, 1, (size_t) np, 0.0);
+
311 rhtdm = gsl_stats_absdev_m(rhtd, 1, (size_t) np, 0.0);
+
312 avtdm = gsl_stats_absdev_m(avtd, 1, (size_t) np, 0.0);
+
313 rvtdm = gsl_stats_absdev_m(rvtd, 1, (size_t) np, 0.0);
+
314 for (iq = 0; iq < ctl.nq; iq++) {
+
315 aqtdm[iq] = gsl_stats_absdev_m(&aqtd[iq * NP], 1, (size_t) np, 0.0);
+
316 rqtdm[iq] = gsl_stats_absdev_m(&rqtd[iq * NP], 1, (size_t) np, 0.0);
+
317 }
+
318 } else if (strcasecmp(argv[3], "median") == 0) {
+
319 ahtdm = gsl_stats_median(ahtd, 1, (size_t) np);
+
320 rhtdm = gsl_stats_median(rhtd, 1, (size_t) np);
+
321 avtdm = gsl_stats_median(avtd, 1, (size_t) np);
+
322 rvtdm = gsl_stats_median(rvtd, 1, (size_t) np);
+
323 for (iq = 0; iq < ctl.nq; iq++) {
+
324 aqtdm[iq] = gsl_stats_median(&aqtd[iq * NP], 1, (size_t) np);
+
325 rqtdm[iq] = gsl_stats_median(&rqtd[iq * NP], 1, (size_t) np);
+
326 }
+
327 } else if (strcasecmp(argv[3], "mad") == 0) {
+
328 ahtdm = gsl_stats_mad0(ahtd, 1, (size_t) np, work);
+
329 rhtdm = gsl_stats_mad0(rhtd, 1, (size_t) np, work);
+
330 avtdm = gsl_stats_mad0(avtd, 1, (size_t) np, work);
+
331 rvtdm = gsl_stats_mad0(rvtd, 1, (size_t) np, work);
+
332 for (iq = 0; iq < ctl.nq; iq++) {
+
333 aqtdm[iq] = gsl_stats_mad0(&aqtd[iq * NP], 1, (size_t) np, work);
+
334 rqtdm[iq] = gsl_stats_mad0(&rqtd[iq * NP], 1, (size_t) np, work);
+
335 }
+
336 } else
+
337 ERRMSG("Unknown parameter!");
+
338
+
339 /* Write output... */
+
340 fprintf(out, "%.2f %.2f %g %g %g %g", t, t - t0,
+
341 ahtdm, rhtdm, avtdm, rvtdm);
+
342 for (iq = 0; iq < ctl.nq; iq++) {
+
343 fprintf(out, " ");
+
344 fprintf(out, ctl.qnt_format[iq], aqtdm[iq]);
+
345 fprintf(out, " ");
+
346 fprintf(out, ctl.qnt_format[iq], rqtdm[iq]);
+
347 }
+
348 fprintf(out, " %d\n", np);
+
349 }
+
350
+
351 /* Close file... */
+
352 fclose(out);
+
353
+
354 /* Free... */
+
355 free(atm1);
+
356 free(atm2);
+
357 free(lon1_old);
+
358 free(lat1_old);
+
359 free(z1_old);
+
360 free(lh1);
+
361 free(lv1);
+
362 free(lon2_old);
+
363 free(lat2_old);
+
364 free(z2_old);
+
365 free(lh2);
+
366 free(lv2);
+
367 free(ahtd);
+
368 free(avtd);
+
369 free(aqtd);
+
370 free(rhtd);
+
371 free(rvtd);
+
372 free(rqtd);
+
373 free(work);
+
374
+
375 return EXIT_SUCCESS;
+
376}
+
int main(int argc, char *argv[])
Definition: atm_dist.c:27
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define DIST(a, b)
Compute Cartesian distance between two vectors.
Definition: libtrac.h:295
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+
+ + + + diff --git a/doxygen/atm__init_8c.html b/doxygen/atm__init_8c.html new file mode 100644 index 0000000000..e6cb6da5ed --- /dev/null +++ b/doxygen/atm__init_8c.html @@ -0,0 +1,314 @@ + + + + + + + +MPTRAC: atm_init.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
atm_init.c File Reference
+
+
+ +

Create atmospheric data file with initial air parcel positions. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Create atmospheric data file with initial air parcel positions.

+ +

Definition in file atm_init.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file atm_init.c.

+
29 {
+
30
+
31 atm_t *atm;
+
32
+
33 ctl_t ctl;
+
34
+
35 gsl_rng *rng;
+
36
+
37 double dt, dz, dlon, dlat, lat0, lat1, lon0, lon1, t0, t1, z0, z1, t, z,
+
38 lon, lat, st, sz, slon, slat, sx, ut, uz, ulon, ulat, m, vmr, bellrad;
+
39
+
40 int even, ip, irep, rep;
+
41
+
42 /* Allocate... */
+
43 ALLOC(atm, atm_t, 1);
+
44
+
45 /* Check arguments... */
+
46 if (argc < 3)
+
47 ERRMSG("Give parameters: <ctl> <atm_out>");
+
48
+
49 /* Read control parameters... */
+
50 read_ctl(argv[1], argc, argv, &ctl);
+
51 t0 = scan_ctl(argv[1], argc, argv, "INIT_T0", -1, "0", NULL);
+
52 t1 = scan_ctl(argv[1], argc, argv, "INIT_T1", -1, "0", NULL);
+
53 dt = scan_ctl(argv[1], argc, argv, "INIT_DT", -1, "1", NULL);
+
54 z0 = scan_ctl(argv[1], argc, argv, "INIT_Z0", -1, "0", NULL);
+
55 z1 = scan_ctl(argv[1], argc, argv, "INIT_Z1", -1, "0", NULL);
+
56 dz = scan_ctl(argv[1], argc, argv, "INIT_DZ", -1, "1", NULL);
+
57 lon0 = scan_ctl(argv[1], argc, argv, "INIT_LON0", -1, "0", NULL);
+
58 lon1 = scan_ctl(argv[1], argc, argv, "INIT_LON1", -1, "0", NULL);
+
59 dlon = scan_ctl(argv[1], argc, argv, "INIT_DLON", -1, "1", NULL);
+
60 lat0 = scan_ctl(argv[1], argc, argv, "INIT_LAT0", -1, "0", NULL);
+
61 lat1 = scan_ctl(argv[1], argc, argv, "INIT_LAT1", -1, "0", NULL);
+
62 dlat = scan_ctl(argv[1], argc, argv, "INIT_DLAT", -1, "1", NULL);
+
63 st = scan_ctl(argv[1], argc, argv, "INIT_ST", -1, "0", NULL);
+
64 sz = scan_ctl(argv[1], argc, argv, "INIT_SZ", -1, "0", NULL);
+
65 slon = scan_ctl(argv[1], argc, argv, "INIT_SLON", -1, "0", NULL);
+
66 slat = scan_ctl(argv[1], argc, argv, "INIT_SLAT", -1, "0", NULL);
+
67 sx = scan_ctl(argv[1], argc, argv, "INIT_SX", -1, "0", NULL);
+
68 ut = scan_ctl(argv[1], argc, argv, "INIT_UT", -1, "0", NULL);
+
69 uz = scan_ctl(argv[1], argc, argv, "INIT_UZ", -1, "0", NULL);
+
70 ulon = scan_ctl(argv[1], argc, argv, "INIT_ULON", -1, "0", NULL);
+
71 ulat = scan_ctl(argv[1], argc, argv, "INIT_ULAT", -1, "0", NULL);
+
72 even = (int) scan_ctl(argv[1], argc, argv, "INIT_EVENLY", -1, "0", NULL);
+
73 rep = (int) scan_ctl(argv[1], argc, argv, "INIT_REP", -1, "1", NULL);
+
74 m = scan_ctl(argv[1], argc, argv, "INIT_MASS", -1, "0", NULL);
+
75 vmr = scan_ctl(argv[1], argc, argv, "INIT_VMR", -1, "0", NULL);
+
76 bellrad = scan_ctl(argv[1], argc, argv, "INIT_BELLRAD", -1, "0", NULL);
+
77
+
78 /* Initialize random number generator... */
+
79 gsl_rng_env_setup();
+
80 rng = gsl_rng_alloc(gsl_rng_default);
+
81
+
82 /* Create grid... */
+
83 for (t = t0; t <= t1; t += dt)
+
84 for (z = z0; z <= z1; z += dz)
+
85 for (lon = lon0; lon <= lon1; lon += dlon)
+
86 for (lat = lat0; lat <= lat1; lat += dlat)
+
87 for (irep = 0; irep < rep; irep++) {
+
88
+
89 /* Set position... */
+
90 atm->time[atm->np]
+
91 = (t + gsl_ran_gaussian_ziggurat(rng, st / 2.3548)
+
92 + ut * (gsl_rng_uniform(rng) - 0.5));
+
93 atm->p[atm->np]
+
94 = P(z + gsl_ran_gaussian_ziggurat(rng, sz / 2.3548)
+
95 + uz * (gsl_rng_uniform(rng) - 0.5));
+
96 atm->lon[atm->np]
+
97 = (lon + gsl_ran_gaussian_ziggurat(rng, slon / 2.3548)
+
98 + gsl_ran_gaussian_ziggurat(rng, DX2DEG(sx, lat) / 2.3548)
+
99 + ulon * (gsl_rng_uniform(rng) - 0.5));
+
100 do {
+
101 atm->lat[atm->np]
+
102 = (lat + gsl_ran_gaussian_ziggurat(rng, slat / 2.3548)
+
103 + gsl_ran_gaussian_ziggurat(rng, DY2DEG(sx) / 2.3548)
+
104 + ulat * (gsl_rng_uniform(rng) - 0.5));
+
105 } while (even && gsl_rng_uniform(rng) >
+
106 fabs(cos(atm->lat[atm->np] * M_PI / 180.)));
+
107
+
108 /* Apply cosine bell (Williamson et al., 1992)... */
+
109 if (bellrad > 0) {
+
110 double x0[3], x1[3];
+
111 geo2cart(0.0, 0.5 * (lon0 + lon1), 0.5 * (lat0 + lat1), x0);
+
112 geo2cart(0.0, atm->lon[atm->np], atm->lat[atm->np], x1);
+
113 double rad = RE * acos(DOTP(x0, x1) / NORM(x0) / NORM(x1));
+
114 if (rad > bellrad)
+
115 continue;
+
116 if (ctl.qnt_m >= 0)
+
117 atm->q[ctl.qnt_m][atm->np] =
+
118 0.5 * (1. + cos(M_PI * rad / bellrad));
+
119 if (ctl.qnt_vmr >= 0)
+
120 atm->q[ctl.qnt_vmr][atm->np] =
+
121 0.5 * (1. + cos(M_PI * rad / bellrad));
+
122 }
+
123
+
124 /* Set particle counter... */
+
125 if ((++atm->np) > NP)
+
126 ERRMSG("Too many particles!");
+
127 }
+
128
+
129 /* Check number of air parcels... */
+
130 if (atm->np <= 0)
+
131 ERRMSG("Did not create any air parcels!");
+
132
+
133 /* Initialize mass... */
+
134 if (ctl.qnt_m >= 0 && bellrad <= 0)
+
135 for (ip = 0; ip < atm->np; ip++)
+
136 atm->q[ctl.qnt_m][ip] = m / atm->np;
+
137
+
138 /* Initialize volume mixing ratio... */
+
139 if (ctl.qnt_vmr >= 0 && bellrad <= 0)
+
140 for (ip = 0; ip < atm->np; ip++)
+
141 atm->q[ctl.qnt_vmr][ip] = vmr;
+
142
+
143 /* Initialize air parcel index... */
+
144 if (ctl.qnt_idx >= 0)
+
145 for (ip = 0; ip < atm->np; ip++)
+
146 atm->q[ctl.qnt_idx][ip] = ip;
+
147
+
148 /* Initialize age of air... */
+
149 if (ctl.qnt_aoa >= 0)
+
150 for (ip = 0; ip < atm->np; ip++)
+
151 atm->q[ctl.qnt_aoa][ip] = atm->time[ip];
+
152
+
153 /* Save data... */
+
154 write_atm(argv[2], &ctl, atm, 0);
+
155
+
156 /* Free... */
+
157 gsl_rng_free(rng);
+
158 free(atm);
+
159
+
160 return EXIT_SUCCESS;
+
161}
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
#define RE
Mean radius of Earth [km].
Definition: libtrac.h:143
+
#define DOTP(a, b)
Compute dot product of two vectors.
Definition: libtrac.h:303
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define NORM(a)
Compute norm of a vector.
Definition: libtrac.h:567
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
+
+
+
+
+ + + + diff --git a/doxygen/atm__init_8c.js b/doxygen/atm__init_8c.js new file mode 100644 index 0000000000..14889f0bae --- /dev/null +++ b/doxygen/atm__init_8c.js @@ -0,0 +1,4 @@ +var atm__init_8c = +[ + [ "main", "atm__init_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/atm__init_8c_source.html b/doxygen/atm__init_8c_source.html new file mode 100644 index 0000000000..d93edeb4b3 --- /dev/null +++ b/doxygen/atm__init_8c_source.html @@ -0,0 +1,290 @@ + + + + + + + +MPTRAC: atm_init.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
atm_init.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 atm_t *atm;
+
32
+
33 ctl_t ctl;
+
34
+
35 gsl_rng *rng;
+
36
+
37 double dt, dz, dlon, dlat, lat0, lat1, lon0, lon1, t0, t1, z0, z1, t, z,
+
38 lon, lat, st, sz, slon, slat, sx, ut, uz, ulon, ulat, m, vmr, bellrad;
+
39
+
40 int even, ip, irep, rep;
+
41
+
42 /* Allocate... */
+
43 ALLOC(atm, atm_t, 1);
+
44
+
45 /* Check arguments... */
+
46 if (argc < 3)
+
47 ERRMSG("Give parameters: <ctl> <atm_out>");
+
48
+
49 /* Read control parameters... */
+
50 read_ctl(argv[1], argc, argv, &ctl);
+
51 t0 = scan_ctl(argv[1], argc, argv, "INIT_T0", -1, "0", NULL);
+
52 t1 = scan_ctl(argv[1], argc, argv, "INIT_T1", -1, "0", NULL);
+
53 dt = scan_ctl(argv[1], argc, argv, "INIT_DT", -1, "1", NULL);
+
54 z0 = scan_ctl(argv[1], argc, argv, "INIT_Z0", -1, "0", NULL);
+
55 z1 = scan_ctl(argv[1], argc, argv, "INIT_Z1", -1, "0", NULL);
+
56 dz = scan_ctl(argv[1], argc, argv, "INIT_DZ", -1, "1", NULL);
+
57 lon0 = scan_ctl(argv[1], argc, argv, "INIT_LON0", -1, "0", NULL);
+
58 lon1 = scan_ctl(argv[1], argc, argv, "INIT_LON1", -1, "0", NULL);
+
59 dlon = scan_ctl(argv[1], argc, argv, "INIT_DLON", -1, "1", NULL);
+
60 lat0 = scan_ctl(argv[1], argc, argv, "INIT_LAT0", -1, "0", NULL);
+
61 lat1 = scan_ctl(argv[1], argc, argv, "INIT_LAT1", -1, "0", NULL);
+
62 dlat = scan_ctl(argv[1], argc, argv, "INIT_DLAT", -1, "1", NULL);
+
63 st = scan_ctl(argv[1], argc, argv, "INIT_ST", -1, "0", NULL);
+
64 sz = scan_ctl(argv[1], argc, argv, "INIT_SZ", -1, "0", NULL);
+
65 slon = scan_ctl(argv[1], argc, argv, "INIT_SLON", -1, "0", NULL);
+
66 slat = scan_ctl(argv[1], argc, argv, "INIT_SLAT", -1, "0", NULL);
+
67 sx = scan_ctl(argv[1], argc, argv, "INIT_SX", -1, "0", NULL);
+
68 ut = scan_ctl(argv[1], argc, argv, "INIT_UT", -1, "0", NULL);
+
69 uz = scan_ctl(argv[1], argc, argv, "INIT_UZ", -1, "0", NULL);
+
70 ulon = scan_ctl(argv[1], argc, argv, "INIT_ULON", -1, "0", NULL);
+
71 ulat = scan_ctl(argv[1], argc, argv, "INIT_ULAT", -1, "0", NULL);
+
72 even = (int) scan_ctl(argv[1], argc, argv, "INIT_EVENLY", -1, "0", NULL);
+
73 rep = (int) scan_ctl(argv[1], argc, argv, "INIT_REP", -1, "1", NULL);
+
74 m = scan_ctl(argv[1], argc, argv, "INIT_MASS", -1, "0", NULL);
+
75 vmr = scan_ctl(argv[1], argc, argv, "INIT_VMR", -1, "0", NULL);
+
76 bellrad = scan_ctl(argv[1], argc, argv, "INIT_BELLRAD", -1, "0", NULL);
+
77
+
78 /* Initialize random number generator... */
+
79 gsl_rng_env_setup();
+
80 rng = gsl_rng_alloc(gsl_rng_default);
+
81
+
82 /* Create grid... */
+
83 for (t = t0; t <= t1; t += dt)
+
84 for (z = z0; z <= z1; z += dz)
+
85 for (lon = lon0; lon <= lon1; lon += dlon)
+
86 for (lat = lat0; lat <= lat1; lat += dlat)
+
87 for (irep = 0; irep < rep; irep++) {
+
88
+
89 /* Set position... */
+
90 atm->time[atm->np]
+
91 = (t + gsl_ran_gaussian_ziggurat(rng, st / 2.3548)
+
92 + ut * (gsl_rng_uniform(rng) - 0.5));
+
93 atm->p[atm->np]
+
94 = P(z + gsl_ran_gaussian_ziggurat(rng, sz / 2.3548)
+
95 + uz * (gsl_rng_uniform(rng) - 0.5));
+
96 atm->lon[atm->np]
+
97 = (lon + gsl_ran_gaussian_ziggurat(rng, slon / 2.3548)
+
98 + gsl_ran_gaussian_ziggurat(rng, DX2DEG(sx, lat) / 2.3548)
+
99 + ulon * (gsl_rng_uniform(rng) - 0.5));
+
100 do {
+
101 atm->lat[atm->np]
+
102 = (lat + gsl_ran_gaussian_ziggurat(rng, slat / 2.3548)
+
103 + gsl_ran_gaussian_ziggurat(rng, DY2DEG(sx) / 2.3548)
+
104 + ulat * (gsl_rng_uniform(rng) - 0.5));
+
105 } while (even && gsl_rng_uniform(rng) >
+
106 fabs(cos(atm->lat[atm->np] * M_PI / 180.)));
+
107
+
108 /* Apply cosine bell (Williamson et al., 1992)... */
+
109 if (bellrad > 0) {
+
110 double x0[3], x1[3];
+
111 geo2cart(0.0, 0.5 * (lon0 + lon1), 0.5 * (lat0 + lat1), x0);
+
112 geo2cart(0.0, atm->lon[atm->np], atm->lat[atm->np], x1);
+
113 double rad = RE * acos(DOTP(x0, x1) / NORM(x0) / NORM(x1));
+
114 if (rad > bellrad)
+
115 continue;
+
116 if (ctl.qnt_m >= 0)
+
117 atm->q[ctl.qnt_m][atm->np] =
+
118 0.5 * (1. + cos(M_PI * rad / bellrad));
+
119 if (ctl.qnt_vmr >= 0)
+
120 atm->q[ctl.qnt_vmr][atm->np] =
+
121 0.5 * (1. + cos(M_PI * rad / bellrad));
+
122 }
+
123
+
124 /* Set particle counter... */
+
125 if ((++atm->np) > NP)
+
126 ERRMSG("Too many particles!");
+
127 }
+
128
+
129 /* Check number of air parcels... */
+
130 if (atm->np <= 0)
+
131 ERRMSG("Did not create any air parcels!");
+
132
+
133 /* Initialize mass... */
+
134 if (ctl.qnt_m >= 0 && bellrad <= 0)
+
135 for (ip = 0; ip < atm->np; ip++)
+
136 atm->q[ctl.qnt_m][ip] = m / atm->np;
+
137
+
138 /* Initialize volume mixing ratio... */
+
139 if (ctl.qnt_vmr >= 0 && bellrad <= 0)
+
140 for (ip = 0; ip < atm->np; ip++)
+
141 atm->q[ctl.qnt_vmr][ip] = vmr;
+
142
+
143 /* Initialize air parcel index... */
+
144 if (ctl.qnt_idx >= 0)
+
145 for (ip = 0; ip < atm->np; ip++)
+
146 atm->q[ctl.qnt_idx][ip] = ip;
+
147
+
148 /* Initialize age of air... */
+
149 if (ctl.qnt_aoa >= 0)
+
150 for (ip = 0; ip < atm->np; ip++)
+
151 atm->q[ctl.qnt_aoa][ip] = atm->time[ip];
+
152
+
153 /* Save data... */
+
154 write_atm(argv[2], &ctl, atm, 0);
+
155
+
156 /* Free... */
+
157 gsl_rng_free(rng);
+
158 free(atm);
+
159
+
160 return EXIT_SUCCESS;
+
161}
+
int main(int argc, char *argv[])
Definition: atm_init.c:27
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
MPTRAC library declarations.
+
#define RE
Mean radius of Earth [km].
Definition: libtrac.h:143
+
#define DOTP(a, b)
Compute dot product of two vectors.
Definition: libtrac.h:303
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define NORM(a)
Compute norm of a vector.
Definition: libtrac.h:567
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
+
+ + + + diff --git a/doxygen/atm__select_8c.html b/doxygen/atm__select_8c.html new file mode 100644 index 0000000000..0c03373878 --- /dev/null +++ b/doxygen/atm__select_8c.html @@ -0,0 +1,322 @@ + + + + + + + +MPTRAC: atm_select.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
atm_select.c File Reference
+
+
+ +

Extract subsets of air parcels from atmospheric data files. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Extract subsets of air parcels from atmospheric data files.

+ +

Definition in file atm_select.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file atm_select.c.

+
29 {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm, *atm2;
+
34
+
35 double lat0, lat1, lon0, lon1, p0, p1, r, r0, r1, rlon, rlat, t0, t1, x0[3],
+
36 x1[3];
+
37
+
38 int f, ip, idx0, idx1, ip0, ip1, iq, stride;
+
39
+
40 /* Allocate... */
+
41 ALLOC(atm, atm_t, 1);
+
42 ALLOC(atm2, atm_t, 1);
+
43
+
44 /* Check arguments... */
+
45 if (argc < 4)
+
46 ERRMSG("Give parameters: <ctl> <atm_select> <atm1> [<atm2> ...]");
+
47
+
48 /* Read control parameters... */
+
49 read_ctl(argv[1], argc, argv, &ctl);
+
50 stride =
+
51 (int) scan_ctl(argv[1], argc, argv, "SELECT_STRIDE", -1, "1", NULL);
+
52 idx0 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IDX0", -1, "-999", NULL);
+
53 idx1 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IDX1", -1, "-999", NULL);
+
54 ip0 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IP0", -1, "-999", NULL);
+
55 ip1 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IP1", -1, "-999", NULL);
+
56 t0 = scan_ctl(argv[1], argc, argv, "SELECT_T0", -1, "0", NULL);
+
57 t1 = scan_ctl(argv[1], argc, argv, "SELECT_T1", -1, "0", NULL);
+
58 p0 = P(scan_ctl(argv[1], argc, argv, "SELECT_Z0", -1, "0", NULL));
+
59 p1 = P(scan_ctl(argv[1], argc, argv, "SELECT_Z1", -1, "0", NULL));
+
60 lon0 = scan_ctl(argv[1], argc, argv, "SELECT_LON0", -1, "0", NULL);
+
61 lon1 = scan_ctl(argv[1], argc, argv, "SELECT_LON1", -1, "0", NULL);
+
62 lat0 = scan_ctl(argv[1], argc, argv, "SELECT_LAT0", -1, "0", NULL);
+
63 lat1 = scan_ctl(argv[1], argc, argv, "SELECT_LAT1", -1, "0", NULL);
+
64 r0 = scan_ctl(argv[1], argc, argv, "SELECT_R0", -1, "0", NULL);
+
65 r1 = scan_ctl(argv[1], argc, argv, "SELECT_R1", -1, "0", NULL);
+
66 rlon = scan_ctl(argv[1], argc, argv, "SELECT_RLON", -1, "0", NULL);
+
67 rlat = scan_ctl(argv[1], argc, argv, "SELECT_RLAT", -1, "0", NULL);
+
68
+
69 /* Get Cartesian coordinates... */
+
70 geo2cart(0, rlon, rlat, x0);
+
71
+
72 /* Loop over files... */
+
73 for (f = 3; f < argc; f++) {
+
74
+
75 /* Read atmopheric data... */
+
76 if (!read_atm(argv[f], &ctl, atm))
+
77 continue;
+
78
+
79 /* Adjust range of air parcels... */
+
80 if (ip0 < 0)
+
81 ip0 = 0;
+
82 ip0 = GSL_MIN(ip0, atm->np - 1);
+
83 if (ip1 < 0)
+
84 ip1 = atm->np - 1;
+
85 ip1 = GSL_MIN(ip1, atm->np - 1);
+
86 if (ip1 < ip0)
+
87 ip1 = ip0;
+
88
+
89 /* Loop over air parcels... */
+
90 for (ip = ip0; ip <= ip1; ip += stride) {
+
91
+
92 /* Check air parcel index... */
+
93 if (ctl.qnt_idx >= 0 && idx0 >= 0 && idx1 >= 0)
+
94 if (atm->q[ctl.qnt_idx][ip] < idx0 || atm->q[ctl.qnt_idx][ip] > idx1)
+
95 continue;
+
96
+
97 /* Check time... */
+
98 if (t0 != t1)
+
99 if ((t1 > t0 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
100 || (t1 < t0 && (atm->time[ip] < t0 && atm->time[ip] > t1)))
+
101 continue;
+
102
+
103 /* Check vertical distance... */
+
104 if (p0 != p1)
+
105 if ((p0 > p1 && (atm->p[ip] > p0 || atm->p[ip] < p1))
+
106 || (p0 < p1 && (atm->p[ip] > p0 && atm->p[ip] < p1)))
+
107 continue;
+
108
+
109 /* Check longitude... */
+
110 if (lon0 != lon1)
+
111 if ((lon1 > lon0 && (atm->lon[ip] < lon0 || atm->lon[ip] > lon1))
+
112 || (lon1 < lon0 && (atm->lon[ip] < lon0 && atm->lon[ip] > lon1)))
+
113 continue;
+
114
+
115 /* Check latitude... */
+
116 if (lat0 != lat1)
+
117 if ((lat1 > lat0 && (atm->lat[ip] < lat0 || atm->lat[ip] > lat1))
+
118 || (lat1 < lat0 && (atm->lat[ip] < lat0 && atm->lat[ip] > lat1)))
+
119 continue;
+
120
+
121 /* Check horizontal distace... */
+
122 if (r0 != r1) {
+
123 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
124 r = DIST(x0, x1);
+
125 if ((r1 > r0 && (r < r0 || r > r1))
+
126 || (r1 < r0 && (r < r0 && r > r1)))
+
127 continue;
+
128 }
+
129
+
130 /* Copy data... */
+
131 atm2->time[atm2->np] = atm->time[ip];
+
132 atm2->p[atm2->np] = atm->p[ip];
+
133 atm2->lon[atm2->np] = atm->lon[ip];
+
134 atm2->lat[atm2->np] = atm->lat[ip];
+
135 for (iq = 0; iq < ctl.nq; iq++)
+
136 atm2->q[iq][atm2->np] = atm->q[iq][ip];
+
137 if ((++atm2->np) > NP)
+
138 ERRMSG("Too many air parcels!");
+
139 }
+
140 }
+
141
+
142 /* Close file... */
+
143 write_atm(argv[2], &ctl, atm2, 0);
+
144
+
145 /* Free... */
+
146 free(atm);
+
147 free(atm2);
+
148
+
149 return EXIT_SUCCESS;
+
150}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define DIST(a, b)
Compute Cartesian distance between two vectors.
Definition: libtrac.h:295
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/atm__select_8c.js b/doxygen/atm__select_8c.js new file mode 100644 index 0000000000..37809634cc --- /dev/null +++ b/doxygen/atm__select_8c.js @@ -0,0 +1,4 @@ +var atm__select_8c = +[ + [ "main", "atm__select_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..fce6ad46ff --- /dev/null +++ b/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..67600c8b31 --- /dev/null +++ b/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +999ed0a53d099546dbd62edad4c45a98 \ No newline at end of file diff --git a/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/atm__select_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..cf635aaacb9b7f97282467a504ca29e09ea79102 GIT binary patch literal 43089 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�UEM=W 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 + + + + + + +MPTRAC: atm_select.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
atm_select.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm, *atm2;
+
34
+
35 double lat0, lat1, lon0, lon1, p0, p1, r, r0, r1, rlon, rlat, t0, t1, x0[3],
+
36 x1[3];
+
37
+
38 int f, ip, idx0, idx1, ip0, ip1, iq, stride;
+
39
+
40 /* Allocate... */
+
41 ALLOC(atm, atm_t, 1);
+
42 ALLOC(atm2, atm_t, 1);
+
43
+
44 /* Check arguments... */
+
45 if (argc < 4)
+
46 ERRMSG("Give parameters: <ctl> <atm_select> <atm1> [<atm2> ...]");
+
47
+
48 /* Read control parameters... */
+
49 read_ctl(argv[1], argc, argv, &ctl);
+
50 stride =
+
51 (int) scan_ctl(argv[1], argc, argv, "SELECT_STRIDE", -1, "1", NULL);
+
52 idx0 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IDX0", -1, "-999", NULL);
+
53 idx1 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IDX1", -1, "-999", NULL);
+
54 ip0 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IP0", -1, "-999", NULL);
+
55 ip1 = (int) scan_ctl(argv[1], argc, argv, "SELECT_IP1", -1, "-999", NULL);
+
56 t0 = scan_ctl(argv[1], argc, argv, "SELECT_T0", -1, "0", NULL);
+
57 t1 = scan_ctl(argv[1], argc, argv, "SELECT_T1", -1, "0", NULL);
+
58 p0 = P(scan_ctl(argv[1], argc, argv, "SELECT_Z0", -1, "0", NULL));
+
59 p1 = P(scan_ctl(argv[1], argc, argv, "SELECT_Z1", -1, "0", NULL));
+
60 lon0 = scan_ctl(argv[1], argc, argv, "SELECT_LON0", -1, "0", NULL);
+
61 lon1 = scan_ctl(argv[1], argc, argv, "SELECT_LON1", -1, "0", NULL);
+
62 lat0 = scan_ctl(argv[1], argc, argv, "SELECT_LAT0", -1, "0", NULL);
+
63 lat1 = scan_ctl(argv[1], argc, argv, "SELECT_LAT1", -1, "0", NULL);
+
64 r0 = scan_ctl(argv[1], argc, argv, "SELECT_R0", -1, "0", NULL);
+
65 r1 = scan_ctl(argv[1], argc, argv, "SELECT_R1", -1, "0", NULL);
+
66 rlon = scan_ctl(argv[1], argc, argv, "SELECT_RLON", -1, "0", NULL);
+
67 rlat = scan_ctl(argv[1], argc, argv, "SELECT_RLAT", -1, "0", NULL);
+
68
+
69 /* Get Cartesian coordinates... */
+
70 geo2cart(0, rlon, rlat, x0);
+
71
+
72 /* Loop over files... */
+
73 for (f = 3; f < argc; f++) {
+
74
+
75 /* Read atmopheric data... */
+
76 if (!read_atm(argv[f], &ctl, atm))
+
77 continue;
+
78
+
79 /* Adjust range of air parcels... */
+
80 if (ip0 < 0)
+
81 ip0 = 0;
+
82 ip0 = GSL_MIN(ip0, atm->np - 1);
+
83 if (ip1 < 0)
+
84 ip1 = atm->np - 1;
+
85 ip1 = GSL_MIN(ip1, atm->np - 1);
+
86 if (ip1 < ip0)
+
87 ip1 = ip0;
+
88
+
89 /* Loop over air parcels... */
+
90 for (ip = ip0; ip <= ip1; ip += stride) {
+
91
+
92 /* Check air parcel index... */
+
93 if (ctl.qnt_idx >= 0 && idx0 >= 0 && idx1 >= 0)
+
94 if (atm->q[ctl.qnt_idx][ip] < idx0 || atm->q[ctl.qnt_idx][ip] > idx1)
+
95 continue;
+
96
+
97 /* Check time... */
+
98 if (t0 != t1)
+
99 if ((t1 > t0 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
100 || (t1 < t0 && (atm->time[ip] < t0 && atm->time[ip] > t1)))
+
101 continue;
+
102
+
103 /* Check vertical distance... */
+
104 if (p0 != p1)
+
105 if ((p0 > p1 && (atm->p[ip] > p0 || atm->p[ip] < p1))
+
106 || (p0 < p1 && (atm->p[ip] > p0 && atm->p[ip] < p1)))
+
107 continue;
+
108
+
109 /* Check longitude... */
+
110 if (lon0 != lon1)
+
111 if ((lon1 > lon0 && (atm->lon[ip] < lon0 || atm->lon[ip] > lon1))
+
112 || (lon1 < lon0 && (atm->lon[ip] < lon0 && atm->lon[ip] > lon1)))
+
113 continue;
+
114
+
115 /* Check latitude... */
+
116 if (lat0 != lat1)
+
117 if ((lat1 > lat0 && (atm->lat[ip] < lat0 || atm->lat[ip] > lat1))
+
118 || (lat1 < lat0 && (atm->lat[ip] < lat0 && atm->lat[ip] > lat1)))
+
119 continue;
+
120
+
121 /* Check horizontal distace... */
+
122 if (r0 != r1) {
+
123 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
124 r = DIST(x0, x1);
+
125 if ((r1 > r0 && (r < r0 || r > r1))
+
126 || (r1 < r0 && (r < r0 && r > r1)))
+
127 continue;
+
128 }
+
129
+
130 /* Copy data... */
+
131 atm2->time[atm2->np] = atm->time[ip];
+
132 atm2->p[atm2->np] = atm->p[ip];
+
133 atm2->lon[atm2->np] = atm->lon[ip];
+
134 atm2->lat[atm2->np] = atm->lat[ip];
+
135 for (iq = 0; iq < ctl.nq; iq++)
+
136 atm2->q[iq][atm2->np] = atm->q[iq][ip];
+
137 if ((++atm2->np) > NP)
+
138 ERRMSG("Too many air parcels!");
+
139 }
+
140 }
+
141
+
142 /* Close file... */
+
143 write_atm(argv[2], &ctl, atm2, 0);
+
144
+
145 /* Free... */
+
146 free(atm);
+
147 free(atm2);
+
148
+
149 return EXIT_SUCCESS;
+
150}
+
int main(int argc, char *argv[])
Definition: atm_select.c:27
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define DIST(a, b)
Compute Cartesian distance between two vectors.
Definition: libtrac.h:295
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+
+ + + + diff --git a/doxygen/atm__split_8c.html b/doxygen/atm__split_8c.html new file mode 100644 index 0000000000..b4ecb8e7f0 --- /dev/null +++ b/doxygen/atm__split_8c.html @@ -0,0 +1,316 @@ + + + + + + + +MPTRAC: atm_split.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
atm_split.c File Reference
+
+
+ +

Split air parcels into a larger set of parcels. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Split air parcels into a larger set of parcels.

+ +

Definition in file atm_split.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file atm_split.c.

+
29 {
+
30
+
31 atm_t *atm, *atm2;
+
32
+
33 ctl_t ctl;
+
34
+
35 gsl_rng *rng;
+
36
+
37 char kernel[LEN];
+
38
+
39 double dt, dx, dz, k, kw[EP], kz[EP], m, mmax = 0, mtot = 0, t0, t1,
+
40 z, z0, z1, lon0, lon1, lat0, lat1, zmin = 0, zmax = 0;
+
41
+
42 int i, ip, iq, n, nk = 0;
+
43
+
44 /* Allocate... */
+
45 ALLOC(atm, atm_t, 1);
+
46 ALLOC(atm2, atm_t, 1);
+
47
+
48 /* Check arguments... */
+
49 if (argc < 4)
+
50 ERRMSG("Give parameters: <ctl> <atm_in> <atm_out>");
+
51
+
52 /* Read control parameters... */
+
53 read_ctl(argv[1], argc, argv, &ctl);
+
54 n = (int) scan_ctl(argv[1], argc, argv, "SPLIT_N", -1, "", NULL);
+
55 m = scan_ctl(argv[1], argc, argv, "SPLIT_M", -1, "-999", NULL);
+
56 dt = scan_ctl(argv[1], argc, argv, "SPLIT_DT", -1, "0", NULL);
+
57 t0 = scan_ctl(argv[1], argc, argv, "SPLIT_T0", -1, "0", NULL);
+
58 t1 = scan_ctl(argv[1], argc, argv, "SPLIT_T1", -1, "0", NULL);
+
59 dz = scan_ctl(argv[1], argc, argv, "SPLIT_DZ", -1, "0", NULL);
+
60 z0 = scan_ctl(argv[1], argc, argv, "SPLIT_Z0", -1, "0", NULL);
+
61 z1 = scan_ctl(argv[1], argc, argv, "SPLIT_Z1", -1, "0", NULL);
+
62 dx = scan_ctl(argv[1], argc, argv, "SPLIT_DX", -1, "0", NULL);
+
63 lon0 = scan_ctl(argv[1], argc, argv, "SPLIT_LON0", -1, "0", NULL);
+
64 lon1 = scan_ctl(argv[1], argc, argv, "SPLIT_LON1", -1, "0", NULL);
+
65 lat0 = scan_ctl(argv[1], argc, argv, "SPLIT_LAT0", -1, "0", NULL);
+
66 lat1 = scan_ctl(argv[1], argc, argv, "SPLIT_LAT1", -1, "0", NULL);
+
67 scan_ctl(argv[1], argc, argv, "SPLIT_KERNEL", -1, "-", kernel);
+
68
+
69 /* Init random number generator... */
+
70 gsl_rng_env_setup();
+
71 rng = gsl_rng_alloc(gsl_rng_default);
+
72
+
73 /* Read atmospheric data... */
+
74 if (!read_atm(argv[2], &ctl, atm))
+
75 ERRMSG("Cannot open file!");
+
76
+
77 /* Read kernel function... */
+
78 if (kernel[0] != '-') {
+
79 read_kernel(kernel, kz, kw, &nk);
+
80 zmax = gsl_stats_max(kz, 1, (size_t) nk);
+
81 zmin = gsl_stats_min(kz, 1, (size_t) nk);
+
82 }
+
83
+
84 /* Get total and maximum mass... */
+
85 if (ctl.qnt_m >= 0)
+
86 for (ip = 0; ip < atm->np; ip++) {
+
87 mtot += atm->q[ctl.qnt_m][ip];
+
88 mmax = GSL_MAX(mmax, atm->q[ctl.qnt_m][ip]);
+
89 }
+
90 if (m > 0)
+
91 mtot = m;
+
92
+
93 /* Loop over air parcels... */
+
94 for (i = 0; i < n; i++) {
+
95
+
96 /* Select air parcel... */
+
97 if (ctl.qnt_m >= 0)
+
98 do {
+
99 ip = (int) gsl_rng_uniform_int(rng, (long unsigned int) atm->np);
+
100 } while (gsl_rng_uniform(rng) > atm->q[ctl.qnt_m][ip] / mmax);
+
101 else
+
102 ip = (int) gsl_rng_uniform_int(rng, (long unsigned int) atm->np);
+
103
+
104 /* Set time... */
+
105 if (t1 > t0)
+
106 atm2->time[atm2->np] = t0 + (t1 - t0) * gsl_rng_uniform_pos(rng);
+
107 else
+
108 atm2->time[atm2->np] = atm->time[ip]
+
109 + gsl_ran_gaussian_ziggurat(rng, dt / 2.3548);
+
110
+
111 /* Set vertical position... */
+
112 do {
+
113 if (nk > 0) {
+
114 do {
+
115 z = zmin + (zmax - zmin) * gsl_rng_uniform_pos(rng);
+
116 k = kernel_weight(kz, kw, nk, P(z));
+
117 } while (gsl_rng_uniform(rng) > k);
+
118 atm2->p[atm2->np] = P(z);
+
119 } else if (z1 > z0)
+
120 atm2->p[atm2->np] = P(z0 + (z1 - z0) * gsl_rng_uniform_pos(rng));
+
121 else
+
122 atm2->p[atm2->np] = atm->p[ip]
+
123 + DZ2DP(gsl_ran_gaussian_ziggurat(rng, dz / 2.3548), atm->p[ip]);
+
124 } while (atm2->p[atm2->np] < P(100.) || atm2->p[atm2->np] > P(-1.));
+
125
+
126 /* Set horizontal position... */
+
127 if (lon1 > lon0 && lat1 > lat0) {
+
128 atm2->lon[atm2->np] = lon0 + (lon1 - lon0) * gsl_rng_uniform_pos(rng);
+
129 atm2->lat[atm2->np] = lat0 + (lat1 - lat0) * gsl_rng_uniform_pos(rng);
+
130 } else {
+
131 atm2->lon[atm2->np] = atm->lon[ip]
+
132 + gsl_ran_gaussian_ziggurat(rng, DX2DEG(dx, atm->lat[ip]) / 2.3548);
+
133 atm2->lat[atm2->np] = atm->lat[ip]
+
134 + gsl_ran_gaussian_ziggurat(rng, DY2DEG(dx) / 2.3548);
+
135 }
+
136
+
137 /* Copy quantities... */
+
138 for (iq = 0; iq < ctl.nq; iq++)
+
139 atm2->q[iq][atm2->np] = atm->q[iq][ip];
+
140
+
141 /* Adjust mass... */
+
142 if (ctl.qnt_m >= 0)
+
143 atm2->q[ctl.qnt_m][atm2->np] = mtot / n;
+
144
+
145 /* Adjust air parcel index... */
+
146 if (ctl.qnt_idx >= 0)
+
147 atm2->q[ctl.qnt_idx][atm2->np] = atm2->np;
+
148
+
149 /* Increment particle counter... */
+
150 if ((++atm2->np) > NP)
+
151 ERRMSG("Too many air parcels!");
+
152 }
+
153
+
154 /* Save data and close file... */
+
155 write_atm(argv[3], &ctl, atm2, 0);
+
156
+
157 /* Free... */
+
158 free(atm);
+
159 free(atm2);
+
160
+
161 return EXIT_SUCCESS;
+
162}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk)
Read kernel data file.
Definition: libtrac.c:3058
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
double kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p)
Get weighting factor from kernel function.
Definition: libtrac.c:1515
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+
+
+
+
+ + + + diff --git a/doxygen/atm__split_8c.js b/doxygen/atm__split_8c.js new file mode 100644 index 0000000000..c29075d8d7 --- /dev/null +++ b/doxygen/atm__split_8c.js @@ -0,0 +1,4 @@ +var atm__split_8c = +[ + [ "main", "atm__split_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/atm__split_8c_source.html b/doxygen/atm__split_8c_source.html new file mode 100644 index 0000000000..63c94f4bcb --- /dev/null +++ b/doxygen/atm__split_8c_source.html @@ -0,0 +1,292 @@ + + + + + + + +MPTRAC: atm_split.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
atm_split.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 atm_t *atm, *atm2;
+
32
+
33 ctl_t ctl;
+
34
+
35 gsl_rng *rng;
+
36
+
37 char kernel[LEN];
+
38
+
39 double dt, dx, dz, k, kw[EP], kz[EP], m, mmax = 0, mtot = 0, t0, t1,
+
40 z, z0, z1, lon0, lon1, lat0, lat1, zmin = 0, zmax = 0;
+
41
+
42 int i, ip, iq, n, nk = 0;
+
43
+
44 /* Allocate... */
+
45 ALLOC(atm, atm_t, 1);
+
46 ALLOC(atm2, atm_t, 1);
+
47
+
48 /* Check arguments... */
+
49 if (argc < 4)
+
50 ERRMSG("Give parameters: <ctl> <atm_in> <atm_out>");
+
51
+
52 /* Read control parameters... */
+
53 read_ctl(argv[1], argc, argv, &ctl);
+
54 n = (int) scan_ctl(argv[1], argc, argv, "SPLIT_N", -1, "", NULL);
+
55 m = scan_ctl(argv[1], argc, argv, "SPLIT_M", -1, "-999", NULL);
+
56 dt = scan_ctl(argv[1], argc, argv, "SPLIT_DT", -1, "0", NULL);
+
57 t0 = scan_ctl(argv[1], argc, argv, "SPLIT_T0", -1, "0", NULL);
+
58 t1 = scan_ctl(argv[1], argc, argv, "SPLIT_T1", -1, "0", NULL);
+
59 dz = scan_ctl(argv[1], argc, argv, "SPLIT_DZ", -1, "0", NULL);
+
60 z0 = scan_ctl(argv[1], argc, argv, "SPLIT_Z0", -1, "0", NULL);
+
61 z1 = scan_ctl(argv[1], argc, argv, "SPLIT_Z1", -1, "0", NULL);
+
62 dx = scan_ctl(argv[1], argc, argv, "SPLIT_DX", -1, "0", NULL);
+
63 lon0 = scan_ctl(argv[1], argc, argv, "SPLIT_LON0", -1, "0", NULL);
+
64 lon1 = scan_ctl(argv[1], argc, argv, "SPLIT_LON1", -1, "0", NULL);
+
65 lat0 = scan_ctl(argv[1], argc, argv, "SPLIT_LAT0", -1, "0", NULL);
+
66 lat1 = scan_ctl(argv[1], argc, argv, "SPLIT_LAT1", -1, "0", NULL);
+
67 scan_ctl(argv[1], argc, argv, "SPLIT_KERNEL", -1, "-", kernel);
+
68
+
69 /* Init random number generator... */
+
70 gsl_rng_env_setup();
+
71 rng = gsl_rng_alloc(gsl_rng_default);
+
72
+
73 /* Read atmospheric data... */
+
74 if (!read_atm(argv[2], &ctl, atm))
+
75 ERRMSG("Cannot open file!");
+
76
+
77 /* Read kernel function... */
+
78 if (kernel[0] != '-') {
+
79 read_kernel(kernel, kz, kw, &nk);
+
80 zmax = gsl_stats_max(kz, 1, (size_t) nk);
+
81 zmin = gsl_stats_min(kz, 1, (size_t) nk);
+
82 }
+
83
+
84 /* Get total and maximum mass... */
+
85 if (ctl.qnt_m >= 0)
+
86 for (ip = 0; ip < atm->np; ip++) {
+
87 mtot += atm->q[ctl.qnt_m][ip];
+
88 mmax = GSL_MAX(mmax, atm->q[ctl.qnt_m][ip]);
+
89 }
+
90 if (m > 0)
+
91 mtot = m;
+
92
+
93 /* Loop over air parcels... */
+
94 for (i = 0; i < n; i++) {
+
95
+
96 /* Select air parcel... */
+
97 if (ctl.qnt_m >= 0)
+
98 do {
+
99 ip = (int) gsl_rng_uniform_int(rng, (long unsigned int) atm->np);
+
100 } while (gsl_rng_uniform(rng) > atm->q[ctl.qnt_m][ip] / mmax);
+
101 else
+
102 ip = (int) gsl_rng_uniform_int(rng, (long unsigned int) atm->np);
+
103
+
104 /* Set time... */
+
105 if (t1 > t0)
+
106 atm2->time[atm2->np] = t0 + (t1 - t0) * gsl_rng_uniform_pos(rng);
+
107 else
+
108 atm2->time[atm2->np] = atm->time[ip]
+
109 + gsl_ran_gaussian_ziggurat(rng, dt / 2.3548);
+
110
+
111 /* Set vertical position... */
+
112 do {
+
113 if (nk > 0) {
+
114 do {
+
115 z = zmin + (zmax - zmin) * gsl_rng_uniform_pos(rng);
+
116 k = kernel_weight(kz, kw, nk, P(z));
+
117 } while (gsl_rng_uniform(rng) > k);
+
118 atm2->p[atm2->np] = P(z);
+
119 } else if (z1 > z0)
+
120 atm2->p[atm2->np] = P(z0 + (z1 - z0) * gsl_rng_uniform_pos(rng));
+
121 else
+
122 atm2->p[atm2->np] = atm->p[ip]
+
123 + DZ2DP(gsl_ran_gaussian_ziggurat(rng, dz / 2.3548), atm->p[ip]);
+
124 } while (atm2->p[atm2->np] < P(100.) || atm2->p[atm2->np] > P(-1.));
+
125
+
126 /* Set horizontal position... */
+
127 if (lon1 > lon0 && lat1 > lat0) {
+
128 atm2->lon[atm2->np] = lon0 + (lon1 - lon0) * gsl_rng_uniform_pos(rng);
+
129 atm2->lat[atm2->np] = lat0 + (lat1 - lat0) * gsl_rng_uniform_pos(rng);
+
130 } else {
+
131 atm2->lon[atm2->np] = atm->lon[ip]
+
132 + gsl_ran_gaussian_ziggurat(rng, DX2DEG(dx, atm->lat[ip]) / 2.3548);
+
133 atm2->lat[atm2->np] = atm->lat[ip]
+
134 + gsl_ran_gaussian_ziggurat(rng, DY2DEG(dx) / 2.3548);
+
135 }
+
136
+
137 /* Copy quantities... */
+
138 for (iq = 0; iq < ctl.nq; iq++)
+
139 atm2->q[iq][atm2->np] = atm->q[iq][ip];
+
140
+
141 /* Adjust mass... */
+
142 if (ctl.qnt_m >= 0)
+
143 atm2->q[ctl.qnt_m][atm2->np] = mtot / n;
+
144
+
145 /* Adjust air parcel index... */
+
146 if (ctl.qnt_idx >= 0)
+
147 atm2->q[ctl.qnt_idx][atm2->np] = atm2->np;
+
148
+
149 /* Increment particle counter... */
+
150 if ((++atm2->np) > NP)
+
151 ERRMSG("Too many air parcels!");
+
152 }
+
153
+
154 /* Save data and close file... */
+
155 write_atm(argv[3], &ctl, atm2, 0);
+
156
+
157 /* Free... */
+
158 free(atm);
+
159 free(atm2);
+
160
+
161 return EXIT_SUCCESS;
+
162}
+
int main(int argc, char *argv[])
Definition: atm_split.c:27
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk)
Read kernel data file.
Definition: libtrac.c:3058
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
double kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p)
Get weighting factor from kernel function.
Definition: libtrac.c:1515
+
MPTRAC library declarations.
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+
+ + + + diff --git a/doxygen/atm__stat_8c.html b/doxygen/atm__stat_8c.html new file mode 100644 index 0000000000..c8e61d954f --- /dev/null +++ b/doxygen/atm__stat_8c.html @@ -0,0 +1,381 @@ + + + + + + + +MPTRAC: atm_stat.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
atm_stat.c File Reference
+
+
+ +

Calculate air parcel statistics. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Calculate air parcel statistics.

+ +

Definition in file atm_stat.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file atm_stat.c.

+
29 {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm, *atm_filt;
+
34
+
35 FILE *out;
+
36
+
37 double lat0, lat1, latm, lon0, lon1, lonm, p0, p1,
+
38 t, t0 = GSL_NAN, qm[NQ], *work, zm, *zs;
+
39
+
40 int ens, f, init = 0, ip, iq;
+
41
+
42 /* Allocate... */
+
43 ALLOC(atm, atm_t, 1);
+
44 ALLOC(atm_filt, atm_t, 1);
+
45 ALLOC(work, double,
+
46 NP);
+
47 ALLOC(zs, double,
+
48 NP);
+
49
+
50 /* Check arguments... */
+
51 if (argc < 4)
+
52 ERRMSG("Give parameters: <ctl> <stat.tab> <param> <atm1> [<atm2> ...]");
+
53
+
54 /* Read control parameters... */
+
55 read_ctl(argv[1], argc, argv, &ctl);
+
56 ens = (int) scan_ctl(argv[1], argc, argv, "STAT_ENS", -1, "-999", NULL);
+
57 p0 = P(scan_ctl(argv[1], argc, argv, "STAT_Z0", -1, "-1000", NULL));
+
58 p1 = P(scan_ctl(argv[1], argc, argv, "STAT_Z1", -1, "1000", NULL));
+
59 lat0 = scan_ctl(argv[1], argc, argv, "STAT_LAT0", -1, "-1000", NULL);
+
60 lat1 = scan_ctl(argv[1], argc, argv, "STAT_LAT1", -1, "1000", NULL);
+
61 lon0 = scan_ctl(argv[1], argc, argv, "STAT_LON0", -1, "-1000", NULL);
+
62 lon1 = scan_ctl(argv[1], argc, argv, "STAT_LON1", -1, "1000", NULL);
+
63
+
64 /* Write info... */
+
65 LOG(1, "Write air parcel statistics: %s", argv[2]);
+
66
+
67 /* Create output file... */
+
68 if (!(out = fopen(argv[2], "w")))
+
69 ERRMSG("Cannot create file!");
+
70
+
71 /* Write header... */
+
72 fprintf(out,
+
73 "# $1 = time [s]\n"
+
74 "# $2 = time difference [s]\n"
+
75 "# $3 = altitude (%s) [km]\n"
+
76 "# $4 = longitude (%s) [deg]\n"
+
77 "# $5 = latitude (%s) [deg]\n", argv[3], argv[3], argv[3]);
+
78 for (iq = 0; iq < ctl.nq; iq++)
+
79 fprintf(out, "# $%d = %s (%s) [%s]\n", iq + 6,
+
80 ctl.qnt_name[iq], argv[3], ctl.qnt_unit[iq]);
+
81 fprintf(out, "# $%d = number of particles\n\n", ctl.nq + 6);
+
82
+
83 /* Loop over files... */
+
84 for (f = 4; f < argc; f++) {
+
85
+
86 /* Read atmopheric data... */
+
87 if (!read_atm(argv[f], &ctl, atm))
+
88 continue;
+
89
+
90 /* Get time from filename... */
+
91 t = time_from_filename(argv[f], ctl.atm_type < 2 ? 20 : 19);
+
92
+
93 /* Save initial time... */
+
94 if (!init) {
+
95 init = 1;
+
96 t0 = t;
+
97 }
+
98
+
99 /* Filter data... */
+
100 atm_filt->np = 0;
+
101 for (ip = 0; ip < atm->np; ip++) {
+
102
+
103 /* Check time... */
+
104 if (!gsl_finite(atm->time[ip]))
+
105 continue;
+
106
+
107 /* Check ensemble index... */
+
108 if (ctl.qnt_ens > 0 && atm->q[ctl.qnt_ens][ip] != ens)
+
109 continue;
+
110
+
111 /* Check spatial range... */
+
112 if (atm->p[ip] > p0 || atm->p[ip] < p1
+
113 || atm->lon[ip] < lon0 || atm->lon[ip] > lon1
+
114 || atm->lat[ip] < lat0 || atm->lat[ip] > lat1)
+
115 continue;
+
116
+
117 /* Save data... */
+
118 atm_filt->time[atm_filt->np] = atm->time[ip];
+
119 atm_filt->p[atm_filt->np] = atm->p[ip];
+
120 atm_filt->lon[atm_filt->np] = atm->lon[ip];
+
121 atm_filt->lat[atm_filt->np] = atm->lat[ip];
+
122 for (iq = 0; iq < ctl.nq; iq++)
+
123 atm_filt->q[iq][atm_filt->np] = atm->q[iq][ip];
+
124 atm_filt->np++;
+
125 }
+
126
+
127 /* Get heights... */
+
128 for (ip = 0; ip < atm_filt->np; ip++)
+
129 zs[ip] = Z(atm_filt->p[ip]);
+
130
+
131 /* Get statistics... */
+
132 if (strcasecmp(argv[3], "mean") == 0) {
+
133 zm = gsl_stats_mean(zs, 1, (size_t) atm_filt->np);
+
134 lonm = gsl_stats_mean(atm_filt->lon, 1, (size_t) atm_filt->np);
+
135 latm = gsl_stats_mean(atm_filt->lat, 1, (size_t) atm_filt->np);
+
136 for (iq = 0; iq < ctl.nq; iq++)
+
137 qm[iq] = gsl_stats_mean(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
138 } else if (strcasecmp(argv[3], "stddev") == 0) {
+
139 zm = gsl_stats_sd(zs, 1, (size_t) atm_filt->np);
+
140 lonm = gsl_stats_sd(atm_filt->lon, 1, (size_t) atm_filt->np);
+
141 latm = gsl_stats_sd(atm_filt->lat, 1, (size_t) atm_filt->np);
+
142 for (iq = 0; iq < ctl.nq; iq++)
+
143 qm[iq] = gsl_stats_sd(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
144 } else if (strcasecmp(argv[3], "min") == 0) {
+
145 zm = gsl_stats_min(zs, 1, (size_t) atm_filt->np);
+
146 lonm = gsl_stats_min(atm_filt->lon, 1, (size_t) atm_filt->np);
+
147 latm = gsl_stats_min(atm_filt->lat, 1, (size_t) atm_filt->np);
+
148 for (iq = 0; iq < ctl.nq; iq++)
+
149 qm[iq] = gsl_stats_min(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
150 } else if (strcasecmp(argv[3], "max") == 0) {
+
151 zm = gsl_stats_max(zs, 1, (size_t) atm_filt->np);
+
152 lonm = gsl_stats_max(atm_filt->lon, 1, (size_t) atm_filt->np);
+
153 latm = gsl_stats_max(atm_filt->lat, 1, (size_t) atm_filt->np);
+
154 for (iq = 0; iq < ctl.nq; iq++)
+
155 qm[iq] = gsl_stats_max(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
156 } else if (strcasecmp(argv[3], "skew") == 0) {
+
157 zm = gsl_stats_skew(zs, 1, (size_t) atm_filt->np);
+
158 lonm = gsl_stats_skew(atm_filt->lon, 1, (size_t) atm_filt->np);
+
159 latm = gsl_stats_skew(atm_filt->lat, 1, (size_t) atm_filt->np);
+
160 for (iq = 0; iq < ctl.nq; iq++)
+
161 qm[iq] = gsl_stats_skew(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
162 } else if (strcasecmp(argv[3], "kurt") == 0) {
+
163 zm = gsl_stats_kurtosis(zs, 1, (size_t) atm_filt->np);
+
164 lonm = gsl_stats_kurtosis(atm_filt->lon, 1, (size_t) atm_filt->np);
+
165 latm = gsl_stats_kurtosis(atm_filt->lat, 1, (size_t) atm_filt->np);
+
166 for (iq = 0; iq < ctl.nq; iq++)
+
167 qm[iq] =
+
168 gsl_stats_kurtosis(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
169 } else if (strcasecmp(argv[3], "median") == 0) {
+
170 zm = gsl_stats_median(zs, 1, (size_t) atm_filt->np);
+
171 lonm = gsl_stats_median(atm_filt->lon, 1, (size_t) atm_filt->np);
+
172 latm = gsl_stats_median(atm_filt->lat, 1, (size_t) atm_filt->np);
+
173 for (iq = 0; iq < ctl.nq; iq++)
+
174 qm[iq] = gsl_stats_median(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
175 } else if (strcasecmp(argv[3], "absdev") == 0) {
+
176 zm = gsl_stats_absdev(zs, 1, (size_t) atm_filt->np);
+
177 lonm = gsl_stats_absdev(atm_filt->lon, 1, (size_t) atm_filt->np);
+
178 latm = gsl_stats_absdev(atm_filt->lat, 1, (size_t) atm_filt->np);
+
179 for (iq = 0; iq < ctl.nq; iq++)
+
180 qm[iq] = gsl_stats_absdev(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
181 } else if (strcasecmp(argv[3], "mad") == 0) {
+
182 zm = gsl_stats_mad0(zs, 1, (size_t) atm_filt->np, work);
+
183 lonm = gsl_stats_mad0(atm_filt->lon, 1, (size_t) atm_filt->np, work);
+
184 latm = gsl_stats_mad0(atm_filt->lat, 1, (size_t) atm_filt->np, work);
+
185 for (iq = 0; iq < ctl.nq; iq++)
+
186 qm[iq] =
+
187 gsl_stats_mad0(atm_filt->q[iq], 1, (size_t) atm_filt->np, work);
+
188 } else
+
189 ERRMSG("Unknown parameter!");
+
190
+
191 /* Write data... */
+
192 fprintf(out, "%.2f %.2f %g %g %g", t, t - t0, zm, lonm, latm);
+
193 for (iq = 0; iq < ctl.nq; iq++) {
+
194 fprintf(out, " ");
+
195 fprintf(out, ctl.qnt_format[iq], qm[iq]);
+
196 }
+
197 fprintf(out, " %d\n", atm_filt->np);
+
198 }
+
199
+
200 /* Close file... */
+
201 fclose(out);
+
202
+
203 /* Free... */
+
204 free(atm);
+
205 free(atm_filt);
+
206 free(work);
+
207 free(zs);
+
208
+
209 return EXIT_SUCCESS;
+
210}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/atm__stat_8c.js b/doxygen/atm__stat_8c.js new file mode 100644 index 0000000000..28389d76d2 --- /dev/null +++ b/doxygen/atm__stat_8c.js @@ -0,0 +1,4 @@ +var atm__stat_8c = +[ + [ "main", "atm__stat_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..c729da6ea3 --- /dev/null +++ b/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..43443721c8 --- /dev/null +++ b/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +7e40a64a946a84c0643522b7b0d8a0e9 \ No newline at end of file diff --git a/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/atm__stat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..6eca4360893fa982d276e5c66303a6024c90d0da GIT binary patch literal 25358 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 brkn3?N*Zr>io`#-VA9b%rBSSY?#llIQ5z}! literal 0 HcmV?d00001 diff --git a/doxygen/atm__stat_8c_source.html b/doxygen/atm__stat_8c_source.html new file mode 100644 index 0000000000..c9f79398df --- /dev/null +++ b/doxygen/atm__stat_8c_source.html @@ -0,0 +1,339 @@ + + + + + + + +MPTRAC: atm_stat.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
atm_stat.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 ctl_t ctl;
+
32
+
33 atm_t *atm, *atm_filt;
+
34
+
35 FILE *out;
+
36
+
37 double lat0, lat1, latm, lon0, lon1, lonm, p0, p1,
+
38 t, t0 = GSL_NAN, qm[NQ], *work, zm, *zs;
+
39
+
40 int ens, f, init = 0, ip, iq;
+
41
+
42 /* Allocate... */
+
43 ALLOC(atm, atm_t, 1);
+
44 ALLOC(atm_filt, atm_t, 1);
+
45 ALLOC(work, double,
+
46 NP);
+
47 ALLOC(zs, double,
+
48 NP);
+
49
+
50 /* Check arguments... */
+
51 if (argc < 4)
+
52 ERRMSG("Give parameters: <ctl> <stat.tab> <param> <atm1> [<atm2> ...]");
+
53
+
54 /* Read control parameters... */
+
55 read_ctl(argv[1], argc, argv, &ctl);
+
56 ens = (int) scan_ctl(argv[1], argc, argv, "STAT_ENS", -1, "-999", NULL);
+
57 p0 = P(scan_ctl(argv[1], argc, argv, "STAT_Z0", -1, "-1000", NULL));
+
58 p1 = P(scan_ctl(argv[1], argc, argv, "STAT_Z1", -1, "1000", NULL));
+
59 lat0 = scan_ctl(argv[1], argc, argv, "STAT_LAT0", -1, "-1000", NULL);
+
60 lat1 = scan_ctl(argv[1], argc, argv, "STAT_LAT1", -1, "1000", NULL);
+
61 lon0 = scan_ctl(argv[1], argc, argv, "STAT_LON0", -1, "-1000", NULL);
+
62 lon1 = scan_ctl(argv[1], argc, argv, "STAT_LON1", -1, "1000", NULL);
+
63
+
64 /* Write info... */
+
65 LOG(1, "Write air parcel statistics: %s", argv[2]);
+
66
+
67 /* Create output file... */
+
68 if (!(out = fopen(argv[2], "w")))
+
69 ERRMSG("Cannot create file!");
+
70
+
71 /* Write header... */
+
72 fprintf(out,
+
73 "# $1 = time [s]\n"
+
74 "# $2 = time difference [s]\n"
+
75 "# $3 = altitude (%s) [km]\n"
+
76 "# $4 = longitude (%s) [deg]\n"
+
77 "# $5 = latitude (%s) [deg]\n", argv[3], argv[3], argv[3]);
+
78 for (iq = 0; iq < ctl.nq; iq++)
+
79 fprintf(out, "# $%d = %s (%s) [%s]\n", iq + 6,
+
80 ctl.qnt_name[iq], argv[3], ctl.qnt_unit[iq]);
+
81 fprintf(out, "# $%d = number of particles\n\n", ctl.nq + 6);
+
82
+
83 /* Loop over files... */
+
84 for (f = 4; f < argc; f++) {
+
85
+
86 /* Read atmopheric data... */
+
87 if (!read_atm(argv[f], &ctl, atm))
+
88 continue;
+
89
+
90 /* Get time from filename... */
+
91 t = time_from_filename(argv[f], ctl.atm_type < 2 ? 20 : 19);
+
92
+
93 /* Save initial time... */
+
94 if (!init) {
+
95 init = 1;
+
96 t0 = t;
+
97 }
+
98
+
99 /* Filter data... */
+
100 atm_filt->np = 0;
+
101 for (ip = 0; ip < atm->np; ip++) {
+
102
+
103 /* Check time... */
+
104 if (!gsl_finite(atm->time[ip]))
+
105 continue;
+
106
+
107 /* Check ensemble index... */
+
108 if (ctl.qnt_ens > 0 && atm->q[ctl.qnt_ens][ip] != ens)
+
109 continue;
+
110
+
111 /* Check spatial range... */
+
112 if (atm->p[ip] > p0 || atm->p[ip] < p1
+
113 || atm->lon[ip] < lon0 || atm->lon[ip] > lon1
+
114 || atm->lat[ip] < lat0 || atm->lat[ip] > lat1)
+
115 continue;
+
116
+
117 /* Save data... */
+
118 atm_filt->time[atm_filt->np] = atm->time[ip];
+
119 atm_filt->p[atm_filt->np] = atm->p[ip];
+
120 atm_filt->lon[atm_filt->np] = atm->lon[ip];
+
121 atm_filt->lat[atm_filt->np] = atm->lat[ip];
+
122 for (iq = 0; iq < ctl.nq; iq++)
+
123 atm_filt->q[iq][atm_filt->np] = atm->q[iq][ip];
+
124 atm_filt->np++;
+
125 }
+
126
+
127 /* Get heights... */
+
128 for (ip = 0; ip < atm_filt->np; ip++)
+
129 zs[ip] = Z(atm_filt->p[ip]);
+
130
+
131 /* Get statistics... */
+
132 if (strcasecmp(argv[3], "mean") == 0) {
+
133 zm = gsl_stats_mean(zs, 1, (size_t) atm_filt->np);
+
134 lonm = gsl_stats_mean(atm_filt->lon, 1, (size_t) atm_filt->np);
+
135 latm = gsl_stats_mean(atm_filt->lat, 1, (size_t) atm_filt->np);
+
136 for (iq = 0; iq < ctl.nq; iq++)
+
137 qm[iq] = gsl_stats_mean(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
138 } else if (strcasecmp(argv[3], "stddev") == 0) {
+
139 zm = gsl_stats_sd(zs, 1, (size_t) atm_filt->np);
+
140 lonm = gsl_stats_sd(atm_filt->lon, 1, (size_t) atm_filt->np);
+
141 latm = gsl_stats_sd(atm_filt->lat, 1, (size_t) atm_filt->np);
+
142 for (iq = 0; iq < ctl.nq; iq++)
+
143 qm[iq] = gsl_stats_sd(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
144 } else if (strcasecmp(argv[3], "min") == 0) {
+
145 zm = gsl_stats_min(zs, 1, (size_t) atm_filt->np);
+
146 lonm = gsl_stats_min(atm_filt->lon, 1, (size_t) atm_filt->np);
+
147 latm = gsl_stats_min(atm_filt->lat, 1, (size_t) atm_filt->np);
+
148 for (iq = 0; iq < ctl.nq; iq++)
+
149 qm[iq] = gsl_stats_min(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
150 } else if (strcasecmp(argv[3], "max") == 0) {
+
151 zm = gsl_stats_max(zs, 1, (size_t) atm_filt->np);
+
152 lonm = gsl_stats_max(atm_filt->lon, 1, (size_t) atm_filt->np);
+
153 latm = gsl_stats_max(atm_filt->lat, 1, (size_t) atm_filt->np);
+
154 for (iq = 0; iq < ctl.nq; iq++)
+
155 qm[iq] = gsl_stats_max(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
156 } else if (strcasecmp(argv[3], "skew") == 0) {
+
157 zm = gsl_stats_skew(zs, 1, (size_t) atm_filt->np);
+
158 lonm = gsl_stats_skew(atm_filt->lon, 1, (size_t) atm_filt->np);
+
159 latm = gsl_stats_skew(atm_filt->lat, 1, (size_t) atm_filt->np);
+
160 for (iq = 0; iq < ctl.nq; iq++)
+
161 qm[iq] = gsl_stats_skew(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
162 } else if (strcasecmp(argv[3], "kurt") == 0) {
+
163 zm = gsl_stats_kurtosis(zs, 1, (size_t) atm_filt->np);
+
164 lonm = gsl_stats_kurtosis(atm_filt->lon, 1, (size_t) atm_filt->np);
+
165 latm = gsl_stats_kurtosis(atm_filt->lat, 1, (size_t) atm_filt->np);
+
166 for (iq = 0; iq < ctl.nq; iq++)
+
167 qm[iq] =
+
168 gsl_stats_kurtosis(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
169 } else if (strcasecmp(argv[3], "median") == 0) {
+
170 zm = gsl_stats_median(zs, 1, (size_t) atm_filt->np);
+
171 lonm = gsl_stats_median(atm_filt->lon, 1, (size_t) atm_filt->np);
+
172 latm = gsl_stats_median(atm_filt->lat, 1, (size_t) atm_filt->np);
+
173 for (iq = 0; iq < ctl.nq; iq++)
+
174 qm[iq] = gsl_stats_median(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
175 } else if (strcasecmp(argv[3], "absdev") == 0) {
+
176 zm = gsl_stats_absdev(zs, 1, (size_t) atm_filt->np);
+
177 lonm = gsl_stats_absdev(atm_filt->lon, 1, (size_t) atm_filt->np);
+
178 latm = gsl_stats_absdev(atm_filt->lat, 1, (size_t) atm_filt->np);
+
179 for (iq = 0; iq < ctl.nq; iq++)
+
180 qm[iq] = gsl_stats_absdev(atm_filt->q[iq], 1, (size_t) atm_filt->np);
+
181 } else if (strcasecmp(argv[3], "mad") == 0) {
+
182 zm = gsl_stats_mad0(zs, 1, (size_t) atm_filt->np, work);
+
183 lonm = gsl_stats_mad0(atm_filt->lon, 1, (size_t) atm_filt->np, work);
+
184 latm = gsl_stats_mad0(atm_filt->lat, 1, (size_t) atm_filt->np, work);
+
185 for (iq = 0; iq < ctl.nq; iq++)
+
186 qm[iq] =
+
187 gsl_stats_mad0(atm_filt->q[iq], 1, (size_t) atm_filt->np, work);
+
188 } else
+
189 ERRMSG("Unknown parameter!");
+
190
+
191 /* Write data... */
+
192 fprintf(out, "%.2f %.2f %g %g %g", t, t - t0, zm, lonm, latm);
+
193 for (iq = 0; iq < ctl.nq; iq++) {
+
194 fprintf(out, " ");
+
195 fprintf(out, ctl.qnt_format[iq], qm[iq]);
+
196 }
+
197 fprintf(out, " %d\n", atm_filt->np);
+
198 }
+
199
+
200 /* Close file... */
+
201 fclose(out);
+
202
+
203 /* Free... */
+
204 free(atm);
+
205 free(atm_filt);
+
206 free(work);
+
207 free(zs);
+
208
+
209 return EXIT_SUCCESS;
+
210}
+
int main(int argc, char *argv[])
Definition: atm_stat.c:27
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+
+ + + + diff --git a/doxygen/bc_s.png b/doxygen/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doxygen/bdwn.png b/doxygen/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +MPTRAC: cape.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
cape.c File Reference
+
+
+ +

Add CAPE data to netCDF file. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Add CAPE data to netCDF file.

+ +

Definition in file cape.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file cape.c.

+
29 {
+
30
+
31 ctl_t ctl;
+
32
+
33 clim_t *clim;
+
34
+
35 met_t *met;
+
36
+
37 char tstr[LEN];
+
38
+
39 float help[EX * EY];
+
40
+
41 int dims[10], ncid, varid;
+
42
+
43 size_t start[10], count[10];
+
44
+
45 /* Allocate... */
+
46 ALLOC(clim, clim_t, 1);
+
47 ALLOC(met, met_t, 1);
+
48
+
49 /* Check arguments... */
+
50 if (argc < 2)
+
51 ERRMSG("Give parameters: <ctl> <met.nc>");
+
52
+
53 /* Read control parameters... */
+
54 read_ctl(argv[1], argc, argv, &ctl);
+
55
+
56 /* Read climatological data... */
+
57 read_clim(&ctl, clim);
+
58
+
59 /* Read meteorological data... */
+
60 if (!read_met(argv[2], &ctl, clim, met))
+
61 ERRMSG("Cannot open file!");
+
62
+
63 /* Open netCDF file... */
+
64 if (nc_open(argv[2], NC_WRITE, &ncid) != NC_NOERR)
+
65 ERRMSG("Cannot open file!");
+
66
+
67 /* Get dimensions... */
+
68 NC_INQ_DIM("time", &dims[0], 1, 1);
+
69 NC_INQ_DIM("lat", &dims[1], met->ny, met->ny);
+
70 NC_INQ_DIM("lon", &dims[2], met->nx - 1, met->nx - 1);
+
71 NC(nc_inq_dimid(ncid, "time", &dims[0]));
+
72 NC(nc_inq_dimid(ncid, "lat", &dims[1]));
+
73 NC(nc_inq_dimid(ncid, "lon", &dims[2]));
+
74
+
75 /* Set define mode... */
+
76 NC(nc_redef(ncid));
+
77
+
78 /* Create variables... */
+
79 NC_DEF_VAR("CAPE_MPT", NC_FLOAT, 3, dims,
+
80 "convective available potential energy", "J kg**-1");
+
81 NC_DEF_VAR("CIN_MPT", NC_FLOAT, 3, dims,
+
82 "convective inhibition", "J kg**-1");
+
83 NC_DEF_VAR("PEL_MPT", NC_FLOAT, 3, dims,
+
84 "pressure at equilibrium level", "hPa");
+
85
+
86 /* Get current time... */
+
87 time_t t = time(NULL);
+
88 struct tm tm = *localtime(&t);
+
89 sprintf(tstr, "%d-%02d-%02d %02d:%02d:%02d",
+
90 tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+
91 tm.tm_hour, tm.tm_min, tm.tm_sec);
+
92
+
93 /* Set additional attributes... */
+
94 NC_PUT_ATT("CAPE_MPT", "creator_of_parameter", "MPTRAC");
+
95 NC_PUT_ATT("CIN_MPT", "creator_of_parameter", "MPTRAC");
+
96 NC_PUT_ATT("PEL_MPT", "creator_of_parameter", "MPTRAC");
+
97
+
98 NC_PUT_ATT("CAPE_MPT", "param_creation_time", tstr);
+
99 NC_PUT_ATT("CIN_MPT", "param_creation_time", tstr);
+
100 NC_PUT_ATT("PEL_MPT", "param_creation_time", tstr);
+
101
+
102 NC_PUT_ATT("CAPE_MPT", "param_modification_time", tstr);
+
103 NC_PUT_ATT("CIN_MPT", "param_modification_time", tstr);
+
104 NC_PUT_ATT("PEL_MPT", "param_modification_time", tstr);
+
105
+
106 NC_PUT_ATT("CAPE_MPT", "flag", "NONE");
+
107 NC_PUT_ATT("CIN_MPT", "flag", "NONE");
+
108 NC_PUT_ATT("PEL_MPT", "flag", "NONE");
+
109
+
110 float miss[1] = { GSL_NAN };
+
111 NC(nc_inq_varid(ncid, "CAPE_MPT", &varid));
+
112 NC(nc_put_att_float(ncid, varid, "missing_value", NC_FLOAT, 1, miss));
+
113 NC(nc_inq_varid(ncid, "CIN_MPT", &varid));
+
114 NC(nc_put_att_float(ncid, varid, "missing_value", NC_FLOAT, 1, miss));
+
115 NC(nc_inq_varid(ncid, "PEL_MPT", &varid));
+
116 NC(nc_put_att_float(ncid, varid, "missing_value", NC_FLOAT, 1, miss));
+
117
+
118 /* End define mode... */
+
119 NC(nc_enddef(ncid));
+
120
+
121 /* Write data... */
+
122 for (int ix = 0; ix < met->nx - 1; ix++)
+
123 for (int iy = 0; iy < met->ny; iy++)
+
124 help[ARRAY_2D(iy, ix, met->nx - 1)] = met->cape[ix][iy];
+
125 NC_PUT_FLOAT("CAPE_MPT", help, 0);
+
126
+
127 for (int ix = 0; ix < met->nx - 1; ix++)
+
128 for (int iy = 0; iy < met->ny; iy++)
+
129 help[ARRAY_2D(iy, ix, met->nx - 1)] = met->cin[ix][iy];
+
130 NC_PUT_FLOAT("CIN_MPT", help, 0);
+
131
+
132 for (int ix = 0; ix < met->nx - 1; ix++)
+
133 for (int iy = 0; iy < met->ny; iy++)
+
134 help[ARRAY_2D(iy, ix, met->nx - 1)] = met->pel[ix][iy];
+
135 NC_PUT_FLOAT("PEL_MPT", help, 0);
+
136
+
137 /* Close file... */
+
138 NC(nc_close(ncid));
+
139
+
140 /* Free... */
+
141 free(clim);
+
142 free(met);
+
143
+
144 return EXIT_SUCCESS;
+
145}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define ARRAY_2D(ix, iy, ny)
Get 2-D array index.
Definition: libtrac.h:258
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define NC_PUT_ATT(varname, attname, text)
Set netCDF attribute.
Definition: libtrac.h:543
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define NC_PUT_FLOAT(varname, ptr, hyperslab)
Write netCDF float array.
Definition: libtrac.h:553
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
float cape[EX][EY]
Convective available potential energy [J/kg].
Definition: libtrac.h:1912
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float pel[EX][EY]
Pressure at equilibrium level [hPa].
Definition: libtrac.h:1909
+
float cin[EX][EY]
Convective inhibition [J/kg].
Definition: libtrac.h:1915
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/cape_8c.js b/doxygen/cape_8c.js new file mode 100644 index 0000000000..a42bd1ed68 --- /dev/null +++ b/doxygen/cape_8c.js @@ -0,0 +1,4 @@ +var cape_8c = +[ + [ "main", "cape_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..15572fe86a --- /dev/null +++ b/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..ace2884ec1 --- /dev/null +++ b/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +e91ea868addde5c74e0de66560b97912 \ No newline at end of file diff --git a/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/cape_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e136d66fa0547d0c75b64faaf8623dbd50594f GIT binary patch literal 142433 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 + + + + + + +MPTRAC: cape.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
cape.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 ctl_t ctl;
+
32
+
33 clim_t *clim;
+
34
+
35 met_t *met;
+
36
+
37 char tstr[LEN];
+
38
+
39 float help[EX * EY];
+
40
+
41 int dims[10], ncid, varid;
+
42
+
43 size_t start[10], count[10];
+
44
+
45 /* Allocate... */
+
46 ALLOC(clim, clim_t, 1);
+
47 ALLOC(met, met_t, 1);
+
48
+
49 /* Check arguments... */
+
50 if (argc < 2)
+
51 ERRMSG("Give parameters: <ctl> <met.nc>");
+
52
+
53 /* Read control parameters... */
+
54 read_ctl(argv[1], argc, argv, &ctl);
+
55
+
56 /* Read climatological data... */
+
57 read_clim(&ctl, clim);
+
58
+
59 /* Read meteorological data... */
+
60 if (!read_met(argv[2], &ctl, clim, met))
+
61 ERRMSG("Cannot open file!");
+
62
+
63 /* Open netCDF file... */
+
64 if (nc_open(argv[2], NC_WRITE, &ncid) != NC_NOERR)
+
65 ERRMSG("Cannot open file!");
+
66
+
67 /* Get dimensions... */
+
68 NC_INQ_DIM("time", &dims[0], 1, 1);
+
69 NC_INQ_DIM("lat", &dims[1], met->ny, met->ny);
+
70 NC_INQ_DIM("lon", &dims[2], met->nx - 1, met->nx - 1);
+
71 NC(nc_inq_dimid(ncid, "time", &dims[0]));
+
72 NC(nc_inq_dimid(ncid, "lat", &dims[1]));
+
73 NC(nc_inq_dimid(ncid, "lon", &dims[2]));
+
74
+
75 /* Set define mode... */
+
76 NC(nc_redef(ncid));
+
77
+
78 /* Create variables... */
+
79 NC_DEF_VAR("CAPE_MPT", NC_FLOAT, 3, dims,
+
80 "convective available potential energy", "J kg**-1");
+
81 NC_DEF_VAR("CIN_MPT", NC_FLOAT, 3, dims,
+
82 "convective inhibition", "J kg**-1");
+
83 NC_DEF_VAR("PEL_MPT", NC_FLOAT, 3, dims,
+
84 "pressure at equilibrium level", "hPa");
+
85
+
86 /* Get current time... */
+
87 time_t t = time(NULL);
+
88 struct tm tm = *localtime(&t);
+
89 sprintf(tstr, "%d-%02d-%02d %02d:%02d:%02d",
+
90 tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+
91 tm.tm_hour, tm.tm_min, tm.tm_sec);
+
92
+
93 /* Set additional attributes... */
+
94 NC_PUT_ATT("CAPE_MPT", "creator_of_parameter", "MPTRAC");
+
95 NC_PUT_ATT("CIN_MPT", "creator_of_parameter", "MPTRAC");
+
96 NC_PUT_ATT("PEL_MPT", "creator_of_parameter", "MPTRAC");
+
97
+
98 NC_PUT_ATT("CAPE_MPT", "param_creation_time", tstr);
+
99 NC_PUT_ATT("CIN_MPT", "param_creation_time", tstr);
+
100 NC_PUT_ATT("PEL_MPT", "param_creation_time", tstr);
+
101
+
102 NC_PUT_ATT("CAPE_MPT", "param_modification_time", tstr);
+
103 NC_PUT_ATT("CIN_MPT", "param_modification_time", tstr);
+
104 NC_PUT_ATT("PEL_MPT", "param_modification_time", tstr);
+
105
+
106 NC_PUT_ATT("CAPE_MPT", "flag", "NONE");
+
107 NC_PUT_ATT("CIN_MPT", "flag", "NONE");
+
108 NC_PUT_ATT("PEL_MPT", "flag", "NONE");
+
109
+
110 float miss[1] = { GSL_NAN };
+
111 NC(nc_inq_varid(ncid, "CAPE_MPT", &varid));
+
112 NC(nc_put_att_float(ncid, varid, "missing_value", NC_FLOAT, 1, miss));
+
113 NC(nc_inq_varid(ncid, "CIN_MPT", &varid));
+
114 NC(nc_put_att_float(ncid, varid, "missing_value", NC_FLOAT, 1, miss));
+
115 NC(nc_inq_varid(ncid, "PEL_MPT", &varid));
+
116 NC(nc_put_att_float(ncid, varid, "missing_value", NC_FLOAT, 1, miss));
+
117
+
118 /* End define mode... */
+
119 NC(nc_enddef(ncid));
+
120
+
121 /* Write data... */
+
122 for (int ix = 0; ix < met->nx - 1; ix++)
+
123 for (int iy = 0; iy < met->ny; iy++)
+
124 help[ARRAY_2D(iy, ix, met->nx - 1)] = met->cape[ix][iy];
+
125 NC_PUT_FLOAT("CAPE_MPT", help, 0);
+
126
+
127 for (int ix = 0; ix < met->nx - 1; ix++)
+
128 for (int iy = 0; iy < met->ny; iy++)
+
129 help[ARRAY_2D(iy, ix, met->nx - 1)] = met->cin[ix][iy];
+
130 NC_PUT_FLOAT("CIN_MPT", help, 0);
+
131
+
132 for (int ix = 0; ix < met->nx - 1; ix++)
+
133 for (int iy = 0; iy < met->ny; iy++)
+
134 help[ARRAY_2D(iy, ix, met->nx - 1)] = met->pel[ix][iy];
+
135 NC_PUT_FLOAT("PEL_MPT", help, 0);
+
136
+
137 /* Close file... */
+
138 NC(nc_close(ncid));
+
139
+
140 /* Free... */
+
141 free(clim);
+
142 free(met);
+
143
+
144 return EXIT_SUCCESS;
+
145}
+
int main(int argc, char *argv[])
Definition: cape.c:27
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define ARRAY_2D(ix, iy, ny)
Get 2-D array index.
Definition: libtrac.h:258
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define NC_PUT_ATT(varname, attname, text)
Set netCDF attribute.
Definition: libtrac.h:543
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define NC_PUT_FLOAT(varname, ptr, hyperslab)
Write netCDF float array.
Definition: libtrac.h:553
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
float cape[EX][EY]
Convective available potential energy [J/kg].
Definition: libtrac.h:1912
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float pel[EX][EY]
Pressure at equilibrium level [hPa].
Definition: libtrac.h:1909
+
float cin[EX][EY]
Convective inhibition [J/kg].
Definition: libtrac.h:1915
+
+
+ + + + diff --git a/doxygen/classes.html b/doxygen/classes.html new file mode 100644 index 0000000000..bdf336c2e2 --- /dev/null +++ b/doxygen/classes.html @@ -0,0 +1,118 @@ + + + + + + + +MPTRAC: Data Structure Index + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Data Structure Index
+
+ +
+ + + + diff --git a/doxygen/closed.png b/doxygen/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doxygen/day2doy_8c.html b/doxygen/day2doy_8c.html new file mode 100644 index 0000000000..f8b4c4d19f --- /dev/null +++ b/doxygen/day2doy_8c.html @@ -0,0 +1,186 @@ + + + + + + + +MPTRAC: day2doy.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
day2doy.c File Reference
+
+
+ +

Convert date to day of year. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Convert date to day of year.

+ +

Definition in file day2doy.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file day2doy.c.

+
29 {
+
30
+
31 int day, doy, mon, year;
+
32
+
33 /* Check arguments... */
+
34 if (argc < 4)
+
35 ERRMSG("Give parameters: <year> <mon> <day>");
+
36
+
37 /* Read arguments... */
+
38 year = atoi(argv[1]);
+
39 mon = atoi(argv[2]);
+
40 day = atoi(argv[3]);
+
41
+
42 /* Convert... */
+
43 day2doy(year, mon, day, &doy);
+
44 printf("%d %d\n", year, doy);
+
45
+
46 return EXIT_SUCCESS;
+
47}
+
void day2doy(const int year, const int mon, const int day, int *doy)
Compress or decompress array with zfp.
Definition: libtrac.c:654
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/day2doy_8c.js b/doxygen/day2doy_8c.js new file mode 100644 index 0000000000..e91dabc337 --- /dev/null +++ b/doxygen/day2doy_8c.js @@ -0,0 +1,4 @@ +var day2doy_8c = +[ + [ "main", "day2doy_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..7fc9234dae --- /dev/null +++ b/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..afc5f4cf7b --- /dev/null +++ b/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +a4cd50bf0c1f1474ecba6a9d1aeb73a3 \ No newline at end of file diff --git a/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/day2doy_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b8bd6b8667a984341780d9b83a6962b5539168 GIT binary patch literal 2074 zcmV+#2<7*QP)sR6K=nez|dlAAca2Z0F1ujDf zv%qC|e!RhCGEq=a;D}ykMRasD$BrFybQ{xBP*8x$WO8&HPN|}z;*)Kkgt@)F9fQHZ zh7B9$q^a4|(9q!M7G}g`GErMwOH@>pqg!zrX0w^v+S+mVeG=v|IXOAA)z6%9g})&x zDr(%b(EqFQ@^aGB(#G8<%$Wr)LkP3LWe8ywxC|l80+-=5VeaVYVC&Ycj&8%{EMLAH zqtWPcwZ`K#VGaxoq`JD=(QV9%-+%u%85w`WV5sMhKi)aIohi9`^(soG5~)eZ{c zckiB~Tbj^>OLGGI86CB9_wF<9-u)LMkvnm55$xKvnoXPjgjnpnFM-i$ZznA+jr#g}^7HdaNJv1f zR`cY^6Wj5nrKO~%rVnR#jDzl$1n5LINcvB{OZ+30SdM zM!0k5H}>xRJK^D{Ieb{hFTec8@bKu&N4HwJaNz<=mMmexf(0Boa)i;*_u~!>44~0y zSh#Q@-rnBC#>Udn(7@2p5HgvJ$B!S|#yNZTENZoyJ9qAon3%}MjT@0lrR>|ckKo{7 z9zJ|HX)UYON`8Jm3WWk+Uti+m<7sbipR|@e*kzj0*x1PY`SURt48+F9a`NO!lu9Lf zy`IR(NJ>jf0cdJ!La*0z@!~~p-@c7nt)B3s^XJc>)6vm^PNyR`Hm+B_$Ut4 zct2feX=$OMp@Ek#UlJZ3PEJk^VzHR`_;{+Ss%+!v^?KB5HRsQtN2k--w!eDy3bWbF z(xpo$tyNZ5#^uYGF>Awzd)+985||%A~dI!7gEzN~NTwr6G|>h>3|oE|;@&=T0ON z3DMEf^!4=tpj0ZkdGjWrp`nOGBK-XPc>DJ4xMNx@7WVJok5npU<;s=F<#OJ+9+5?Pc@k%^!?yG#XjIem%Q(?PBfPwUgGm ze*HQpPMl!Xs#VBjGV=5DdHVDzjg5_8RBO8IGGUWQB(~q(+}!Z?_Wt1Un0N2qq1Wqq z^ym@o?d=2v1WY)lOeRAt{_l(VzvE0rON%c70Y|6x+_^S3)#&biOL6f(fJJzF4{`r~ zBj0}?_Sxrmc6OpvDs7K_e0=cp^8=u*t&K~UE@3j6Fq_S`=>b4oTpSr088kLFa^uDg zR4NrBkqCHyHqOkkOc!c2K zg;=ev$mIiH6l8#)pdgx?n{AK#`}^tc?gk(uBZH8T5Og{nVPRqDbUNF0h?kcaJ9g}# zva*u$@^ag>u&1Yon3xz66BB7}ZvNn;HCe5|z(87CTW$LW2M6iw>?9x{V8UAVFsEU5 zcXvl7li~00Pj`1WMMXtetybGKWHv~p7UJV0XKnm1(bo2A()}Wl2Nuf+-+Ut_Dd}6{ zod-mYti{S$EF>~A60KG{rCJ(|hBIf*5E~myXlN*>PoE|tB7$Yh zmH~`g%O2)*ojEx&f&v{Nl8f|I5-%wSj?tPn*h*iwNzDA5fl`}xpU{xYPGz0 z@q)a(JOH+A*}~A!5b5dZw%R6>34_6ao15DQKL&$g(pqY@nnQ;Uk(``NNJt3n?d?=n zR@%lLua-Tyef;0qW4G8j^WylI%E`$=E|)v}7Rt7^SH#3zz}?*qtJR8F?8%lbeXP@P#*-%_u>=Lz{=0+odV5WpH3tWZ}W`WBP!YptZ6J7w; z)YQyj8?&RQrw6%Q?&vmV#B4TGUS96#Hk`&}Uy3tfm~(S;XQi3B79Jk%=oV(AwzhV{ z?}-q6=#x(X1%j`X@cqmJ*CB*i;4*|T3tWZ}W`WE25AN#{a!=y)hyVZp07*qoM6N<$ Ef?H4 + + + + + + +MPTRAC: day2doy.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
day2doy.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2019 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 int day, doy, mon, year;
+
32
+
33 /* Check arguments... */
+
34 if (argc < 4)
+
35 ERRMSG("Give parameters: <year> <mon> <day>");
+
36
+
37 /* Read arguments... */
+
38 year = atoi(argv[1]);
+
39 mon = atoi(argv[2]);
+
40 day = atoi(argv[3]);
+
41
+
42 /* Convert... */
+
43 day2doy(year, mon, day, &doy);
+
44 printf("%d %d\n", year, doy);
+
45
+
46 return EXIT_SUCCESS;
+
47}
+
int main(int argc, char *argv[])
Definition: day2doy.c:27
+
void day2doy(const int year, const int mon, const int day, int *doy)
Compress or decompress array with zfp.
Definition: libtrac.c:654
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+
+ + + + diff --git a/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000000..e53aaab46e --- /dev/null +++ b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,195 @@ + + + + + + + +MPTRAC: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  atm_conv.c [code]
 Convert file format of air parcel data files.
 
file  atm_dist.c [code]
 Calculate transport deviations of trajectories.
 
file  atm_init.c [code]
 Create atmospheric data file with initial air parcel positions.
 
file  atm_select.c [code]
 Extract subsets of air parcels from atmospheric data files.
 
file  atm_split.c [code]
 Split air parcels into a larger set of parcels.
 
file  atm_stat.c [code]
 Calculate air parcel statistics.
 
file  cape.c [code]
 Add CAPE data to netCDF file.
 
file  day2doy.c [code]
 Convert date to day of year.
 
file  doy2day.c [code]
 Convert day of year to date.
 
file  jsec2time.c [code]
 Convert Julian seconds to date.
 
file  libtrac.c [code]
 MPTRAC library definitions.
 
file  libtrac.h [code]
 MPTRAC library declarations.
 
file  met_conv.c [code]
 Convert file format of meteo data files.
 
file  met_lapse.c [code]
 Calculate lapse rate statistics.
 
file  met_map.c [code]
 Extract map from meteorological data.
 
file  met_prof.c [code]
 Extract vertical profile from meteorological data.
 
file  met_sample.c [code]
 Sample meteorological data at given geolocations.
 
file  met_spec.c [code]
 Spectral analysis of meteorological data.
 
file  met_subgrid.c [code]
 Calculate standard deviations of horizontal wind and vertical velocity.
 
file  met_zm.c [code]
 Extract zonal mean from meteorological data.
 
file  sedi.c [code]
 Calculate sedimentation velocity.
 
file  time2jsec.c [code]
 Convert date to Julian seconds.
 
file  tnat.c [code]
 Calculate PSC temperatures.
 
file  trac.c [code]
 Lagrangian particle dispersion model.
 
file  tropo.c [code]
 Create tropopause data set from meteorological data.
 
file  tropo_sample.c [code]
 Sample tropopause data set.
 
file  tropo_zm.c [code]
 Extract zonal mean of tropopause data set.
 
file  wind.c [code]
 Create meteorological data files with synthetic wind fields.
 
+
+
+ + + + diff --git a/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000000..edce0f062f --- /dev/null +++ b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,31 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "atm_conv.c", "atm__conv_8c.html", "atm__conv_8c" ], + [ "atm_dist.c", "atm__dist_8c.html", "atm__dist_8c" ], + [ "atm_init.c", "atm__init_8c.html", "atm__init_8c" ], + [ "atm_select.c", "atm__select_8c.html", "atm__select_8c" ], + [ "atm_split.c", "atm__split_8c.html", "atm__split_8c" ], + [ "atm_stat.c", "atm__stat_8c.html", "atm__stat_8c" ], + [ "cape.c", "cape_8c.html", "cape_8c" ], + [ "day2doy.c", "day2doy_8c.html", "day2doy_8c" ], + [ "doy2day.c", "doy2day_8c.html", "doy2day_8c" ], + [ "jsec2time.c", "jsec2time_8c.html", "jsec2time_8c" ], + [ "libtrac.c", "libtrac_8c.html", "libtrac_8c" ], + [ "libtrac.h", "libtrac_8h.html", "libtrac_8h" ], + [ "met_conv.c", "met__conv_8c.html", "met__conv_8c" ], + [ "met_lapse.c", "met__lapse_8c.html", "met__lapse_8c" ], + [ "met_map.c", "met__map_8c.html", "met__map_8c" ], + [ "met_prof.c", "met__prof_8c.html", "met__prof_8c" ], + [ "met_sample.c", "met__sample_8c.html", "met__sample_8c" ], + [ "met_spec.c", "met__spec_8c.html", "met__spec_8c" ], + [ "met_subgrid.c", "met__subgrid_8c.html", "met__subgrid_8c" ], + [ "met_zm.c", "met__zm_8c.html", "met__zm_8c" ], + [ "sedi.c", "sedi_8c.html", "sedi_8c" ], + [ "time2jsec.c", "time2jsec_8c.html", "time2jsec_8c" ], + [ "tnat.c", "tnat_8c.html", "tnat_8c" ], + [ "trac.c", "trac_8c.html", "trac_8c" ], + [ "tropo.c", "tropo_8c.html", "tropo_8c" ], + [ "tropo_sample.c", "tropo__sample_8c.html", "tropo__sample_8c" ], + [ "tropo_zm.c", "tropo__zm_8c.html", "tropo__zm_8c" ], + [ "wind.c", "wind_8c.html", "wind_8c" ] +]; \ No newline at end of file diff --git a/doxygen/doc.png b/doxygen/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen/doxygen.css b/doxygen/doxygen.css new file mode 100644 index 0000000000..2010785cd8 --- /dev/null +++ b/doxygen/doxygen.css @@ -0,0 +1,1841 @@ +/* The standard CSS for doxygen 1.9.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font: 200% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 90% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +code.JavaDocCode { + direction:ltr; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen/doxygen.svg b/doxygen/doxygen.svg new file mode 100644 index 0000000000..d42dad52d5 --- /dev/null +++ b/doxygen/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/doy2day_8c.html b/doxygen/doy2day_8c.html new file mode 100644 index 0000000000..41500616e8 --- /dev/null +++ b/doxygen/doy2day_8c.html @@ -0,0 +1,185 @@ + + + + + + + +MPTRAC: doy2day.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
doy2day.c File Reference
+
+
+ +

Convert day of year to date. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Convert day of year to date.

+ +

Definition in file doy2day.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file doy2day.c.

+
29 {
+
30
+
31 int day, doy, mon, year;
+
32
+
33 /* Check arguments... */
+
34 if (argc < 3)
+
35 ERRMSG("Give parameters: <year> <doy>");
+
36
+
37 /* Read arguments... */
+
38 year = atoi(argv[1]);
+
39 doy = atoi(argv[2]);
+
40
+
41 /* Convert... */
+
42 doy2day(year, doy, &mon, &day);
+
43 printf("%d %d %d\n", year, mon, day);
+
44
+
45 return EXIT_SUCCESS;
+
46}
+
void doy2day(const int year, const int doy, int *mon, int *day)
Get date from day of year.
Definition: libtrac.c:673
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/doy2day_8c.js b/doxygen/doy2day_8c.js new file mode 100644 index 0000000000..c9b7d69008 --- /dev/null +++ b/doxygen/doy2day_8c.js @@ -0,0 +1,4 @@ +var doy2day_8c = +[ + [ "main", "doy2day_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..690ed97eef --- /dev/null +++ b/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..66e875b6f7 --- /dev/null +++ b/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +d92923d3e1cc5618edd622487b82db98 \ No newline at end of file diff --git a/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/doy2day_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..62a0f9d099d780066adf2cf680612550c61640f1 GIT binary patch literal 2066 zcmV+t2<`WYP)ujgD?%Mhpf6_4V~cMn*ci6{le~o2jp_A9vp;VIHGat7og9IpYd{Lu6#+ zxL2Y7SCy5Oq@|^eyHA)i3tWZ}W`WBP!YptZLYM_E!)e0Y(b2)SZQC5(hRa#8Vg-7= z-sNhI$7#a6WXTe0Yik|d#;o}L_kWX-@i%n3M*jHYouk{ClH%fGlu9L1sgyNq)^P9M zJx8}Rp$V7f1oksJYUS?TXWYH}FGM1DVq?SEy?YItH~$H-*m<7lSO* zuBD=)g82A&o;`a;U|^u5+xx_fugpfHkwb?LQBqREjvYHlOG~4%v5|s;0^;N2QK?is zdGf?|e0g~}si~>N#>SGFnaTb8_W|hY>atBU#>T9vsUa~jk@)y{%F4=S+Nu+H z=gx2J+xK_E!p?Byh=yN&`HkV>(V35KwQ}*|MV2mI%7O(8IC}Ibqobp?eFX&tC=?2O zeSL|Gi^F6xF*G!UOeW*;L2{F&K@;No(1IU8WgLO-;<7KOdb=M@&o%r%s(hsZ^rXYKe%5 zpuD^sfad0Av|25fE?wgG?c1nSstG?jfByVA9UUELG#YYqbGdfy8eLso_Gs7PES3>Q zN39GDSorzpfAYf*rG$r{<E2>qR#wKP2s-nHUo&NrQnwy&esHmvm z%9ShVbUNDF+6W2?A~`u3u~=I_FR7zS}8WM?w=;&zVayh$p?Ls1v5ET_g zUtb>pN~MyUH*XRW5`su1!q3l-w{PE$JEp~A;lP0dNTpI%ty+a#F6YggH}+`Psl2}; zTj}c?Fw=h%a$!4jIGz}*|1>)yLazq-MV#?);f0V z7!MviVDaL`NTpH&0s?sb`Zd58)tWB5OxPq6iS2hcH#fY!y+3$7=H0t@Xti1%J$i)6 zWFjCSV8StFG8tm=f1k|%9cL<9TYU)#I5w?w=i1m*qr3YprKSG>7UAtZ#QpnCeE)su zXV35K>_n+l+8+D(_~7T~2fSY`QYaL*eG-WTe}8|>W;3y|v1DXq(A3n#jT<*eNl8H@ z5&`e8##vce)Ya9ImzT$$J$pV|tG&IQ%a<=>Fc>hK&9{?p)314+K0tJs2JyAt-1eR%;t_ z`M?(i86Yq)kd~Gf+vEQJe!9E6f%mILZEbC~eS?F8bar+U5D}fLN~Mz1r%z+CSZw>wo;^!UObj6*A)GmLhVbxkmM>opynp%M zyLT@>K0d5pzaD_1q9P(9BFN9rpHeLk4-XUy1#-EZhK2_6^Yf8NBn%G^2#CU%FoZIrly9#z(CHQKTm#sJ}+LpATKX(!dmv= z_VIsbkKJPD%!}h+O08BSm&+Y~3uSxzE25(>;_mK-)oMj7_GIhUKa-U7Et@v2KqT@Q z_q>#p6kz-t(d}(;aF9id7NOVcS-Enh)7Bcx=Qt}qRnEI&?_xYXJ=nN$ImyXuh>Zp`B)T0)rTfS=z2o;k!{i5fy)rWEN~e@m<2B5KO5K*au%~}4gdfE07*qoM6N<$f-U3h4FCWD literal 0 HcmV?d00001 diff --git a/doxygen/doy2day_8c_source.html b/doxygen/doy2day_8c_source.html new file mode 100644 index 0000000000..eb0d115957 --- /dev/null +++ b/doxygen/doy2day_8c_source.html @@ -0,0 +1,152 @@ + + + + + + + +MPTRAC: doy2day.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
doy2day.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2019 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 int day, doy, mon, year;
+
32
+
33 /* Check arguments... */
+
34 if (argc < 3)
+
35 ERRMSG("Give parameters: <year> <doy>");
+
36
+
37 /* Read arguments... */
+
38 year = atoi(argv[1]);
+
39 doy = atoi(argv[2]);
+
40
+
41 /* Convert... */
+
42 doy2day(year, doy, &mon, &day);
+
43 printf("%d %d %d\n", year, mon, day);
+
44
+
45 return EXIT_SUCCESS;
+
46}
+
int main(int argc, char *argv[])
Definition: doy2day.c:27
+
void doy2day(const int year, const int doy, int *mon, int *day)
Get date from day of year.
Definition: libtrac.c:673
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+
+ + + + diff --git a/doxygen/dynsections.js b/doxygen/dynsections.js new file mode 100644 index 0000000000..7906639fe4 --- /dev/null +++ b/doxygen/dynsections.js @@ -0,0 +1,128 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +MPTRAC: File List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  src
 atm_conv.cConvert file format of air parcel data files
 atm_dist.cCalculate transport deviations of trajectories
 atm_init.cCreate atmospheric data file with initial air parcel positions
 atm_select.cExtract subsets of air parcels from atmospheric data files
 atm_split.cSplit air parcels into a larger set of parcels
 atm_stat.cCalculate air parcel statistics
 cape.cAdd CAPE data to netCDF file
 day2doy.cConvert date to day of year
 doy2day.cConvert day of year to date
 jsec2time.cConvert Julian seconds to date
 libtrac.cMPTRAC library definitions
 libtrac.hMPTRAC library declarations
 met_conv.cConvert file format of meteo data files
 met_lapse.cCalculate lapse rate statistics
 met_map.cExtract map from meteorological data
 met_prof.cExtract vertical profile from meteorological data
 met_sample.cSample meteorological data at given geolocations
 met_spec.cSpectral analysis of meteorological data
 met_subgrid.cCalculate standard deviations of horizontal wind and vertical velocity
 met_zm.cExtract zonal mean from meteorological data
 sedi.cCalculate sedimentation velocity
 time2jsec.cConvert date to Julian seconds
 tnat.cCalculate PSC temperatures
 trac.cLagrangian particle dispersion model
 tropo.cCreate tropopause data set from meteorological data
 tropo_sample.cSample tropopause data set
 tropo_zm.cExtract zonal mean of tropopause data set
 wind.cCreate meteorological data files with synthetic wind fields
+
+
+
+ + + + diff --git a/doxygen/files_dup.js b/doxygen/files_dup.js new file mode 100644 index 0000000000..c3b39c499f --- /dev/null +++ b/doxygen/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/doxygen/folderclosed.png b/doxygen/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/doxygen/functions.html b/doxygen/functions.html new file mode 100644 index 0000000000..331951dadd --- /dev/null +++ b/doxygen/functions.html @@ -0,0 +1,115 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- a -

+
+
+ + + + diff --git a/doxygen/functions_b.html b/doxygen/functions_b.html new file mode 100644 index 0000000000..c13a272e7c --- /dev/null +++ b/doxygen/functions_b.html @@ -0,0 +1,120 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- b -

+
+
+ + + + diff --git a/doxygen/functions_c.html b/doxygen/functions_c.html new file mode 100644 index 0000000000..20be18bb51 --- /dev/null +++ b/doxygen/functions_c.html @@ -0,0 +1,159 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- c -

+
+
+ + + + diff --git a/doxygen/functions_d.html b/doxygen/functions_d.html new file mode 100644 index 0000000000..778f34b625 --- /dev/null +++ b/doxygen/functions_d.html @@ -0,0 +1,112 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- d -

+
+
+ + + + diff --git a/doxygen/functions_dup.js b/doxygen/functions_dup.js new file mode 100644 index 0000000000..39bbf1eeac --- /dev/null +++ b/doxygen/functions_dup.js @@ -0,0 +1,25 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "k", "functions_k.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ], + [ "z", "functions_z.html", null ] +]; \ No newline at end of file diff --git a/doxygen/functions_e.html b/doxygen/functions_e.html new file mode 100644 index 0000000000..311bd79dcd --- /dev/null +++ b/doxygen/functions_e.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- e -

+
+
+ + + + diff --git a/doxygen/functions_g.html b/doxygen/functions_g.html new file mode 100644 index 0000000000..143b74d4c3 --- /dev/null +++ b/doxygen/functions_g.html @@ -0,0 +1,122 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- g -

+
+
+ + + + diff --git a/doxygen/functions_h.html b/doxygen/functions_h.html new file mode 100644 index 0000000000..1e605a6f84 --- /dev/null +++ b/doxygen/functions_h.html @@ -0,0 +1,114 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- h -

+
+
+ + + + diff --git a/doxygen/functions_i.html b/doxygen/functions_i.html new file mode 100644 index 0000000000..1e5b382da7 --- /dev/null +++ b/doxygen/functions_i.html @@ -0,0 +1,113 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- i -

+
+
+ + + + diff --git a/doxygen/functions_k.html b/doxygen/functions_k.html new file mode 100644 index 0000000000..e8ded8d866 --- /dev/null +++ b/doxygen/functions_k.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- k -

+
+
+ + + + diff --git a/doxygen/functions_l.html b/doxygen/functions_l.html new file mode 100644 index 0000000000..9e63c6b772 --- /dev/null +++ b/doxygen/functions_l.html @@ -0,0 +1,111 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- l -

+
+
+ + + + diff --git a/doxygen/functions_m.html b/doxygen/functions_m.html new file mode 100644 index 0000000000..d29709ebff --- /dev/null +++ b/doxygen/functions_m.html @@ -0,0 +1,151 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- m -

+
+
+ + + + diff --git a/doxygen/functions_n.html b/doxygen/functions_n.html new file mode 100644 index 0000000000..395e898f13 --- /dev/null +++ b/doxygen/functions_n.html @@ -0,0 +1,117 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- n -

+
+
+ + + + diff --git a/doxygen/functions_o.html b/doxygen/functions_o.html new file mode 100644 index 0000000000..3bb643ab8f --- /dev/null +++ b/doxygen/functions_o.html @@ -0,0 +1,114 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- o -

+
+
+ + + + diff --git a/doxygen/functions_p.html b/doxygen/functions_p.html new file mode 100644 index 0000000000..339bc00be8 --- /dev/null +++ b/doxygen/functions_p.html @@ -0,0 +1,134 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- p -

+
+
+ + + + diff --git a/doxygen/functions_q.html b/doxygen/functions_q.html new file mode 100644 index 0000000000..746e88a8d3 --- /dev/null +++ b/doxygen/functions_q.html @@ -0,0 +1,196 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- q -

+
+
+ + + + diff --git a/doxygen/functions_r.html b/doxygen/functions_r.html new file mode 100644 index 0000000000..79caab6fc4 --- /dev/null +++ b/doxygen/functions_r.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- r -

+
+
+ + + + diff --git a/doxygen/functions_s.html b/doxygen/functions_s.html new file mode 100644 index 0000000000..e2c7a22376 --- /dev/null +++ b/doxygen/functions_s.html @@ -0,0 +1,123 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- s -

+
+
+ + + + diff --git a/doxygen/functions_t.html b/doxygen/functions_t.html new file mode 100644 index 0000000000..5b050d146e --- /dev/null +++ b/doxygen/functions_t.html @@ -0,0 +1,127 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- t -

+
+
+ + + + diff --git a/doxygen/functions_u.html b/doxygen/functions_u.html new file mode 100644 index 0000000000..a76c5a287d --- /dev/null +++ b/doxygen/functions_u.html @@ -0,0 +1,111 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- u -

+
+
+ + + + diff --git a/doxygen/functions_v.html b/doxygen/functions_v.html new file mode 100644 index 0000000000..da366b1be0 --- /dev/null +++ b/doxygen/functions_v.html @@ -0,0 +1,119 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- v -

+
+
+ + + + diff --git a/doxygen/functions_vars.html b/doxygen/functions_vars.html new file mode 100644 index 0000000000..efe0c05a6a --- /dev/null +++ b/doxygen/functions_vars.html @@ -0,0 +1,115 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+
+ + + + diff --git a/doxygen/functions_vars.js b/doxygen/functions_vars.js new file mode 100644 index 0000000000..b45ee62b7e --- /dev/null +++ b/doxygen/functions_vars.js @@ -0,0 +1,25 @@ +var functions_vars = +[ + [ "a", "functions_vars.html", null ], + [ "b", "functions_vars_b.html", null ], + [ "c", "functions_vars_c.html", null ], + [ "d", "functions_vars_d.html", null ], + [ "e", "functions_vars_e.html", null ], + [ "g", "functions_vars_g.html", null ], + [ "h", "functions_vars_h.html", null ], + [ "i", "functions_vars_i.html", null ], + [ "k", "functions_vars_k.html", null ], + [ "l", "functions_vars_l.html", null ], + [ "m", "functions_vars_m.html", null ], + [ "n", "functions_vars_n.html", null ], + [ "o", "functions_vars_o.html", null ], + [ "p", "functions_vars_p.html", null ], + [ "q", "functions_vars_q.html", null ], + [ "r", "functions_vars_r.html", null ], + [ "s", "functions_vars_s.html", null ], + [ "t", "functions_vars_t.html", null ], + [ "u", "functions_vars_u.html", null ], + [ "v", "functions_vars_v.html", null ], + [ "w", "functions_vars_w.html", null ], + [ "z", "functions_vars_z.html", null ] +]; \ No newline at end of file diff --git a/doxygen/functions_vars_b.html b/doxygen/functions_vars_b.html new file mode 100644 index 0000000000..38234cde00 --- /dev/null +++ b/doxygen/functions_vars_b.html @@ -0,0 +1,120 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+
+ + + + diff --git a/doxygen/functions_vars_c.html b/doxygen/functions_vars_c.html new file mode 100644 index 0000000000..c75aa733a8 --- /dev/null +++ b/doxygen/functions_vars_c.html @@ -0,0 +1,159 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+
+ + + + diff --git a/doxygen/functions_vars_d.html b/doxygen/functions_vars_d.html new file mode 100644 index 0000000000..6ff9d6a8fc --- /dev/null +++ b/doxygen/functions_vars_d.html @@ -0,0 +1,112 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+
+ + + + diff --git a/doxygen/functions_vars_e.html b/doxygen/functions_vars_e.html new file mode 100644 index 0000000000..1e0c29f0d0 --- /dev/null +++ b/doxygen/functions_vars_e.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+
+ + + + diff --git a/doxygen/functions_vars_g.html b/doxygen/functions_vars_g.html new file mode 100644 index 0000000000..c7f1d74ee6 --- /dev/null +++ b/doxygen/functions_vars_g.html @@ -0,0 +1,122 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+
+ + + + diff --git a/doxygen/functions_vars_h.html b/doxygen/functions_vars_h.html new file mode 100644 index 0000000000..bc98906a53 --- /dev/null +++ b/doxygen/functions_vars_h.html @@ -0,0 +1,114 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+
+ + + + diff --git a/doxygen/functions_vars_i.html b/doxygen/functions_vars_i.html new file mode 100644 index 0000000000..ff2d564621 --- /dev/null +++ b/doxygen/functions_vars_i.html @@ -0,0 +1,113 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+
+ + + + diff --git a/doxygen/functions_vars_k.html b/doxygen/functions_vars_k.html new file mode 100644 index 0000000000..0420e2529c --- /dev/null +++ b/doxygen/functions_vars_k.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

+
+
+ + + + diff --git a/doxygen/functions_vars_l.html b/doxygen/functions_vars_l.html new file mode 100644 index 0000000000..67660a3ef2 --- /dev/null +++ b/doxygen/functions_vars_l.html @@ -0,0 +1,111 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+
+ + + + diff --git a/doxygen/functions_vars_m.html b/doxygen/functions_vars_m.html new file mode 100644 index 0000000000..0b37aaaaad --- /dev/null +++ b/doxygen/functions_vars_m.html @@ -0,0 +1,151 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+
+ + + + diff --git a/doxygen/functions_vars_n.html b/doxygen/functions_vars_n.html new file mode 100644 index 0000000000..aa2a12f237 --- /dev/null +++ b/doxygen/functions_vars_n.html @@ -0,0 +1,117 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+
+ + + + diff --git a/doxygen/functions_vars_o.html b/doxygen/functions_vars_o.html new file mode 100644 index 0000000000..aa75999f2b --- /dev/null +++ b/doxygen/functions_vars_o.html @@ -0,0 +1,114 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+
+ + + + diff --git a/doxygen/functions_vars_p.html b/doxygen/functions_vars_p.html new file mode 100644 index 0000000000..1a9de17bff --- /dev/null +++ b/doxygen/functions_vars_p.html @@ -0,0 +1,134 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+
+ + + + diff --git a/doxygen/functions_vars_q.html b/doxygen/functions_vars_q.html new file mode 100644 index 0000000000..141a616fdd --- /dev/null +++ b/doxygen/functions_vars_q.html @@ -0,0 +1,196 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+
+ + + + diff --git a/doxygen/functions_vars_r.html b/doxygen/functions_vars_r.html new file mode 100644 index 0000000000..de94614dbe --- /dev/null +++ b/doxygen/functions_vars_r.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+
+ + + + diff --git a/doxygen/functions_vars_s.html b/doxygen/functions_vars_s.html new file mode 100644 index 0000000000..67cbdbfdaa --- /dev/null +++ b/doxygen/functions_vars_s.html @@ -0,0 +1,123 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+
+ + + + diff --git a/doxygen/functions_vars_t.html b/doxygen/functions_vars_t.html new file mode 100644 index 0000000000..46646578f8 --- /dev/null +++ b/doxygen/functions_vars_t.html @@ -0,0 +1,127 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+
+ + + + diff --git a/doxygen/functions_vars_u.html b/doxygen/functions_vars_u.html new file mode 100644 index 0000000000..a392d547c9 --- /dev/null +++ b/doxygen/functions_vars_u.html @@ -0,0 +1,111 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+
+ + + + diff --git a/doxygen/functions_vars_v.html b/doxygen/functions_vars_v.html new file mode 100644 index 0000000000..de3a4d88a3 --- /dev/null +++ b/doxygen/functions_vars_v.html @@ -0,0 +1,119 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+
+ + + + diff --git a/doxygen/functions_vars_w.html b/doxygen/functions_vars_w.html new file mode 100644 index 0000000000..a39ea089b3 --- /dev/null +++ b/doxygen/functions_vars_w.html @@ -0,0 +1,117 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

    +
  • w : met_t
  • +
  • wet_depo_bc_a : ctl_t
  • +
  • wet_depo_bc_b : ctl_t
  • +
  • wet_depo_bc_h : ctl_t
  • +
  • wet_depo_bc_ret_ratio : ctl_t
  • +
  • wet_depo_ic_a : ctl_t
  • +
  • wet_depo_ic_b : ctl_t
  • +
  • wet_depo_ic_h : ctl_t
  • +
  • wet_depo_ic_ret_ratio : ctl_t
  • +
  • wet_depo_pre : ctl_t
  • +
+
+
+ + + + diff --git a/doxygen/functions_vars_z.html b/doxygen/functions_vars_z.html new file mode 100644 index 0000000000..2aec7c5f3d --- /dev/null +++ b/doxygen/functions_vars_z.html @@ -0,0 +1,114 @@ + + + + + + + +MPTRAC: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- z -

+
+
+ + + + diff --git a/doxygen/functions_w.html b/doxygen/functions_w.html new file mode 100644 index 0000000000..0d80c3516d --- /dev/null +++ b/doxygen/functions_w.html @@ -0,0 +1,117 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- w -

    +
  • w : met_t
  • +
  • wet_depo_bc_a : ctl_t
  • +
  • wet_depo_bc_b : ctl_t
  • +
  • wet_depo_bc_h : ctl_t
  • +
  • wet_depo_bc_ret_ratio : ctl_t
  • +
  • wet_depo_ic_a : ctl_t
  • +
  • wet_depo_ic_b : ctl_t
  • +
  • wet_depo_ic_h : ctl_t
  • +
  • wet_depo_ic_ret_ratio : ctl_t
  • +
  • wet_depo_pre : ctl_t
  • +
+
+
+ + + + diff --git a/doxygen/functions_z.html b/doxygen/functions_z.html new file mode 100644 index 0000000000..1d4b022262 --- /dev/null +++ b/doxygen/functions_z.html @@ -0,0 +1,114 @@ + + + + + + + +MPTRAC: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- z -

+
+
+ + + + diff --git a/doxygen/globals.html b/doxygen/globals.html new file mode 100644 index 0000000000..3d91895072 --- /dev/null +++ b/doxygen/globals.html @@ -0,0 +1,112 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- a -

+
+
+ + + + diff --git a/doxygen/globals_b.html b/doxygen/globals_b.html new file mode 100644 index 0000000000..bd50abbe84 --- /dev/null +++ b/doxygen/globals_b.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- b -

+
+
+ + + + diff --git a/doxygen/globals_c.html b/doxygen/globals_c.html new file mode 100644 index 0000000000..1fc8215d3e --- /dev/null +++ b/doxygen/globals_c.html @@ -0,0 +1,124 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- c -

+
+
+ + + + diff --git a/doxygen/globals_d.html b/doxygen/globals_d.html new file mode 100644 index 0000000000..42b3badb9e --- /dev/null +++ b/doxygen/globals_d.html @@ -0,0 +1,119 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- d -

+
+
+ + + + diff --git a/doxygen/globals_defs.html b/doxygen/globals_defs.html new file mode 100644 index 0000000000..7b5ef71bea --- /dev/null +++ b/doxygen/globals_defs.html @@ -0,0 +1,286 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+ + +

- z -

+
+
+ + + + diff --git a/doxygen/globals_dup.js b/doxygen/globals_dup.js new file mode 100644 index 0000000000..f43faa5a14 --- /dev/null +++ b/doxygen/globals_dup.js @@ -0,0 +1,24 @@ +var globals_dup = +[ + [ "a", "globals.html", null ], + [ "b", "globals_b.html", null ], + [ "c", "globals_c.html", null ], + [ "d", "globals_d.html", null ], + [ "e", "globals_e.html", null ], + [ "f", "globals_f.html", null ], + [ "g", "globals_g.html", null ], + [ "h", "globals_h.html", null ], + [ "i", "globals_i.html", null ], + [ "j", "globals_j.html", null ], + [ "k", "globals_k.html", null ], + [ "l", "globals_l.html", null ], + [ "m", "globals_m.html", null ], + [ "n", "globals_n.html", null ], + [ "p", "globals_p.html", null ], + [ "q", "globals_q.html", null ], + [ "r", "globals_r.html", null ], + [ "s", "globals_s.html", null ], + [ "t", "globals_t.html", null ], + [ "w", "globals_w.html", null ], + [ "z", "globals_z.html", null ] +]; \ No newline at end of file diff --git a/doxygen/globals_e.html b/doxygen/globals_e.html new file mode 100644 index 0000000000..7d6dacc2b9 --- /dev/null +++ b/doxygen/globals_e.html @@ -0,0 +1,112 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- e -

+
+
+ + + + diff --git a/doxygen/globals_f.html b/doxygen/globals_f.html new file mode 100644 index 0000000000..7990ed7f87 --- /dev/null +++ b/doxygen/globals_f.html @@ -0,0 +1,111 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- f -

+
+
+ + + + diff --git a/doxygen/globals_func.html b/doxygen/globals_func.html new file mode 100644 index 0000000000..b7e658c7d0 --- /dev/null +++ b/doxygen/globals_func.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+
+ + + + diff --git a/doxygen/globals_func.js b/doxygen/globals_func.js new file mode 100644 index 0000000000..24d5a244b2 --- /dev/null +++ b/doxygen/globals_func.js @@ -0,0 +1,19 @@ +var globals_func = +[ + [ "b", "globals_func.html", null ], + [ "c", "globals_func_c.html", null ], + [ "d", "globals_func_d.html", null ], + [ "f", "globals_func_f.html", null ], + [ "g", "globals_func_g.html", null ], + [ "i", "globals_func_i.html", null ], + [ "j", "globals_func_j.html", null ], + [ "k", "globals_func_k.html", null ], + [ "l", "globals_func_l.html", null ], + [ "m", "globals_func_m.html", null ], + [ "n", "globals_func_n.html", null ], + [ "q", "globals_func_q.html", null ], + [ "r", "globals_func_r.html", null ], + [ "s", "globals_func_s.html", null ], + [ "t", "globals_func_t.html", null ], + [ "w", "globals_func_w.html", null ] +]; \ No newline at end of file diff --git a/doxygen/globals_func_c.html b/doxygen/globals_func_c.html new file mode 100644 index 0000000000..294b3bbeca --- /dev/null +++ b/doxygen/globals_func_c.html @@ -0,0 +1,117 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+
+ + + + diff --git a/doxygen/globals_func_d.html b/doxygen/globals_func_d.html new file mode 100644 index 0000000000..6d1be15025 --- /dev/null +++ b/doxygen/globals_func_d.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+
+ + + + diff --git a/doxygen/globals_func_f.html b/doxygen/globals_func_f.html new file mode 100644 index 0000000000..bae6900ae0 --- /dev/null +++ b/doxygen/globals_func_f.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+
+ + + + diff --git a/doxygen/globals_func_g.html b/doxygen/globals_func_g.html new file mode 100644 index 0000000000..f32bc9b870 --- /dev/null +++ b/doxygen/globals_func_g.html @@ -0,0 +1,112 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+
+ + + + diff --git a/doxygen/globals_func_i.html b/doxygen/globals_func_i.html new file mode 100644 index 0000000000..70e75861c0 --- /dev/null +++ b/doxygen/globals_func_i.html @@ -0,0 +1,113 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+
+ + + + diff --git a/doxygen/globals_func_j.html b/doxygen/globals_func_j.html new file mode 100644 index 0000000000..7b08d71153 --- /dev/null +++ b/doxygen/globals_func_j.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- j -

+
+
+ + + + diff --git a/doxygen/globals_func_k.html b/doxygen/globals_func_k.html new file mode 100644 index 0000000000..9fb9cae98e --- /dev/null +++ b/doxygen/globals_func_k.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

+
+
+ + + + diff --git a/doxygen/globals_func_l.html b/doxygen/globals_func_l.html new file mode 100644 index 0000000000..9156486d64 --- /dev/null +++ b/doxygen/globals_func_l.html @@ -0,0 +1,113 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+
+ + + + diff --git a/doxygen/globals_func_m.html b/doxygen/globals_func_m.html new file mode 100644 index 0000000000..b92b89de27 --- /dev/null +++ b/doxygen/globals_func_m.html @@ -0,0 +1,135 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+
+ + + + diff --git a/doxygen/globals_func_n.html b/doxygen/globals_func_n.html new file mode 100644 index 0000000000..fc76a7dc7d --- /dev/null +++ b/doxygen/globals_func_n.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+
+ + + + diff --git a/doxygen/globals_func_q.html b/doxygen/globals_func_q.html new file mode 100644 index 0000000000..88d6f33467 --- /dev/null +++ b/doxygen/globals_func_q.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+
+ + + + diff --git a/doxygen/globals_func_r.html b/doxygen/globals_func_r.html new file mode 100644 index 0000000000..215d87ff7a --- /dev/null +++ b/doxygen/globals_func_r.html @@ -0,0 +1,140 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+
+ + + + diff --git a/doxygen/globals_func_s.html b/doxygen/globals_func_s.html new file mode 100644 index 0000000000..2c9ac64eb4 --- /dev/null +++ b/doxygen/globals_func_s.html @@ -0,0 +1,112 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+
+ + + + diff --git a/doxygen/globals_func_t.html b/doxygen/globals_func_t.html new file mode 100644 index 0000000000..30d2bcf1bb --- /dev/null +++ b/doxygen/globals_func_t.html @@ -0,0 +1,112 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+
+ + + + diff --git a/doxygen/globals_func_w.html b/doxygen/globals_func_w.html new file mode 100644 index 0000000000..5349a5f436 --- /dev/null +++ b/doxygen/globals_func_w.html @@ -0,0 +1,126 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+
+ + + + diff --git a/doxygen/globals_g.html b/doxygen/globals_g.html new file mode 100644 index 0000000000..2c90897755 --- /dev/null +++ b/doxygen/globals_g.html @@ -0,0 +1,113 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- g -

+
+
+ + + + diff --git a/doxygen/globals_h.html b/doxygen/globals_h.html new file mode 100644 index 0000000000..3d620ab905 --- /dev/null +++ b/doxygen/globals_h.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- h -

+
+
+ + + + diff --git a/doxygen/globals_i.html b/doxygen/globals_i.html new file mode 100644 index 0000000000..373fd8733f --- /dev/null +++ b/doxygen/globals_i.html @@ -0,0 +1,120 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- i -

+
+
+ + + + diff --git a/doxygen/globals_j.html b/doxygen/globals_j.html new file mode 100644 index 0000000000..12c7546069 --- /dev/null +++ b/doxygen/globals_j.html @@ -0,0 +1,108 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- j -

+
+
+ + + + diff --git a/doxygen/globals_k.html b/doxygen/globals_k.html new file mode 100644 index 0000000000..2861e7456b --- /dev/null +++ b/doxygen/globals_k.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- k -

+
+
+ + + + diff --git a/doxygen/globals_l.html b/doxygen/globals_l.html new file mode 100644 index 0000000000..7a2acd47e5 --- /dev/null +++ b/doxygen/globals_l.html @@ -0,0 +1,120 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- l -

+
+
+ + + + diff --git a/doxygen/globals_m.html b/doxygen/globals_m.html new file mode 100644 index 0000000000..70076a35fd --- /dev/null +++ b/doxygen/globals_m.html @@ -0,0 +1,140 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- m -

+
+
+ + + + diff --git a/doxygen/globals_n.html b/doxygen/globals_n.html new file mode 100644 index 0000000000..259be0b2da --- /dev/null +++ b/doxygen/globals_n.html @@ -0,0 +1,132 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- n -

+
+
+ + + + diff --git a/doxygen/globals_p.html b/doxygen/globals_p.html new file mode 100644 index 0000000000..da844913ca --- /dev/null +++ b/doxygen/globals_p.html @@ -0,0 +1,116 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- p -

+
+
+ + + + diff --git a/doxygen/globals_q.html b/doxygen/globals_q.html new file mode 100644 index 0000000000..d552bde695 --- /dev/null +++ b/doxygen/globals_q.html @@ -0,0 +1,109 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- q -

+
+
+ + + + diff --git a/doxygen/globals_r.html b/doxygen/globals_r.html new file mode 100644 index 0000000000..75280ca50f --- /dev/null +++ b/doxygen/globals_r.html @@ -0,0 +1,147 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- r -

+
+
+ + + + diff --git a/doxygen/globals_s.html b/doxygen/globals_s.html new file mode 100644 index 0000000000..364f532e4e --- /dev/null +++ b/doxygen/globals_s.html @@ -0,0 +1,120 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- s -

+
+
+ + + + diff --git a/doxygen/globals_t.html b/doxygen/globals_t.html new file mode 100644 index 0000000000..4e7c1d4409 --- /dev/null +++ b/doxygen/globals_t.html @@ -0,0 +1,119 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- t -

+
+
+ + + + diff --git a/doxygen/globals_w.html b/doxygen/globals_w.html new file mode 100644 index 0000000000..cb27fed298 --- /dev/null +++ b/doxygen/globals_w.html @@ -0,0 +1,127 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- w -

+
+
+ + + + diff --git a/doxygen/globals_z.html b/doxygen/globals_z.html new file mode 100644 index 0000000000..1ee416c4bc --- /dev/null +++ b/doxygen/globals_z.html @@ -0,0 +1,110 @@ + + + + + + + +MPTRAC: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- z -

+
+
+ + + + diff --git a/doxygen/graph_legend.html b/doxygen/graph_legend.html new file mode 100644 index 0000000000..ea9c9913a7 --- /dev/null +++ b/doxygen/graph_legend.html @@ -0,0 +1,166 @@ + + + + + + + +MPTRAC: Graph Legend + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/doxygen/graph_legend.md5 b/doxygen/graph_legend.md5 new file mode 100644 index 0000000000..8fcdccd1b9 --- /dev/null +++ b/doxygen/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/doxygen/graph_legend.png b/doxygen/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ffd9e4e9e2a9ecee38221ceddb955f73256aeb GIT binary patch literal 20802 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 literal 0 HcmV?d00001 diff --git a/doxygen/index.html b/doxygen/index.html new file mode 100644 index 0000000000..7f0426e588 --- /dev/null +++ b/doxygen/index.html @@ -0,0 +1,110 @@ + + + + + + + +MPTRAC: MPTRAC + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
MPTRAC
+
+
+

Massive-Parallel Trajectory Calculations (MPTRAC) is a Lagrangian particle dispersion model for the free troposphere and stratosphere.

+

This reference manual provides information on the algorithms and data structures used in the code.

+

Further information can be found at: https://github.com/slcs-jsc/mptrac

+
+
+
+ + + + diff --git a/doxygen/jquery.js b/doxygen/jquery.js new file mode 100644 index 0000000000..c9ed3d99cb --- /dev/null +++ b/doxygen/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doxygen/jsec2time_8c.html b/doxygen/jsec2time_8c.html new file mode 100644 index 0000000000..c24a6c4a3a --- /dev/null +++ b/doxygen/jsec2time_8c.html @@ -0,0 +1,186 @@ + + + + + + + +MPTRAC: jsec2time.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
jsec2time.c File Reference
+
+
+ +

Convert Julian seconds to date. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Convert Julian seconds to date.

+ +

Definition in file jsec2time.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file jsec2time.c.

+
29 {
+
30
+
31 double jsec, remain;
+
32
+
33 int day, hour, min, mon, sec, year;
+
34
+
35 /* Check arguments... */
+
36 if (argc < 2)
+
37 ERRMSG("Give parameters: <jsec>");
+
38
+
39 /* Read arguments... */
+
40 jsec = atof(argv[1]);
+
41
+
42 /* Convert time... */
+
43 jsec2time(jsec, &year, &mon, &day, &hour, &min, &sec, &remain);
+
44 printf("%d %d %d %d %d %d %g\n", year, mon, day, hour, min, sec, remain);
+
45
+
46 return EXIT_SUCCESS;
+
47}
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/jsec2time_8c.js b/doxygen/jsec2time_8c.js new file mode 100644 index 0000000000..1313425731 --- /dev/null +++ b/doxygen/jsec2time_8c.js @@ -0,0 +1,4 @@ +var jsec2time_8c = +[ + [ "main", "jsec2time_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..5b7ab59fc9 --- /dev/null +++ b/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..2f0e8a314a --- /dev/null +++ b/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +ef1b501bcf40cc3ad4a7b392d6647c7e \ No newline at end of file diff --git a/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/jsec2time_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f98a18e8bda94ff09027f026738a4821f59b01e4 GIT binary patch literal 1963 zcmV;c2UPfpP)7@2HrCxnTtQ1qOHNMCXG4P^5{X>rXk&bZmSSULl}e?%UAO`a z2D54lJf?x528ITL8Wxo373xw+G>M}AiTp+ZB zi$W6^7}(z4?iwwJ85%O4K3&(^`f_GwVe{33f`aDe<~Cmk0C4Bd9Ttm4B9Zp)-TUOp zlU47YJ$qKAQaMFvgV;Ic{>Ngq{@Ky-dq+pVhsTzbly9@MBNG$-!BvjYin!M)6;o8-isG6Zr;4f z<#PFa{;OB7kUou#jk&qG$;ruid3n#CJp%wtOiUol6Egh4g9pcs9piGjckkYH?*2Ff z+x)z>z5P{wetlTje+mlZ9UZ@0t$(7eva~!+Pfs5|ew;#~P^nabKw!06kq&irb)li5 z6bdCRElsc2BO7nuzRhGZ$z<}OLx;3lEdb#0}sCX*q{)3s~YghC;g%Ow(tF)=Z{y}ilF$==@Hv9Ym6qj3#Uv^cUn4Gs?a z`1rK6wCvlrucV}e#bPNG3O1YF*w_dF7#bQ4H)`lp|M z0l=S3wrDi}<#2YaJFujrwQFi> z>coi?t2%5vD9iEppAm^JI>X>+F&L)A;*_UI6pL4EY{c8m%(5djmFyATAR)G{{8#SmnD%FjvQfczRns942%O{Co}{CZehW? zbt^eDGvdgRJ<-w3oSdAEm*sM~R4TQ)x;i>Kn#p7$Up$}Buc)X94-XFt3aYQKmrA80 zBO`o1Um}t0-@l*9WL8vEbar;C)#_WfZn4?y%F4>+HIW~l*=+Xn^V_%+yP`|8{>E{B zXtJ`hBoYaq&u1_g7cN{do6TiqWu>L1P8a&pY}tZcT(ptNgw)h;b8@1-|DNU899dae zDG&(gbh?L!M`~)SSS$trT4N<|=9=9=|FRHGmppn^zxD05s5@J z8tqFziZC!R{=*M9uvm=E20T1)X=&eOWktrvhvIOn&oPmiW^F%uy?*D;ozA+x=SDCX zj6$Kv&COlf0x#~Z0FTEdCWij_m&7jYe~~ixueg`sU_lce`*8c0yBLUhaAy>#}?IZg*Q)K~GN)a;yIz x2nPN?4FoOlm + + + + + + +MPTRAC: jsec2time.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
jsec2time.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2019 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 double jsec, remain;
+
32
+
33 int day, hour, min, mon, sec, year;
+
34
+
35 /* Check arguments... */
+
36 if (argc < 2)
+
37 ERRMSG("Give parameters: <jsec>");
+
38
+
39 /* Read arguments... */
+
40 jsec = atof(argv[1]);
+
41
+
42 /* Convert time... */
+
43 jsec2time(jsec, &year, &mon, &day, &hour, &min, &sec, &remain);
+
44 printf("%d %d %d %d %d %d %g\n", year, mon, day, hour, min, sec, remain);
+
45
+
46 return EXIT_SUCCESS;
+
47}
+
int main(int argc, char *argv[])
Definition: jsec2time.c:27
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+
+ + + + diff --git a/doxygen/libtrac_8c.html b/doxygen/libtrac_8c.html new file mode 100644 index 0000000000..4cc511a3aa --- /dev/null +++ b/doxygen/libtrac_8c.html @@ -0,0 +1,12158 @@ + + + + + + + +MPTRAC: libtrac.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
libtrac.c File Reference
+
+
+ +

MPTRAC library definitions. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

double buoyancy_frequency (const double p0, const double t0, const double p1, const double t1)
 Calculate buoyancy frequency. More...
 
void cart2geo (const double *x, double *z, double *lon, double *lat)
 Convert Cartesian coordinates to geolocation. More...
 
double clim_oh (const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
 Climatology of OH number concentrations. More...
 
void clim_oh_diurnal_correction (ctl_t *ctl, clim_t *clim)
 Initialization function for OH climatology. More...
 
double clim_photo (double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c)
 Interpolate photolysis rate data. More...
 
double clim_tropo (const clim_t *clim, const double t, const double lat)
 Climatology of tropopause pressure. More...
 
void clim_tropo_init (clim_t *clim)
 Initialize tropopause climatology. More...
 
double clim_ts (const clim_ts_t *ts, const double t)
 Interpolate time series. More...
 
double clim_zm (const clim_zm_t *zm, const double t, const double lat, const double p)
 Interpolate zonal mean climatology. More...
 
void compress_pack (char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout)
 Pack or unpack array. More...
 
void day2doy (const int year, const int mon, const int day, int *doy)
 Compress or decompress array with zfp. More...
 
void doy2day (const int year, const int doy, int *mon, int *day)
 Get date from day of year. More...
 
void geo2cart (const double z, const double lon, const double lat, double *x)
 Convert geolocation to Cartesian coordinates. More...
 
void get_met (ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
 Get meteo data for given time step. More...
 
void get_met_help (ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename)
 Get meteo data for time step. More...
 
void get_met_replace (char *orig, char *search, char *repl)
 Replace template strings in filename. More...
 
void intpol_met_4d_coord (met_t *met0, float heights0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float heights1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatiotemporal interpolation of meteo data. More...
 
void intpol_met_space_3d (met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatial interpolation of meteo data. More...
 
void intpol_met_space_2d (met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatial interpolation of meteo data. More...
 
void intpol_met_time_3d (met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatial interpolation of meteo data. More...
 
void intpol_met_time_2d (met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init)
 Temporal interpolation of meteo data. More...
 
void jsec2time (const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
 Temporal interpolation of meteo data. More...
 
int locate_irr_3d (float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x)
 locate the index in a column of a three dimensional array. More...
 
void locate_vert (float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double height_ap, int *ind)
 Locate the four vertical indizes of a box for a given height value. More...
 
double kernel_weight (const double kz[EP], const double kw[EP], const int nk, const double p)
 Get weighting factor from kernel function. More...
 
double lapse_rate (const double t, const double h2o)
 Calculate moist adiabatic lapse rate. More...
 
void level_definitions (ctl_t *ctl)
 Get predefined pressure levels. More...
 
int locate_irr (const double *xx, const int n, const double x)
 Find array index for irregular grid. More...
 
int locate_reg (const double *xx, const int n, const double x)
 Find array index for regular grid. More...
 
double nat_temperature (const double p, const double h2o, const double hno3)
 Calculate NAT existence temperature. More...
 
void quicksort (double arr[], int brr[], const int low, const int high)
 Parallel quicksort. More...
 
int quicksort_partition (double arr[], int brr[], const int low, const int high)
 Partition function for quicksort. More...
 
int read_atm (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data. More...
 
int read_atm_asc (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in ASCII format. More...
 
int read_atm_bin (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in binary format. More...
 
int read_atm_clams (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in CLaMS format. More...
 
int read_atm_nc (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in netCDF format. More...
 
void read_clim (ctl_t *ctl, clim_t *clim)
 Read climatological data. More...
 
void read_clim_photo (char *filename, clim_photo_t *photo)
 Read climatological photolysis rates. More...
 
int read_clim_ts (char *filename, clim_ts_t *ts)
 Read climatological time series. More...
 
void read_clim_zm (char *filename, char *varname, clim_zm_t *zm)
 Read climatological zonal means. More...
 
void read_ctl (const char *filename, int argc, char *argv[], ctl_t *ctl)
 Read control parameters. More...
 
void read_kernel (const char *filename, double kz[EP], double kw[EP], int *nk)
 Read kernel data file. More...
 
int read_met (char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
 Read meteo data file. More...
 
void read_met_bin_2d (FILE *in, met_t *met, float var[EX][EY], char *varname)
 Read 2-D meteo variable. More...
 
void read_met_bin_3d (FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname)
 Read 3-D meteo variable. More...
 
void read_met_cape (clim_t *clim, met_t *met)
 Calculate convective available potential energy. More...
 
void read_met_cloud (ctl_t *ctl, met_t *met)
 Calculate cloud properties. More...
 
void read_met_detrend (ctl_t *ctl, met_t *met)
 Apply detrending method to temperature and winds. More...
 
void read_met_extrapolate (met_t *met)
 Extrapolate meteo data at lower boundary. More...
 
void read_met_geopot (ctl_t *ctl, met_t *met)
 Calculate geopotential heights. More...
 
void read_met_grid (char *filename, int ncid, ctl_t *ctl, met_t *met)
 Read coordinates of meteo data. More...
 
void read_met_levels (int ncid, ctl_t *ctl, met_t *met)
 Read meteo data on vertical levels. More...
 
void read_met_ml2pl (ctl_t *ctl, met_t *met, float var[EX][EY][EP])
 Convert meteo data from model levels to pressure levels. More...
 
void read_met_monotonize (met_t *met)
 Smooth vertical zeta and pressure profiles. More...
 
int read_met_nc_2d (int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init)
 Read and convert 2D variable from meteo data file. More...
 
int read_met_nc_3d (int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init)
 Read and convert 3D variable from meteo data file. More...
 
void read_met_pbl (met_t *met)
 Calculate pressure of the boundary layer. More...
 
void read_met_periodic (met_t *met)
 Create meteo data with periodic boundary conditions. More...
 
void read_met_pv (met_t *met)
 Calculate potential vorticity. More...
 
void read_met_ozone (met_t *met)
 Calculate total column ozone. More...
 
void read_met_sample (ctl_t *ctl, met_t *met)
 Downsampling of meteo data. More...
 
void read_met_surface (int ncid, met_t *met, ctl_t *ctl)
 Read surface data. More...
 
void read_met_tropo (ctl_t *ctl, clim_t *clim, met_t *met)
 Calculate tropopause data. More...
 
void read_obs (char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs)
 Read observation data. More...
 
double scan_ctl (const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
 Read a control parameter from file or command line. More...
 
double sedi (const double p, const double T, const double rp, const double rhop)
 Calculate sedimentation velocity. More...
 
void spline (const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
 Spline interpolation. More...
 
float stddev (const float *data, const int n)
 Calculate standard deviation. More...
 
double sza_calc (const double sec, const double lon, const double lat)
 Calculate solar zenith angle. More...
 
void time2jsec (const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
 Convert date to seconds. More...
 
void timer (const char *name, const char *group, int output)
 Measure wall-clock time. More...
 
double time_from_filename (const char *filename, int offset)
 Extract time information from filename. More...
 
double tropo_weight (const clim_t *clim, const double t, const double lat, const double p)
 Get weighting factor based on tropopause distance. More...
 
void write_atm (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write atmospheric data. More...
 
void write_atm_asc (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write atmospheric data in ASCII format. More...
 
void write_atm_bin (const char *filename, ctl_t *ctl, atm_t *atm)
 Write atmospheric data in binary format. More...
 
void write_atm_clams_traj (const char *dirname, ctl_t *ctl, atm_t *atm, double t)
 Write atmospheric data in CLaMS position file and trajectory format. More...
 
void write_atm_clams (const char *filename, ctl_t *ctl, atm_t *atm)
 Write atmospheric data in CLaMS position file format. More...
 
void write_atm_nc (const char *filename, ctl_t *ctl, atm_t *atm)
 Write atmospheric data in netCDF format. More...
 
void write_csi (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write CSI data. More...
 
void write_ens (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write ensemble data. More...
 
void write_grid (const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
 Write gridded data. More...
 
void write_grid_asc (const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
 Write gridded data in ASCII format. More...
 
void write_grid_nc (const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
 Write gridded data in netCDF format. More...
 
int write_met (char *filename, ctl_t *ctl, met_t *met)
 Read meteo data file. More...
 
void write_met_bin_2d (FILE *out, met_t *met, float var[EX][EY], char *varname)
 Write 2-D meteo variable. More...
 
void write_met_bin_3d (FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance)
 Write 3-D meteo variable. More...
 
void write_prof (const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
 Write profile data. More...
 
void write_sample (const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
 Write sample data. More...
 
void write_station (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write station data. More...
 
void write_vtk (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write VTK data. More...
 
+

Detailed Description

+

MPTRAC library definitions.

+ +

Definition in file libtrac.c.

+

Function Documentation

+ +

◆ buoyancy_frequency()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double buoyancy_frequency (const double p0,
const double t0,
const double p1,
const double t1 
)
+
+ +

Calculate buoyancy frequency.

+ +

Definition at line 29 of file libtrac.c.

+
33 {
+
34
+
35 double theta0 = THETA(p0, t0);
+
36 double theta1 = THETA(p1, t1);
+
37 double dz = RI / MA / G0 * 0.5 * (t0 + t1) * (log(p0) - log(p1));
+
38
+
39 return sqrt(2. * G0 / (theta0 + theta1) * (theta1 - theta0) / dz);
+
40}
+
#define MA
Molar mass of dry air [g/mol].
Definition: libtrac.h:118
+
#define G0
Standard gravity [m/s^2].
Definition: libtrac.h:98
+
#define THETA(p, t)
Compute potential temperature.
Definition: libtrac.h:639
+
#define RI
Ideal gas constant [J/(mol K)].
Definition: libtrac.h:148
+
+
+
+ +

◆ cart2geo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void cart2geo (const double * x,
double * z,
double * lon,
double * lat 
)
+
+ +

Convert Cartesian coordinates to geolocation.

+ +

Definition at line 44 of file libtrac.c.

+
48 {
+
49
+
50 double radius = NORM(x);
+
51 *lat = asin(x[2] / radius) * 180. / M_PI;
+
52 *lon = atan2(x[1], x[0]) * 180. / M_PI;
+
53 *z = radius - RE;
+
54}
+
#define RE
Mean radius of Earth [km].
Definition: libtrac.h:143
+
#define NORM(a)
Compute norm of a vector.
Definition: libtrac.h:567
+
+
+
+ +

◆ clim_oh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double clim_oh (const ctl_tctl,
const clim_tclim,
const double t,
const double lon,
const double lat,
const double p 
)
+
+ +

Climatology of OH number concentrations.

+ +

Definition at line 58 of file libtrac.c.

+
64 {
+
65
+
66 /* Get OH data from climatology... */
+
67 double oh = clim_zm(&clim->oh, t, lat, p);
+
68
+
69 /* Apply diurnal correction... */
+
70 if (ctl->oh_chem_beta > 0) {
+
71 double sza = sza_calc(t, lon, lat);
+
72 if (sza <= M_PI / 2. * 85. / 90.)
+
73 return oh * exp(-ctl->oh_chem_beta / cos(sza));
+
74 else
+
75 return oh * exp(-ctl->oh_chem_beta / cos(M_PI / 2. * 85. / 90.));
+
76 } else
+
77 return oh;
+
78}
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double sza_calc(const double sec, const double lon, const double lat)
Calculate solar zenith angle.
Definition: libtrac.c:5408
+
clim_zm_t oh
OH zonal means.
Definition: libtrac.h:1802
+
double oh_chem_beta
Beta parameter for diurnal variablity of OH.
Definition: libtrac.h:1408
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ clim_oh_diurnal_correction()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void clim_oh_diurnal_correction (ctl_tctl,
clim_tclim 
)
+
+ +

Initialization function for OH climatology.

+ +

Definition at line 82 of file libtrac.c.

+
84 {
+
85
+
86 /* Loop over climatology data points... */
+
87 for (int it = 0; it < clim->oh.ntime; it++)
+
88 for (int iz = 0; iz < clim->oh.np; iz++)
+
89 for (int iy = 0; iy < clim->oh.nlat; iy++) {
+
90
+
91 /* Init... */
+
92 int n = 0;
+
93 double sum = 0;
+
94
+
95 /* Integrate day/night correction factor over longitude... */
+
96 for (double lon = -180; lon < 180; lon += 1.0) {
+
97 double sza = sza_calc(clim->oh.time[it], lon, clim->oh.lat[iy]);
+
98 if (sza <= M_PI / 2. * 85. / 90.)
+
99 sum += exp(-ctl->oh_chem_beta / cos(sza));
+
100 else
+
101 sum += exp(-ctl->oh_chem_beta / cos(M_PI / 2. * 85. / 90.));
+
102 n++;
+
103 }
+
104
+
105 /* Apply scaling factor to OH data... */
+
106 clim->oh.vmr[it][iz][iy] /= (sum / (double) n);
+
107 }
+
108}
+
double time[CT]
Time [s].
Definition: libtrac.h:1764
+
int np
Number of pressure levels.
Definition: libtrac.h:1761
+
double vmr[CT][CP][CY]
Volume mixing ratio [ppv].
Definition: libtrac.h:1773
+
int ntime
Number of timesteps.
Definition: libtrac.h:1755
+
int nlat
Number of latitudes.
Definition: libtrac.h:1758
+
double lat[CY]
Latitude [deg].
Definition: libtrac.h:1767
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ clim_photo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double clim_photo (double rate[CP][CSZA][CO3],
clim_photo_tphoto,
double p,
double sza,
double o3c 
)
+
+ +

Interpolate photolysis rate data.

+ +

Definition at line 112 of file libtrac.c.

+
117 {
+
118
+
119 /* Check pressure range... */
+
120 double p_help = p;
+
121 if (p < photo->p[photo->np - 1])
+
122 p_help = photo->p[photo->np - 1];
+
123 else if (p > photo->p[0])
+
124 p_help = photo->p[0];
+
125
+
126 /* Check sza range... */
+
127 double sza_help = sza;
+
128 if (sza < photo->sza[0])
+
129 sza_help = photo->sza[0];
+
130 else if (sza > photo->sza[photo->nsza - 1])
+
131 sza_help = photo->sza[photo->nsza - 1];
+
132
+
133 /* Check ozone column range... */
+
134 double o3c_help = o3c;
+
135 if (o3c < photo->o3c[0])
+
136 o3c_help = photo->o3c[0];
+
137 else if (o3c > photo->o3c[photo->no3c - 1])
+
138 o3c_help = photo->o3c[photo->no3c - 1];
+
139
+
140 /* Get indices... */
+
141 int ip = locate_irr(photo->p, photo->np, p_help);
+
142 int isza = locate_reg(photo->sza, photo->nsza, sza_help);
+
143 int io3c = locate_reg(photo->o3c, photo->no3c, o3c_help);
+
144
+
145 /* Interpolate photolysis rate... */
+
146 double aux00 = LIN(photo->p[ip], rate[ip][isza][io3c],
+
147 photo->p[ip + 1], rate[ip + 1][isza][io3c], p_help);
+
148 double aux01 = LIN(photo->p[ip], rate[ip][isza][io3c + 1],
+
149 photo->p[ip + 1], rate[ip + 1][isza][io3c + 1], p_help);
+
150 double aux10 = LIN(photo->p[ip], rate[ip][isza + 1][io3c],
+
151 photo->p[ip + 1], rate[ip + 1][isza + 1][io3c], p_help);
+
152 double aux11 = LIN(photo->p[ip], rate[ip][isza + 1][io3c + 1],
+
153 photo->p[ip + 1], rate[ip + 1][isza + 1][io3c + 1],
+
154 p_help);
+
155 aux00 = LIN(photo->o3c[io3c], aux00, photo->o3c[io3c + 1], aux01, o3c_help);
+
156 aux11 = LIN(photo->o3c[io3c], aux10, photo->o3c[io3c + 1], aux11, o3c_help);
+
157 aux00 = LIN(photo->sza[isza], aux00, photo->sza[isza + 1], aux11, sza_help);
+
158 return GSL_MAX(aux00, 0.0);
+
159}
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
int nsza
Number of solar zenith angles.
Definition: libtrac.h:1709
+
double sza[CSZA]
Solar zenith angle [rad].
Definition: libtrac.h:1718
+
double p[CP]
Pressure [hPa].
Definition: libtrac.h:1715
+
double o3c[CO3]
Total column ozone [DU].
Definition: libtrac.h:1721
+
int np
Number of pressure levels.
Definition: libtrac.h:1706
+
int no3c
Number of total ozone columns.
Definition: libtrac.h:1712
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ clim_tropo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double clim_tropo (const clim_tclim,
const double t,
const double lat 
)
+
+ +

Climatology of tropopause pressure.

+ +

Definition at line 163 of file libtrac.c.

+
166 {
+
167
+
168 /* Get seconds since begin of year... */
+
169 double sec = FMOD(t, 365.25 * 86400.);
+
170 while (sec < 0)
+
171 sec += 365.25 * 86400.;
+
172
+
173 /* Get indices... */
+
174 int isec = locate_irr(clim->tropo_time, clim->tropo_ntime, sec);
+
175 int ilat = locate_reg(clim->tropo_lat, clim->tropo_nlat, lat);
+
176
+
177 /* Interpolate tropopause pressure... */
+
178 double p0 = LIN(clim->tropo_lat[ilat],
+
179 clim->tropo[isec][ilat],
+
180 clim->tropo_lat[ilat + 1],
+
181 clim->tropo[isec][ilat + 1], lat);
+
182 double p1 = LIN(clim->tropo_lat[ilat],
+
183 clim->tropo[isec + 1][ilat],
+
184 clim->tropo_lat[ilat + 1],
+
185 clim->tropo[isec + 1][ilat + 1], lat);
+
186 return LIN(clim->tropo_time[isec], p0, clim->tropo_time[isec + 1], p1, sec);
+
187}
+
#define FMOD(x, y)
Compute floating point modulo.
Definition: libtrac.h:307
+
int tropo_ntime
Number of tropopause timesteps.
Definition: libtrac.h:1781
+
double tropo_lat[73]
Tropopause latitudes [deg].
Definition: libtrac.h:1790
+
int tropo_nlat
Number of tropopause latitudes.
Definition: libtrac.h:1784
+
double tropo[12][73]
Tropopause pressure values [hPa].
Definition: libtrac.h:1793
+
double tropo_time[12]
Tropopause time steps [s].
Definition: libtrac.h:1787
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ clim_tropo_init()

+ +
+
+ + + + + + + + +
void clim_tropo_init (clim_tclim)
+
+ +

Initialize tropopause climatology.

+ +

Definition at line 191 of file libtrac.c.

+
192 {
+
193
+
194 /* Write info... */
+
195 LOG(1, "Initialize tropopause data...");
+
196
+
197 /* Set time [s]... */
+
198 clim->tropo_ntime = 12;
+
199 double tropo_time[12] = {
+
200 1209600.00, 3888000.00, 6393600.00,
+
201 9072000.00, 11664000.00, 14342400.00,
+
202 16934400.00, 19612800.00, 22291200.00,
+
203 24883200.00, 27561600.00, 30153600.00
+
204 };
+
205 memcpy(clim->tropo_time, tropo_time, sizeof(clim->tropo_time));
+
206
+
207 /* Set latitudes [deg]... */
+
208 clim->tropo_nlat = 73;
+
209 double tropo_lat[73] = {
+
210 -90, -87.5, -85, -82.5, -80, -77.5, -75, -72.5, -70, -67.5,
+
211 -65, -62.5, -60, -57.5, -55, -52.5, -50, -47.5, -45, -42.5,
+
212 -40, -37.5, -35, -32.5, -30, -27.5, -25, -22.5, -20, -17.5,
+
213 -15, -12.5, -10, -7.5, -5, -2.5, 0, 2.5, 5, 7.5, 10, 12.5,
+
214 15, 17.5, 20, 22.5, 25, 27.5, 30, 32.5, 35, 37.5, 40, 42.5,
+
215 45, 47.5, 50, 52.5, 55, 57.5, 60, 62.5, 65, 67.5, 70, 72.5,
+
216 75, 77.5, 80, 82.5, 85, 87.5, 90
+
217 };
+
218 memcpy(clim->tropo_lat, tropo_lat, sizeof(clim->tropo_lat));
+
219
+
220 /* Set tropopause pressure [hPa] (NCEP/NCAR Reanalysis 1)... */
+
221 double tropo[12][73] = {
+
222 {324.1, 325.6, 325, 324.3, 322.5, 319.7, 314, 307.2, 301.8, 299.6,
+
223 297.1, 292.2, 285.6, 276.1, 264, 248.9, 231.9, 213.5, 194.4,
+
224 175.3, 157, 140.4, 126.7, 116.3, 109.5, 105.4, 103, 101.4, 100.4,
+
225 99.69, 99.19, 98.84, 98.56, 98.39, 98.39, 98.42, 98.44, 98.54,
+
226 98.68, 98.81, 98.89, 98.96, 99.12, 99.65, 101.4, 105.4, 113.5, 128,
+
227 152.1, 184.7, 214, 234.1, 247.3, 255.8, 262.6, 267.7, 271.7, 275,
+
228 277.2, 279, 280.1, 280.4, 280.6, 280.1, 279.3, 278.3, 276.8, 275.8,
+
229 275.3, 275.6, 275.4, 274.1, 273.5},
+
230 {337.3, 338.7, 337.8, 336.4, 333, 328.8, 321.1, 312.6, 306.6, 303.7,
+
231 300.2, 293.8, 285.4, 273.8, 259.6, 242.7, 224.4, 205.2, 186, 167.5,
+
232 150.3, 135, 122.8, 113.9, 108.2, 104.7, 102.5, 101.1, 100.2, 99.42,
+
233 98.88, 98.52, 98.25, 98.09, 98.07, 98.1, 98.12, 98.2, 98.25, 98.27,
+
234 98.26, 98.27, 98.36, 98.79, 100.2, 104.2, 113.7, 131.2, 159.5, 193,
+
235 220.4, 238.1, 250.2, 258.1, 264.7, 269.7, 273.7, 277.3, 280.2, 282.8,
+
236 284.9, 286.5, 288.1, 288.8, 289, 288.5, 287.2, 286.3, 286.1, 287.2,
+
237 287.5, 286.2, 285.8},
+
238 {335, 336, 335.7, 335.1, 332.3, 328.1, 320.6, 311.8, 305.1, 301.9,
+
239 297.6, 290, 280.4, 268.3, 254.6, 239.6, 223.9, 207.9, 192.2, 176.9,
+
240 161.7, 146.4, 132.2, 120.6, 112.3, 107.2, 104.3, 102.4, 101.3,
+
241 100.4, 99.86, 99.47, 99.16, 98.97, 98.94, 98.97, 99, 99.09, 99.2,
+
242 99.31, 99.35, 99.41, 99.51, 99.86, 101.1, 104.9, 114.3, 131, 156.8,
+
243 186.3, 209.3, 224.6, 236.8, 246.3, 254.9, 262.3, 268.8, 274.8,
+
244 279.9, 284.6, 288.6, 291.6, 294.9, 297.5, 299.8, 301.8, 303.1,
+
245 304.3, 304.9, 306, 306.6, 306.2, 306},
+
246 {306.2, 306.7, 305.7, 307.1, 307.3, 306.4, 301.8, 296.2, 292.4,
+
247 290.3, 287.1, 280.9, 273.4, 264.3, 254.1, 242.8, 231, 219, 207.2,
+
248 195.5, 183.3, 169.7, 154.7, 138.7, 124.1, 113.6, 107.8, 104.7,
+
249 102.8, 101.7, 100.9, 100.4, 100, 99.79, 99.7, 99.66, 99.68, 99.79,
+
250 99.94, 100.2, 100.5, 100.9, 101.4, 102.1, 103.4, 107, 115.2, 129.1,
+
251 148.7, 171, 190.8, 205.6, 218.4, 229.4, 239.6, 248.6, 256.5,
+
252 263.7, 270.3, 276.6, 282.6, 288.1, 294.5, 300.4, 306.3, 311.4,
+
253 315.1, 318.3, 320.3, 322.2, 322.8, 321.5, 321.1},
+
254 {266.5, 264.9, 260.8, 261, 262, 263, 261.3, 259.7, 259.2, 259.8,
+
255 260.1, 258.6, 256.7, 253.6, 249.5, 243.9, 237.4, 230, 222.1, 213.9,
+
256 205, 194.4, 180.4, 161.8, 140.7, 122.9, 112.1, 106.7, 104.1, 102.7,
+
257 101.8, 101.4, 101.1, 101, 101, 101, 101.1, 101.2, 101.5, 101.9,
+
258 102.4, 103, 103.8, 104.9, 106.8, 110.1, 115.6, 124, 135.2, 148.9,
+
259 165.2, 181.3, 198, 211.8, 223.5, 233.8, 242.9, 251.5, 259, 266.2,
+
260 273.1, 279.2, 286.2, 292.8, 299.6, 306, 311.1, 315.5, 318.8, 322.6,
+
261 325.3, 325.8, 325.8},
+
262 {220.1, 218.1, 210.8, 207.2, 207.6, 210.5, 211.4, 213.5, 217.3,
+
263 222.4, 227.9, 232.8, 237.4, 240.8, 242.8, 243, 241.5, 238.6, 234.2,
+
264 228.5, 221, 210.7, 195.1, 172.9, 147.8, 127.6, 115.6, 109.9, 107.1,
+
265 105.7, 105, 104.8, 104.8, 104.9, 105, 105.1, 105.3, 105.5, 105.8,
+
266 106.4, 107, 107.6, 108.1, 108.8, 110, 111.8, 114.2, 117.4, 121.6,
+
267 127.9, 137.3, 151.2, 169.5, 189, 205.8, 218.9, 229.1, 237.8, 245,
+
268 251.5, 257.1, 262.3, 268.2, 274, 280.4, 286.7, 292.4, 297.9, 302.9,
+
269 308.5, 312.2, 313.1, 313.3},
+
270 {187.4, 184.5, 173.3, 166.1, 165.4, 167.8, 169.6, 173.6, 179.6,
+
271 187.9, 198.9, 210, 220.5, 229.2, 235.7, 239.9, 241.8, 241.6, 239.6,
+
272 235.8, 229.4, 218.6, 200.9, 175.9, 149.4, 129.4, 118.3, 113.1,
+
273 110.8, 109.7, 109.3, 109.4, 109.7, 110, 110.2, 110.4, 110.5, 110.7,
+
274 111, 111.4, 111.8, 112.1, 112.3, 112.7, 113.2, 113.9, 115, 116.4,
+
275 117.9, 120.4, 124.1, 130.9, 142.2, 159.6, 179.6, 198.5, 212.9,
+
276 224.2, 232.7, 239.1, 243.8, 247.7, 252.4, 257.3, 263.2, 269.5,
+
277 275.4, 281.1, 286.3, 292, 296.3, 298.2, 298.8},
+
278 {166, 166.4, 155.7, 148.3, 147.1, 149, 152.1, 157, 163.6, 172.4,
+
279 185.3, 199.2, 212.6, 224, 233.2, 239.6, 243.3, 244.6, 243.6, 240.3,
+
280 233.9, 222.6, 203.7, 177, 149.5, 129.7, 119, 114, 111.7, 110.7,
+
281 110.3, 110.3, 110.6, 110.9, 111.1, 111.3, 111.5, 111.6, 111.9,
+
282 112.2, 112.5, 112.6, 112.8, 113, 113.4, 114, 115.1, 116.5, 118.3,
+
283 120.9, 124.4, 130.2, 139.4, 154.6, 173.8, 193.1, 208.1, 220.4,
+
284 230.1, 238.2, 244.7, 249.5, 254.5, 259.3, 264.5, 269.4, 273.7,
+
285 278.2, 282.6, 287.4, 290.9, 292.5, 293},
+
286 {171.9, 172.8, 166.2, 162.3, 161.4, 162.5, 165.2, 169.6, 175.3,
+
287 183.1, 193.8, 205.9, 218.3, 229.6, 238.5, 244.3, 246.9, 246.7,
+
288 243.8, 238.4, 230.2, 217.9, 199.6, 174.9, 148.9, 129.8, 119.5,
+
289 114.8, 112.3, 110.9, 110.3, 110.1, 110.2, 110.3, 110.4, 110.5,
+
290 110.6, 110.8, 111, 111.4, 111.8, 112, 112.2, 112.4, 112.9, 113.6,
+
291 114.7, 116.3, 118.4, 121.9, 127.1, 136.1, 149.8, 168.4, 186.9,
+
292 203.3, 217, 229.1, 238.7, 247, 254, 259.3, 264.3, 268.3, 272.5,
+
293 276.6, 280.4, 284.4, 288.4, 293.3, 297.2, 298.7, 299.1},
+
294 {191.6, 192.2, 189, 188.1, 190.2, 193.7, 197.8, 202.9, 208.5,
+
295 215.6, 224.2, 233.1, 241.2, 247.3, 250.8, 251.3, 248.9, 244.2,
+
296 237.3, 228.4, 217.2, 202.9, 184.5, 162.5, 140.7, 124.8, 116.2,
+
297 111.8, 109.4, 107.9, 107, 106.7, 106.6, 106.6, 106.7, 106.7,
+
298 106.8, 107, 107.4, 108, 108.7, 109.3, 109.8, 110.4, 111.2,
+
299 112.4, 114.2, 116.9, 121.1, 127.9, 139.3, 155.2, 173.6, 190.7,
+
300 206.1, 220.1, 232.3, 243, 251.8, 259.2, 265.7, 270.6, 275.3,
+
301 279.3, 283.3, 286.9, 289.7, 292.8, 296.1, 300.5, 303.9, 304.8,
+
302 305.1},
+
303 {241.5, 239.6, 236.8, 237.4, 239.4, 242.3, 244.2, 246.4, 249.2,
+
304 253.6, 258.6, 262.7, 264.8, 264.2, 260.6, 254.1, 245.5, 235.3,
+
305 223.9, 211.7, 198.3, 183.1, 165.6, 147.1, 130.5, 118.7, 111.9,
+
306 108.1, 105.8, 104.3, 103.4, 102.8, 102.5, 102.4, 102.5, 102.5,
+
307 102.5, 102.7, 103.1, 103.8, 104.6, 105.4, 106.1, 107, 108.2,
+
308 109.9, 112.8, 117.5, 126, 140.4, 161, 181.9, 201.2, 216.8, 230.4,
+
309 241.8, 251.4, 259.9, 266.9, 272.8, 277.4, 280.4, 282.9, 284.6,
+
310 286.1, 287.4, 288.3, 289.5, 290.9, 294.2, 296.9, 297.5, 297.6},
+
311 {301.2, 300.3, 296.6, 295.4, 295, 294.3, 291.2, 287.4, 284.9, 284.7,
+
312 284.1, 281.5, 277.1, 270.4, 261.7, 250.6, 237.6, 223.1, 207.9, 192,
+
313 175.8, 158.8, 142.1, 127.6, 116.8, 109.9, 106, 103.6, 102.1, 101.1,
+
314 100.4, 99.96, 99.6, 99.37, 99.32, 99.32, 99.31, 99.46, 99.77, 100.2,
+
315 100.7, 101.3, 101.8, 102.7, 104.1, 106.8, 111.9, 121, 136.7, 160,
+
316 186.9, 209.9, 228.1, 241.2, 251.5, 259.5, 265.7, 270.9, 274.8, 278,
+
317 280.3, 281.8, 283, 283.3, 283.7, 283.8, 283, 282.2, 281.2, 281.4,
+
318 281.7, 281.1, 281.2}
+
319 };
+
320 memcpy(clim->tropo, tropo, sizeof(clim->tropo));
+
321
+
322 /* Get range... */
+
323 double tropomin = 1e99, tropomax = -1e99;
+
324 for (int it = 0; it < clim->tropo_ntime; it++)
+
325 for (int iy = 0; iy < clim->tropo_nlat; iy++) {
+
326 tropomin = GSL_MIN(tropomin, clim->tropo[it][iy]);
+
327 tropomax = GSL_MAX(tropomax, clim->tropo[it][iy]);
+
328 }
+
329
+
330 /* Write info... */
+
331 LOG(2, "Number of time steps: %d", clim->tropo_ntime);
+
332 LOG(2, "Time steps: %.2f, %.2f ... %.2f s",
+
333 clim->tropo_time[0], clim->tropo_time[1],
+
334 clim->tropo_time[clim->tropo_ntime - 1]);
+
335 LOG(2, "Number of latitudes: %d", clim->tropo_nlat);
+
336 LOG(2, "Latitudes: %g, %g ... %g deg",
+
337 clim->tropo_lat[0], clim->tropo_lat[1],
+
338 clim->tropo_lat[clim->tropo_nlat - 1]);
+
339 LOG(2, "Tropopause altitude range: %g ... %g hPa", Z(tropomax),
+
340 Z(tropomin));
+
341 LOG(2, "Tropopause pressure range: %g ... %g hPa", tropomin, tropomax);
+
342}
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
+
+
+ +

◆ clim_ts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
double clim_ts (const clim_ts_tts,
const double t 
)
+
+ +

Interpolate time series.

+ +

Definition at line 346 of file libtrac.c.

+
348 {
+
349
+
350 /* Interpolate... */
+
351 if (t <= ts->time[0])
+
352 return ts->vmr[0];
+
353 else if (t >= ts->time[ts->ntime - 1])
+
354 return ts->vmr[ts->ntime - 1];
+
355 else {
+
356 int idx = locate_irr(ts->time, ts->ntime, t);
+
357 return LIN(ts->time[idx], ts->vmr[idx],
+
358 ts->time[idx + 1], ts->vmr[idx + 1], t);
+
359 }
+
360}
+
double vmr[CTS]
Volume mixing ratio [ppv].
Definition: libtrac.h:1747
+
double time[CTS]
Time [s].
Definition: libtrac.h:1744
+
int ntime
Number of timesteps.
Definition: libtrac.h:1741
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ clim_zm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double clim_zm (const clim_zm_tzm,
const double t,
const double lat,
const double p 
)
+
+ +

Interpolate zonal mean climatology.

+ +

Definition at line 364 of file libtrac.c.

+
368 {
+
369
+
370 /* Get seconds since begin of year... */
+
371 double sec = FMOD(t, 365.25 * 86400.);
+
372 while (sec < 0)
+
373 sec += 365.25 * 86400.;
+
374
+
375 /* Check pressure range... */
+
376 double p_help = p;
+
377 if (p < zm->p[zm->np - 1])
+
378 p_help = zm->p[zm->np - 1];
+
379 else if (p > zm->p[0])
+
380 p_help = zm->p[0];
+
381
+
382 /* Check latitude range... */
+
383 double lat_help = lat;
+
384 if (lat < zm->lat[0])
+
385 lat_help = zm->lat[0];
+
386 else if (lat > zm->lat[zm->nlat - 1])
+
387 lat_help = zm->lat[zm->nlat - 1];
+
388
+
389 /* Get indices... */
+
390 int isec = locate_irr(zm->time, zm->ntime, sec);
+
391 int ilat = locate_reg(zm->lat, zm->nlat, lat_help);
+
392 int ip = locate_irr(zm->p, zm->np, p_help);
+
393
+
394 /* Interpolate climatology data... */
+
395 double aux00 = LIN(zm->p[ip], zm->vmr[isec][ip][ilat],
+
396 zm->p[ip + 1], zm->vmr[isec][ip + 1][ilat], p_help);
+
397 double aux01 = LIN(zm->p[ip], zm->vmr[isec][ip][ilat + 1],
+
398 zm->p[ip + 1], zm->vmr[isec][ip + 1][ilat + 1], p_help);
+
399 double aux10 = LIN(zm->p[ip], zm->vmr[isec + 1][ip][ilat],
+
400 zm->p[ip + 1], zm->vmr[isec + 1][ip + 1][ilat], p_help);
+
401 double aux11 = LIN(zm->p[ip], zm->vmr[isec + 1][ip][ilat + 1],
+
402 zm->p[ip + 1], zm->vmr[isec + 1][ip + 1][ilat + 1],
+
403 p_help);
+
404 aux00 = LIN(zm->lat[ilat], aux00, zm->lat[ilat + 1], aux01, lat_help);
+
405 aux11 = LIN(zm->lat[ilat], aux10, zm->lat[ilat + 1], aux11, lat_help);
+
406 aux00 = LIN(zm->time[isec], aux00, zm->time[isec + 1], aux11, sec);
+
407
+
408 return GSL_MAX(aux00, 0.0);
+
409}
+
double p[CP]
Pressure [hPa].
Definition: libtrac.h:1770
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ compress_pack()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void compress_pack (char * varname,
float * array,
size_t nxy,
size_t nz,
int decompress,
FILE * inout 
)
+
+ +

Pack or unpack array.

+ +

Definition at line 413 of file libtrac.c.

+
419 {
+
420
+
421 double min[EP], max[EP], off[EP], scl[EP];
+
422
+
423 unsigned short *sarray;
+
424
+
425 /* Allocate... */
+
426 ALLOC(sarray, unsigned short,
+
427 nxy * nz);
+
428
+
429 /* Read compressed stream and decompress array... */
+
430 if (decompress) {
+
431
+
432 /* Write info... */
+
433 LOG(2, "Read 3-D variable: %s (pack, RATIO= %g %%)",
+
434 varname, 100. * sizeof(unsigned short) / sizeof(float));
+
435
+
436 /* Read data... */
+
437 FREAD(&scl, double,
+
438 nz,
+
439 inout);
+
440 FREAD(&off, double,
+
441 nz,
+
442 inout);
+
443 FREAD(sarray, unsigned short,
+
444 nxy * nz,
+
445 inout);
+
446
+
447 /* Convert to float... */
+
448#pragma omp parallel for default(shared)
+
449 for (size_t ixy = 0; ixy < nxy; ixy++)
+
450 for (size_t iz = 0; iz < nz; iz++)
+
451 array[ixy * nz + iz]
+
452 = (float) (sarray[ixy * nz + iz] * scl[iz] + off[iz]);
+
453 }
+
454
+
455 /* Compress array and output compressed stream... */
+
456 else {
+
457
+
458 /* Write info... */
+
459 LOG(2, "Write 3-D variable: %s (pack, RATIO= %g %%)",
+
460 varname, 100. * sizeof(unsigned short) / sizeof(float));
+
461
+
462 /* Get range... */
+
463 for (size_t iz = 0; iz < nz; iz++) {
+
464 min[iz] = array[iz];
+
465 max[iz] = array[iz];
+
466 }
+
467 for (size_t ixy = 1; ixy < nxy; ixy++)
+
468 for (size_t iz = 0; iz < nz; iz++) {
+
469 if (array[ixy * nz + iz] < min[iz])
+
470 min[iz] = array[ixy * nz + iz];
+
471 if (array[ixy * nz + iz] > max[iz])
+
472 max[iz] = array[ixy * nz + iz];
+
473 }
+
474
+
475 /* Get offset and scaling factor... */
+
476 for (size_t iz = 0; iz < nz; iz++) {
+
477 scl[iz] = (max[iz] - min[iz]) / 65533.;
+
478 off[iz] = min[iz];
+
479 }
+
480
+
481 /* Convert to short... */
+
482#pragma omp parallel for default(shared)
+
483 for (size_t ixy = 0; ixy < nxy; ixy++)
+
484 for (size_t iz = 0; iz < nz; iz++)
+
485 if (scl[iz] != 0)
+
486 sarray[ixy * nz + iz] = (unsigned short)
+
487 ((array[ixy * nz + iz] - off[iz]) / scl[iz] + .5);
+
488 else
+
489 sarray[ixy * nz + iz] = 0;
+
490
+
491 /* Write data... */
+
492 FWRITE(&scl, double,
+
493 nz,
+
494 inout);
+
495 FWRITE(&off, double,
+
496 nz,
+
497 inout);
+
498 FWRITE(sarray, unsigned short,
+
499 nxy * nz,
+
500 inout);
+
501 }
+
502
+
503 /* Free... */
+
504 free(sarray);
+
505}
+
#define FWRITE(ptr, type, size, out)
Write binary data.
Definition: libtrac.h:317
+
#define FREAD(ptr, type, size, in)
Read binary data.
Definition: libtrac.h:311
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
+
+
+ +

◆ day2doy()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void day2doy (const int year,
const int mon,
const int day,
int * doy 
)
+
+ +

Compress or decompress array with zfp.

+

Compress or decompress array with zstd.

+

Get day of year from date.

+ +

Definition at line 654 of file libtrac.c.

+
658 {
+
659
+
660 const int
+
661 d0[12] = { 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },
+
662 d0l[12] = { 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 };
+
663
+
664 /* Get day of year... */
+
665 if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
+
666 *doy = d0l[mon - 1] + day - 1;
+
667 else
+
668 *doy = d0[mon - 1] + day - 1;
+
669}
+
+
+
+ +

◆ doy2day()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void doy2day (const int year,
const int doy,
int * mon,
int * day 
)
+
+ +

Get date from day of year.

+ +

Definition at line 673 of file libtrac.c.

+
677 {
+
678
+
679 const int
+
680 d0[12] = { 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },
+
681 d0l[12] = { 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 };
+
682
+
683 int i;
+
684
+
685 /* Get month and day... */
+
686 if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
+
687 for (i = 11; i > 0; i--)
+
688 if (d0l[i] <= doy)
+
689 break;
+
690 *mon = i + 1;
+
691 *day = doy - d0l[i] + 1;
+
692 } else {
+
693 for (i = 11; i > 0; i--)
+
694 if (d0[i] <= doy)
+
695 break;
+
696 *mon = i + 1;
+
697 *day = doy - d0[i] + 1;
+
698 }
+
699}
+
+
+
+ +

◆ geo2cart()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void geo2cart (const double z,
const double lon,
const double lat,
double * x 
)
+
+ +

Convert geolocation to Cartesian coordinates.

+ +

Definition at line 703 of file libtrac.c.

+
707 {
+
708
+
709 double radius = z + RE;
+
710 x[0] = radius * cos(lat / 180. * M_PI) * cos(lon / 180. * M_PI);
+
711 x[1] = radius * cos(lat / 180. * M_PI) * sin(lon / 180. * M_PI);
+
712 x[2] = radius * sin(lat / 180. * M_PI);
+
713}
+
+
+
+ +

◆ get_met()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void get_met (ctl_tctl,
clim_tclim,
double t,
met_t ** met0,
met_t ** met1 
)
+
+ +

Get meteo data for given time step.

+ +

Definition at line 717 of file libtrac.c.

+
722 {
+
723
+
724 static int init;
+
725
+
726 met_t *mets;
+
727
+
728 char cachefile[LEN], cmd[2 * LEN], filename[LEN];
+
729
+
730 /* Set timer... */
+
731 SELECT_TIMER("GET_MET", "INPUT", NVTX_READ);
+
732
+
733 /* Init... */
+
734 if (t == ctl->t_start || !init) {
+
735 init = 1;
+
736
+
737 /* Read meteo data... */
+
738 get_met_help(ctl, t + (ctl->direction == -1 ? -1 : 0), -1,
+
739 ctl->metbase, ctl->dt_met, filename);
+
740 if (!read_met(filename, ctl, clim, *met0))
+
741 ERRMSG("Cannot open file!");
+
742
+
743 get_met_help(ctl, t + (ctl->direction == 1 ? 1 : 0), 1,
+
744 ctl->metbase, ctl->dt_met, filename);
+
745 if (!read_met(filename, ctl, clim, *met1))
+
746 ERRMSG("Cannot open file!");
+
747
+
748 /* Update GPU... */
+
749#ifdef _OPENACC
+
750 met_t *met0up = *met0;
+
751 met_t *met1up = *met1;
+
752#ifdef ASYNCIO
+
753#pragma acc update device(met0up[:1],met1up[:1]) async(5)
+
754#else
+
755#pragma acc update device(met0up[:1],met1up[:1])
+
756#endif
+
757#endif
+
758
+
759 /* Caching... */
+
760 if (ctl->met_cache && t != ctl->t_stop) {
+
761 get_met_help(ctl, t + 1.1 * ctl->dt_met * ctl->direction,
+
762 ctl->direction, ctl->metbase, ctl->dt_met, cachefile);
+
763 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
764 LOG(1, "Caching: %s", cachefile);
+
765 if (system(cmd) != 0)
+
766 WARN("Caching command failed!");
+
767 }
+
768 }
+
769
+
770 /* Read new data for forward trajectories... */
+
771 if (t > (*met1)->time) {
+
772
+
773 /* Pointer swap... */
+
774 mets = *met1;
+
775 *met1 = *met0;
+
776 *met0 = mets;
+
777
+
778 /* Read new meteo data... */
+
779 get_met_help(ctl, t, 1, ctl->metbase, ctl->dt_met, filename);
+
780 if (!read_met(filename, ctl, clim, *met1))
+
781 ERRMSG("Cannot open file!");
+
782
+
783 /* Update GPU... */
+
784#ifdef _OPENACC
+
785 met_t *met1up = *met1;
+
786#ifdef ASYNCIO
+
787#pragma acc update device(met1up[:1]) async(5)
+
788#else
+
789#pragma acc update device(met1up[:1])
+
790#endif
+
791#endif
+
792
+
793 /* Caching... */
+
794 if (ctl->met_cache && t != ctl->t_stop) {
+
795 get_met_help(ctl, t + ctl->dt_met, 1, ctl->metbase, ctl->dt_met,
+
796 cachefile);
+
797 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
798 LOG(1, "Caching: %s", cachefile);
+
799 if (system(cmd) != 0)
+
800 WARN("Caching command failed!");
+
801 }
+
802 }
+
803 /* Read new data for backward trajectories... */
+
804 if (t < (*met0)->time) {
+
805
+
806 /* Pointer swap... */
+
807 mets = *met1;
+
808 *met1 = *met0;
+
809 *met0 = mets;
+
810
+
811 /* Read new meteo data... */
+
812 get_met_help(ctl, t, -1, ctl->metbase, ctl->dt_met, filename);
+
813 if (!read_met(filename, ctl, clim, *met0))
+
814 ERRMSG("Cannot open file!");
+
815
+
816 /* Update GPU... */
+
817#ifdef _OPENACC
+
818 met_t *met0up = *met0;
+
819#ifdef ASYNCIO
+
820#pragma acc update device(met0up[:1]) async(5)
+
821#else
+
822#pragma acc update device(met0up[:1])
+
823#endif
+
824#endif
+
825
+
826 /* Caching... */
+
827 if (ctl->met_cache && t != ctl->t_stop) {
+
828 get_met_help(ctl, t - ctl->dt_met, -1, ctl->metbase, ctl->dt_met,
+
829 cachefile);
+
830 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
831 LOG(1, "Caching: %s", cachefile);
+
832 if (system(cmd) != 0)
+
833 WARN("Caching command failed!");
+
834 }
+
835 }
+
836 /* Check that grids are consistent... */
+
837 if ((*met0)->nx != 0 && (*met1)->nx != 0) {
+
838 if ((*met0)->nx != (*met1)->nx
+
839 || (*met0)->ny != (*met1)->ny || (*met0)->np != (*met1)->np)
+
840 ERRMSG("Meteo grid dimensions do not match!");
+
841 for (int ix = 0; ix < (*met0)->nx; ix++)
+
842 if (fabs((*met0)->lon[ix] - (*met1)->lon[ix]) > 0.001)
+
843 ERRMSG("Meteo grid longitudes do not match!");
+
844 for (int iy = 0; iy < (*met0)->ny; iy++)
+
845 if (fabs((*met0)->lat[iy] - (*met1)->lat[iy]) > 0.001)
+
846 ERRMSG("Meteo grid latitudes do not match!");
+
847 for (int ip = 0; ip < (*met0)->np; ip++)
+
848 if (fabs((*met0)->p[ip] - (*met1)->p[ip]) > 0.001)
+
849 ERRMSG("Meteo grid pressure levels do not match!");
+
850 }
+
851}
+
void get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename)
Get meteo data for time step.
Definition: libtrac.c:855
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define WARN(...)
Print warning message.
Definition: libtrac.h:692
+
#define SELECT_TIMER(id, group, color)
Select timer.
Definition: libtrac.h:721
+
int direction
Direction flag (1=forward calculation, -1=backward calculation).
Definition: libtrac.h:1094
+
double dt_met
Time step of meteo data [s].
Definition: libtrac.h:1109
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
int met_cache
Preload meteo data into disk cache (0=no, 1=yes).
Definition: libtrac.h:1200
+
char metbase[LEN]
Basename for meteo data.
Definition: libtrac.h:1106
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
Meteo data.
Definition: libtrac.h:1831
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +

◆ get_met_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void get_met_help (ctl_tctl,
double t,
int direct,
char * metbase,
double dt_met,
char * filename 
)
+
+ +

Get meteo data for time step.

+ +

Definition at line 855 of file libtrac.c.

+
861 {
+
862
+
863 char repl[LEN];
+
864
+
865 double t6, r;
+
866
+
867 int year, mon, day, hour, min, sec;
+
868
+
869 /* Round time to fixed intervals... */
+
870 if (direct == -1)
+
871 t6 = floor(t / dt_met) * dt_met;
+
872 else
+
873 t6 = ceil(t / dt_met) * dt_met;
+
874
+
875 /* Decode time... */
+
876 jsec2time(t6, &year, &mon, &day, &hour, &min, &sec, &r);
+
877
+
878 /* Set filename of MPTRAC meteo files... */
+
879 if (ctl->clams_met_data == 0) {
+
880 if (ctl->met_type == 0)
+
881 sprintf(filename, "%s_YYYY_MM_DD_HH.nc", metbase);
+
882 else if (ctl->met_type == 1)
+
883 sprintf(filename, "%s_YYYY_MM_DD_HH.bin", metbase);
+
884 else if (ctl->met_type == 2)
+
885 sprintf(filename, "%s_YYYY_MM_DD_HH.pck", metbase);
+
886 else if (ctl->met_type == 3)
+
887 sprintf(filename, "%s_YYYY_MM_DD_HH.zfp", metbase);
+
888 else if (ctl->met_type == 4)
+
889 sprintf(filename, "%s_YYYY_MM_DD_HH.zstd", metbase);
+
890 sprintf(repl, "%d", year);
+
891 get_met_replace(filename, "YYYY", repl);
+
892 sprintf(repl, "%02d", mon);
+
893 get_met_replace(filename, "MM", repl);
+
894 sprintf(repl, "%02d", day);
+
895 get_met_replace(filename, "DD", repl);
+
896 sprintf(repl, "%02d", hour);
+
897 get_met_replace(filename, "HH", repl);
+
898 }
+
899
+
900 /* Set filename of CLaMS meteo files... */
+
901 else {
+
902 sprintf(filename, "%s_YYMMDDHH.nc", metbase);
+
903 sprintf(repl, "%d", year);
+
904 get_met_replace(filename, "YYYY", repl);
+
905 sprintf(repl, "%02d", year % 100);
+
906 get_met_replace(filename, "YY", repl);
+
907 sprintf(repl, "%02d", mon);
+
908 get_met_replace(filename, "MM", repl);
+
909 sprintf(repl, "%02d", day);
+
910 get_met_replace(filename, "DD", repl);
+
911 sprintf(repl, "%02d", hour);
+
912 get_met_replace(filename, "HH", repl);
+
913 }
+
914}
+
void get_met_replace(char *orig, char *search, char *repl)
Replace template strings in filename.
Definition: libtrac.c:918
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
int clams_met_data
Read MPTRAC or CLaMS meteo data (0=MPTRAC, 1=CLaMS).
Definition: libtrac.h:818
+
int met_type
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:1115
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ get_met_replace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void get_met_replace (char * orig,
char * search,
char * repl 
)
+
+ +

Replace template strings in filename.

+ +

Definition at line 918 of file libtrac.c.

+
921 {
+
922
+
923 char buffer[LEN];
+
924
+
925 /* Iterate... */
+
926 for (int i = 0; i < 3; i++) {
+
927
+
928 /* Replace sub-string... */
+
929 char *ch;
+
930 if (!(ch = strstr(orig, search)))
+
931 return;
+
932 strncpy(buffer, orig, (size_t) (ch - orig));
+
933 buffer[ch - orig] = 0;
+
934 sprintf(buffer + (ch - orig), "%s%s", repl, ch + strlen(search));
+
935 orig[0] = 0;
+
936 strcpy(orig, buffer);
+
937 }
+
938}
+
+
+
+ +

◆ intpol_met_4d_coord()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_4d_coord (met_tmet0,
float height0[EX][EY][EP],
float array0[EX][EY][EP],
met_tmet1,
float height1[EX][EY][EP],
float array1[EX][EY][EP],
double ts,
double height,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatiotemporal interpolation of meteo data.

+

!

+ +

Definition at line 942 of file libtrac.c.

+
956 {
+
957
+
958 if (init) {
+
959
+
960 /* Restrict positions to coordinate range... */
+
961 lon = FMOD(lon, 360.);
+
962 if (met0->lon[met0->nx - 1] > 180 && lon < 0)
+
963 lon += 360;
+
964
+
965 /* Get horizontal indizes... */
+
966 ci[0] = locate_irr(met0->lon, met0->nx, lon);
+
967 ci[1] = locate_irr(met0->lat, met0->ny, lat);
+
968
+
969 /* Locate the vertical indizes for each edge of the column... */
+
970 int ind[2][4];
+
971 locate_vert(heights0, met0->npl, ci[0], ci[1], height, ind[0]);
+
972 locate_vert(heights1, met1->npl, ci[0], ci[1], height, ind[1]);
+
973
+
974 /* Find minimum and maximum indizes... */
+
975 ci[2] = ind[0][0];
+
976 int k_max = ind[0][0];
+
977 for (int i = 0; i < 2; i++)
+
978 for (int j = 0; j < 4; j++) {
+
979 if (ci[2] > ind[i][j])
+
980 ci[2] = ind[i][j];
+
981 if (k_max < ind[i][j])
+
982 k_max = ind[i][j];
+
983 }
+
984
+
985 /* Get weighting factors for time, longitude and latitude... */
+
986 cw[3] = (ts - met0->time) / (met1->time - met0->time);
+
987 cw[0] = (lon - met0->lon[ci[0]]) /
+
988 (met0->lon[ci[0] + 1] - met0->lon[ci[0]]);
+
989 cw[1] = (lat - met0->lat[ci[1]]) /
+
990 (met0->lat[ci[1] + 1] - met0->lat[ci[1]]);
+
991
+
992 /* Start determiniation of the altitude weighting factor... */
+
993 double height_top, height_bot;
+
994 double height00, height01, height10, height11, height0, height1;
+
995
+
996 /* Interpolate in time at the lowest level... */
+
997 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2]]
+
998 - heights0[ci[0]][ci[1]][ci[2]])
+
999 + heights0[ci[0]][ci[1]][ci[2]];
+
1000 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2]]
+
1001 - heights0[ci[0]][ci[1] + 1][ci[2]])
+
1002 + heights0[ci[0]][ci[1] + 1][ci[2]];
+
1003 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2]]
+
1004 - heights0[ci[0] + 1][ci[1]][ci[2]])
+
1005 + heights0[ci[0] + 1][ci[1]][ci[2]];
+
1006 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2]]
+
1007 - heights0[ci[0] + 1][ci[1] + 1][ci[2]])
+
1008 + heights0[ci[0] + 1][ci[1] + 1][ci[2]];
+
1009
+
1010 /* Interpolate in latitude direction... */
+
1011 height0 = cw[1] * (height01 - height00) + height00;
+
1012 height1 = cw[1] * (height11 - height10) + height10;
+
1013
+
1014 /* Interpolate in longitude direction... */
+
1015 height_bot = cw[0] * (height1 - height0) + height0;
+
1016
+
1017 /* Interpolate in time at the upper level... */
+
1018 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2] + 1]
+
1019 - heights0[ci[0]][ci[1]][ci[2] + 1])
+
1020 + heights0[ci[0]][ci[1]][ci[2] + 1];
+
1021 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1022 - heights0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1023 + heights0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1024 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1025 - heights0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1026 + heights0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1027 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1028 - heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1029 + heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1030
+
1031 /* Interpolate in latitude direction... */
+
1032 height0 = cw[1] * (height01 - height00) + height00;
+
1033 height1 = cw[1] * (height11 - height10) + height10;
+
1034
+
1035 /* Interpolate in longitude direction... */
+
1036 height_top = cw[0] * (height1 - height0) + height0;
+
1037
+
1038 /* Search at higher levels if height is not in box... */
+
1039 while (((heights0[0][0][0] > heights0[0][0][1]) &&
+
1040 ((height_bot <= height) || (height_top > height))
+
1041 && (height_bot >= height) && (ci[2] < k_max))
+
1042 ||
+
1043 ((heights0[0][0][0] < heights0[0][0][1]) &&
+
1044 ((height_bot >= height) || (height_top < height))
+
1045 && (height_bot <= height) && (ci[2] < k_max))
+
1046 ) {
+
1047
+
1048 ci[2]++;
+
1049 height_bot = height_top;
+
1050
+
1051 /* Interpolate in time at the next level... */
+
1052 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2] + 1]
+
1053 - heights0[ci[0]][ci[1]][ci[2] + 1])
+
1054 + heights0[ci[0]][ci[1]][ci[2] + 1];
+
1055 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1056 - heights0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1057 + heights0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1058 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1059 - heights0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1060 + heights0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1061 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1062 - heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1063 + heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1064
+
1065 /* Interpolate in latitude direction... */
+
1066 height0 = cw[1] * (height01 - height00) + height00;
+
1067 height1 = cw[1] * (height11 - height10) + height10;
+
1068
+
1069 /* Interpolate in longitude direction... */
+
1070 height_top = cw[0] * (height1 - height0) + height0;
+
1071 }
+
1072
+
1073 /* Get vertical weighting factors... */
+
1074 cw[2] = (height - height_bot)
+
1075 / (height_top - height_bot);
+
1076
+
1077 }
+
1078
+
1079 /* Calculate the needed array values... */
+
1080 double array000 = cw[3] * (array1[ci[0]][ci[1]][ci[2]]
+
1081 - array0[ci[0]][ci[1]][ci[2]])
+
1082 + array0[ci[0]][ci[1]][ci[2]];
+
1083 double array100 = cw[3] * (array1[ci[0] + 1][ci[1]][ci[2]]
+
1084 - array0[ci[0] + 1][ci[1]][ci[2]])
+
1085 + array0[ci[0] + 1][ci[1]][ci[2]];
+
1086 double array010 = cw[3] * (array1[ci[0]][ci[1] + 1][ci[2]]
+
1087 - array0[ci[0]][ci[1] + 1][ci[2]])
+
1088 + array0[ci[0]][ci[1] + 1][ci[2]];
+
1089 double array110 = cw[3] * (array1[ci[0] + 1][ci[1] + 1][ci[2]]
+
1090 - array0[ci[0] + 1][ci[1] + 1][ci[2]])
+
1091 + array0[ci[0] + 1][ci[1] + 1][ci[2]];
+
1092 double array001 = cw[3] * (array1[ci[0]][ci[1]][ci[2] + 1]
+
1093 - array0[ci[0]][ci[1]][ci[2] + 1])
+
1094 + array0[ci[0]][ci[1]][ci[2] + 1];
+
1095 double array101 = cw[3] * (array1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1096 - array0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1097 + array0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1098 double array011 = cw[3] * (array1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1099 - array0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1100 + array0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1101 double array111 = cw[3] * (array1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1102 - array0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1103 + array0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1104
+
1105 double array00 = cw[0] * (array100 - array000) + array000;
+
1106 double array10 = cw[0] * (array110 - array010) + array010;
+
1107 double array01 = cw[0] * (array101 - array001) + array001;
+
1108 double array11 = cw[0] * (array111 - array011) + array011;
+
1109
+
1110 double aux0 = cw[1] * (array10 - array00) + array00;
+
1111 double aux1 = cw[1] * (array11 - array01) + array01;
+
1112
+
1113 /* Interpolate vertically... */
+
1114 *var = cw[2] * (aux1 - aux0) + aux0;
+
1115
+
1116}
+
void locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double height_ap, int *ind)
Locate the four vertical indizes of a box for a given height value.
Definition: libtrac.c:1497
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
int npl
Number of model levels.
Definition: libtrac.h:1846
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ intpol_met_space_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_space_3d (met_tmet,
float array[EX][EY][EP],
double p,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatial interpolation of meteo data.

+ +

Definition at line 1120 of file libtrac.c.

+
1129 {
+
1130
+
1131 /* Initialize interpolation... */
+
1132 if (init) {
+
1133
+
1134 /* Check longitude... */
+
1135 if (met->lon[met->nx - 1] > 180 && lon < 0)
+
1136 lon += 360;
+
1137
+
1138 /* Get interpolation indices... */
+
1139 ci[0] = locate_irr(met->p, met->np, p);
+
1140 ci[1] = locate_reg(met->lon, met->nx, lon);
+
1141 ci[2] = locate_reg(met->lat, met->ny, lat);
+
1142
+
1143 /* Get interpolation weights... */
+
1144 cw[0] = (met->p[ci[0] + 1] - p)
+
1145 / (met->p[ci[0] + 1] - met->p[ci[0]]);
+
1146 cw[1] = (met->lon[ci[1] + 1] - lon)
+
1147 / (met->lon[ci[1] + 1] - met->lon[ci[1]]);
+
1148 cw[2] = (met->lat[ci[2] + 1] - lat)
+
1149 / (met->lat[ci[2] + 1] - met->lat[ci[2]]);
+
1150 }
+
1151
+
1152 /* Interpolate vertically... */
+
1153 double aux00 =
+
1154 cw[0] * (array[ci[1]][ci[2]][ci[0]] - array[ci[1]][ci[2]][ci[0] + 1])
+
1155 + array[ci[1]][ci[2]][ci[0] + 1];
+
1156 double aux01 =
+
1157 cw[0] * (array[ci[1]][ci[2] + 1][ci[0]] -
+
1158 array[ci[1]][ci[2] + 1][ci[0] + 1])
+
1159 + array[ci[1]][ci[2] + 1][ci[0] + 1];
+
1160 double aux10 =
+
1161 cw[0] * (array[ci[1] + 1][ci[2]][ci[0]] -
+
1162 array[ci[1] + 1][ci[2]][ci[0] + 1])
+
1163 + array[ci[1] + 1][ci[2]][ci[0] + 1];
+
1164 double aux11 =
+
1165 cw[0] * (array[ci[1] + 1][ci[2] + 1][ci[0]] -
+
1166 array[ci[1] + 1][ci[2] + 1][ci[0] + 1])
+
1167 + array[ci[1] + 1][ci[2] + 1][ci[0] + 1];
+
1168
+
1169 /* Interpolate horizontally... */
+
1170 aux00 = cw[2] * (aux00 - aux01) + aux01;
+
1171 aux11 = cw[2] * (aux10 - aux11) + aux11;
+
1172 *var = cw[1] * (aux00 - aux11) + aux11;
+
1173}
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ intpol_met_space_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_space_2d (met_tmet,
float array[EX][EY],
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatial interpolation of meteo data.

+ +

Definition at line 1177 of file libtrac.c.

+
1185 {
+
1186
+
1187 /* Initialize interpolation... */
+
1188 if (init) {
+
1189
+
1190 /* Check longitude... */
+
1191 if (met->lon[met->nx - 1] > 180 && lon < 0)
+
1192 lon += 360;
+
1193
+
1194 /* Get interpolation indices... */
+
1195 ci[1] = locate_reg(met->lon, met->nx, lon);
+
1196 ci[2] = locate_reg(met->lat, met->ny, lat);
+
1197
+
1198 /* Get interpolation weights... */
+
1199 cw[1] = (met->lon[ci[1] + 1] - lon)
+
1200 / (met->lon[ci[1] + 1] - met->lon[ci[1]]);
+
1201 cw[2] = (met->lat[ci[2] + 1] - lat)
+
1202 / (met->lat[ci[2] + 1] - met->lat[ci[2]]);
+
1203 }
+
1204
+
1205 /* Set variables... */
+
1206 double aux00 = array[ci[1]][ci[2]];
+
1207 double aux01 = array[ci[1]][ci[2] + 1];
+
1208 double aux10 = array[ci[1] + 1][ci[2]];
+
1209 double aux11 = array[ci[1] + 1][ci[2] + 1];
+
1210
+
1211 /* Interpolate horizontally... */
+
1212 if (isfinite(aux00) && isfinite(aux01)
+
1213 && isfinite(aux10) && isfinite(aux11)) {
+
1214 aux00 = cw[2] * (aux00 - aux01) + aux01;
+
1215 aux11 = cw[2] * (aux10 - aux11) + aux11;
+
1216 *var = cw[1] * (aux00 - aux11) + aux11;
+
1217 } else {
+
1218 if (cw[2] < 0.5) {
+
1219 if (cw[1] < 0.5)
+
1220 *var = aux11;
+
1221 else
+
1222 *var = aux01;
+
1223 } else {
+
1224 if (cw[1] < 0.5)
+
1225 *var = aux10;
+
1226 else
+
1227 *var = aux00;
+
1228 }
+
1229 }
+
1230}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ intpol_met_time_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_time_3d (met_tmet0,
float array0[EX][EY][EP],
met_tmet1,
float array1[EX][EY][EP],
double ts,
double p,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatial interpolation of meteo data.

+

Temporal interpolation of meteo data.

+ +

Definition at line 1337 of file libtrac.c.

+
1349 {
+
1350
+
1351 double var0, var1, wt;
+
1352
+
1353 /* Spatial interpolation... */
+
1354 intpol_met_space_3d(met0, array0, p, lon, lat, &var0, ci, cw, init);
+
1355 intpol_met_space_3d(met1, array1, p, lon, lat, &var1, ci, cw, 0);
+
1356
+
1357 /* Get weighting factor... */
+
1358 wt = (met1->time - ts) / (met1->time - met0->time);
+
1359
+
1360 /* Interpolate... */
+
1361 *var = wt * (var0 - var1) + var1;
+
1362}
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ intpol_met_time_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_time_2d (met_tmet0,
float array0[EX][EY],
met_tmet1,
float array1[EX][EY],
double ts,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Temporal interpolation of meteo data.

+ +

Definition at line 1366 of file libtrac.c.

+
1377 {
+
1378
+
1379 double var0, var1, wt;
+
1380
+
1381 /* Spatial interpolation... */
+
1382 intpol_met_space_2d(met0, array0, lon, lat, &var0, ci, cw, init);
+
1383 intpol_met_space_2d(met1, array1, lon, lat, &var1, ci, cw, 0);
+
1384
+
1385 /* Get weighting factor... */
+
1386 wt = (met1->time - ts) / (met1->time - met0->time);
+
1387
+
1388 /* Interpolate... */
+
1389 if (isfinite(var0) && isfinite(var1))
+
1390 *var = wt * (var0 - var1) + var1;
+
1391 else if (wt < 0.5)
+
1392 *var = var1;
+
1393 else
+
1394 *var = var0;
+
1395}
+
void intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1177
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ jsec2time()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void jsec2time (const double jsec,
int * year,
int * mon,
int * day,
int * hour,
int * min,
int * sec,
double * remain 
)
+
+ +

Temporal interpolation of meteo data.

+

Convert seconds to date.

+ +

Definition at line 1430 of file libtrac.c.

+
1438 {
+
1439
+
1440 struct tm t0, *t1;
+
1441
+
1442 t0.tm_year = 100;
+
1443 t0.tm_mon = 0;
+
1444 t0.tm_mday = 1;
+
1445 t0.tm_hour = 0;
+
1446 t0.tm_min = 0;
+
1447 t0.tm_sec = 0;
+
1448
+
1449 time_t jsec0 = (time_t) jsec + timegm(&t0);
+
1450 t1 = gmtime(&jsec0);
+
1451
+
1452 *year = t1->tm_year + 1900;
+
1453 *mon = t1->tm_mon + 1;
+
1454 *day = t1->tm_mday;
+
1455 *hour = t1->tm_hour;
+
1456 *min = t1->tm_min;
+
1457 *sec = t1->tm_sec;
+
1458 *remain = jsec - floor(jsec);
+
1459}
+
+
+
+ +

◆ locate_irr_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int locate_irr_3d (float profiles[EX][EY][EP],
int np,
int ind_lon,
int ind_lat,
double x 
)
+
+ +

locate the index in a column of a three dimensional array.

+ +

Definition at line 1463 of file libtrac.c.

+
1468 {
+
1469
+
1470 int ilo = 0;
+
1471 int ihi = np - 1;
+
1472 int i = (ihi + ilo) >> 1;
+
1473
+
1474 if (profiles[ind_lon][ind_lat][i] < profiles[ind_lon][ind_lat][i + 1])
+
1475 while (ihi > ilo + 1) {
+
1476 i = (ihi + ilo) >> 1;
+
1477 if (profiles[ind_lon][ind_lat][i] > x) {
+
1478 ihi = i;
+
1479 } else {
+
1480 ilo = i;
+
1481 }
+
1482 } else
+
1483 while (ihi > ilo + 1) {
+
1484 i = (ihi + ilo) >> 1;
+
1485 if (profiles[ind_lon][ind_lat][i] <= x) {
+
1486 ihi = i;
+
1487 } else {
+
1488 ilo = i;
+
1489 }
+
1490 }
+
1491
+
1492 return ilo;
+
1493}
+
+
+
+ +

◆ locate_vert()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void locate_vert (float profiles[EX][EY][EP],
int np,
int lon_ap_ind,
int lat_ap_ind,
double height_ap,
int * ind 
)
+
+ +

Locate the four vertical indizes of a box for a given height value.

+ +

Definition at line 1497 of file libtrac.c.

+
1503 {
+
1504
+
1505 ind[0] = locate_irr_3d(profiles, np, lon_ap_ind, lat_ap_ind, height_ap);
+
1506 ind[1] = locate_irr_3d(profiles, np, lon_ap_ind + 1, lat_ap_ind, height_ap);
+
1507 ind[2] = locate_irr_3d(profiles, np, lon_ap_ind, lat_ap_ind + 1, height_ap);
+
1508 ind[3] =
+
1509 locate_irr_3d(profiles, np, lon_ap_ind + 1, lat_ap_ind + 1, height_ap);
+
1510
+
1511}
+
int locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x)
locate the index in a column of a three dimensional array.
Definition: libtrac.c:1463
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ kernel_weight()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double kernel_weight (const double kz[EP],
const double kw[EP],
const int nk,
const double p 
)
+
+ +

Get weighting factor from kernel function.

+ +

Definition at line 1515 of file libtrac.c.

+
1519 {
+
1520
+
1521 /* Check number of data points... */
+
1522 if (nk < 2)
+
1523 return 1.0;
+
1524
+
1525 /* Get altitude... */
+
1526 double z = Z(p);
+
1527
+
1528 /* Get weighting factor... */
+
1529 if (z < kz[0])
+
1530 return kw[0];
+
1531 else if (z > kz[nk - 1])
+
1532 return kw[nk - 1];
+
1533 else {
+
1534 int idx = locate_irr(kz, nk, z);
+
1535 return LIN(kz[idx], kw[idx], kz[idx + 1], kw[idx + 1], z);
+
1536 }
+
1537}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ lapse_rate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
double lapse_rate (const double t,
const double h2o 
)
+
+ +

Calculate moist adiabatic lapse rate.

+ +

Definition at line 1541 of file libtrac.c.

+
1543 {
+
1544
+
1545 /*
+
1546 Calculate moist adiabatic lapse rate [K/km] from temperature [K]
+
1547 and water vapor volume mixing ratio [1].
+
1548
+
1549 Reference: https://en.wikipedia.org/wiki/Lapse_rate
+
1550 */
+
1551
+
1552 const double a = RA * SQR(t), r = SH(h2o) / (1. - SH(h2o));
+
1553
+
1554 return 1e3 * G0 * (a + LV * r * t) / (CPD * a + SQR(LV) * r * EPS);
+
1555}
+
#define RA
Specific gas constant of dry air [J/(kg K)].
Definition: libtrac.h:138
+
#define SH(h2o)
Compute specific humidity from water vapor volume mixing ratio.
Definition: libtrac.h:617
+
#define LV
Latent heat of vaporization of water [J/kg].
Definition: libtrac.h:108
+
#define EPS
Ratio of the specific gas constant of dry air and water vapor [1].
Definition: libtrac.h:93
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define CPD
Specific heat of dry air at constant pressure [J/(kg K)].
Definition: libtrac.h:88
+
+
+
+ +

◆ level_definitions()

+ +
+
+ + + + + + + + +
void level_definitions (ctl_tctl)
+
+ +

Get predefined pressure levels.

+ +

Definition at line 1559 of file libtrac.c.

+
1560 {
+
1561
+
1562 if (0 == ctl->press_level_def) {
+
1563
+
1564 ctl->met_np = 138;
+
1565
+
1566 double press[138] = {
+
1567 0.0200, 0.0310, 0.0467, 0.0683, 0.0975, 0.1361, 0.1861, 0.2499,
+
1568 0.3299, 0.4288, 0.5496, 0.6952, 0.8690, 1.0742, 1.3143, 1.5928, 1.9134,
+
1569 2.2797, 2.6954, 3.1642, 3.6898, 4.2759, 4.9262, 5.6441, 6.4334, 7.2974,
+
1570 8.2397, 9.2634, 10.3720, 11.5685, 12.8561, 14.2377, 15.7162, 17.2945,
+
1571 18.9752, 20.7610, 22.6543, 24.6577, 26.7735, 29.0039, 31.3512, 33.8174,
+
1572 36.4047, 39.1149, 41.9493, 44.9082, 47.9915, 51.1990, 54.5299, 57.9834,
+
1573 61.5607, 65.2695, 69.1187, 73.1187, 77.2810, 81.6182, 86.1450, 90.8774,
+
1574 95.8280, 101.0047, 106.4153, 112.0681, 117.9714, 124.1337, 130.5637,
+
1575 137.2703, 144.2624, 151.5493, 159.1403, 167.0450, 175.2731, 183.8344,
+
1576 192.7389, 201.9969, 211.6186, 221.6146, 231.9954, 242.7719, 253.9549,
+
1577 265.5556, 277.5852, 290.0548, 302.9762, 316.3607, 330.2202, 344.5663,
+
1578 359.4111, 374.7666, 390.6450, 407.0583, 424.0190, 441.5395, 459.6321,
+
1579 478.3096, 497.5845, 517.4198, 537.7195, 558.3430, 579.1926, 600.1668,
+
1580 621.1624, 642.0764, 662.8084, 683.2620, 703.3467, 722.9795, 742.0855,
+
1581 760.5996, 778.4661, 795.6396, 812.0847, 827.7756, 842.6959, 856.8376,
+
1582 870.2004, 882.7910, 894.6222, 905.7116, 916.0815, 925.7571, 934.7666,
+
1583 943.1399, 950.9082, 958.1037, 964.7584, 970.9046, 976.5737, 981.7968,
+
1584 986.6036, 991.0230, 995.0824, 998.8081, 1002.2250, 1005.3562, 1008.2239,
+
1585 1010.8487, 1013.2500, 1044.45
+
1586 };
+
1587
+
1588 for (int ip = 0; ip < ctl->met_np; ip++)
+
1589 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1590
+
1591 } else if (1 == ctl->press_level_def) {
+
1592
+
1593 ctl->met_np = 92;
+
1594
+
1595 double press[92] = {
+
1596 0.0200, 0.0398, 0.0739, 0.1291, 0.2141, 0.3395, 0.5175, 0.7617,
+
1597 1.0872, 1.5099, 2.0464, 2.7136, 3.5282, 4.5069, 5.6652, 7.0181,
+
1598 8.5795, 10.3617, 12.3759, 14.6316, 17.1371, 19.8987, 22.9216, 26.2090,
+
1599 29.7630, 33.5843, 37.6720, 42.0242, 46.6378, 51.5086, 56.6316, 61.9984,
+
1600 67.5973, 73.4150, 79.4434, 85.7016, 92.2162, 99.0182, 106.1445,
+
1601 113.6382,
+
1602 121.5502, 129.9403, 138.8558, 148.3260, 158.3816, 169.0545, 180.3786,
+
1603 192.3889, 205.1222, 218.6172, 232.9140, 248.0547, 264.0833, 281.0456,
+
1604 298.9895, 317.9651, 338.0245, 359.2221, 381.6144, 405.2606, 430.2069,
+
1605 456.4813, 483.8505, 512.0662, 540.8577, 569.9401, 599.0310, 627.9668,
+
1606 656.6129, 684.8491, 712.5573, 739.5739, 765.7697, 791.0376, 815.2774,
+
1607 838.3507, 860.1516, 880.6080, 899.6602, 917.2205, 933.2247, 947.6584,
+
1608 960.5245, 971.8169, 981.5301, 989.7322, 996.8732, 1002.8013,
+
1609 1007.4431, 1010.8487, 1013.2500, 1044.45
+
1610 };
+
1611
+
1612 for (int ip = 0; ip < ctl->met_np; ip++)
+
1613 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1614
+
1615 } else if (2 == ctl->press_level_def) {
+
1616
+
1617 ctl->met_np = 60;
+
1618
+
1619 double press[60] = {
+
1620 0.01, 0.1361, 0.2499, 0.4288, 0.6952, 1.0742,
+
1621 2.2797, 3.1642, 4.2759, 7.2974, 9.2634, 11.5685, 14.2377, 20.761,
+
1622 24.6577, 33.8174, 39.1149, 51.199, 57.9834, 73.1187, 81.6182,
+
1623 90.8774, 101.005, 112.068, 124.134, 137.27, 151.549, 167.045, 183.834,
+
1624 201.997, 221.615, 242.772, 265.556, 290.055, 316.361, 344.566, 374.767,
+
1625 407.058, 441.539, 478.31, 517.42, 558.343, 600.167, 683.262, 722.979,
+
1626 760.6, 795.64, 827.776, 856.838, 882.791, 905.712, 925.757, 943.14,
+
1627 958.104, 972.495, 986.886, 1001.28, 1015.67, 1030.06, 1044.45
+
1628 };
+
1629
+
1630 for (int ip = 0; ip < ctl->met_np; ip++)
+
1631 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1632
+
1633 } else {
+
1634 ERRMSG
+
1635 ("Definition does not exist, use 0 for l137, 1 for l91 or 2 for l60")
+
1636 }
+
1637
+
1638}
+
int press_level_def
Use predefined pressure levels or not.
Definition: libtrac.h:809
+
int met_np
Number of target pressure levels.
Definition: libtrac.h:1151
+
double met_p[EP]
Target pressure levels [hPa].
Definition: libtrac.h:1154
+
+
+
+ +

◆ locate_irr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int locate_irr (const double * xx,
const int n,
const double x 
)
+
+ +

Find array index for irregular grid.

+ +

Definition at line 1642 of file libtrac.c.

+
1645 {
+
1646
+
1647 int ilo = 0;
+
1648 int ihi = n - 1;
+
1649 int i = (ihi + ilo) >> 1;
+
1650
+
1651 if (xx[i] < xx[i + 1])
+
1652 while (ihi > ilo + 1) {
+
1653 i = (ihi + ilo) >> 1;
+
1654 if (xx[i] > x)
+
1655 ihi = i;
+
1656 else
+
1657 ilo = i;
+
1658 } else
+
1659 while (ihi > ilo + 1) {
+
1660 i = (ihi + ilo) >> 1;
+
1661 if (xx[i] <= x)
+
1662 ihi = i;
+
1663 else
+
1664 ilo = i;
+
1665 }
+
1666
+
1667 return ilo;
+
1668}
+
+
+
+ +

◆ locate_reg()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int locate_reg (const double * xx,
const int n,
const double x 
)
+
+ +

Find array index for regular grid.

+ +

Definition at line 1672 of file libtrac.c.

+
1675 {
+
1676
+
1677 /* Calculate index... */
+
1678 int i = (int) ((x - xx[0]) / (xx[1] - xx[0]));
+
1679
+
1680 /* Check range... */
+
1681 if (i < 0)
+
1682 return 0;
+
1683 else if (i > n - 2)
+
1684 return n - 2;
+
1685 else
+
1686 return i;
+
1687}
+
+
+
+ +

◆ nat_temperature()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double nat_temperature (const double p,
const double h2o,
const double hno3 
)
+
+ +

Calculate NAT existence temperature.

+ +

Definition at line 1691 of file libtrac.c.

+
1694 {
+
1695
+
1696 /* Check water vapor vmr... */
+
1697 double h2o_help = GSL_MAX(h2o, 0.1e-6);
+
1698
+
1699 /* Calculate T_NAT... */
+
1700 double p_hno3 = hno3 * p / 1.333224;
+
1701 double p_h2o = h2o_help * p / 1.333224;
+
1702 double a = 0.009179 - 0.00088 * log10(p_h2o);
+
1703 double b = (38.9855 - log10(p_hno3) - 2.7836 * log10(p_h2o)) / a;
+
1704 double c = -11397.0 / a;
+
1705 double tnat = (-b + sqrt(b * b - 4. * c)) / 2.;
+
1706 double x2 = (-b - sqrt(b * b - 4. * c)) / 2.;
+
1707 if (x2 > 0)
+
1708 tnat = x2;
+
1709
+
1710 return tnat;
+
1711}
+
+
+
+ +

◆ quicksort()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void quicksort (double arr[],
int brr[],
const int low,
const int high 
)
+
+ +

Parallel quicksort.

+ +

Definition at line 1715 of file libtrac.c.

+
1719 {
+
1720
+
1721 if (low < high) {
+
1722 int pi = quicksort_partition(arr, brr, low, high);
+
1723
+
1724#pragma omp task firstprivate(arr,brr,low,pi)
+
1725 {
+
1726 quicksort(arr, brr, low, pi - 1);
+
1727 }
+
1728 {
+
1729 quicksort(arr, brr, pi + 1, high);
+
1730 }
+
1731 }
+
1732}
+
void quicksort(double arr[], int brr[], const int low, const int high)
Parallel quicksort.
Definition: libtrac.c:1715
+
int quicksort_partition(double arr[], int brr[], const int low, const int high)
Partition function for quicksort.
Definition: libtrac.c:1736
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ quicksort_partition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int quicksort_partition (double arr[],
int brr[],
const int low,
const int high 
)
+
+ +

Partition function for quicksort.

+ +

Definition at line 1736 of file libtrac.c.

+
1740 {
+
1741
+
1742 double pivot = arr[high];
+
1743 int i = (low - 1);
+
1744
+
1745 for (int j = low; j <= high - 1; j++)
+
1746 if (arr[j] <= pivot) {
+
1747 i++;
+
1748 SWAP(arr[i], arr[j], double);
+
1749 SWAP(brr[i], brr[j], int);
+
1750 }
+
1751 SWAP(arr[high], arr[i + 1], double);
+
1752 SWAP(brr[high], brr[i + 1], int);
+
1753
+
1754 return (i + 1);
+
1755}
+
#define SWAP(x, y, type)
Swap macro.
Definition: libtrac.h:625
+
+
+
+ +

◆ read_atm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data.

+ +

Definition at line 1759 of file libtrac.c.

+
1762 {
+
1763
+
1764 int result;
+
1765
+
1766 /* Set timer... */
+
1767 SELECT_TIMER("READ_ATM", "INPUT", NVTX_READ);
+
1768
+
1769 /* Init... */
+
1770 atm->np = 0;
+
1771
+
1772 /* Write info... */
+
1773 LOG(1, "Read atmospheric data: %s", filename);
+
1774
+
1775 /* Read ASCII data... */
+
1776 if (ctl->atm_type == 0)
+
1777 result = read_atm_asc(filename, ctl, atm);
+
1778
+
1779 /* Read binary data... */
+
1780 else if (ctl->atm_type == 1)
+
1781 result = read_atm_bin(filename, ctl, atm);
+
1782
+
1783 /* Read netCDF data... */
+
1784 else if (ctl->atm_type == 2)
+
1785 result = read_atm_nc(filename, ctl, atm);
+
1786
+
1787 /* Read CLaMS data... */
+
1788 else if (ctl->atm_type == 3 || ctl->atm_type == 4)
+
1789 result = read_atm_clams(filename, ctl, atm);
+
1790
+
1791 /* Error... */
+
1792 else
+
1793 ERRMSG("Atmospheric data type not supported!");
+
1794
+
1795 /* Check result... */
+
1796 if (result != 1)
+
1797 return 0;
+
1798
+
1799 /* Check number of air parcels... */
+
1800 if (atm->np < 1)
+
1801 ERRMSG("Can not read any data!");
+
1802
+
1803 /* Write info... */
+
1804 double mini, maxi;
+
1805 LOG(2, "Number of particles: %d", atm->np);
+
1806 gsl_stats_minmax(&mini, &maxi, atm->time, 1, (size_t) atm->np);
+
1807 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
1808 gsl_stats_minmax(&mini, &maxi, atm->p, 1, (size_t) atm->np);
+
1809 LOG(2, "Altitude range: %g ... %g km", Z(maxi), Z(mini));
+
1810 LOG(2, "Pressure range: %g ... %g hPa", maxi, mini);
+
1811 gsl_stats_minmax(&mini, &maxi, atm->lon, 1, (size_t) atm->np);
+
1812 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
1813 gsl_stats_minmax(&mini, &maxi, atm->lat, 1, (size_t) atm->np);
+
1814 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
1815 for (int iq = 0; iq < ctl->nq; iq++) {
+
1816 char msg[LEN];
+
1817 sprintf(msg, "Quantity %s range: %s ... %s %s",
+
1818 ctl->qnt_name[iq], ctl->qnt_format[iq],
+
1819 ctl->qnt_format[iq], ctl->qnt_unit[iq]);
+
1820 gsl_stats_minmax(&mini, &maxi, atm->q[iq], 1, (size_t) atm->np);
+
1821 LOG(2, msg, mini, maxi);
+
1822 }
+
1823
+
1824 /* Return success... */
+
1825 return 1;
+
1826}
+
int read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in netCDF format.
Definition: libtrac.c:1984
+
int read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in ASCII format.
Definition: libtrac.c:1830
+
int read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in CLaMS format.
Definition: libtrac.c:1928
+
int read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in binary format.
Definition: libtrac.c:1872
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ read_atm_asc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_asc (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in ASCII format.

+ +

Definition at line 1830 of file libtrac.c.

+
1833 {
+
1834
+
1835 /* Open file... */
+
1836 FILE *in;
+
1837 if (!(in = fopen(filename, "r"))) {
+
1838 WARN("Cannot open file!");
+
1839 return 0;
+
1840 }
+
1841
+
1842 /* Read line... */
+
1843 char line[LEN];
+
1844 while (fgets(line, LEN, in)) {
+
1845
+
1846 /* Read data... */
+
1847 char *tok;
+
1848 TOK(line, tok, "%lg", atm->time[atm->np]);
+
1849 TOK(NULL, tok, "%lg", atm->p[atm->np]);
+
1850 TOK(NULL, tok, "%lg", atm->lon[atm->np]);
+
1851 TOK(NULL, tok, "%lg", atm->lat[atm->np]);
+
1852 for (int iq = 0; iq < ctl->nq; iq++)
+
1853 TOK(NULL, tok, "%lg", atm->q[iq][atm->np]);
+
1854
+
1855 /* Convert altitude to pressure... */
+
1856 atm->p[atm->np] = P(atm->p[atm->np]);
+
1857
+
1858 /* Increment data point counter... */
+
1859 if ((++atm->np) > NP)
+
1860 ERRMSG("Too many data points!");
+
1861 }
+
1862
+
1863 /* Close file... */
+
1864 fclose(in);
+
1865
+
1866 /* Return success... */
+
1867 return 1;
+
1868}
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define TOK(line, tok, format, var)
Get string tokens.
Definition: libtrac.h:647
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
+
+
+ +

◆ read_atm_bin()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_bin (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in binary format.

+ +

Definition at line 1872 of file libtrac.c.

+
1875 {
+
1876
+
1877 /* Open file... */
+
1878 FILE *in;
+
1879 if (!(in = fopen(filename, "r")))
+
1880 return 0;
+
1881
+
1882 /* Check version of binary data... */
+
1883 int version;
+
1884 FREAD(&version, int,
+
1885 1,
+
1886 in);
+
1887 if (version != 100)
+
1888 ERRMSG("Wrong version of binary data!");
+
1889
+
1890 /* Read data... */
+
1891 FREAD(&atm->np, int,
+
1892 1,
+
1893 in);
+
1894 FREAD(atm->time, double,
+
1895 (size_t) atm->np,
+
1896 in);
+
1897 FREAD(atm->p, double,
+
1898 (size_t) atm->np,
+
1899 in);
+
1900 FREAD(atm->lon, double,
+
1901 (size_t) atm->np,
+
1902 in);
+
1903 FREAD(atm->lat, double,
+
1904 (size_t) atm->np,
+
1905 in);
+
1906 for (int iq = 0; iq < ctl->nq; iq++)
+
1907 FREAD(atm->q[iq], double,
+
1908 (size_t) atm->np,
+
1909 in);
+
1910
+
1911 /* Read final flag... */
+
1912 int final;
+
1913 FREAD(&final, int,
+
1914 1,
+
1915 in);
+
1916 if (final != 999)
+
1917 ERRMSG("Error while reading binary data!");
+
1918
+
1919 /* Close file... */
+
1920 fclose(in);
+
1921
+
1922 /* Return success... */
+
1923 return 1;
+
1924}
+
+
+
+ +

◆ read_atm_clams()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_clams (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in CLaMS format.

+ +

Definition at line 1928 of file libtrac.c.

+
1931 {
+
1932
+
1933 int ncid, varid;
+
1934
+
1935 /* Open file... */
+
1936 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR)
+
1937 return 0;
+
1938
+
1939 /* Get dimensions... */
+
1940 NC_INQ_DIM("NPARTS", &atm->np, 1, NP);
+
1941
+
1942 /* Get time... */
+
1943 if (nc_inq_varid(ncid, "TIME_INIT", &varid) == NC_NOERR) {
+
1944 NC(nc_get_var_double(ncid, varid, atm->time));
+
1945 } else {
+
1946 WARN("TIME_INIT not found use time instead!");
+
1947 double time_init;
+
1948 NC_GET_DOUBLE("time", &time_init, 1);
+
1949 for (int ip = 0; ip < atm->np; ip++) {
+
1950 atm->time[ip] = time_init;
+
1951 }
+
1952 }
+
1953
+
1954 /* Read zeta coordinate, pressure is optional... */
+
1955 if (ctl->vert_coord_ap == 1) {
+
1956 NC_GET_DOUBLE("ZETA", atm->q[ctl->qnt_zeta], 1);
+
1957 NC_GET_DOUBLE("PRESS", atm->p, 0);
+
1958 }
+
1959
+
1960 /* Read pressure, zeta coordinate is optional... */
+
1961 else {
+
1962 if (nc_inq_varid(ncid, "PRESS_INIT", &varid) == NC_NOERR) {
+
1963 NC(nc_get_var_double(ncid, varid, atm->p));
+
1964 } else {
+
1965 WARN("PRESS_INIT not found use PRESS instead!");
+
1966 nc_inq_varid(ncid, "PRESS", &varid);
+
1967 NC(nc_get_var_double(ncid, varid, atm->p));
+
1968 }
+
1969 }
+
1970
+
1971 /* Read longitude and latitude... */
+
1972 NC_GET_DOUBLE("LON", atm->lon, 1);
+
1973 NC_GET_DOUBLE("LAT", atm->lat, 1);
+
1974
+
1975 /* Close file... */
+
1976 NC(nc_close(ncid));
+
1977
+
1978 /* Return success... */
+
1979 return 1;
+
1980}
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define NC_GET_DOUBLE(varname, ptr, force)
Read netCDF double array.
Definition: libtrac.h:500
+
int vert_coord_ap
Vertical coordinate of air parcels (0=pressure, 1=zeta).
Definition: libtrac.h:812
+
int qnt_zeta
Quantity array index for zeta vertical coordinate.
Definition: libtrac.h:1013
+
+
+
+ +

◆ read_atm_nc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_nc (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in netCDF format.

+ +

Definition at line 1984 of file libtrac.c.

+
1987 {
+
1988
+
1989 int ncid, varid;
+
1990
+
1991 /* Open file... */
+
1992 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR)
+
1993 return 0;
+
1994
+
1995 /* Get dimensions... */
+
1996 NC_INQ_DIM("obs", &atm->np, 1, NP);
+
1997
+
1998 /* Read geolocations... */
+
1999 NC_GET_DOUBLE("time", atm->time, 1);
+
2000 NC_GET_DOUBLE("press", atm->p, 1);
+
2001 NC_GET_DOUBLE("lon", atm->lon, 1);
+
2002 NC_GET_DOUBLE("lat", atm->lat, 1);
+
2003
+
2004 /* Read variables... */
+
2005 for (int iq = 0; iq < ctl->nq; iq++)
+
2006 NC_GET_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
2007
+
2008 /* Close file... */
+
2009 NC(nc_close(ncid));
+
2010
+
2011 /* Return success... */
+
2012 return 1;
+
2013}
+
+
+
+ +

◆ read_clim()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_clim (ctl_tctl,
clim_tclim 
)
+
+ +

Read climatological data.

+ +

Definition at line 2017 of file libtrac.c.

+
2019 {
+
2020
+
2021 /* Set timer... */
+
2022 SELECT_TIMER("READ_CLIM", "INPUT", NVTX_READ);
+
2023
+
2024 /* Init tropopause climatology... */
+
2025 clim_tropo_init(clim);
+
2026
+
2027 /* Read photolysis rates... */
+
2028 if (ctl->clim_photo[0] != '-')
+
2029 read_clim_photo(ctl->clim_photo, &clim->photo);
+
2030
+
2031 /* Read HNO3 climatology... */
+
2032 if (ctl->clim_hno3_filename[0] != '-')
+
2033 read_clim_zm(ctl->clim_hno3_filename, "HNO3", &clim->hno3);
+
2034
+
2035 /* Read OH climatology... */
+
2036 if (ctl->clim_oh_filename[0] != '-') {
+
2037 read_clim_zm(ctl->clim_oh_filename, "OH", &clim->oh);
+
2038 if (ctl->oh_chem_beta > 0)
+
2039 clim_oh_diurnal_correction(ctl, clim);
+
2040 }
+
2041
+
2042 /* Read H2O2 climatology... */
+
2043 if (ctl->clim_h2o2_filename[0] != '-')
+
2044 read_clim_zm(ctl->clim_h2o2_filename, "H2O2", &clim->h2o2);
+
2045
+
2046 /* Read HO2 climatology... */
+
2047 if (ctl->clim_ho2_filename[0] != '-')
+
2048 read_clim_zm(ctl->clim_ho2_filename, "HO2", &clim->ho2);
+
2049
+
2050 /* Read O(1D) climatology... */
+
2051 if (ctl->clim_o1d_filename[0] != '-')
+
2052 read_clim_zm(ctl->clim_o1d_filename, "O1D", &clim->o1d);
+
2053
+
2054 /* Read CFC-10 time series... */
+
2055 if (ctl->clim_ccl4_timeseries[0] != '-')
+ +
2057
+
2058 /* Read CFC-11 time series... */
+
2059 if (ctl->clim_ccl3f_timeseries[0] != '-')
+ +
2061
+
2062 /* Read CFC-12 time series... */
+
2063 if (ctl->clim_ccl2f2_timeseries[0] != '-')
+ +
2065
+
2066 /* Read N2O time series... */
+
2067 if (ctl->clim_n2o_timeseries[0] != '-')
+
2068 read_clim_ts(ctl->clim_n2o_timeseries, &clim->n2o);
+
2069
+
2070 /* Read SF6 time series... */
+
2071 if (ctl->clim_sf6_timeseries[0] != '-')
+
2072 read_clim_ts(ctl->clim_sf6_timeseries, &clim->sf6);
+
2073}
+
void read_clim_zm(char *filename, char *varname, clim_zm_t *zm)
Read climatological zonal means.
Definition: libtrac.c:2202
+
void clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim)
Initialization function for OH climatology.
Definition: libtrac.c:82
+
int read_clim_ts(char *filename, clim_ts_t *ts)
Read climatological time series.
Definition: libtrac.c:2148
+
void read_clim_photo(char *filename, clim_photo_t *photo)
Read climatological photolysis rates.
Definition: libtrac.c:2077
+
void clim_tropo_init(clim_t *clim)
Initialize tropopause climatology.
Definition: libtrac.c:191
+
clim_ts_t ccl2f2
CFC-12 time series.
Definition: libtrac.h:1820
+
clim_photo_t photo
Photolysis rates.
Definition: libtrac.h:1796
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_ts_t sf6
SF6 time series.
Definition: libtrac.h:1826
+
clim_ts_t ccl4
CFC-10 time series.
Definition: libtrac.h:1814
+
clim_ts_t ccl3f
CFC-11 time series.
Definition: libtrac.h:1817
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
clim_ts_t n2o
N2O time series.
Definition: libtrac.h:1823
+
char clim_n2o_timeseries[LEN]
Filename of N2O time series.
Definition: libtrac.h:1333
+
char clim_ho2_filename[LEN]
Filename of HO2 climatology.
Definition: libtrac.h:1315
+
char clim_o1d_filename[LEN]
Filename of O(1D) climatology.
Definition: libtrac.h:1318
+
char clim_photo[LEN]
Filename of photolysis rates climatology.
Definition: libtrac.h:1303
+
char clim_h2o2_filename[LEN]
Filename of H2O2 climatology.
Definition: libtrac.h:1312
+
char clim_ccl4_timeseries[LEN]
Filename of CFC-10 time series.
Definition: libtrac.h:1324
+
char clim_oh_filename[LEN]
Filename of OH climatology.
Definition: libtrac.h:1309
+
char clim_sf6_timeseries[LEN]
Filename of SF6 time series.
Definition: libtrac.h:1336
+
char clim_ccl3f_timeseries[LEN]
Filename of CFC-11 time series.
Definition: libtrac.h:1327
+
char clim_ccl2f2_timeseries[LEN]
Filename of CFC-12 time series.
Definition: libtrac.h:1330
+
char clim_hno3_filename[LEN]
Filename of HNO3 climatology.
Definition: libtrac.h:1306
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + +
+ +
+
+ +

◆ read_clim_photo()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_clim_photo (char * filename,
clim_photo_tphoto 
)
+
+ +

Read climatological photolysis rates.

+ +

Definition at line 2077 of file libtrac.c.

+
2079 {
+
2080
+
2081 int ncid, varid, ip, is, io;
+
2082
+
2083 double *help1, *help2, *help3, *help4;
+
2084
+
2085 /* Write info... */
+
2086 LOG(1, "Read photolysis rates: %s", filename);
+
2087
+
2088 /* Open netCDF file... */
+
2089 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR) {
+
2090 WARN("Photolysis rate data are missing!");
+
2091 return;
+
2092 }
+
2093
+
2094 /* Read pressure data... */
+
2095 NC_INQ_DIM("press", &photo->np, 2, CP);
+
2096 NC_GET_DOUBLE("press", photo->p, 1);
+
2097 if (photo->p[0] < photo->p[1])
+
2098 ERRMSG("Pressure data are not descending!");
+
2099
+
2100 /* Read total column ozone data... */
+
2101 NC_INQ_DIM("total_o3col", &photo->no3c, 2, CO3);
+
2102 NC_GET_DOUBLE("total_o3col", photo->o3c, 1);
+
2103 if (photo->o3c[0] > photo->o3c[1])
+
2104 ERRMSG("Total column ozone data are not ascending!");
+
2105
+
2106 /* Read solar zenith angle data... */
+
2107 NC_INQ_DIM("sza", &photo->nsza, 2, CSZA);
+
2108 NC_GET_DOUBLE("sza", photo->sza, 1);
+
2109 if (photo->sza[0] > photo->sza[1])
+
2110 ERRMSG("Solar zenith angle data are not ascending!");
+
2111
+
2112 /* Read data... */
+
2113 ALLOC(help1, double,
+
2114 photo->np * photo->nsza * photo->no3c);
+
2115 ALLOC(help2, double,
+
2116 photo->np * photo->nsza * photo->no3c);
+
2117 ALLOC(help3, double,
+
2118 photo->np * photo->nsza * photo->no3c);
+
2119 ALLOC(help4, double,
+
2120 photo->np * photo->nsza * photo->no3c);
+
2121 NC_GET_DOUBLE("n2o", help1, 1);
+
2122 NC_GET_DOUBLE("ccl4", help2, 1);
+
2123 NC_GET_DOUBLE("cfc11", help3, 1);
+
2124 NC_GET_DOUBLE("cfc12", help4, 1);
+
2125 for (ip = 0; ip < photo->np; ip++)
+
2126 for (is = 0; is < photo->nsza; is++)
+
2127 for (io = 0; io < photo->no3c; io++) {
+
2128 photo->n2o[ip][is][io] =
+
2129 help1[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2130 photo->ccl4[ip][is][io] =
+
2131 help2[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2132 photo->ccl3f[ip][is][io] =
+
2133 help3[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2134 photo->ccl2f2[ip][is][io] =
+
2135 help4[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2136 }
+
2137 free(help1);
+
2138 free(help2);
+
2139 free(help3);
+
2140 free(help4);
+
2141
+
2142 /* Close netCDF file... */
+
2143 NC(nc_close(ncid));
+
2144}
+
#define ARRAY_3D(ix, iy, ny, iz, nz)
Get 3-D array index.
Definition: libtrac.h:262
+
#define CP
Maximum number of pressure levels for climatological data.
Definition: libtrac.h:222
+
#define CO3
Maximum number of total column ozone data for climatological data.
Definition: libtrac.h:217
+
#define CSZA
Maximum number of solar zenith angles for climatological data.
Definition: libtrac.h:227
+
double ccl2f2[CP][CSZA][CO3]
CCl2F2 photolysis rate [1/s].
Definition: libtrac.h:1733
+
double ccl3f[CP][CSZA][CO3]
CCl3F photolysis rate [1/s].
Definition: libtrac.h:1730
+
double n2o[CP][CSZA][CO3]
N2O photolysis rate [1/s].
Definition: libtrac.h:1724
+
double ccl4[CP][CSZA][CO3]
CCl4 photolysis rate [1/s].
Definition: libtrac.h:1727
+
+
+
+ +

◆ read_clim_ts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int read_clim_ts (char * filename,
clim_ts_tts 
)
+
+ +

Read climatological time series.

+ +

Definition at line 2148 of file libtrac.c.

+
2150 {
+
2151
+
2152 /* Write info... */
+
2153 LOG(1, "Read climatological time series: %s", filename);
+
2154
+
2155 /* Open file... */
+
2156 FILE *in;
+
2157 if (!(in = fopen(filename, "r"))) {
+
2158 WARN("Cannot open file!");
+
2159 return 0;
+
2160 }
+
2161
+
2162 /* Read data... */
+
2163 char line[LEN];
+
2164 int nh = 0;
+
2165 while (fgets(line, LEN, in))
+
2166 if (sscanf(line, "%lg %lg", &ts->time[nh], &ts->vmr[nh]) == 2) {
+
2167
+
2168 /* Convert years to seconds... */
+
2169 ts->time[nh] = (ts->time[nh] - 2000.0) * 365.25 * 86400.;
+
2170
+
2171 /* Check data... */
+
2172 if (nh > 0 && ts->time[nh] <= ts->time[nh - 1])
+
2173 ERRMSG("Time series must be ascending!");
+
2174
+
2175 /* Count time steps... */
+
2176 if ((++nh) >= 1000)
+
2177 ERRMSG("Too many data points!");
+
2178 }
+
2179
+
2180 /* Close file... */
+
2181 fclose(in);
+
2182
+
2183 /* Check number of data points... */
+
2184 ts->ntime = nh;
+
2185 if (nh < 2)
+
2186 ERRMSG("Not enough data points!");
+
2187
+
2188 /* Write info... */
+
2189 LOG(2, "Number of time steps: %d", ts->ntime);
+
2190 LOG(2, "Time steps: %.2f, %.2f ... %.2f s", ts->time[0], ts->time[1],
+
2191 ts->time[nh - 1]);
+
2192 LOG(2, "Volume mixing ratio range: %g ... %g ppv",
+
2193 gsl_stats_min(ts->vmr, 1, (size_t) nh), gsl_stats_max(ts->vmr, 1,
+
2194 (size_t) nh));
+
2195
+
2196 /* Exit success... */
+
2197 return 1;
+
2198}
+
+
+
+ +

◆ read_clim_zm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_clim_zm (char * filename,
char * varname,
clim_zm_tzm 
)
+
+ +

Read climatological zonal means.

+ +

Definition at line 2202 of file libtrac.c.

+
2205 {
+
2206
+
2207 int ncid, varid, it, iy, iz, iz2, nt;
+
2208
+
2209 double *help, varmin = 1e99, varmax = -1e99;
+
2210
+
2211 /* Write info... */
+
2212 LOG(1, "Read %s data: %s", varname, filename);
+
2213
+
2214 /* Open netCDF file... */
+
2215 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR) {
+
2216 WARN("%s climatology data are missing!", varname);
+
2217 return;
+
2218 }
+
2219
+
2220 /* Read pressure data... */
+
2221 NC_INQ_DIM("press", &zm->np, 2, CP);
+
2222 NC_GET_DOUBLE("press", zm->p, 1);
+
2223 if (zm->p[0] < zm->p[1])
+
2224 ERRMSG("Pressure data are not descending!");
+
2225
+
2226 /* Read latitudes... */
+
2227 NC_INQ_DIM("lat", &zm->nlat, 2, CY);
+
2228 NC_GET_DOUBLE("lat", zm->lat, 1);
+
2229 if (zm->lat[0] > zm->lat[1])
+
2230 ERRMSG("Latitude data are not ascending!");
+
2231
+
2232 /* Set time data (for monthly means)... */
+
2233 zm->ntime = 12;
+
2234 zm->time[0] = 1209600.00;
+
2235 zm->time[1] = 3888000.00;
+
2236 zm->time[2] = 6393600.00;
+
2237 zm->time[3] = 9072000.00;
+
2238 zm->time[4] = 11664000.00;
+
2239 zm->time[5] = 14342400.00;
+
2240 zm->time[6] = 16934400.00;
+
2241 zm->time[7] = 19612800.00;
+
2242 zm->time[8] = 22291200.00;
+
2243 zm->time[9] = 24883200.00;
+
2244 zm->time[10] = 27561600.00;
+
2245 zm->time[11] = 30153600.00;
+
2246
+
2247 /* Check number of timesteps... */
+
2248 NC_INQ_DIM("time", &nt, 12, 12);
+
2249
+
2250 /* Read data... */
+
2251 ALLOC(help, double,
+
2252 zm->nlat * zm->np * zm->ntime);
+
2253 NC_GET_DOUBLE(varname, help, 1);
+
2254 for (it = 0; it < zm->ntime; it++)
+
2255 for (iz = 0; iz < zm->np; iz++)
+
2256 for (iy = 0; iy < zm->nlat; iy++)
+
2257 zm->vmr[it][iz][iy] = help[ARRAY_3D(it, iz, zm->np, iy, zm->nlat)];
+
2258 free(help);
+
2259
+
2260 /* Fix data gaps... */
+
2261 for (it = 0; it < zm->ntime; it++)
+
2262 for (iy = 0; iy < zm->nlat; iy++)
+
2263 for (iz = 0; iz < zm->np; iz++) {
+
2264 if (zm->vmr[it][iz][iy] < 0) {
+
2265 for (iz2 = 0; iz2 < zm->np; iz2++)
+
2266 if (zm->vmr[it][iz2][iy] >= 0) {
+
2267 zm->vmr[it][iz][iy] = zm->vmr[it][iz2][iy];
+
2268 break;
+
2269 }
+
2270 for (iz2 = zm->np - 1; iz2 >= 0; iz2--)
+
2271 if (zm->vmr[it][iz2][iy] >= 0) {
+
2272 zm->vmr[it][iz][iy] = zm->vmr[it][iz2][iy];
+
2273 break;
+
2274 }
+
2275 }
+
2276 varmin = GSL_MIN(varmin, zm->vmr[it][iz][iy]);
+
2277 varmax = GSL_MAX(varmax, zm->vmr[it][iz][iy]);
+
2278 }
+
2279
+
2280 /* Close netCDF file... */
+
2281 NC(nc_close(ncid));
+
2282
+
2283 /* Write info... */
+
2284 LOG(2, "Number of time steps: %d", zm->ntime);
+
2285 LOG(2, "Time steps: %.2f, %.2f ... %.2f s",
+
2286 zm->time[0], zm->time[1], zm->time[zm->ntime - 1]);
+
2287 LOG(2, "Number of pressure levels: %d", zm->np);
+
2288 LOG(2, "Altitude levels: %g, %g ... %g km",
+
2289 Z(zm->p[0]), Z(zm->p[1]), Z(zm->p[zm->np - 1]));
+
2290 LOG(2, "Pressure levels: %g, %g ... %g hPa", zm->p[0],
+
2291 zm->p[1], zm->p[zm->np - 1]);
+
2292 LOG(2, "Number of latitudes: %d", zm->nlat);
+
2293 LOG(2, "Latitudes: %g, %g ... %g deg",
+
2294 zm->lat[0], zm->lat[1], zm->lat[zm->nlat - 1]);
+
2295 LOG(2, "%s concentration range: %g ... %g ppv", varname, varmin, varmax);
+
2296}
+
#define CY
Maximum number of latitudes for climatological data.
Definition: libtrac.h:212
+
+
+
+ +

◆ read_ctl()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_ctl (const char * filename,
int argc,
char * argv[],
ctl_tctl 
)
+
+ +

Read control parameters.

+ +

Definition at line 2300 of file libtrac.c.

+
2304 {
+
2305
+
2306 /* Set timer... */
+
2307 SELECT_TIMER("READ_CTL", "INPUT", NVTX_READ);
+
2308
+
2309 /* Write info... */
+
2310 LOG(1, "\nMassive-Parallel Trajectory Calculations (MPTRAC)\n"
+
2311 "(executable: %s | version: %s | compiled: %s, %s)\n",
+
2312 argv[0], VERSION, __DATE__, __TIME__);
+
2313
+
2314 /* Initialize quantity indices... */
+
2315 ctl->qnt_idx = -1;
+
2316 ctl->qnt_ens = -1;
+
2317 ctl->qnt_stat = -1;
+
2318 ctl->qnt_m = -1;
+
2319 ctl->qnt_vmr = -1;
+
2320 ctl->qnt_rp = -1;
+
2321 ctl->qnt_rhop = -1;
+
2322 ctl->qnt_ps = -1;
+
2323 ctl->qnt_ts = -1;
+
2324 ctl->qnt_zs = -1;
+
2325 ctl->qnt_us = -1;
+
2326 ctl->qnt_vs = -1;
+
2327 ctl->qnt_lsm = -1;
+
2328 ctl->qnt_sst = -1;
+
2329 ctl->qnt_pbl = -1;
+
2330 ctl->qnt_pt = -1;
+
2331 ctl->qnt_tt = -1;
+
2332 ctl->qnt_zt = -1;
+
2333 ctl->qnt_h2ot = -1;
+
2334 ctl->qnt_zg = -1;
+
2335 ctl->qnt_p = -1;
+
2336 ctl->qnt_t = -1;
+
2337 ctl->qnt_rho = -1;
+
2338 ctl->qnt_u = -1;
+
2339 ctl->qnt_v = -1;
+
2340 ctl->qnt_w = -1;
+
2341 ctl->qnt_h2o = -1;
+
2342 ctl->qnt_o3 = -1;
+
2343 ctl->qnt_lwc = -1;
+
2344 ctl->qnt_iwc = -1;
+
2345 ctl->qnt_cc = -1;
+
2346 ctl->qnt_pct = -1;
+
2347 ctl->qnt_pcb = -1;
+
2348 ctl->qnt_cl = -1;
+
2349 ctl->qnt_plcl = -1;
+
2350 ctl->qnt_plfc = -1;
+
2351 ctl->qnt_pel = -1;
+
2352 ctl->qnt_cape = -1;
+
2353 ctl->qnt_cin = -1;
+
2354 ctl->qnt_o3c = -1;
+
2355 ctl->qnt_hno3 = -1;
+
2356 ctl->qnt_oh = -1;
+
2357 ctl->qnt_h2o2 = -1;
+
2358 ctl->qnt_ho2 = -1;
+
2359 ctl->qnt_o1d = -1;
+
2360 ctl->qnt_mloss_oh = -1;
+
2361 ctl->qnt_mloss_h2o2 = -1;
+
2362 ctl->qnt_mloss_wet = -1;
+
2363 ctl->qnt_mloss_dry = -1;
+
2364 ctl->qnt_mloss_decay = -1;
+
2365 ctl->qnt_psat = -1;
+
2366 ctl->qnt_psice = -1;
+
2367 ctl->qnt_pw = -1;
+
2368 ctl->qnt_sh = -1;
+
2369 ctl->qnt_rh = -1;
+
2370 ctl->qnt_rhice = -1;
+
2371 ctl->qnt_theta = -1;
+
2372 ctl->qnt_zeta = -1;
+
2373 ctl->qnt_zeta_d = -1;
+
2374 ctl->qnt_tvirt = -1;
+
2375 ctl->qnt_lapse = -1;
+
2376 ctl->qnt_vh = -1;
+
2377 ctl->qnt_vz = -1;
+
2378 ctl->qnt_pv = -1;
+
2379 ctl->qnt_tdew = -1;
+
2380 ctl->qnt_tice = -1;
+
2381 ctl->qnt_tsts = -1;
+
2382 ctl->qnt_tnat = -1;
+
2383 ctl->qnt_Cx = -1;
+
2384 ctl->qnt_Ch2o = -1;
+
2385 ctl->qnt_Co3 = -1;
+
2386 ctl->qnt_Cco = -1;
+
2387 ctl->qnt_Coh = -1;
+
2388 ctl->qnt_Ch = -1;
+
2389 ctl->qnt_Cho2 = -1;
+
2390 ctl->qnt_Ch2o2 = -1;
+
2391 ctl->qnt_Co1d = -1;
+
2392 ctl->qnt_Co3p = -1;
+
2393 ctl->qnt_Cccl4 = -1;
+
2394 ctl->qnt_Cccl3f = -1;
+
2395 ctl->qnt_Cccl2f2 = -1;
+
2396 ctl->qnt_Cn2o = -1;
+
2397 ctl->qnt_Csf6 = -1;
+
2398 ctl->qnt_aoa = -1;
+
2399
+
2400 /* Read quantities... */
+
2401 ctl->nq = (int) scan_ctl(filename, argc, argv, "NQ", -1, "0", NULL);
+
2402 if (ctl->nq > NQ)
+
2403 ERRMSG("Too many quantities!");
+
2404 for (int iq = 0; iq < ctl->nq; iq++) {
+
2405
+
2406 /* Read quantity name and format... */
+
2407 scan_ctl(filename, argc, argv, "QNT_NAME", iq, "", ctl->qnt_name[iq]);
+
2408 scan_ctl(filename, argc, argv, "QNT_LONGNAME", iq, ctl->qnt_name[iq],
+
2409 ctl->qnt_longname[iq]);
+
2410 scan_ctl(filename, argc, argv, "QNT_FORMAT", iq, "%g",
+
2411 ctl->qnt_format[iq]);
+
2412 if (strcasecmp(ctl->qnt_name[iq], "aoa") == 0)
+
2413 sprintf(ctl->qnt_format[iq], "%%.2f");
+
2414
+
2415 /* Try to identify quantity... */
+
2416 SET_QNT(qnt_idx, "idx", "particle index", "-")
+
2417 SET_QNT(qnt_ens, "ens", "ensemble index", "-")
+
2418 SET_QNT(qnt_stat, "stat", "station flag", "-")
+
2419 SET_QNT(qnt_m, "m", "mass", "kg")
+
2420 SET_QNT(qnt_vmr, "vmr", "volume mixing ratio", "ppv")
+
2421 SET_QNT(qnt_rp, "rp", "particle radius", "microns")
+
2422 SET_QNT(qnt_rhop, "rhop", "particle density", "kg/m^3")
+
2423 SET_QNT(qnt_ps, "ps", "surface pressure", "hPa")
+
2424 SET_QNT(qnt_ts, "ts", "surface temperature", "K")
+
2425 SET_QNT(qnt_zs, "zs", "surface height", "km")
+
2426 SET_QNT(qnt_us, "us", "surface zonal wind", "m/s")
+
2427 SET_QNT(qnt_vs, "vs", "surface meridional wind", "m/s")
+
2428 SET_QNT(qnt_lsm, "lsm", "land-sea mask", "1")
+
2429 SET_QNT(qnt_sst, "sst", "sea surface temperature", "K")
+
2430 SET_QNT(qnt_pbl, "pbl", "planetary boundary layer", "hPa")
+
2431 SET_QNT(qnt_pt, "pt", "tropopause pressure", "hPa")
+
2432 SET_QNT(qnt_tt, "tt", "tropopause temperature", "K")
+
2433 SET_QNT(qnt_zt, "zt", "tropopause geopotential height", "km")
+
2434 SET_QNT(qnt_h2ot, "h2ot", "tropopause water vapor", "ppv")
+
2435 SET_QNT(qnt_zg, "zg", "geopotential height", "km")
+
2436 SET_QNT(qnt_p, "p", "pressure", "hPa")
+
2437 SET_QNT(qnt_t, "t", "temperature", "K")
+
2438 SET_QNT(qnt_rho, "rho", "air density", "kg/m^3")
+
2439 SET_QNT(qnt_u, "u", "zonal wind", "m/s")
+
2440 SET_QNT(qnt_v, "v", "meridional wind", "m/s")
+
2441 SET_QNT(qnt_w, "w", "vertical velocity", "hPa/s")
+
2442 SET_QNT(qnt_h2o, "h2o", "water vapor", "ppv")
+
2443 SET_QNT(qnt_o3, "o3", "ozone", "ppv")
+
2444 SET_QNT(qnt_lwc, "lwc", "cloud ice water content", "kg/kg")
+
2445 SET_QNT(qnt_iwc, "iwc", "cloud liquid water content", "kg/kg")
+
2446 SET_QNT(qnt_cc, "cc", "cloud cover", "1")
+
2447 SET_QNT(qnt_pct, "pct", "cloud top pressure", "hPa")
+
2448 SET_QNT(qnt_pcb, "pcb", "cloud bottom pressure", "hPa")
+
2449 SET_QNT(qnt_cl, "cl", "total column cloud water", "kg/m^2")
+
2450 SET_QNT(qnt_plcl, "plcl", "lifted condensation level", "hPa")
+
2451 SET_QNT(qnt_plfc, "plfc", "level of free convection", "hPa")
+
2452 SET_QNT(qnt_pel, "pel", "equilibrium level", "hPa")
+
2453 SET_QNT(qnt_cape, "cape", "convective available potential energy",
+
2454 "J/kg")
+
2455 SET_QNT(qnt_cin, "cin", "convective inhibition", "J/kg")
+
2456 SET_QNT(qnt_o3c, "o3c", "total column ozone", "DU")
+
2457 SET_QNT(qnt_hno3, "hno3", "nitric acid", "ppv")
+
2458 SET_QNT(qnt_oh, "oh", "hydroxyl radical", "ppv")
+
2459 SET_QNT(qnt_h2o2, "h2o2", "hydrogen peroxide", "ppv")
+
2460 SET_QNT(qnt_ho2, "ho2", "hydroperoxyl radical", "ppv")
+
2461 SET_QNT(qnt_o1d, "o1d", "atomic oxygen", "ppv")
+
2462 SET_QNT(qnt_mloss_oh, "mloss_oh", "mass loss due to OH chemistry", "kg")
+
2463 SET_QNT(qnt_mloss_h2o2, "mloss_h2o2", "mass loss due to H2O2 chemistry",
+
2464 "kg")
+
2465 SET_QNT(qnt_mloss_wet, "mloss_wet", "mass loss due to wet deposition",
+
2466 "kg")
+
2467 SET_QNT(qnt_mloss_dry, "mloss_dry", "mass loss due to dry deposition",
+
2468 "kg")
+
2469 SET_QNT(qnt_mloss_decay, "mloss_decay",
+
2470 "mass loss due to exponential decay", "kg")
+
2471 SET_QNT(qnt_psat, "psat", "saturation pressure over water", "hPa")
+
2472 SET_QNT(qnt_psice, "psice", "saturation pressure over ice", "hPa")
+
2473 SET_QNT(qnt_pw, "pw", "partial water vapor pressure", "hPa")
+
2474 SET_QNT(qnt_sh, "sh", "specific humidity", "kg/kg")
+
2475 SET_QNT(qnt_rh, "rh", "relative humidity", "%%")
+
2476 SET_QNT(qnt_rhice, "rhice", "relative humidity over ice", "%%")
+
2477 SET_QNT(qnt_theta, "theta", "potential temperature", "K")
+
2478 SET_QNT(qnt_zeta, "zeta", "zeta coordinate", "K")
+
2479 SET_QNT(qnt_zeta_d, "zeta_d", "diagnosed zeta coordinate", "K")
+
2480 SET_QNT(qnt_tvirt, "tvirt", "virtual temperature", "K")
+
2481 SET_QNT(qnt_lapse, "lapse", "temperature lapse rate", "K/km")
+
2482 SET_QNT(qnt_vh, "vh", "horizontal velocity", "m/s")
+
2483 SET_QNT(qnt_vz, "vz", "vertical velocity", "m/s")
+
2484 SET_QNT(qnt_pv, "pv", "potential vorticity", "PVU")
+
2485 SET_QNT(qnt_tdew, "tdew", "dew point temperature", "K")
+
2486 SET_QNT(qnt_tice, "tice", "frost point temperature", "K")
+
2487 SET_QNT(qnt_tsts, "tsts", "STS existence temperature", "K")
+
2488 SET_QNT(qnt_tnat, "tnat", "NAT existence temperature", "K")
+
2489 SET_QNT(qnt_Cx, "Cx", "Trace species x volume mixing ratio", "ppv")
+
2490 SET_QNT(qnt_Ch2o, "Ch2o", "H2O volume mixing ratio", "ppv")
+
2491 SET_QNT(qnt_Co3, "Co3", "O3 volume mixing ratio", "ppv")
+
2492 SET_QNT(qnt_Cco, "Cco", "CO volume mixing ratio", "ppv")
+
2493 SET_QNT(qnt_Coh, "Coh", "HO volume mixing ratio", "ppv")
+
2494 SET_QNT(qnt_Ch, "Ch", "H radical volume mixing ratio", "ppv")
+
2495 SET_QNT(qnt_Cho2, "Cho2", "HO2 volume mixing ratio", "ppv")
+
2496 SET_QNT(qnt_Ch2o2, "Ch2o2", "H2O2 volume mixing ratio", "ppv")
+
2497 SET_QNT(qnt_Co1d, "Co1d", "O(1D) volume mixing ratio", "ppv")
+
2498 SET_QNT(qnt_Co3p, "Co3p", "O(3P) radical volume mixing ratio", "ppv")
+
2499 SET_QNT(qnt_Cccl4, "Cccl4", "CCl4 (CFC-10) volume mixing ratio", "ppv")
+
2500 SET_QNT(qnt_Cccl3f, "Cccl3f", "CCl3F (CFC-11) volume mixing ratio",
+
2501 "ppv")
+
2502 SET_QNT(qnt_Cccl2f2, "Cccl2f2", "CCl2F2 (CFC-12) volume mixing ratio",
+
2503 "ppv")
+
2504 SET_QNT(qnt_Cn2o, "Cn2o", "N2O volume mixing ratio", "ppv")
+
2505 SET_QNT(qnt_Csf6, "Csf6", "SF6 volume mixing ratio", "ppv")
+
2506 SET_QNT(qnt_aoa, "aoa", "age of air", "s")
+
2507 scan_ctl(filename, argc, argv, "QNT_UNIT", iq, "", ctl->qnt_unit[iq]);
+
2508 }
+
2509
+
2510 /* netCDF I/O parameters... */
+
2511 ctl->chunkszhint =
+
2512 (size_t) scan_ctl(filename, argc, argv, "CHUNKSZHINT", -1, "163840000",
+
2513 NULL);
+
2514 ctl->read_mode =
+
2515 (int) scan_ctl(filename, argc, argv, "READMODE", -1, "0", NULL);
+
2516
+
2517 /* Vertical coordinates and velocities... */
+
2518 ctl->vert_coord_ap =
+
2519 (int) scan_ctl(filename, argc, argv, "VERT_COORD_AP", -1, "0", NULL);
+
2520 ctl->vert_coord_met =
+
2521 (int) scan_ctl(filename, argc, argv, "VERT_COORD_MET", -1, "0", NULL);
+
2522 if (ctl->vert_coord_ap == 1) {
+
2523 int error = 1;
+
2524 for (int iq = 0; iq < ctl->nq; iq++) {
+
2525 if (strcmp(ctl->qnt_name[iq], "zeta") == 0) {
+
2526 error = 0;
+
2527 break;
+
2528 }
+
2529 }
+
2530 if (error == 1)
+
2531 ERRMSG("Please add zeta to your quantities for diabatic calculations.");
+
2532 }
+
2533 ctl->clams_met_data =
+
2534 (int) scan_ctl(filename, argc, argv, "CLAMS_MET_DATA", -1, "0", NULL);
+ +
2536 (int) scan_ctl(filename, argc, argv, "CPL_ZETA_PRESS_MODULES", -1, "1",
+
2537 NULL);
+
2538
+
2539 /* Time steps of simulation... */
+
2540 ctl->direction =
+
2541 (int) scan_ctl(filename, argc, argv, "DIRECTION", -1, "1", NULL);
+
2542 if (ctl->direction != -1 && ctl->direction != 1)
+
2543 ERRMSG("Set DIRECTION to -1 or 1!");
+
2544 ctl->t_stop = scan_ctl(filename, argc, argv, "T_STOP", -1, "1e100", NULL);
+
2545 ctl->dt_mod = scan_ctl(filename, argc, argv, "DT_MOD", -1, "180", NULL);
+
2546
+
2547 /* Meteo data... */
+
2548 scan_ctl(filename, argc, argv, "METBASE", -1, "-", ctl->metbase);
+
2549 ctl->dt_met = scan_ctl(filename, argc, argv, "DT_MET", -1, "3600", NULL);
+
2550 ctl->met_convention =
+
2551 (int) scan_ctl(filename, argc, argv, "MET_CONVENTION", -1, "0", NULL);
+
2552 ctl->met_type =
+
2553 (int) scan_ctl(filename, argc, argv, "MET_TYPE", -1, "0", NULL);
+
2554 if (ctl->vert_coord_ap == 1 && ctl->met_type != 0)
+
2555 ERRMSG
+
2556 ("Please use meteorological files in netcdf format for diabatic calculations.");
+
2557 ctl->met_nc_scale =
+
2558 (int) scan_ctl(filename, argc, argv, "MET_NC_SCALE", -1, "1", NULL);
+
2559 ctl->met_zfp_prec =
+
2560 (int) scan_ctl(filename, argc, argv, "MET_ZFP_PREC", -1, "8", NULL);
+
2561 ctl->met_zfp_tol_t =
+
2562 scan_ctl(filename, argc, argv, "MET_ZFP_TOL_T", -1, "5.0", NULL);
+
2563 ctl->met_zfp_tol_z =
+
2564 scan_ctl(filename, argc, argv, "MET_ZFP_TOL_Z", -1, "0.5", NULL);
+
2565 ctl->met_dx = (int) scan_ctl(filename, argc, argv, "MET_DX", -1, "1", NULL);
+
2566 ctl->met_dy = (int) scan_ctl(filename, argc, argv, "MET_DY", -1, "1", NULL);
+
2567 ctl->met_dp = (int) scan_ctl(filename, argc, argv, "MET_DP", -1, "1", NULL);
+
2568 if (ctl->met_dx < 1 || ctl->met_dy < 1 || ctl->met_dp < 1)
+
2569 ERRMSG("MET_DX, MET_DY, and MET_DP need to be greater than zero!");
+
2570 ctl->met_sx = (int) scan_ctl(filename, argc, argv, "MET_SX", -1, "1", NULL);
+
2571 ctl->met_sy = (int) scan_ctl(filename, argc, argv, "MET_SY", -1, "1", NULL);
+
2572 ctl->met_sp = (int) scan_ctl(filename, argc, argv, "MET_SP", -1, "1", NULL);
+
2573 if (ctl->met_sx < 1 || ctl->met_sy < 1 || ctl->met_sp < 1)
+
2574 ERRMSG("MET_SX, MET_SY, and MET_SP need to be greater than zero!");
+
2575 ctl->met_detrend =
+
2576 scan_ctl(filename, argc, argv, "MET_DETREND", -1, "-999", NULL);
+
2577 ctl->met_np = (int) scan_ctl(filename, argc, argv, "MET_NP", -1, "0", NULL);
+
2578 if (ctl->met_np > EP)
+
2579 ERRMSG("Too many levels!");
+
2580 ctl->press_level_def =
+
2581 (int) scan_ctl(filename, argc, argv, "PRESS_LEVEL_DEF", -1, "-1", NULL);
+
2582 if (ctl->press_level_def >= 0) {
+
2583 level_definitions(ctl);
+
2584 } else {
+
2585 if (ctl->met_np > 0) {
+
2586 for (int ip = 0; ip < ctl->met_np; ip++)
+
2587 ctl->met_p[ip] =
+
2588 scan_ctl(filename, argc, argv, "MET_P", ip, "", NULL);
+
2589 }
+
2590 }
+
2591 ctl->met_geopot_sx
+
2592 = (int) scan_ctl(filename, argc, argv, "MET_GEOPOT_SX", -1, "-1", NULL);
+
2593 ctl->met_geopot_sy
+
2594 = (int) scan_ctl(filename, argc, argv, "MET_GEOPOT_SY", -1, "-1", NULL);
+
2595 ctl->met_relhum
+
2596 = (int) scan_ctl(filename, argc, argv, "MET_RELHUM", -1, "0", NULL);
+
2597 ctl->met_tropo =
+
2598 (int) scan_ctl(filename, argc, argv, "MET_TROPO", -1, "3", NULL);
+
2599 if (ctl->met_tropo < 0 || ctl->met_tropo > 5)
+
2600 ERRMSG("Set MET_TROPO = 0 ... 5!");
+
2601 ctl->met_tropo_lapse =
+
2602 scan_ctl(filename, argc, argv, "MET_TROPO_LAPSE", -1, "2.0", NULL);
+
2603 ctl->met_tropo_nlev =
+
2604 (int) scan_ctl(filename, argc, argv, "MET_TROPO_NLEV", -1, "20", NULL);
+
2605 ctl->met_tropo_lapse_sep =
+
2606 scan_ctl(filename, argc, argv, "MET_TROPO_LAPSE_SEP", -1, "3.0", NULL);
+
2607 ctl->met_tropo_nlev_sep =
+
2608 (int) scan_ctl(filename, argc, argv, "MET_TROPO_NLEV_SEP", -1, "10",
+
2609 NULL);
+
2610 ctl->met_tropo_pv =
+
2611 scan_ctl(filename, argc, argv, "MET_TROPO_PV", -1, "3.5", NULL);
+
2612 ctl->met_tropo_theta =
+
2613 scan_ctl(filename, argc, argv, "MET_TROPO_THETA", -1, "380", NULL);
+
2614 ctl->met_tropo_spline =
+
2615 (int) scan_ctl(filename, argc, argv, "MET_TROPO_SPLINE", -1, "1", NULL);
+
2616 ctl->met_cloud =
+
2617 (int) scan_ctl(filename, argc, argv, "MET_CLOUD", -1, "1", NULL);
+
2618 if (ctl->met_cloud < 0 || ctl->met_cloud > 3)
+
2619 ERRMSG("Set MET_CLOUD = 0 ... 3!");
+
2620 ctl->met_cloud_min =
+
2621 scan_ctl(filename, argc, argv, "MET_CLOUD_MIN", -1, "0", NULL);
+
2622 ctl->met_dt_out =
+
2623 scan_ctl(filename, argc, argv, "MET_DT_OUT", -1, "0.1", NULL);
+
2624 ctl->met_cache =
+
2625 (int) scan_ctl(filename, argc, argv, "MET_CACHE", -1, "0", NULL);
+
2626
+
2627 /* Sorting... */
+
2628 ctl->sort_dt = scan_ctl(filename, argc, argv, "SORT_DT", -1, "-999", NULL);
+
2629
+
2630 /* Isosurface parameters... */
+
2631 ctl->isosurf =
+
2632 (int) scan_ctl(filename, argc, argv, "ISOSURF", -1, "0", NULL);
+
2633 scan_ctl(filename, argc, argv, "BALLOON", -1, "-", ctl->balloon);
+
2634
+
2635 /* Advection parameters... */
+
2636 ctl->advect = (int) scan_ctl(filename, argc, argv, "ADVECT", -1, "2", NULL);
+
2637 if (!(ctl->advect == 0 || ctl->advect == 1
+
2638 || ctl->advect == 2 || ctl->advect == 4))
+
2639 ERRMSG("Set ADVECT to 0, 1, 2, or 4!");
+
2640 ctl->reflect =
+
2641 (int) scan_ctl(filename, argc, argv, "REFLECT", -1, "0", NULL);
+
2642
+
2643 /* Diffusion parameters... */
+
2644 ctl->turb_dx_trop =
+
2645 scan_ctl(filename, argc, argv, "TURB_DX_TROP", -1, "50", NULL);
+
2646 ctl->turb_dx_strat =
+
2647 scan_ctl(filename, argc, argv, "TURB_DX_STRAT", -1, "0", NULL);
+
2648 ctl->turb_dz_trop =
+
2649 scan_ctl(filename, argc, argv, "TURB_DZ_TROP", -1, "0", NULL);
+
2650 ctl->turb_dz_strat =
+
2651 scan_ctl(filename, argc, argv, "TURB_DZ_STRAT", -1, "0.1", NULL);
+
2652 ctl->turb_mesox =
+
2653 scan_ctl(filename, argc, argv, "TURB_MESOX", -1, "0.16", NULL);
+
2654 ctl->turb_mesoz =
+
2655 scan_ctl(filename, argc, argv, "TURB_MESOZ", -1, "0.16", NULL);
+
2656
+
2657 /* Convection... */
+
2658 ctl->conv_cape
+
2659 = scan_ctl(filename, argc, argv, "CONV_CAPE", -1, "-999", NULL);
+
2660 ctl->conv_cin
+
2661 = scan_ctl(filename, argc, argv, "CONV_CIN", -1, "-999", NULL);
+
2662 ctl->conv_dt = scan_ctl(filename, argc, argv, "CONV_DT", -1, "-999", NULL);
+
2663 ctl->conv_mix
+
2664 = (int) scan_ctl(filename, argc, argv, "CONV_MIX", -1, "1", NULL);
+
2665 ctl->conv_mix_bot
+
2666 = (int) scan_ctl(filename, argc, argv, "CONV_MIX_BOT", -1, "1", NULL);
+
2667 ctl->conv_mix_top
+
2668 = (int) scan_ctl(filename, argc, argv, "CONV_MIX_TOP", -1, "1", NULL);
+
2669
+
2670 /* Boundary conditions... */
+
2671 ctl->bound_mass =
+
2672 scan_ctl(filename, argc, argv, "BOUND_MASS", -1, "-999", NULL);
+
2673 ctl->bound_mass_trend =
+
2674 scan_ctl(filename, argc, argv, "BOUND_MASS_TREND", -1, "0", NULL);
+
2675 ctl->bound_vmr =
+
2676 scan_ctl(filename, argc, argv, "BOUND_VMR", -1, "-999", NULL);
+
2677 ctl->bound_vmr_trend =
+
2678 scan_ctl(filename, argc, argv, "BOUND_VMR_TREND", -1, "0", NULL);
+
2679 ctl->bound_lat0 =
+
2680 scan_ctl(filename, argc, argv, "BOUND_LAT0", -1, "-999", NULL);
+
2681 ctl->bound_lat1 =
+
2682 scan_ctl(filename, argc, argv, "BOUND_LAT1", -1, "-999", NULL);
+
2683 ctl->bound_p0 =
+
2684 scan_ctl(filename, argc, argv, "BOUND_P0", -1, "-999", NULL);
+
2685 ctl->bound_p1 =
+
2686 scan_ctl(filename, argc, argv, "BOUND_P1", -1, "-999", NULL);
+
2687 ctl->bound_dps =
+
2688 scan_ctl(filename, argc, argv, "BOUND_DPS", -1, "-999", NULL);
+
2689 ctl->bound_dzs =
+
2690 scan_ctl(filename, argc, argv, "BOUND_DZS", -1, "-999", NULL);
+
2691 ctl->bound_zetas =
+
2692 scan_ctl(filename, argc, argv, "BOUND_ZETAS", -1, "-999", NULL);
+
2693 ctl->bound_pbl =
+
2694 (int) scan_ctl(filename, argc, argv, "BOUND_PBL", -1, "0", NULL);
+
2695
+
2696 /* Species parameters... */
+
2697 scan_ctl(filename, argc, argv, "SPECIES", -1, "-", ctl->species);
+
2698 if (strcasecmp(ctl->species, "CF2Cl2") == 0) {
+
2699 ctl->molmass = 120.907;
+
2700 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 3e-5;
+
2701 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3500.0;
+
2702 } else if (strcasecmp(ctl->species, "CFCl3") == 0) {
+
2703 ctl->molmass = 137.359;
+
2704 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.1e-4;
+
2705 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3300.0;
+
2706 } else if (strcasecmp(ctl->species, "CH4") == 0) {
+
2707 ctl->molmass = 16.043;
+
2708 ctl->oh_chem_reaction = 2;
+
2709 ctl->oh_chem[0] = 2.45e-12;
+
2710 ctl->oh_chem[1] = 1775;
+
2711 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.4e-5;
+
2712 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1600.0;
+
2713 } else if (strcasecmp(ctl->species, "CO") == 0) {
+
2714 ctl->molmass = 28.01;
+
2715 ctl->oh_chem_reaction = 3;
+
2716 ctl->oh_chem[0] = 6.9e-33;
+
2717 ctl->oh_chem[1] = 2.1;
+
2718 ctl->oh_chem[2] = 1.1e-12;
+
2719 ctl->oh_chem[3] = -1.3;
+
2720 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 9.7e-6;
+
2721 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1300.0;
+
2722 } else if (strcasecmp(ctl->species, "CO2") == 0) {
+
2723 ctl->molmass = 44.009;
+
2724 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 3.3e-4;
+
2725 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2400.0;
+
2726 } else if (strcasecmp(ctl->species, "H2O") == 0) {
+
2727 ctl->molmass = 18.01528;
+
2728 } else if (strcasecmp(ctl->species, "N2O") == 0) {
+
2729 ctl->molmass = 44.013;
+
2730 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.4e-4;
+
2731 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2600.;
+
2732 } else if (strcasecmp(ctl->species, "NH3") == 0) {
+
2733 ctl->molmass = 17.031;
+
2734 ctl->oh_chem_reaction = 2;
+
2735 ctl->oh_chem[0] = 1.7e-12;
+
2736 ctl->oh_chem[1] = 710;
+
2737 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 5.9e-1;
+
2738 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 4200.0;
+
2739 } else if (strcasecmp(ctl->species, "HNO3") == 0) {
+
2740 ctl->molmass = 63.012;
+
2741 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.1e3;
+
2742 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 8700.0;
+
2743 } else if (strcasecmp(ctl->species, "NO") == 0) {
+
2744 ctl->molmass = 30.006;
+
2745 ctl->oh_chem_reaction = 3;
+
2746 ctl->oh_chem[0] = 7.1e-31;
+
2747 ctl->oh_chem[1] = 2.6;
+
2748 ctl->oh_chem[2] = 3.6e-11;
+
2749 ctl->oh_chem[3] = 0.1;
+
2750 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.9e-5;
+
2751 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1600.0;
+
2752 } else if (strcasecmp(ctl->species, "NO2") == 0) {
+
2753 ctl->molmass = 46.005;
+
2754 ctl->oh_chem_reaction = 3;
+
2755 ctl->oh_chem[0] = 1.8e-30;
+
2756 ctl->oh_chem[1] = 3.0;
+
2757 ctl->oh_chem[2] = 2.8e-11;
+
2758 ctl->oh_chem[3] = 0.0;
+
2759 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.2e-4;
+
2760 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2400.0;
+
2761 } else if (strcasecmp(ctl->species, "O3") == 0) {
+
2762 ctl->molmass = 47.997;
+
2763 ctl->oh_chem_reaction = 2;
+
2764 ctl->oh_chem[0] = 1.7e-12;
+
2765 ctl->oh_chem[1] = 940;
+
2766 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1e-4;
+
2767 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2800.0;
+
2768 } else if (strcasecmp(ctl->species, "SF6") == 0) {
+
2769 ctl->molmass = 146.048;
+
2770 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.4e-6;
+
2771 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3100.0;
+
2772 } else if (strcasecmp(ctl->species, "SO2") == 0) {
+
2773 ctl->molmass = 64.066;
+
2774 ctl->oh_chem_reaction = 3;
+
2775 ctl->oh_chem[0] = 2.9e-31;
+
2776 ctl->oh_chem[1] = 4.1;
+
2777 ctl->oh_chem[2] = 1.7e-12;
+
2778 ctl->oh_chem[3] = -0.2;
+
2779 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.3e-2;
+
2780 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2900.0;
+
2781 }
+
2782
+
2783 /* Molar mass... */
+
2784 char defstr[LEN];
+
2785 sprintf(defstr, "%g", ctl->molmass);
+
2786 ctl->molmass = scan_ctl(filename, argc, argv, "MOLMASS", -1, defstr, NULL);
+
2787
+
2788 /* OH chemistry... */
+
2789 sprintf(defstr, "%d", ctl->oh_chem_reaction);
+
2790 ctl->oh_chem_reaction =
+
2791 (int) scan_ctl(filename, argc, argv, "OH_CHEM_REACTION", -1, defstr,
+
2792 NULL);
+
2793 for (int ip = 0; ip < 4; ip++) {
+
2794 sprintf(defstr, "%g", ctl->oh_chem[ip]);
+
2795 ctl->oh_chem[ip] =
+
2796 scan_ctl(filename, argc, argv, "OH_CHEM", ip, defstr, NULL);
+
2797 }
+
2798 ctl->oh_chem_beta =
+
2799 scan_ctl(filename, argc, argv, "OH_CHEM_BETA", -1, "0", NULL);
+
2800
+
2801 /* H2O2 chemistry... */
+
2802 ctl->h2o2_chem_reaction =
+
2803 (int) scan_ctl(filename, argc, argv, "H2O2_CHEM_REACTION", -1, "0", NULL);
+
2804
+
2805 /* KPP chemistry... */
+
2806 ctl->kpp_chem =
+
2807 (int) scan_ctl(filename, argc, argv, "KPP_CHEM", -1, "0", NULL);
+
2808
+
2809 /* First order tracer chemistry... */
+
2810 ctl->tracer_chem =
+
2811 (int) scan_ctl(filename, argc, argv, "TRACER_CHEM", -1, "0", NULL);
+
2812
+
2813 /* Wet deposition... */
+
2814 for (int ip = 0; ip < 3; ip++) {
+
2815 sprintf(defstr, "%g", ctl->wet_depo_ic_h[ip]);
+
2816 ctl->wet_depo_ic_h[ip] =
+
2817 scan_ctl(filename, argc, argv, "WET_DEPO_IC_H", ip, defstr, NULL);
+
2818 }
+
2819 for (int ip = 0; ip < 1; ip++) {
+
2820 sprintf(defstr, "%g", ctl->wet_depo_bc_h[ip]);
+
2821 ctl->wet_depo_bc_h[ip] =
+
2822 scan_ctl(filename, argc, argv, "WET_DEPO_BC_H", ip, defstr, NULL);
+
2823 }
+
2824 ctl->wet_depo_ic_a =
+
2825 scan_ctl(filename, argc, argv, "WET_DEPO_IC_A", -1, "0", NULL);
+
2826 ctl->wet_depo_ic_b =
+
2827 scan_ctl(filename, argc, argv, "WET_DEPO_IC_B", -1, "0", NULL);
+
2828 ctl->wet_depo_bc_a =
+
2829 scan_ctl(filename, argc, argv, "WET_DEPO_BC_A", -1, "0", NULL);
+
2830 ctl->wet_depo_bc_b =
+
2831 scan_ctl(filename, argc, argv, "WET_DEPO_BC_B", -1, "0", NULL);
+
2832 ctl->wet_depo_pre[0] =
+
2833 scan_ctl(filename, argc, argv, "WET_DEPO_PRE", 0, "0.5", NULL);
+
2834 ctl->wet_depo_pre[1] =
+
2835 scan_ctl(filename, argc, argv, "WET_DEPO_PRE", 1, "0.36", NULL);
+ +
2837 scan_ctl(filename, argc, argv, "WET_DEPO_IC_RET_RATIO", -1, "1", NULL);
+ +
2839 scan_ctl(filename, argc, argv, "WET_DEPO_BC_RET_RATIO", -1, "1", NULL);
+
2840
+
2841 /* Dry deposition... */
+
2842 ctl->dry_depo_vdep =
+
2843 scan_ctl(filename, argc, argv, "DRY_DEPO_VDEP", -1, "0", NULL);
+
2844 ctl->dry_depo_dp =
+
2845 scan_ctl(filename, argc, argv, "DRY_DEPO_DP", -1, "30", NULL);
+
2846
+
2847 /* Climatological data... */
+
2848 scan_ctl(filename, argc, argv, "CLIM_PHOTO", -1,
+
2849 "../../data/photolysis_rate.nc", ctl->clim_photo);
+
2850 scan_ctl(filename, argc, argv, "CLIM_HNO3_FILENAME", -1,
+
2851 "../../data/gozcards_HNO3.nc", ctl->clim_hno3_filename);
+
2852 scan_ctl(filename, argc, argv, "CLIM_OH_FILENAME", -1,
+
2853 "../../data/clams_radical_species_vmr.nc", ctl->clim_oh_filename);
+
2854 scan_ctl(filename, argc, argv, "CLIM_H2O2_FILENAME", -1,
+
2855 "../../data/cams_H2O2.nc", ctl->clim_h2o2_filename);
+
2856 scan_ctl(filename, argc, argv, "CLIM_HO2_FILENAME", -1,
+
2857 "../../data/clams_radical_species_vmr.nc", ctl->clim_ho2_filename);
+
2858 scan_ctl(filename, argc, argv, "CLIM_O1D_FILENAME", -1,
+
2859 "../../data/clams_radical_species_vmr.nc", ctl->clim_o1d_filename);
+
2860 scan_ctl(filename, argc, argv, "CLIM_CCL4_TIMESERIES", -1,
+
2861 "../../data/noaa_gml_ccl4.tab", ctl->clim_ccl4_timeseries);
+
2862 scan_ctl(filename, argc, argv, "CLIM_CCL3F_TIMESERIES", -1,
+
2863 "../../data/noaa_gml_cfc11.tab", ctl->clim_ccl3f_timeseries);
+
2864 scan_ctl(filename, argc, argv, "CLIM_CCL2F2_TIMESERIES", -1,
+
2865 "../../data/noaa_gml_cfc12.tab", ctl->clim_ccl2f2_timeseries);
+
2866 scan_ctl(filename, argc, argv, "CLIM_N2O_TIMESERIES", -1,
+
2867 "../../data/noaa_gml_n2o.tab", ctl->clim_n2o_timeseries);
+
2868 scan_ctl(filename, argc, argv, "CLIM_SF6_TIMESERIES", -1,
+
2869 "../../data/noaa_gml_sf6.tab", ctl->clim_sf6_timeseries);
+
2870
+
2871 /* Mixing... */
+
2872 ctl->mixing_dt =
+
2873 scan_ctl(filename, argc, argv, "MIXING_DT", -1, "3600.", NULL);
+
2874 ctl->mixing_trop =
+
2875 scan_ctl(filename, argc, argv, "MIXING_TROP", -1, "-999", NULL);
+
2876 ctl->mixing_strat =
+
2877 scan_ctl(filename, argc, argv, "MIXING_STRAT", -1, "-999", NULL);
+
2878 ctl->mixing_z0 =
+
2879 scan_ctl(filename, argc, argv, "MIXING_Z0", -1, "-5", NULL);
+
2880 ctl->mixing_z1 =
+
2881 scan_ctl(filename, argc, argv, "MIXING_Z1", -1, "85", NULL);
+
2882 ctl->mixing_nz =
+
2883 (int) scan_ctl(filename, argc, argv, "MIXING_NZ", -1, "90", NULL);
+
2884 ctl->mixing_lon0 =
+
2885 scan_ctl(filename, argc, argv, "MIXING_LON0", -1, "-180", NULL);
+
2886 ctl->mixing_lon1 =
+
2887 scan_ctl(filename, argc, argv, "MIXING_LON1", -1, "180", NULL);
+
2888 ctl->mixing_nx =
+
2889 (int) scan_ctl(filename, argc, argv, "MIXING_NX", -1, "360", NULL);
+
2890 ctl->mixing_lat0 =
+
2891 scan_ctl(filename, argc, argv, "MIXING_LAT0", -1, "-90", NULL);
+
2892 ctl->mixing_lat1 =
+
2893 scan_ctl(filename, argc, argv, "MIXING_LAT1", -1, "90", NULL);
+
2894 ctl->mixing_ny =
+
2895 (int) scan_ctl(filename, argc, argv, "MIXING_NY", -1, "180", NULL);
+
2896
+
2897 /* Chemistry grid... */
+
2898 ctl->chemgrid_z0 =
+
2899 scan_ctl(filename, argc, argv, "CHEMGRID_Z0", -1, "-5", NULL);
+
2900 ctl->chemgrid_z1 =
+
2901 scan_ctl(filename, argc, argv, "CHEMGRID_Z1", -1, "85", NULL);
+
2902 ctl->chemgrid_nz =
+
2903 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NZ", -1, "90", NULL);
+
2904 ctl->chemgrid_lon0 =
+
2905 scan_ctl(filename, argc, argv, "CHEMGRID_LON0", -1, "-180", NULL);
+
2906 ctl->chemgrid_lon1 =
+
2907 scan_ctl(filename, argc, argv, "CHEMGRID_LON1", -1, "180", NULL);
+
2908 ctl->chemgrid_nx =
+
2909 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NX", -1, "360", NULL);
+
2910 ctl->chemgrid_lat0 =
+
2911 scan_ctl(filename, argc, argv, "CHEMGRID_LAT0", -1, "-90", NULL);
+
2912 ctl->chemgrid_lat1 =
+
2913 scan_ctl(filename, argc, argv, "CHEMGRID_LAT1", -1, "90", NULL);
+
2914 ctl->chemgrid_ny =
+
2915 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NY", -1, "180", NULL);
+
2916
+
2917 /* Exponential decay... */
+
2918 ctl->tdec_trop = scan_ctl(filename, argc, argv, "TDEC_TROP", -1, "0", NULL);
+
2919 ctl->tdec_strat
+
2920 = scan_ctl(filename, argc, argv, "TDEC_STRAT", -1, "0", NULL);
+
2921
+
2922 /* PSC analysis... */
+
2923 ctl->psc_h2o = scan_ctl(filename, argc, argv, "PSC_H2O", -1, "4e-6", NULL);
+
2924 ctl->psc_hno3 =
+
2925 scan_ctl(filename, argc, argv, "PSC_HNO3", -1, "9e-9", NULL);
+
2926
+
2927 /* Output of atmospheric data... */
+
2928 scan_ctl(filename, argc, argv, "ATM_BASENAME", -1, "-", ctl->atm_basename);
+
2929 scan_ctl(filename, argc, argv, "ATM_GPFILE", -1, "-", ctl->atm_gpfile);
+
2930 ctl->atm_dt_out =
+
2931 scan_ctl(filename, argc, argv, "ATM_DT_OUT", -1, "86400", NULL);
+
2932 ctl->atm_filter =
+
2933 (int) scan_ctl(filename, argc, argv, "ATM_FILTER", -1, "0", NULL);
+
2934 ctl->atm_stride =
+
2935 (int) scan_ctl(filename, argc, argv, "ATM_STRIDE", -1, "1", NULL);
+
2936 ctl->atm_type =
+
2937 (int) scan_ctl(filename, argc, argv, "ATM_TYPE", -1, "0", NULL);
+
2938 ctl->atm_type_out =
+
2939 (int) scan_ctl(filename, argc, argv, "ATM_TYPE_OUT", -1, "-1", NULL);
+
2940 if (ctl->atm_type_out == -1)
+
2941 ctl->atm_type_out = ctl->atm_type;
+
2942
+
2943 /* Output of CSI data... */
+
2944 scan_ctl(filename, argc, argv, "CSI_BASENAME", -1, "-", ctl->csi_basename);
+
2945 scan_ctl(filename, argc, argv, "CSI_KERNEL", -1, "-", ctl->csi_kernel);
+
2946 ctl->csi_dt_out =
+
2947 scan_ctl(filename, argc, argv, "CSI_DT_OUT", -1, "86400", NULL);
+
2948 scan_ctl(filename, argc, argv, "CSI_OBSFILE", -1, "-", ctl->csi_obsfile);
+
2949 ctl->csi_obsmin =
+
2950 scan_ctl(filename, argc, argv, "CSI_OBSMIN", -1, "0", NULL);
+
2951 ctl->csi_modmin =
+
2952 scan_ctl(filename, argc, argv, "CSI_MODMIN", -1, "0", NULL);
+
2953 ctl->csi_z0 = scan_ctl(filename, argc, argv, "CSI_Z0", -1, "-5", NULL);
+
2954 ctl->csi_z1 = scan_ctl(filename, argc, argv, "CSI_Z1", -1, "85", NULL);
+
2955 ctl->csi_nz = (int) scan_ctl(filename, argc, argv, "CSI_NZ", -1, "1", NULL);
+
2956 ctl->csi_lon0 =
+
2957 scan_ctl(filename, argc, argv, "CSI_LON0", -1, "-180", NULL);
+
2958 ctl->csi_lon1 = scan_ctl(filename, argc, argv, "CSI_LON1", -1, "180", NULL);
+
2959 ctl->csi_nx =
+
2960 (int) scan_ctl(filename, argc, argv, "CSI_NX", -1, "360", NULL);
+
2961 ctl->csi_lat0 = scan_ctl(filename, argc, argv, "CSI_LAT0", -1, "-90", NULL);
+
2962 ctl->csi_lat1 = scan_ctl(filename, argc, argv, "CSI_LAT1", -1, "90", NULL);
+
2963 ctl->csi_ny =
+
2964 (int) scan_ctl(filename, argc, argv, "CSI_NY", -1, "180", NULL);
+
2965
+
2966 /* Output of ensemble data... */
+
2967 scan_ctl(filename, argc, argv, "ENS_BASENAME", -1, "-", ctl->ens_basename);
+
2968 ctl->ens_dt_out =
+
2969 scan_ctl(filename, argc, argv, "ENS_DT_OUT", -1, "86400", NULL);
+
2970
+
2971 /* Output of grid data... */
+
2972 scan_ctl(filename, argc, argv, "GRID_BASENAME", -1, "-",
+
2973 ctl->grid_basename);
+
2974 scan_ctl(filename, argc, argv, "GRID_KERNEL", -1, "-", ctl->grid_kernel);
+
2975 scan_ctl(filename, argc, argv, "GRID_GPFILE", -1, "-", ctl->grid_gpfile);
+
2976 ctl->grid_dt_out =
+
2977 scan_ctl(filename, argc, argv, "GRID_DT_OUT", -1, "86400", NULL);
+
2978 ctl->grid_sparse =
+
2979 (int) scan_ctl(filename, argc, argv, "GRID_SPARSE", -1, "0", NULL);
+
2980 ctl->grid_z0 = scan_ctl(filename, argc, argv, "GRID_Z0", -1, "-5", NULL);
+
2981 ctl->grid_z1 = scan_ctl(filename, argc, argv, "GRID_Z1", -1, "85", NULL);
+
2982 ctl->grid_nz =
+
2983 (int) scan_ctl(filename, argc, argv, "GRID_NZ", -1, "1", NULL);
+
2984 ctl->grid_lon0 =
+
2985 scan_ctl(filename, argc, argv, "GRID_LON0", -1, "-180", NULL);
+
2986 ctl->grid_lon1 =
+
2987 scan_ctl(filename, argc, argv, "GRID_LON1", -1, "180", NULL);
+
2988 ctl->grid_nx =
+
2989 (int) scan_ctl(filename, argc, argv, "GRID_NX", -1, "360", NULL);
+
2990 ctl->grid_lat0 =
+
2991 scan_ctl(filename, argc, argv, "GRID_LAT0", -1, "-90", NULL);
+
2992 ctl->grid_lat1 =
+
2993 scan_ctl(filename, argc, argv, "GRID_LAT1", -1, "90", NULL);
+
2994 ctl->grid_ny =
+
2995 (int) scan_ctl(filename, argc, argv, "GRID_NY", -1, "180", NULL);
+
2996 ctl->grid_type =
+
2997 (int) scan_ctl(filename, argc, argv, "GRID_TYPE", -1, "0", NULL);
+
2998
+
2999 /* Output of profile data... */
+
3000 scan_ctl(filename, argc, argv, "PROF_BASENAME", -1, "-",
+
3001 ctl->prof_basename);
+
3002 scan_ctl(filename, argc, argv, "PROF_OBSFILE", -1, "-", ctl->prof_obsfile);
+
3003 ctl->prof_z0 = scan_ctl(filename, argc, argv, "PROF_Z0", -1, "0", NULL);
+
3004 ctl->prof_z1 = scan_ctl(filename, argc, argv, "PROF_Z1", -1, "60", NULL);
+
3005 ctl->prof_nz =
+
3006 (int) scan_ctl(filename, argc, argv, "PROF_NZ", -1, "60", NULL);
+
3007 ctl->prof_lon0 =
+
3008 scan_ctl(filename, argc, argv, "PROF_LON0", -1, "-180", NULL);
+
3009 ctl->prof_lon1 =
+
3010 scan_ctl(filename, argc, argv, "PROF_LON1", -1, "180", NULL);
+
3011 ctl->prof_nx =
+
3012 (int) scan_ctl(filename, argc, argv, "PROF_NX", -1, "360", NULL);
+
3013 ctl->prof_lat0 =
+
3014 scan_ctl(filename, argc, argv, "PROF_LAT0", -1, "-90", NULL);
+
3015 ctl->prof_lat1 =
+
3016 scan_ctl(filename, argc, argv, "PROF_LAT1", -1, "90", NULL);
+
3017 ctl->prof_ny =
+
3018 (int) scan_ctl(filename, argc, argv, "PROF_NY", -1, "180", NULL);
+
3019
+
3020 /* Output of sample data... */
+
3021 scan_ctl(filename, argc, argv, "SAMPLE_BASENAME", -1, "-",
+
3022 ctl->sample_basename);
+
3023 scan_ctl(filename, argc, argv, "SAMPLE_KERNEL", -1, "-",
+
3024 ctl->sample_kernel);
+
3025 scan_ctl(filename, argc, argv, "SAMPLE_OBSFILE", -1, "-",
+
3026 ctl->sample_obsfile);
+
3027 ctl->sample_dx =
+
3028 scan_ctl(filename, argc, argv, "SAMPLE_DX", -1, "50", NULL);
+
3029 ctl->sample_dz =
+
3030 scan_ctl(filename, argc, argv, "SAMPLE_DZ", -1, "-999", NULL);
+
3031
+
3032 /* Output of station data... */
+
3033 scan_ctl(filename, argc, argv, "STAT_BASENAME", -1, "-",
+
3034 ctl->stat_basename);
+
3035 ctl->stat_lon = scan_ctl(filename, argc, argv, "STAT_LON", -1, "0", NULL);
+
3036 ctl->stat_lat = scan_ctl(filename, argc, argv, "STAT_LAT", -1, "0", NULL);
+
3037 ctl->stat_r = scan_ctl(filename, argc, argv, "STAT_R", -1, "50", NULL);
+
3038 ctl->stat_t0 =
+
3039 scan_ctl(filename, argc, argv, "STAT_T0", -1, "-1e100", NULL);
+
3040 ctl->stat_t1 = scan_ctl(filename, argc, argv, "STAT_T1", -1, "1e100", NULL);
+
3041
+
3042 /* Output of VTK data... */
+
3043 scan_ctl(filename, argc, argv, "VTK_BASENAME", -1, "-", ctl->vtk_basename);
+
3044 ctl->vtk_dt_out =
+
3045 scan_ctl(filename, argc, argv, "VTK_DT_OUT", -1, "86400", NULL);
+
3046 ctl->vtk_stride =
+
3047 (int) scan_ctl(filename, argc, argv, "VTK_STRIDE", -1, "1", NULL);
+
3048 ctl->vtk_scale =
+
3049 scan_ctl(filename, argc, argv, "VTK_SCALE", -1, "1.0", NULL);
+
3050 ctl->vtk_offset =
+
3051 scan_ctl(filename, argc, argv, "VTK_OFFSET", -1, "0.0", NULL);
+
3052 ctl->vtk_sphere =
+
3053 (int) scan_ctl(filename, argc, argv, "VTK_SPHERE", -1, "0", NULL);
+
3054}
+
void level_definitions(ctl_t *ctl)
Get predefined pressure levels.
Definition: libtrac.c:1559
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
#define SET_QNT(qnt, name, longname, unit)
Set atmospheric quantity index.
Definition: libtrac.h:609
+
double grid_z0
Lower altitude of gridded data [km].
Definition: libtrac.h:1547
+
int qnt_o3
Quantity array index for ozone vmr.
Definition: libtrac.h:923
+
double csi_lat1
Upper latitude of gridded CSI data [deg].
Definition: libtrac.h:1520
+
char csi_obsfile[LEN]
Observation data file for CSI analysis.
Definition: libtrac.h:1487
+
int qnt_Coh
Quantity array index for OH concentration.
Definition: libtrac.h:1058
+
double wet_depo_ic_a
Coefficient A for wet deposition in cloud (exponential form).
Definition: libtrac.h:1429
+
int met_nc_scale
Check netCDF scaling factors (0=no, 1=yes).
Definition: libtrac.h:1118
+
int qnt_pel
Quantity array index for pressure at equilibrium level (EL).
Definition: libtrac.h:950
+
int csi_nz
Number of altitudes of gridded CSI data.
Definition: libtrac.h:1496
+
double molmass
Molar mass [g/mol].
Definition: libtrac.h:1294
+
int qnt_p
Quantity array index for pressure.
Definition: libtrac.h:902
+
int qnt_Cccl2f2
Quantity array index for CFC-12 concentration.
Definition: libtrac.h:1082
+
char atm_gpfile[LEN]
Gnuplot file for atmospheric data.
Definition: libtrac.h:1462
+
int mixing_nx
Number of longitudes of mixing grid.
Definition: libtrac.h:1357
+
double chemgrid_z1
Upper altitude of chemistry grid [km].
Definition: libtrac.h:1381
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
int qnt_rhop
Quantity array index for particle density.
Definition: libtrac.h:860
+
double csi_obsmin
Minimum observation index to trigger detection.
Definition: libtrac.h:1490
+
int qnt_pcb
Quantity array index for cloud bottom pressure.
Definition: libtrac.h:938
+
double bound_dzs
Boundary conditions surface layer depth [km].
Definition: libtrac.h:1282
+
double csi_lon1
Upper longitude of gridded CSI data [deg].
Definition: libtrac.h:1511
+
int qnt_u
Quantity array index for zonal wind.
Definition: libtrac.h:911
+
double stat_lon
Longitude of station [deg].
Definition: libtrac.h:1625
+
double mixing_trop
Interparcel exchange parameter for mixing in the troposphere.
Definition: libtrac.h:1342
+
double sort_dt
Time step for sorting of particle data [s].
Definition: libtrac.h:1203
+
double mixing_z1
Upper altitude of mixing grid [km].
Definition: libtrac.h:1354
+
double stat_r
Search radius around station [km].
Definition: libtrac.h:1631
+
double wet_depo_bc_a
Coefficient A for wet deposition below cloud (exponential form).
Definition: libtrac.h:1423
+
int csi_ny
Number of latitudes of gridded CSI data.
Definition: libtrac.h:1514
+
int vtk_sphere
Spherical projection for VTK data (0=no, 1=yes).
Definition: libtrac.h:1655
+
double chemgrid_z0
Lower altitude of chemistry grid [km].
Definition: libtrac.h:1378
+
int qnt_iwc
Quantity array index for cloud ice water content.
Definition: libtrac.h:929
+
double chemgrid_lat0
Lower latitude of chemistry grid [deg].
Definition: libtrac.h:1396
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
int qnt_Co1d
Quantity array index for O(1D) concentration.
Definition: libtrac.h:1070
+
int qnt_pw
Quantity array index for partial water vapor pressure.
Definition: libtrac.h:998
+
char prof_basename[LEN]
Basename for profile output file.
Definition: libtrac.h:1574
+
double grid_z1
Upper altitude of gridded data [km].
Definition: libtrac.h:1550
+
char balloon[LEN]
Balloon position filename.
Definition: libtrac.h:1210
+
int qnt_Cccl4
Quantity array index for CFC-10 concentration.
Definition: libtrac.h:1076
+
int met_dp
Stride for pressure levels.
Definition: libtrac.h:1136
+
double met_dt_out
Time step for sampling of meteo data along trajectories [s].
Definition: libtrac.h:1197
+
int qnt_h2o2
Quantity array index for hydrogen peroxide number concentrations.
Definition: libtrac.h:968
+
int qnt_vh
Quantity array index for horizontal wind.
Definition: libtrac.h:1025
+
char species[LEN]
Species.
Definition: libtrac.h:1291
+
int csi_nx
Number of longitudes of gridded CSI data.
Definition: libtrac.h:1505
+
double csi_lat0
Lower latitude of gridded CSI data [deg].
Definition: libtrac.h:1517
+
double turb_dz_trop
Vertical turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1225
+
int qnt_lwc
Quantity array index for cloud liquid water content.
Definition: libtrac.h:926
+
double turb_mesoz
Vertical scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1234
+
int grid_nx
Number of longitudes of gridded data.
Definition: libtrac.h:1553
+
double bound_mass
Boundary conditions mass per particle [kg].
Definition: libtrac.h:1255
+
double grid_lat0
Lower latitude of gridded data [deg].
Definition: libtrac.h:1565
+
int qnt_ts
Quantity array index for surface temperature.
Definition: libtrac.h:866
+
int qnt_plfc
Quantity array index for pressure at level of free convection (LCF).
Definition: libtrac.h:947
+
double grid_lon0
Lower longitude of gridded data [deg].
Definition: libtrac.h:1556
+
int qnt_o1d
Quantity array index for atomic oxygen number concentrations.
Definition: libtrac.h:974
+
int met_tropo_spline
Tropopause interpolation method (0=linear, 1=spline).
Definition: libtrac.h:1188
+
char sample_kernel[LEN]
Kernel data file for sample output.
Definition: libtrac.h:1610
+
int qnt_tvirt
Quantity array index for virtual temperature.
Definition: libtrac.h:1019
+
double chemgrid_lat1
Upper latitude of chemistry grid [deg].
Definition: libtrac.h:1399
+
int met_geopot_sy
Latitudinal smoothing of geopotential heights.
Definition: libtrac.h:1160
+
char grid_gpfile[LEN]
Gnuplot file for gridded data.
Definition: libtrac.h:1535
+
double turb_dx_strat
Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1222
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
int qnt_lsm
Quantity array index for land-sea mask.
Definition: libtrac.h:878
+
int qnt_theta
Quantity array index for potential temperature.
Definition: libtrac.h:1010
+
int met_tropo_nlev_sep
WMO tropopause separation layer depth (number of levels).
Definition: libtrac.h:1179
+
double bound_lat1
Boundary conditions maximum longitude [deg].
Definition: libtrac.h:1270
+
double stat_t1
Stop time for station output [s].
Definition: libtrac.h:1637
+
char csi_kernel[LEN]
Kernel data file for CSI output.
Definition: libtrac.h:1481
+
double turb_dx_trop
Horizontal turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1219
+
int grid_type
Type of grid data files (0=ASCII, 1=netCDF).
Definition: libtrac.h:1571
+
double csi_lon0
Lower longitude of gridded CSI data [deg].
Definition: libtrac.h:1508
+
int qnt_pbl
Quantity array index for boundary layer pressure.
Definition: libtrac.h:884
+
double oh_chem[4]
Coefficients for OH reaction rate (A, E/R or k0, n, kinf, m).
Definition: libtrac.h:1405
+
int qnt_psice
Quantity array index for saturation pressure over ice.
Definition: libtrac.h:995
+
double chemgrid_lon0
Lower longitude of chemistry grid [deg].
Definition: libtrac.h:1387
+
int bound_pbl
Boundary conditions planetary boundary layer (0=no, 1=yes).
Definition: libtrac.h:1288
+
int qnt_mloss_wet
Quantity array index for total mass loss due to wet deposition.
Definition: libtrac.h:983
+
int met_geopot_sx
Longitudinal smoothing of geopotential heights.
Definition: libtrac.h:1157
+
int met_sy
Smoothing for latitudes.
Definition: libtrac.h:1142
+
int qnt_ps
Quantity array index for surface pressure.
Definition: libtrac.h:863
+
char prof_obsfile[LEN]
Observation data file for profile output.
Definition: libtrac.h:1577
+
int isosurf
Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon).
Definition: libtrac.h:1207
+
double bound_p1
Boundary conditions top pressure [hPa].
Definition: libtrac.h:1276
+
int qnt_zs
Quantity array index for surface geopotential height.
Definition: libtrac.h:869
+
int prof_nz
Number of altitudes of gridded profile data.
Definition: libtrac.h:1580
+
double csi_dt_out
Time step for CSI output [s].
Definition: libtrac.h:1484
+
double csi_modmin
Minimum column density to trigger detection [kg/m^2].
Definition: libtrac.h:1493
+
int met_sx
Smoothing for longitudes.
Definition: libtrac.h:1139
+
double chemgrid_lon1
Upper longitude of chemistry grid [deg].
Definition: libtrac.h:1390
+
double turb_mesox
Horizontal scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1231
+
int conv_mix_bot
Lower level for mixing (0=particle pressure, 1=surface).
Definition: libtrac.h:1249
+
char grid_kernel[LEN]
Kernel data file for grid output.
Definition: libtrac.h:1532
+
int met_zfp_prec
ZFP compression precision (for all variables, except z and T).
Definition: libtrac.h:1121
+
double prof_z0
Lower altitude of gridded profile data [km].
Definition: libtrac.h:1583
+
int qnt_w
Quantity array index for vertical velocity.
Definition: libtrac.h:917
+
double bound_vmr
Boundary conditions volume mixing ratio [ppv].
Definition: libtrac.h:1261
+
double met_tropo_pv
Dyanmical tropopause potential vorticity threshold [PVU].
Definition: libtrac.h:1182
+
int prof_nx
Number of longitudes of gridded profile data.
Definition: libtrac.h:1589
+
int qnt_stat
Quantity array index for station flag.
Definition: libtrac.h:848
+
int met_tropo
Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical).
Definition: libtrac.h:1167
+
int qnt_rp
Quantity array index for particle radius.
Definition: libtrac.h:857
+
double mixing_strat
Interparcel exchange parameter for mixing in the stratosphere.
Definition: libtrac.h:1345
+
int qnt_vz
Quantity array index for vertical velocity.
Definition: libtrac.h:1028
+
int qnt_ho2
Quantity array index for hydroperoxyl radical number concentrations.
Definition: libtrac.h:971
+
double csi_z1
Upper altitude of gridded CSI data [km].
Definition: libtrac.h:1502
+
double stat_t0
Start time for station output [s].
Definition: libtrac.h:1634
+
double mixing_z0
Lower altitude of mixing grid [km].
Definition: libtrac.h:1351
+
int qnt_mloss_decay
Quantity array index for total mass loss due to exponential decay.
Definition: libtrac.h:989
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
char csi_basename[LEN]
Basename of CSI data files.
Definition: libtrac.h:1478
+
double dry_depo_dp
Dry deposition surface layer [hPa].
Definition: libtrac.h:1447
+
int qnt_vs
Quantity array index for surface meridional wind.
Definition: libtrac.h:875
+
int qnt_Cco
Quantity array index for CO concentration.
Definition: libtrac.h:1055
+
double vtk_dt_out
Time step for VTK data output [s].
Definition: libtrac.h:1643
+
double conv_dt
Time interval for convection module [s].
Definition: libtrac.h:1243
+
char sample_obsfile[LEN]
Observation data file for sample output.
Definition: libtrac.h:1613
+
int qnt_hno3
Quantity array index for nitric acid vmr.
Definition: libtrac.h:962
+
char grid_basename[LEN]
Basename of grid data files.
Definition: libtrac.h:1529
+
int qnt_h2ot
Quantity array index for tropopause water vapor vmr.
Definition: libtrac.h:896
+
int qnt_rh
Quantity array index for relative humidity over water.
Definition: libtrac.h:1004
+
double bound_lat0
Boundary conditions minimum longitude [deg].
Definition: libtrac.h:1267
+
int met_dx
Stride for longitudes.
Definition: libtrac.h:1130
+
int mixing_ny
Number of latitudes of mixing grid.
Definition: libtrac.h:1366
+
int met_convention
Convention of the data layout.
Definition: libtrac.h:1112
+
int qnt_zeta_d
Quantity array index for diagnosed zeta vertical coordinate.
Definition: libtrac.h:1016
+
int cpl_zeta_and_press_modules
Coupled use of pressure based modules and diabatic advection.
Definition: libtrac.h:806
+
int tracer_chem
Switch for first order tracer chemistry module (0=off, 1=on).
Definition: libtrac.h:1417
+
double dt_mod
Time step of simulation [s].
Definition: libtrac.h:1103
+
int qnt_tnat
Quantity array index for T_NAT.
Definition: libtrac.h:1043
+
int qnt_tice
Quantity array index for T_ice.
Definition: libtrac.h:1037
+
int qnt_zg
Quantity array index for geopotential height.
Definition: libtrac.h:899
+
double vtk_offset
Vertical offset for VTK data [km].
Definition: libtrac.h:1652
+
int qnt_v
Quantity array index for meridional wind.
Definition: libtrac.h:914
+
int qnt_mloss_dry
Quantity array index for total mass loss due to dry deposition.
Definition: libtrac.h:986
+
double bound_vmr_trend
Boundary conditions volume mixing ratio trend [ppv/s].
Definition: libtrac.h:1264
+
int met_cloud
Cloud data (0=none, 1=LWC+IWC, 2=RWC+SWC, 3=all).
Definition: libtrac.h:1191
+
int qnt_oh
Quantity array index for hydroxyl number concentrations.
Definition: libtrac.h:965
+
int qnt_Ch
Quantity array index for H concentration.
Definition: libtrac.h:1061
+
int oh_chem_reaction
Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular).
Definition: libtrac.h:1402
+
int qnt_h2o
Quantity array index for water vapor vmr.
Definition: libtrac.h:920
+
int prof_ny
Number of latitudes of gridded profile data.
Definition: libtrac.h:1598
+
int qnt_rhice
Quantity array index for relative humidity over ice.
Definition: libtrac.h:1007
+
int qnt_rho
Quantity array index for density of air.
Definition: libtrac.h:908
+
double sample_dz
Layer depth for sample output [km].
Definition: libtrac.h:1619
+
double wet_depo_ic_h[3]
Coefficients for wet deposition in cloud (Henry's law: Hb, Cb, pH).
Definition: libtrac.h:1435
+
double tdec_strat
Life time of particles in the stratosphere [s].
Definition: libtrac.h:1300
+
int qnt_us
Quantity array index for surface zonal wind.
Definition: libtrac.h:872
+
double grid_lon1
Upper longitude of gridded data [deg].
Definition: libtrac.h:1559
+
int conv_mix_top
Upper level for mixing (0=particle pressure, 1=EL).
Definition: libtrac.h:1252
+
int qnt_Cn2o
Quantity array index for N2O concentration.
Definition: libtrac.h:1085
+
int qnt_Cccl3f
Quantity array index for CFC-11 concentration.
Definition: libtrac.h:1079
+
char atm_basename[LEN]
Basename of atmospheric data files.
Definition: libtrac.h:1459
+
double met_cloud_min
Minimum cloud ice water content [kg/kg].
Definition: libtrac.h:1194
+
double mixing_lat0
Lower latitude of mixing grid [deg].
Definition: libtrac.h:1369
+
int qnt_pt
Quantity array index for tropopause pressure.
Definition: libtrac.h:887
+
int qnt_cl
Quantity array index for total column cloud water.
Definition: libtrac.h:941
+
int advect
Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta).
Definition: libtrac.h:1213
+
double prof_z1
Upper altitude of gridded profile data [km].
Definition: libtrac.h:1586
+
int reflect
Reflection of particles at top and bottom boundary (0=no, 1=yes).
Definition: libtrac.h:1216
+
int qnt_t
Quantity array index for temperature.
Definition: libtrac.h:905
+
int atm_filter
Time filter for atmospheric data output (0=none, 1=missval, 2=remove).
Definition: libtrac.h:1468
+
int kpp_chem
Switch for KPP chemistry module (0=off, 1=on).
Definition: libtrac.h:1414
+
double met_tropo_lapse
WMO tropopause lapse rate [K/km].
Definition: libtrac.h:1170
+
char ens_basename[LEN]
Basename of ensemble data file.
Definition: libtrac.h:1523
+
double wet_depo_pre[2]
Coefficients for precipitation calculation.
Definition: libtrac.h:1420
+
double csi_z0
Lower altitude of gridded CSI data [km].
Definition: libtrac.h:1499
+
int qnt_lapse
Quantity array index for lapse rate.
Definition: libtrac.h:1022
+
double stat_lat
Latitude of station [deg].
Definition: libtrac.h:1628
+
int qnt_Cho2
Quantity array index for HO2 concentration.
Definition: libtrac.h:1064
+
double wet_depo_bc_h[2]
Coefficients for wet deposition below cloud (Henry's law: Hb, Cb).
Definition: libtrac.h:1438
+
int grid_ny
Number of latitudes of gridded data.
Definition: libtrac.h:1562
+
int qnt_Csf6
Quantity array index for SF6 concentration.
Definition: libtrac.h:1088
+
int qnt_Ch2o
Quantity array index for H2O concentration.
Definition: libtrac.h:1049
+
double met_detrend
FWHM of horizontal Gaussian used for detrending [km].
Definition: libtrac.h:1148
+
double bound_dps
Boundary conditions surface layer depth [hPa].
Definition: libtrac.h:1279
+
int chemgrid_nz
Number of altitudes of chemistry grid.
Definition: libtrac.h:1375
+
int qnt_cape
Quantity array index for convective available potential energy (CAPE).
Definition: libtrac.h:953
+
double bound_mass_trend
Boundary conditions mass per particle trend [kg/s].
Definition: libtrac.h:1258
+
int mixing_nz
Number of altitudes of mixing grid.
Definition: libtrac.h:1348
+
int qnt_o3c
Quantity array index for total column ozone.
Definition: libtrac.h:959
+
double bound_p0
Boundary conditions bottom pressure [hPa].
Definition: libtrac.h:1273
+
double mixing_lon0
Lower longitude of mixing grid [deg].
Definition: libtrac.h:1360
+
int qnt_Co3
Quantity array index for O3 concentration.
Definition: libtrac.h:1052
+
int qnt_tsts
Quantity array index for T_STS.
Definition: libtrac.h:1040
+
int grid_nz
Number of altitudes of gridded data.
Definition: libtrac.h:1544
+
double ens_dt_out
Time step for ensemble output [s].
Definition: libtrac.h:1526
+
char sample_basename[LEN]
Basename of sample data file.
Definition: libtrac.h:1607
+
int atm_stride
Particle index stride for atmospheric data files.
Definition: libtrac.h:1471
+
int met_relhum
Try to read relative humidity (0=no, 1=yes).
Definition: libtrac.h:1163
+
double mixing_lat1
Upper latitude of mixing grid [deg].
Definition: libtrac.h:1372
+
double atm_dt_out
Time step for atmospheric data output [s].
Definition: libtrac.h:1465
+
double prof_lat1
Upper latitude of gridded profile data [deg].
Definition: libtrac.h:1604
+
double psc_h2o
H2O volume mixing ratio for PSC analysis.
Definition: libtrac.h:1453
+
int met_sp
Smoothing for pressure levels.
Definition: libtrac.h:1145
+
double prof_lon0
Lower longitude of gridded profile data [deg].
Definition: libtrac.h:1592
+
double met_tropo_lapse_sep
WMO tropopause separation layer lapse rate [K/km].
Definition: libtrac.h:1176
+
int chemgrid_nx
Number of longitudes of chemistry grid.
Definition: libtrac.h:1384
+
int qnt_pct
Quantity array index for cloud top pressure.
Definition: libtrac.h:935
+
int qnt_psat
Quantity array index for saturation pressure over water.
Definition: libtrac.h:992
+
double prof_lat0
Lower latitude of gridded profile data [deg].
Definition: libtrac.h:1601
+
int qnt_cin
Quantity array index for convective inhibition (CIN).
Definition: libtrac.h:956
+
double psc_hno3
HNO3 volume mixing ratio for PSC analysis.
Definition: libtrac.h:1456
+
double prof_lon1
Upper longitude of gridded profile data [deg].
Definition: libtrac.h:1595
+
int h2o2_chem_reaction
Reaction type for H2O2 chemistry (0=none, 1=SO2).
Definition: libtrac.h:1411
+
int qnt_Co3p
Quantity array index for O(3P) concentration.
Definition: libtrac.h:1073
+
double wet_depo_bc_ret_ratio
Coefficients for wet deposition below cloud: retention ratio.
Definition: libtrac.h:1444
+
int chemgrid_ny
Number of latitudes of chemistry grid.
Definition: libtrac.h:1393
+
int grid_sparse
Sparse output in grid data files (0=no, 1=yes).
Definition: libtrac.h:1541
+
char vtk_basename[LEN]
Basename of VTK data files.
Definition: libtrac.h:1640
+
double dry_depo_vdep
Dry deposition velocity [m/s].
Definition: libtrac.h:1450
+
int qnt_tt
Quantity array index for tropopause temperature.
Definition: libtrac.h:890
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
double met_zfp_tol_t
ZFP compression tolerance (for temperature).
Definition: libtrac.h:1124
+
double mixing_dt
Time interval for mixing [s].
Definition: libtrac.h:1339
+
int qnt_mloss_h2o2
Quantity array index for total mass loss due to H2O2 chemistry.
Definition: libtrac.h:980
+
double met_zfp_tol_z
ZFP compression tolerance (for geopotential height).
Definition: libtrac.h:1127
+
double vtk_scale
Vertical scaling factor for VTK data.
Definition: libtrac.h:1649
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
int qnt_pv
Quantity array index for potential vorticity.
Definition: libtrac.h:1031
+
int qnt_mloss_oh
Quantity array index for total mass loss due to OH chemistry.
Definition: libtrac.h:977
+
int qnt_Ch2o2
Quantity array index for H2O2 concentration.
Definition: libtrac.h:1067
+
int qnt_sst
Quantity array index for sea surface temperature.
Definition: libtrac.h:881
+
double mixing_lon1
Upper longitude of mixing grid [deg].
Definition: libtrac.h:1363
+
double wet_depo_ic_ret_ratio
Coefficients for wet deposition in cloud: retention ratio.
Definition: libtrac.h:1441
+
int qnt_sh
Quantity array index for specific humidity.
Definition: libtrac.h:1001
+
double wet_depo_ic_b
Coefficient B for wet deposition in cloud (exponential form).
Definition: libtrac.h:1432
+
double wet_depo_bc_b
Coefficient B for wet deposition below cloud (exponential form).
Definition: libtrac.h:1426
+
int met_dy
Stride for latitudes.
Definition: libtrac.h:1133
+
int qnt_Cx
Quantity array index for trace species x concentration.
Definition: libtrac.h:1046
+
double turb_dz_strat
Vertical turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1228
+
double bound_zetas
Boundary conditions surface layer zeta [K].
Definition: libtrac.h:1285
+
int met_tropo_nlev
WMO tropopause layer depth (number of levels).
Definition: libtrac.h:1173
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
double met_tropo_theta
Dynamical tropopause potential temperature threshold [K].
Definition: libtrac.h:1185
+
char qnt_longname[NQ][LEN]
Quantity long names.
Definition: libtrac.h:833
+
double tdec_trop
Life time of particles in the troposphere [s].
Definition: libtrac.h:1297
+
double sample_dx
Horizontal radius for sample output [km].
Definition: libtrac.h:1616
+
int vtk_stride
Particle index stride for VTK data.
Definition: libtrac.h:1646
+
char stat_basename[LEN]
Basename of station data file.
Definition: libtrac.h:1622
+
double grid_lat1
Upper latitude of gridded data [deg].
Definition: libtrac.h:1568
+
int qnt_zt
Quantity array index for tropopause geopotential height.
Definition: libtrac.h:893
+
int conv_mix
Type of vertical mixing (0=pressure, 1=density).
Definition: libtrac.h:1246
+
int qnt_cc
Quantity array index for cloud cover.
Definition: libtrac.h:932
+
int qnt_plcl
Quantity array index for pressure at lifted condensation level (LCL).
Definition: libtrac.h:944
+
double grid_dt_out
Time step for gridded data output [s].
Definition: libtrac.h:1538
+
int qnt_tdew
Quantity array index for dew point temperature.
Definition: libtrac.h:1034
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ read_kernel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_kernel (const char * filename,
double kz[EP],
double kw[EP],
int * nk 
)
+
+ +

Read kernel data file.

+ +

Definition at line 3058 of file libtrac.c.

+
3062 {
+
3063
+
3064 /* Write info... */
+
3065 LOG(1, "Read kernel function: %s", filename);
+
3066
+
3067 /* Open file... */
+
3068 FILE *in;
+
3069 if (!(in = fopen(filename, "r")))
+
3070 ERRMSG("Cannot open file!");
+
3071
+
3072 /* Read data... */
+
3073 char line[LEN];
+
3074 int n = 0;
+
3075 while (fgets(line, LEN, in))
+
3076 if (sscanf(line, "%lg %lg", &kz[n], &kw[n]) == 2) {
+
3077 if (n > 0 && kz[n] < kz[n - 1])
+
3078 ERRMSG("Height levels must be ascending!");
+
3079 if ((++n) >= EP)
+
3080 ERRMSG("Too many height levels!");
+
3081 }
+
3082
+
3083 /* Close file... */
+
3084 fclose(in);
+
3085
+
3086 /* Check number of data points... */
+
3087 *nk = n;
+
3088 if (n < 2)
+
3089 ERRMSG("Not enough height levels!");
+
3090
+
3091 /* Normalize kernel function... */
+
3092 double kmax = gsl_stats_max(kw, 1, (size_t) n);
+
3093 for (int iz = 0; iz < n; iz++)
+
3094 kw[iz] /= kmax;
+
3095}
+
+
+
+ +

◆ read_met()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int read_met (char * filename,
ctl_tctl,
clim_tclim,
met_tmet 
)
+
+ +

Read meteo data file.

+ +

Definition at line 3099 of file libtrac.c.

+
3103 {
+
3104
+
3105 /* Write info... */
+
3106 LOG(1, "Read meteo data: %s", filename);
+
3107
+
3108 /* Read netCDF data... */
+
3109 if (ctl->met_type == 0) {
+
3110
+
3111 int ncid;
+
3112
+
3113 /* Open netCDF file... */
+
3114 if (nc__open(filename, ctl->read_mode, &ctl->chunkszhint, &ncid) !=
+
3115 NC_NOERR) {
+
3116 WARN("Cannot open file!");
+
3117 return 0;
+
3118 }
+
3119
+
3120 /* Read coordinates of meteo data... */
+
3121 read_met_grid(filename, ncid, ctl, met);
+
3122
+
3123 /* Read meteo data on vertical levels... */
+
3124 read_met_levels(ncid, ctl, met);
+
3125
+
3126 /* Extrapolate data for lower boundary... */
+ +
3128
+
3129 /* Read surface data... */
+
3130 read_met_surface(ncid, met, ctl);
+
3131
+
3132 /* Create periodic boundary conditions... */
+
3133 read_met_periodic(met);
+
3134
+
3135 /* Downsampling... */
+
3136 read_met_sample(ctl, met);
+
3137
+
3138 /* Calculate geopotential heights... */
+
3139 read_met_geopot(ctl, met);
+
3140
+
3141 /* Calculate potential vorticity... */
+
3142 read_met_pv(met);
+
3143
+
3144 /* Calculate boundary layer data... */
+
3145 read_met_pbl(met);
+
3146
+
3147 /* Calculate tropopause data... */
+
3148 read_met_tropo(ctl, clim, met);
+
3149
+
3150 /* Calculate cloud properties... */
+
3151 read_met_cloud(ctl, met);
+
3152
+
3153 /* Calculate convective available potential energy... */
+
3154 read_met_cape(clim, met);
+
3155
+
3156 /* Calculate total column ozone... */
+
3157 read_met_ozone(met);
+
3158
+
3159 /* Detrending... */
+
3160 read_met_detrend(ctl, met);
+
3161
+
3162 /* Check meteo data and smooth zeta profiles ... */
+
3163 if (ctl->vert_coord_ap == 1)
+ +
3165
+
3166 /* Close file... */
+
3167 NC(nc_close(ncid));
+
3168 }
+
3169
+
3170 /* Read binary data... */
+
3171 else if (ctl->met_type >= 1 && ctl->met_type <= 4) {
+
3172
+
3173 FILE *in;
+
3174
+
3175 double r;
+
3176
+
3177 int year, mon, day, hour, min, sec;
+
3178
+
3179 /* Set timer... */
+
3180 SELECT_TIMER("READ_MET_BIN", "INPUT", NVTX_READ);
+
3181
+
3182 /* Open file... */
+
3183 if (!(in = fopen(filename, "r"))) {
+
3184 WARN("Cannot open file!");
+
3185 return 0;
+
3186 }
+
3187
+
3188 /* Check type of binary data... */
+
3189 int met_type;
+
3190 FREAD(&met_type, int,
+
3191 1,
+
3192 in);
+
3193 if (met_type != ctl->met_type)
+
3194 ERRMSG("Wrong MET_TYPE of binary data!");
+
3195
+
3196 /* Check version of binary data... */
+
3197 int version;
+
3198 FREAD(&version, int,
+
3199 1,
+
3200 in);
+
3201 if (version != 100 && version != 101)
+
3202 ERRMSG("Wrong version of binary data!");
+
3203
+
3204 /* Read time... */
+
3205 FREAD(&met->time, double,
+
3206 1,
+
3207 in);
+
3208 jsec2time(met->time, &year, &mon, &day, &hour, &min, &sec, &r);
+
3209 LOG(2, "Time: %.2f (%d-%02d-%02d, %02d:%02d UTC)",
+
3210 met->time, year, mon, day, hour, min);
+
3211 if (year < 1900 || year > 2100 || mon < 1 || mon > 12
+
3212 || day < 1 || day > 31 || hour < 0 || hour > 23)
+
3213 ERRMSG("Error while reading time!");
+
3214
+
3215 /* Read dimensions... */
+
3216 FREAD(&met->nx, int,
+
3217 1,
+
3218 in);
+
3219 LOG(2, "Number of longitudes: %d", met->nx);
+
3220 if (met->nx < 2 || met->nx > EX)
+
3221 ERRMSG("Number of longitudes out of range!");
+
3222
+
3223 FREAD(&met->ny, int,
+
3224 1,
+
3225 in);
+
3226 LOG(2, "Number of latitudes: %d", met->ny);
+
3227 if (met->ny < 2 || met->ny > EY)
+
3228 ERRMSG("Number of latitudes out of range!");
+
3229
+
3230 FREAD(&met->np, int,
+
3231 1,
+
3232 in);
+
3233 LOG(2, "Number of levels: %d", met->np);
+
3234 if (met->np < 2 || met->np > EP)
+
3235 ERRMSG("Number of levels out of range!");
+
3236
+
3237 /* Read grid... */
+
3238 FREAD(met->lon, double,
+
3239 (size_t) met->nx,
+
3240 in);
+
3241 LOG(2, "Longitudes: %g, %g ... %g deg",
+
3242 met->lon[0], met->lon[1], met->lon[met->nx - 1]);
+
3243
+
3244 FREAD(met->lat, double,
+
3245 (size_t) met->ny,
+
3246 in);
+
3247 LOG(2, "Latitudes: %g, %g ... %g deg",
+
3248 met->lat[0], met->lat[1], met->lat[met->ny - 1]);
+
3249
+
3250 FREAD(met->p, double,
+
3251 (size_t) met->np,
+
3252 in);
+
3253 LOG(2, "Altitude levels: %g, %g ... %g km",
+
3254 Z(met->p[0]), Z(met->p[1]), Z(met->p[met->np - 1]));
+
3255 LOG(2, "Pressure levels: %g, %g ... %g hPa",
+
3256 met->p[0], met->p[1], met->p[met->np - 1]);
+
3257
+
3258 /* Read surface data... */
+
3259 read_met_bin_2d(in, met, met->ps, "PS");
+
3260 read_met_bin_2d(in, met, met->ts, "TS");
+
3261 read_met_bin_2d(in, met, met->zs, "ZS");
+
3262 read_met_bin_2d(in, met, met->us, "US");
+
3263 read_met_bin_2d(in, met, met->vs, "VS");
+
3264 if (version == 101) {
+
3265 read_met_bin_2d(in, met, met->lsm, "LSM");
+
3266 read_met_bin_2d(in, met, met->sst, "SST");
+
3267 }
+
3268 read_met_bin_2d(in, met, met->pbl, "PBL");
+
3269 read_met_bin_2d(in, met, met->pt, "PT");
+
3270 read_met_bin_2d(in, met, met->tt, "TT");
+
3271 read_met_bin_2d(in, met, met->zt, "ZT");
+
3272 read_met_bin_2d(in, met, met->h2ot, "H2OT");
+
3273 read_met_bin_2d(in, met, met->pct, "PCT");
+
3274 read_met_bin_2d(in, met, met->pcb, "PCB");
+
3275 read_met_bin_2d(in, met, met->cl, "CL");
+
3276 read_met_bin_2d(in, met, met->plcl, "PLCL");
+
3277 read_met_bin_2d(in, met, met->plfc, "PLFC");
+
3278 read_met_bin_2d(in, met, met->pel, "PEL");
+
3279 read_met_bin_2d(in, met, met->cape, "CAPE");
+
3280 read_met_bin_2d(in, met, met->cin, "CIN");
+
3281
+
3282 /* Read level data... */
+
3283 read_met_bin_3d(in, ctl, met, met->z, "Z");
+
3284 read_met_bin_3d(in, ctl, met, met->t, "T");
+
3285 read_met_bin_3d(in, ctl, met, met->u, "U");
+
3286 read_met_bin_3d(in, ctl, met, met->v, "V");
+
3287 read_met_bin_3d(in, ctl, met, met->w, "W");
+
3288 read_met_bin_3d(in, ctl, met, met->pv, "PV");
+
3289 read_met_bin_3d(in, ctl, met, met->h2o, "H2O");
+
3290 read_met_bin_3d(in, ctl, met, met->o3, "O3");
+
3291 read_met_bin_3d(in, ctl, met, met->lwc, "LWC");
+
3292 read_met_bin_3d(in, ctl, met, met->iwc, "IWC");
+
3293 if (version == 101)
+
3294 read_met_bin_3d(in, ctl, met, met->cc, "CC");
+
3295
+
3296 /* Read final flag... */
+
3297 int final;
+
3298 FREAD(&final, int,
+
3299 1,
+
3300 in);
+
3301 if (final != 999)
+
3302 ERRMSG("Error while reading binary data!");
+
3303
+
3304 /* Close file... */
+
3305 fclose(in);
+
3306 }
+
3307
+
3308 /* Not implemented... */
+
3309 else
+
3310 ERRMSG("MET_TYPE not implemented!");
+
3311
+
3312 /* Copy wind data to cache... */
+
3313#ifdef UVW
+
3314#pragma omp parallel for default(shared) collapse(2)
+
3315 for (int ix = 0; ix < met->nx; ix++)
+
3316 for (int iy = 0; iy < met->ny; iy++)
+
3317 for (int ip = 0; ip < met->np; ip++) {
+
3318 met->uvw[ix][iy][ip][0] = met->u[ix][iy][ip];
+
3319 met->uvw[ix][iy][ip][1] = met->v[ix][iy][ip];
+
3320 met->uvw[ix][iy][ip][2] = met->w[ix][iy][ip];
+
3321 }
+
3322#endif
+
3323
+
3324 /* Return success... */
+
3325 return 1;
+
3326}
+
void read_met_bin_2d(FILE *in, met_t *met, float var[EX][EY], char *varname)
Read 2-D meteo variable.
Definition: libtrac.c:3330
+
void read_met_extrapolate(met_t *met)
Extrapolate meteo data at lower boundary.
Definition: libtrac.c:3692
+
void read_met_levels(int ncid, ctl_t *ctl, met_t *met)
Read meteo data on vertical levels.
Definition: libtrac.c:3969
+
void read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname)
Read 3-D meteo variable.
Definition: libtrac.c:3359
+
void read_met_periodic(met_t *met)
Create meteo data with periodic boundary conditions.
Definition: libtrac.c:4576
+
void read_met_pbl(met_t *met)
Calculate pressure of the boundary layer.
Definition: libtrac.c:4505
+
void read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met)
Calculate tropopause data.
Definition: libtrac.c:5009
+
void read_met_sample(ctl_t *ctl, met_t *met)
Downsampling of meteo data.
Definition: libtrac.c:4763
+
void read_met_monotonize(met_t *met)
Smooth vertical zeta and pressure profiles.
Definition: libtrac.c:4174
+
void read_met_detrend(ctl_t *ctl, met_t *met)
Apply detrending method to temperature and winds.
Definition: libtrac.c:3588
+
void read_met_cloud(ctl_t *ctl, met_t *met)
Calculate cloud properties.
Definition: libtrac.c:3538
+
void read_met_ozone(met_t *met)
Calculate total column ozone.
Definition: libtrac.c:4735
+
void read_met_surface(int ncid, met_t *met, ctl_t *ctl)
Read surface data.
Definition: libtrac.c:4903
+
void read_met_pv(met_t *met)
Calculate potential vorticity.
Definition: libtrac.c:4629
+
void read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met)
Read coordinates of meteo data.
Definition: libtrac.c:3850
+
void read_met_cape(clim_t *clim, met_t *met)
Calculate convective available potential energy.
Definition: libtrac.c:3428
+
void read_met_geopot(ctl_t *ctl, met_t *met)
Calculate geopotential heights.
Definition: libtrac.c:3730
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
int read_mode
Read mode for nc__open.
Definition: libtrac.h:824
+
size_t chunkszhint
Chunk size hint for nc__open.
Definition: libtrac.h:821
+
float zt[EX][EY]
Tropopause geopotential height [km].
Definition: libtrac.h:1888
+
float sst[EX][EY]
Sea surface temperature [K].
Definition: libtrac.h:1876
+
float h2o[EX][EY][EP]
Water vapor volume mixing ratio [1].
Definition: libtrac.h:1945
+
float cape[EX][EY]
Convective available potential energy [J/kg].
Definition: libtrac.h:1912
+
float w[EX][EY][EP]
Vertical velocity [hPa/s].
Definition: libtrac.h:1939
+
float pct[EX][EY]
Cloud top pressure [hPa].
Definition: libtrac.h:1894
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
float lwc[EX][EY][EP]
Cloud liquid water content [kg/kg].
Definition: libtrac.h:1951
+
float us[EX][EY]
Surface zonal wind [m/s].
Definition: libtrac.h:1867
+
float zs[EX][EY]
Surface geopotential height [km].
Definition: libtrac.h:1864
+
float o3[EX][EY][EP]
Ozone volume mixing ratio [1].
Definition: libtrac.h:1948
+
float cc[EX][EY][EP]
Cloud cover [1].
Definition: libtrac.h:1957
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
float ts[EX][EY]
Surface temperature [K].
Definition: libtrac.h:1861
+
float u[EX][EY][EP]
Zonal wind [m/s].
Definition: libtrac.h:1927
+
float pcb[EX][EY]
Cloud bottom pressure [hPa].
Definition: libtrac.h:1897
+
float pel[EX][EY]
Pressure at equilibrium level [hPa].
Definition: libtrac.h:1909
+
float cin[EX][EY]
Convective inhibition [J/kg].
Definition: libtrac.h:1915
+
float plcl[EX][EY]
Pressure at lifted condensation level (LCL) [hPa].
Definition: libtrac.h:1903
+
float pt[EX][EY]
Tropopause pressure [hPa].
Definition: libtrac.h:1882
+
float tt[EX][EY]
Tropopause temperature [K].
Definition: libtrac.h:1885
+
float pbl[EX][EY]
Boundary layer pressure [hPa].
Definition: libtrac.h:1879
+
float vs[EX][EY]
Surface meridional wind [m/s].
Definition: libtrac.h:1870
+
float z[EX][EY][EP]
Geopotential height [km].
Definition: libtrac.h:1921
+
float v[EX][EY][EP]
Meridional wind [m/s].
Definition: libtrac.h:1933
+
float lsm[EX][EY]
Land-sea mask [1].
Definition: libtrac.h:1873
+
float iwc[EX][EY][EP]
Cloud ice water content [kg/kg].
Definition: libtrac.h:1954
+
float h2ot[EX][EY]
Tropopause water vapor vmr [ppv].
Definition: libtrac.h:1891
+
float pv[EX][EY][EP]
Potential vorticity [PVU].
Definition: libtrac.h:1942
+
float cl[EX][EY]
Total column cloud water [kg/m^2].
Definition: libtrac.h:1900
+
float plfc[EX][EY]
Pressure at level of free convection (LFC) [hPa].
Definition: libtrac.h:1906
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +

◆ read_met_bin_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_bin_2d (FILE * in,
met_tmet,
float var[EX][EY],
char * varname 
)
+
+ +

Read 2-D meteo variable.

+ +

Definition at line 3330 of file libtrac.c.

+
3334 {
+
3335
+
3336 float *help;
+
3337
+
3338 /* Allocate... */
+
3339 ALLOC(help, float,
+
3340 EX * EY);
+
3341
+
3342 /* Read uncompressed... */
+
3343 LOG(2, "Read 2-D variable: %s (uncompressed)", varname);
+
3344 FREAD(help, float,
+
3345 (size_t) (met->nx * met->ny),
+
3346 in);
+
3347
+
3348 /* Copy data... */
+
3349 for (int ix = 0; ix < met->nx; ix++)
+
3350 for (int iy = 0; iy < met->ny; iy++)
+
3351 var[ix][iy] = help[ARRAY_2D(ix, iy, met->ny)];
+
3352
+
3353 /* Free... */
+
3354 free(help);
+
3355}
+
#define ARRAY_2D(ix, iy, ny)
Get 2-D array index.
Definition: libtrac.h:258
+
+
+
+ +

◆ read_met_bin_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_bin_3d (FILE * in,
ctl_tctl,
met_tmet,
float var[EX][EY][EP],
char * varname 
)
+
+ +

Read 3-D meteo variable.

+ +

Definition at line 3359 of file libtrac.c.

+
3364 {
+
3365
+
3366 float *help;
+
3367
+
3368 /* Allocate... */
+
3369 ALLOC(help, float,
+
3370 EX * EY * EP);
+
3371
+
3372 /* Read uncompressed data... */
+
3373 if (ctl->met_type == 1) {
+
3374 LOG(2, "Read 3-D variable: %s (uncompressed)", varname);
+
3375 FREAD(help, float,
+
3376 (size_t) (met->nx * met->ny * met->np),
+
3377 in);
+
3378 }
+
3379
+
3380 /* Read packed data... */
+
3381 else if (ctl->met_type == 2)
+
3382 compress_pack(varname, help, (size_t) (met->ny * met->nx),
+
3383 (size_t) met->np, 1, in);
+
3384
+
3385 /* Read zfp data... */
+
3386 else if (ctl->met_type == 3) {
+
3387#ifdef ZFP
+
3388 int precision;
+
3389 FREAD(&precision, int,
+
3390 1,
+
3391 in);
+
3392
+
3393 double tolerance;
+
3394 FREAD(&tolerance, double,
+
3395 1,
+
3396 in);
+
3397
+
3398 compress_zfp(varname, help, met->np, met->ny, met->nx, precision,
+
3399 tolerance, 1, in);
+
3400#else
+
3401 ERRMSG("MPTRAC was compiled without zfp compression!");
+
3402#endif
+
3403 }
+
3404
+
3405 /* Read zstd data... */
+
3406 else if (ctl->met_type == 4) {
+
3407#ifdef ZSTD
+
3408 compress_zstd(varname, help, (size_t) (met->np * met->ny * met->nx), 1,
+
3409 in);
+
3410#else
+
3411 ERRMSG("MPTRAC was compiled without zstd compression!");
+
3412#endif
+
3413 }
+
3414
+
3415 /* Copy data... */
+
3416#pragma omp parallel for default(shared) collapse(2)
+
3417 for (int ix = 0; ix < met->nx; ix++)
+
3418 for (int iy = 0; iy < met->ny; iy++)
+
3419 for (int ip = 0; ip < met->np; ip++)
+
3420 var[ix][iy][ip] = help[ARRAY_3D(ix, iy, met->ny, ip, met->np)];
+
3421
+
3422 /* Free... */
+
3423 free(help);
+
3424}
+
void compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout)
Pack or unpack array.
Definition: libtrac.c:413
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_cape()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_cape (clim_tclim,
met_tmet 
)
+
+ +

Calculate convective available potential energy.

+ +

Definition at line 3428 of file libtrac.c.

+
3430 {
+
3431
+
3432 /* Set timer... */
+
3433 SELECT_TIMER("READ_MET_CAPE", "METPROC", NVTX_READ);
+
3434 LOG(2, "Calculate CAPE...");
+
3435
+
3436 /* Vertical spacing (about 100 m)... */
+
3437 const double pfac = 1.01439, dz0 = RI / MA / G0 * log(pfac);
+
3438
+
3439 /* Loop over columns... */
+
3440#pragma omp parallel for default(shared) collapse(2)
+
3441 for (int ix = 0; ix < met->nx; ix++)
+
3442 for (int iy = 0; iy < met->ny; iy++) {
+
3443
+
3444 /* Get potential temperature and water vapor vmr at lowest 50 hPa... */
+
3445 int n = 0;
+
3446 double h2o = 0, t, theta = 0;
+
3447 double pbot = GSL_MIN(met->ps[ix][iy], met->p[0]);
+
3448 double ptop = pbot - 50.;
+
3449 for (int ip = 0; ip < met->np; ip++) {
+
3450 if (met->p[ip] <= pbot) {
+
3451 theta += THETA(met->p[ip], met->t[ix][iy][ip]);
+
3452 h2o += met->h2o[ix][iy][ip];
+
3453 n++;
+
3454 }
+
3455 if (met->p[ip] < ptop && n > 0)
+
3456 break;
+
3457 }
+
3458 theta /= n;
+
3459 h2o /= n;
+
3460
+
3461 /* Cannot compute anything if water vapor is missing... */
+
3462 met->plcl[ix][iy] = GSL_NAN;
+
3463 met->plfc[ix][iy] = GSL_NAN;
+
3464 met->pel[ix][iy] = GSL_NAN;
+
3465 met->cape[ix][iy] = GSL_NAN;
+
3466 met->cin[ix][iy] = GSL_NAN;
+
3467 if (h2o <= 0)
+
3468 continue;
+
3469
+
3470 /* Find lifted condensation level (LCL)... */
+
3471 ptop = P(20.);
+
3472 pbot = met->ps[ix][iy];
+
3473 do {
+
3474 met->plcl[ix][iy] = (float) (0.5 * (pbot + ptop));
+
3475 t = theta / pow(1000. / met->plcl[ix][iy], 0.286);
+
3476 if (RH(met->plcl[ix][iy], t, h2o) > 100.)
+
3477 ptop = met->plcl[ix][iy];
+
3478 else
+
3479 pbot = met->plcl[ix][iy];
+
3480 } while (pbot - ptop > 0.1);
+
3481
+
3482 /* Calculate CIN up to LCL... */
+ +
3484 double dcape, dz, h2o_env, t_env;
+
3485 double p = met->ps[ix][iy];
+
3486 met->cape[ix][iy] = met->cin[ix][iy] = 0;
+
3487 do {
+
3488 dz = dz0 * TVIRT(t, h2o);
+
3489 p /= pfac;
+
3490 t = theta / pow(1000. / p, 0.286);
+
3491 intpol_met_space_3d(met, met->t, p, met->lon[ix], met->lat[iy],
+
3492 &t_env, ci, cw, 1);
+
3493 intpol_met_space_3d(met, met->h2o, p, met->lon[ix], met->lat[iy],
+
3494 &h2o_env, ci, cw, 0);
+
3495 dcape = 1e3 * G0 * (TVIRT(t, h2o) - TVIRT(t_env, h2o_env)) /
+
3496 TVIRT(t_env, h2o_env) * dz;
+
3497 if (dcape < 0)
+
3498 met->cin[ix][iy] += fabsf((float) dcape);
+
3499 } while (p > met->plcl[ix][iy]);
+
3500
+
3501 /* Calculate level of free convection (LFC), equilibrium level (EL),
+
3502 and convective available potential energy (CAPE)... */
+
3503 dcape = 0;
+
3504 p = met->plcl[ix][iy];
+
3505 t = theta / pow(1000. / p, 0.286);
+
3506 ptop = 0.75 * clim_tropo(clim, met->time, met->lat[iy]);
+
3507 do {
+
3508 dz = dz0 * TVIRT(t, h2o);
+
3509 p /= pfac;
+
3510 t -= lapse_rate(t, h2o) * dz;
+
3511 double psat = PSAT(t);
+
3512 h2o = psat / (p - (1. - EPS) * psat);
+
3513 intpol_met_space_3d(met, met->t, p, met->lon[ix], met->lat[iy],
+
3514 &t_env, ci, cw, 1);
+
3515 intpol_met_space_3d(met, met->h2o, p, met->lon[ix], met->lat[iy],
+
3516 &h2o_env, ci, cw, 0);
+
3517 double dcape_old = dcape;
+
3518 dcape = 1e3 * G0 * (TVIRT(t, h2o) - TVIRT(t_env, h2o_env)) /
+
3519 TVIRT(t_env, h2o_env) * dz;
+
3520 if (dcape > 0) {
+
3521 met->cape[ix][iy] += (float) dcape;
+
3522 if (!isfinite(met->plfc[ix][iy]))
+
3523 met->plfc[ix][iy] = (float) p;
+
3524 } else if (dcape_old > 0)
+
3525 met->pel[ix][iy] = (float) p;
+
3526 if (dcape < 0 && !isfinite(met->plfc[ix][iy]))
+
3527 met->cin[ix][iy] += fabsf((float) dcape);
+
3528 } while (p > ptop);
+
3529
+
3530 /* Check results... */
+
3531 if (!isfinite(met->plfc[ix][iy]))
+
3532 met->cin[ix][iy] = GSL_NAN;
+
3533 }
+
3534}
+
double clim_tropo(const clim_t *clim, const double t, const double lat)
Climatology of tropopause pressure.
Definition: libtrac.c:163
+
double lapse_rate(const double t, const double h2o)
Calculate moist adiabatic lapse rate.
Definition: libtrac.c:1541
+
#define TVIRT(t, h2o)
Compute virtual temperature.
Definition: libtrac.h:654
+
#define INTPOL_INIT
Initialize cache variables for interpolation.
Definition: libtrac.h:323
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define PSAT(t)
Compute saturation pressure over water (WMO, 2018).
Definition: libtrac.h:575
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ read_met_cloud()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_cloud (ctl_tctl,
met_tmet 
)
+
+ +

Calculate cloud properties.

+ +

Definition at line 3538 of file libtrac.c.

+
3540 {
+
3541
+
3542 /* Set timer... */
+
3543 SELECT_TIMER("READ_MET_CLOUD", "METPROC", NVTX_READ);
+
3544 LOG(2, "Calculate cloud data...");
+
3545
+
3546 /* Loop over columns... */
+
3547#pragma omp parallel for default(shared) collapse(2)
+
3548 for (int ix = 0; ix < met->nx; ix++)
+
3549 for (int iy = 0; iy < met->ny; iy++) {
+
3550
+
3551 /* Init... */
+
3552 met->pct[ix][iy] = GSL_NAN;
+
3553 met->pcb[ix][iy] = GSL_NAN;
+
3554 met->cl[ix][iy] = 0;
+
3555
+
3556 /* Loop over pressure levels... */
+
3557 for (int ip = 0; ip < met->np - 1; ip++) {
+
3558
+
3559 /* Check pressure... */
+
3560 if (met->p[ip] > met->ps[ix][iy] || met->p[ip] < P(20.))
+
3561 continue;
+
3562
+
3563 /* Check ice water and liquid water content... */
+
3564 if (met->iwc[ix][iy][ip] > ctl->met_cloud_min
+
3565 || met->lwc[ix][iy][ip] > ctl->met_cloud_min) {
+
3566
+
3567 /* Get cloud top pressure ... */
+
3568 met->pct[ix][iy]
+
3569 = (float) (0.5 * (met->p[ip] + (float) met->p[ip + 1]));
+
3570
+
3571 /* Get cloud bottom pressure ... */
+
3572 if (!isfinite(met->pcb[ix][iy]))
+
3573 met->pcb[ix][iy]
+
3574 = (float) (0.5 * (met->p[ip] + met->p[GSL_MAX(ip - 1, 0)]));
+
3575 }
+
3576
+
3577 /* Get cloud water... */
+
3578 met->cl[ix][iy] += (float)
+
3579 (0.5 * (met->iwc[ix][iy][ip] + met->iwc[ix][iy][ip + 1]
+
3580 + met->lwc[ix][iy][ip] + met->lwc[ix][iy][ip + 1])
+
3581 * 100. * (met->p[ip] - met->p[ip + 1]) / G0);
+
3582 }
+
3583 }
+
3584}
+
+
+
+ +

◆ read_met_detrend()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_detrend (ctl_tctl,
met_tmet 
)
+
+ +

Apply detrending method to temperature and winds.

+ +

Definition at line 3588 of file libtrac.c.

+
3590 {
+
3591
+
3592 met_t *help;
+
3593
+
3594 /* Check parameters... */
+
3595 if (ctl->met_detrend <= 0)
+
3596 return;
+
3597
+
3598 /* Set timer... */
+
3599 SELECT_TIMER("READ_MET_DETREND", "METPROC", NVTX_READ);
+
3600 LOG(2, "Detrend meteo data...");
+
3601
+
3602 /* Allocate... */
+
3603 ALLOC(help, met_t, 1);
+
3604
+
3605 /* Calculate standard deviation... */
+
3606 double sigma = ctl->met_detrend / 2.355;
+
3607 double tssq = 2. * SQR(sigma);
+
3608
+
3609 /* Calculate box size in latitude... */
+
3610 int sy = (int) (3. * DY2DEG(sigma) / fabs(met->lat[1] - met->lat[0]));
+
3611 sy = GSL_MIN(GSL_MAX(1, sy), met->ny / 2);
+
3612
+
3613 /* Calculate background... */
+
3614#pragma omp parallel for default(shared) collapse(2)
+
3615 for (int ix = 0; ix < met->nx; ix++) {
+
3616 for (int iy = 0; iy < met->ny; iy++) {
+
3617
+
3618 /* Calculate Cartesian coordinates... */
+
3619 double x0[3];
+
3620 geo2cart(0.0, met->lon[ix], met->lat[iy], x0);
+
3621
+
3622 /* Calculate box size in longitude... */
+
3623 int sx =
+
3624 (int) (3. * DX2DEG(sigma, met->lat[iy]) /
+
3625 fabs(met->lon[1] - met->lon[0]));
+
3626 sx = GSL_MIN(GSL_MAX(1, sx), met->nx / 2);
+
3627
+
3628 /* Init... */
+
3629 float wsum = 0;
+
3630 for (int ip = 0; ip < met->np; ip++) {
+
3631 help->t[ix][iy][ip] = 0;
+
3632 help->u[ix][iy][ip] = 0;
+
3633 help->v[ix][iy][ip] = 0;
+
3634 help->w[ix][iy][ip] = 0;
+
3635 }
+
3636
+
3637 /* Loop over neighboring grid points... */
+
3638 for (int ix2 = ix - sx; ix2 <= ix + sx; ix2++) {
+
3639 int ix3 = ix2;
+
3640 if (ix3 < 0)
+
3641 ix3 += met->nx;
+
3642 else if (ix3 >= met->nx)
+
3643 ix3 -= met->nx;
+
3644 for (int iy2 = GSL_MAX(iy - sy, 0);
+
3645 iy2 <= GSL_MIN(iy + sy, met->ny - 1); iy2++) {
+
3646
+
3647 /* Calculate Cartesian coordinates... */
+
3648 double x1[3];
+
3649 geo2cart(0.0, met->lon[ix3], met->lat[iy2], x1);
+
3650
+
3651 /* Calculate weighting factor... */
+
3652 float w = (float) exp(-DIST2(x0, x1) / tssq);
+
3653
+
3654 /* Add data... */
+
3655 wsum += w;
+
3656 for (int ip = 0; ip < met->np; ip++) {
+
3657 help->t[ix][iy][ip] += w * met->t[ix3][iy2][ip];
+
3658 help->u[ix][iy][ip] += w * met->u[ix3][iy2][ip];
+
3659 help->v[ix][iy][ip] += w * met->v[ix3][iy2][ip];
+
3660 help->w[ix][iy][ip] += w * met->w[ix3][iy2][ip];
+
3661 }
+
3662 }
+
3663 }
+
3664
+
3665 /* Normalize... */
+
3666 for (int ip = 0; ip < met->np; ip++) {
+
3667 help->t[ix][iy][ip] /= wsum;
+
3668 help->u[ix][iy][ip] /= wsum;
+
3669 help->v[ix][iy][ip] /= wsum;
+
3670 help->w[ix][iy][ip] /= wsum;
+
3671 }
+
3672 }
+
3673 }
+
3674
+
3675 /* Subtract background... */
+
3676#pragma omp parallel for default(shared) collapse(3)
+
3677 for (int ix = 0; ix < met->nx; ix++)
+
3678 for (int iy = 0; iy < met->ny; iy++)
+
3679 for (int ip = 0; ip < met->np; ip++) {
+
3680 met->t[ix][iy][ip] -= help->t[ix][iy][ip];
+
3681 met->u[ix][iy][ip] -= help->u[ix][iy][ip];
+
3682 met->v[ix][iy][ip] -= help->v[ix][iy][ip];
+
3683 met->w[ix][iy][ip] -= help->w[ix][iy][ip];
+
3684 }
+
3685
+
3686 /* Free... */
+
3687 free(help);
+
3688}
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define DIST2(a, b)
Compute squared distance between two vectors.
Definition: libtrac.h:299
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_extrapolate()

+ +
+
+ + + + + + + + +
void read_met_extrapolate (met_tmet)
+
+ +

Extrapolate meteo data at lower boundary.

+ +

Definition at line 3692 of file libtrac.c.

+
3693 {
+
3694
+
3695 /* Set timer... */
+
3696 SELECT_TIMER("READ_MET_EXTRAPOLATE", "METPROC", NVTX_READ);
+
3697 LOG(2, "Extrapolate meteo data...");
+
3698
+
3699 /* Loop over columns... */
+
3700#pragma omp parallel for default(shared) collapse(2)
+
3701 for (int ix = 0; ix < met->nx; ix++)
+
3702 for (int iy = 0; iy < met->ny; iy++) {
+
3703
+
3704 /* Find lowest valid data point... */
+
3705 int ip0;
+
3706 for (ip0 = met->np - 1; ip0 >= 0; ip0--)
+
3707 if (!isfinite(met->t[ix][iy][ip0])
+
3708 || !isfinite(met->u[ix][iy][ip0])
+
3709 || !isfinite(met->v[ix][iy][ip0])
+
3710 || !isfinite(met->w[ix][iy][ip0]))
+
3711 break;
+
3712
+
3713 /* Extrapolate... */
+
3714 for (int ip = ip0; ip >= 0; ip--) {
+
3715 met->t[ix][iy][ip] = met->t[ix][iy][ip + 1];
+
3716 met->u[ix][iy][ip] = met->u[ix][iy][ip + 1];
+
3717 met->v[ix][iy][ip] = met->v[ix][iy][ip + 1];
+
3718 met->w[ix][iy][ip] = met->w[ix][iy][ip + 1];
+
3719 met->h2o[ix][iy][ip] = met->h2o[ix][iy][ip + 1];
+
3720 met->o3[ix][iy][ip] = met->o3[ix][iy][ip + 1];
+
3721 met->lwc[ix][iy][ip] = met->lwc[ix][iy][ip + 1];
+
3722 met->iwc[ix][iy][ip] = met->iwc[ix][iy][ip + 1];
+
3723 met->cc[ix][iy][ip] = met->cc[ix][iy][ip + 1];
+
3724 }
+
3725 }
+
3726}
+
+
+
+ +

◆ read_met_geopot()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_geopot (ctl_tctl,
met_tmet 
)
+
+ +

Calculate geopotential heights.

+ +

Definition at line 3730 of file libtrac.c.

+
3732 {
+
3733
+
3734 static float help[EP][EX][EY];
+
3735
+
3736 double logp[EP];
+
3737
+
3738 int dx = ctl->met_geopot_sx, dy = ctl->met_geopot_sy;
+
3739
+
3740 /* Set timer... */
+
3741 SELECT_TIMER("READ_MET_GEOPOT", "METPROC", NVTX_READ);
+
3742 LOG(2, "Calculate geopotential heights...");
+
3743
+
3744 /* Calculate log pressure... */
+
3745#pragma omp parallel for default(shared)
+
3746 for (int ip = 0; ip < met->np; ip++)
+
3747 logp[ip] = log(met->p[ip]);
+
3748
+
3749 /* Apply hydrostatic equation to calculate geopotential heights... */
+
3750#pragma omp parallel for default(shared) collapse(2)
+
3751 for (int ix = 0; ix < met->nx; ix++)
+
3752 for (int iy = 0; iy < met->ny; iy++) {
+
3753
+
3754 /* Get surface height and pressure... */
+
3755 double zs = met->zs[ix][iy];
+
3756 double lnps = log(met->ps[ix][iy]);
+
3757
+
3758 /* Get temperature and water vapor vmr at the surface... */
+
3759 int ip0 = locate_irr(met->p, met->np, met->ps[ix][iy]);
+
3760 double ts = LIN(met->p[ip0], met->t[ix][iy][ip0], met->p[ip0 + 1],
+
3761 met->t[ix][iy][ip0 + 1], met->ps[ix][iy]);
+
3762 double h2os = LIN(met->p[ip0], met->h2o[ix][iy][ip0], met->p[ip0 + 1],
+
3763 met->h2o[ix][iy][ip0 + 1], met->ps[ix][iy]);
+
3764
+
3765 /* Upper part of profile... */
+
3766 met->z[ix][iy][ip0 + 1]
+
3767 = (float) (zs +
+
3768 ZDIFF(lnps, ts, h2os, logp[ip0 + 1],
+
3769 met->t[ix][iy][ip0 + 1], met->h2o[ix][iy][ip0 + 1]));
+
3770 for (int ip = ip0 + 2; ip < met->np; ip++)
+
3771 met->z[ix][iy][ip]
+
3772 = (float) (met->z[ix][iy][ip - 1] +
+
3773 ZDIFF(logp[ip - 1], met->t[ix][iy][ip - 1],
+
3774 met->h2o[ix][iy][ip - 1], logp[ip],
+
3775 met->t[ix][iy][ip], met->h2o[ix][iy][ip]));
+
3776
+
3777 /* Lower part of profile... */
+
3778 met->z[ix][iy][ip0]
+
3779 = (float) (zs +
+
3780 ZDIFF(lnps, ts, h2os, logp[ip0],
+
3781 met->t[ix][iy][ip0], met->h2o[ix][iy][ip0]));
+
3782 for (int ip = ip0 - 1; ip >= 0; ip--)
+
3783 met->z[ix][iy][ip]
+
3784 = (float) (met->z[ix][iy][ip + 1] +
+
3785 ZDIFF(logp[ip + 1], met->t[ix][iy][ip + 1],
+
3786 met->h2o[ix][iy][ip + 1], logp[ip],
+
3787 met->t[ix][iy][ip], met->h2o[ix][iy][ip]));
+
3788 }
+
3789
+
3790 /* Check control parameters... */
+
3791 if (dx == 0 || dy == 0)
+
3792 return;
+
3793
+
3794 /* Default smoothing parameters... */
+
3795 if (dx < 0 || dy < 0) {
+
3796 if (fabs(met->lon[1] - met->lon[0]) < 0.5) {
+
3797 dx = 3;
+
3798 dy = 2;
+
3799 } else {
+
3800 dx = 6;
+
3801 dy = 4;
+
3802 }
+
3803 }
+
3804
+
3805 /* Calculate weights for smoothing... */
+
3806 float ws[dx + 1][dy + 1];
+
3807#pragma omp parallel for default(shared) collapse(2)
+
3808 for (int ix = 0; ix <= dx; ix++)
+
3809 for (int iy = 0; iy < dy; iy++)
+
3810 ws[ix][iy] = (1.0f - (float) ix / (float) dx)
+
3811 * (1.0f - (float) iy / (float) dy);
+
3812
+
3813 /* Copy data... */
+
3814#pragma omp parallel for default(shared) collapse(3)
+
3815 for (int ix = 0; ix < met->nx; ix++)
+
3816 for (int iy = 0; iy < met->ny; iy++)
+
3817 for (int ip = 0; ip < met->np; ip++)
+
3818 help[ip][ix][iy] = met->z[ix][iy][ip];
+
3819
+
3820 /* Horizontal smoothing... */
+
3821#pragma omp parallel for default(shared) collapse(3)
+
3822 for (int ip = 0; ip < met->np; ip++)
+
3823 for (int ix = 0; ix < met->nx; ix++)
+
3824 for (int iy = 0; iy < met->ny; iy++) {
+
3825 float res = 0, wsum = 0;
+
3826 int iy0 = GSL_MAX(iy - dy + 1, 0);
+
3827 int iy1 = GSL_MIN(iy + dy - 1, met->ny - 1);
+
3828 for (int ix2 = ix - dx + 1; ix2 <= ix + dx - 1; ++ix2) {
+
3829 int ix3 = ix2;
+
3830 if (ix3 < 0)
+
3831 ix3 += met->nx;
+
3832 else if (ix3 >= met->nx)
+
3833 ix3 -= met->nx;
+
3834 for (int iy2 = iy0; iy2 <= iy1; ++iy2)
+
3835 if (isfinite(help[ip][ix3][iy2])) {
+
3836 float w = ws[abs(ix - ix2)][abs(iy - iy2)];
+
3837 res += w * help[ip][ix3][iy2];
+
3838 wsum += w;
+
3839 }
+
3840 }
+
3841 if (wsum > 0)
+
3842 met->z[ix][iy][ip] = res / wsum;
+
3843 else
+
3844 met->z[ix][iy][ip] = GSL_NAN;
+
3845 }
+
3846}
+
#define ZDIFF(lnp0, t0, h2o0, lnp1, t1, h2o1)
Calculate geopotential height difference.
Definition: libtrac.h:662
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_grid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_grid (char * filename,
int ncid,
ctl_tctl,
met_tmet 
)
+
+ +

Read coordinates of meteo data.

+ +

Definition at line 3850 of file libtrac.c.

+
3854 {
+
3855
+
3856 char levname[LEN], tstr[10];
+
3857
+
3858 double rtime, r, r2;
+
3859
+
3860 int varid, year2, mon2, day2, hour2, min2, sec2,
+
3861 year, mon, day, hour, min, sec;
+
3862
+
3863 size_t np;
+
3864
+
3865 /* Set timer... */
+
3866 SELECT_TIMER("READ_MET_GRID", "INPUT", NVTX_READ);
+
3867 LOG(2, "Read meteo grid information...");
+
3868
+
3869 /* MPTRAC meteo files... */
+
3870 if (ctl->clams_met_data == 0) {
+
3871
+
3872 /* Get time from filename... */
+
3873 met->time = time_from_filename(filename, 16);
+
3874
+
3875 /* Check time information from data file... */
+
3876 jsec2time(met->time, &year, &mon, &day, &hour, &min, &sec, &r);
+
3877 if (nc_inq_varid(ncid, "time", &varid) == NC_NOERR) {
+
3878 NC(nc_get_var_double(ncid, varid, &rtime));
+
3879 if (fabs(year * 10000. + mon * 100. + day + hour / 24. - rtime) > 1.0)
+
3880 WARN("Time information in meteo file does not match filename!");
+
3881 } else
+
3882 WARN("Time information in meteo file is missing!");
+
3883 }
+
3884
+
3885 /* CLaMS meteo files... */
+
3886 else {
+
3887
+
3888 /* Read time from file... */
+
3889 NC_GET_DOUBLE("time", &rtime, 0);
+
3890
+
3891 /* Get time from filename (considering the century)... */
+
3892 if (rtime < 0)
+
3893 sprintf(tstr, "19%.2s", &filename[strlen(filename) - 11]);
+
3894 else
+
3895 sprintf(tstr, "20%.2s", &filename[strlen(filename) - 11]);
+
3896 year = atoi(tstr);
+
3897 sprintf(tstr, "%.2s", &filename[strlen(filename) - 9]);
+
3898 mon = atoi(tstr);
+
3899 sprintf(tstr, "%.2s", &filename[strlen(filename) - 7]);
+
3900 day = atoi(tstr);
+
3901 sprintf(tstr, "%.2s", &filename[strlen(filename) - 5]);
+
3902 hour = atoi(tstr);
+
3903 time2jsec(year, mon, day, hour, 0, 0, 0, &met->time);
+
3904 }
+
3905
+
3906 /* Check time... */
+
3907 if (year < 1900 || year > 2100 || mon < 1 || mon > 12
+
3908 || day < 1 || day > 31 || hour < 0 || hour > 23)
+
3909 ERRMSG("Cannot read time from filename!");
+
3910 jsec2time(met->time, &year2, &mon2, &day2, &hour2, &min2, &sec2, &r2);
+
3911 LOG(2, "Time: %.2f (%d-%02d-%02d, %02d:%02d UTC)",
+
3912 met->time, year2, mon2, day2, hour2, min2);
+
3913
+
3914 /* Get grid dimensions... */
+
3915 NC_INQ_DIM("lon", &met->nx, 2, EX);
+
3916 LOG(2, "Number of longitudes: %d", met->nx);
+
3917
+
3918 NC_INQ_DIM("lat", &met->ny, 2, EY);
+
3919 LOG(2, "Number of latitudes: %d", met->ny);
+
3920
+
3921 if (ctl->vert_coord_met == 0) {
+
3922 int dimid;
+
3923 sprintf(levname, "lev");
+
3924 if (nc_inq_dimid(ncid, levname, &dimid) != NC_NOERR)
+
3925 sprintf(levname, "plev");
+
3926 } else {
+
3927 sprintf(levname, "hybrid");
+
3928 NC_GET_DOUBLE(levname, met->hybrid, 1);
+
3929 printf("Meteorological data is in hybrid coordinates.");
+
3930 }
+
3931
+
3932 NC_INQ_DIM(levname, &met->np, 1, EP);
+
3933 if (met->np == 1) {
+
3934 int dimid;
+
3935 sprintf(levname, "lev_2");
+
3936 if (nc_inq_dimid(ncid, levname, &dimid) != NC_NOERR) {
+
3937 sprintf(levname, "plev");
+
3938 NC(nc_inq_dimid(ncid, levname, &dimid));
+
3939 }
+
3940 NC(nc_inq_dimlen(ncid, dimid, &np));
+
3941 met->np = (int) np;
+
3942 }
+
3943 LOG(2, "Number of levels: %d", met->np);
+
3944 if (met->np < 2 || met->np > EP)
+
3945 ERRMSG("Number of levels out of range!");
+
3946
+
3947 /* Read longitudes and latitudes... */
+
3948 NC_GET_DOUBLE("lon", met->lon, 1);
+
3949 LOG(2, "Longitudes: %g, %g ... %g deg",
+
3950 met->lon[0], met->lon[1], met->lon[met->nx - 1]);
+
3951 NC_GET_DOUBLE("lat", met->lat, 1);
+
3952 LOG(2, "Latitudes: %g, %g ... %g deg",
+
3953 met->lat[0], met->lat[1], met->lat[met->ny - 1]);
+
3954
+
3955 /* Read pressure levels... */
+
3956 if (ctl->met_np <= 0) {
+
3957 NC_GET_DOUBLE(levname, met->p, 1);
+
3958 for (int ip = 0; ip < met->np; ip++)
+
3959 met->p[ip] /= 100.;
+
3960 LOG(2, "Altitude levels: %g, %g ... %g km",
+
3961 Z(met->p[0]), Z(met->p[1]), Z(met->p[met->np - 1]));
+
3962 LOG(2, "Pressure levels: %g, %g ... %g hPa",
+
3963 met->p[0], met->p[1], met->p[met->np - 1]);
+
3964 }
+
3965}
+
void time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
Convert date to seconds.
Definition: libtrac.c:5449
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
int vert_coord_met
Vertical coordinate of input meteo data (0=automatic, 1=eta).
Definition: libtrac.h:815
+
double hybrid[EP]
Hybrid model levels.
Definition: libtrac.h:1978
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ read_met_levels()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_levels (int ncid,
ctl_tctl,
met_tmet 
)
+
+ +

Read meteo data on vertical levels.

+ +

Definition at line 3969 of file libtrac.c.

+
3972 {
+
3973
+
3974 /* Set timer... */
+
3975 SELECT_TIMER("READ_MET_LEVELS", "INPUT", NVTX_READ);
+
3976 LOG(2, "Read level data...");
+
3977
+
3978 /* MPTRAC meteo data... */
+
3979 if (ctl->clams_met_data == 0) {
+
3980
+
3981 /* Read meteo data... */
+
3982 if (!read_met_nc_3d(ncid, "t", "T", ctl, met, met->t, 1.0, 1))
+
3983 ERRMSG("Cannot read temperature!");
+
3984 if (!read_met_nc_3d(ncid, "u", "U", ctl, met, met->u, 1.0, 1))
+
3985 ERRMSG("Cannot read zonal wind!");
+
3986 if (!read_met_nc_3d(ncid, "v", "V", ctl, met, met->v, 1.0, 1))
+
3987 ERRMSG("Cannot read meridional wind!");
+
3988 if (!read_met_nc_3d(ncid, "w", "W", ctl, met, met->w, 0.01f, 1))
+
3989 WARN("Cannot read vertical velocity!");
+
3990 if (!read_met_nc_3d
+
3991 (ncid, "q", "Q", ctl, met, met->h2o, (float) (MA / MH2O), 1))
+
3992 WARN("Cannot read specific humidity!");
+
3993 if (ctl->met_relhum) {
+
3994 if (!read_met_nc_3d(ncid, "rh", "RH", ctl, met, met->h2o, 0.01f, 1))
+
3995 WARN("Cannot read relative humidity!");
+
3996#pragma omp parallel for default(shared) collapse(2)
+
3997 for (int ix = 0; ix < met->nx; ix++)
+
3998 for (int iy = 0; iy < met->ny; iy++)
+
3999 for (int ip = 0; ip < met->np; ip++) {
+
4000 double pw = met->h2o[ix][iy][ip] * PSAT(met->t[ix][iy][ip]);
+
4001 met->h2o[ix][iy][ip] =
+
4002 (float) (pw / (met->p[ip] - (1.0 - EPS) * pw));
+
4003 }
+
4004 }
+
4005 if (!read_met_nc_3d
+
4006 (ncid, "o3", "O3", ctl, met, met->o3, (float) (MA / MO3), 1))
+
4007 WARN("Cannot read ozone data!");
+
4008 if (ctl->met_cloud == 1 || ctl->met_cloud == 3) {
+
4009 if (!read_met_nc_3d(ncid, "clwc", "CLWC", ctl, met, met->lwc, 1.0, 1))
+
4010 WARN("Cannot read cloud liquid water content!");
+
4011 if (!read_met_nc_3d(ncid, "ciwc", "CIWC", ctl, met, met->iwc, 1.0, 1))
+
4012 WARN("Cannot read cloud ice water content!");
+
4013 }
+
4014 if (ctl->met_cloud == 2 || ctl->met_cloud == 3) {
+
4015 if (!read_met_nc_3d
+
4016 (ncid, "crwc", "CRWC", ctl, met, met->lwc, 1.0,
+
4017 ctl->met_cloud == 2))
+
4018 WARN("Cannot read cloud rain water content!");
+
4019 if (!read_met_nc_3d
+
4020 (ncid, "cswc", "CSWC", ctl, met, met->iwc, 1.0,
+
4021 ctl->met_cloud == 2))
+
4022 WARN("Cannot read cloud snow water content!");
+
4023 }
+
4024 if (!read_met_nc_3d(ncid, "cc", "CC", ctl, met, met->cc, 1.0, 1))
+
4025 WARN("Cannot read cloud cover!");
+
4026
+
4027
+
4028 }
+
4029
+
4030 /* CLaMS meteo data... */
+
4031 else if (ctl->clams_met_data == 1) {
+
4032
+
4033 /* Read meteorological data... */
+
4034 if (!read_met_nc_3d(ncid, "t", "TEMP", ctl, met, met->t, 1.0, 1))
+
4035 ERRMSG("Cannot read temperature!");
+
4036 if (!read_met_nc_3d(ncid, "u", "U", ctl, met, met->u, 1.0, 1))
+
4037 ERRMSG("Cannot read zonal wind!");
+
4038 if (!read_met_nc_3d(ncid, "v", "V", ctl, met, met->v, 1.0, 1))
+
4039 ERRMSG("Cannot read meridional wind!");
+
4040 if (!read_met_nc_3d(ncid, "W", "OMEGA", ctl, met, met->w, 0.01f, 1))
+
4041 WARN("Cannot read vertical velocity!");
+
4042 if (!read_met_nc_3d(ncid, "ZETA", "zeta", ctl, met, met->zeta, 1.0, 1))
+
4043 WARN("Cannot read ZETA in meteo data!");
+
4044 if (ctl->vert_coord_ap == 1) {
+
4045 if (!read_met_nc_3d
+
4046 (ncid, "ZETA_DOT_TOT", "zeta_dot_clr", ctl, met, met->zeta_dot,
+
4047 0.00001157407f, 1)) {
+
4048 if (!read_met_nc_3d
+
4049 (ncid, "ZETA_DOT_TOT", "ZETA_DOT_clr", ctl, met, met->zeta_dot,
+
4050 0.00001157407f, 1)) {
+
4051 WARN("Cannot read vertical velocity!");
+
4052 }
+
4053 }
+
4054 }
+
4055 if (!read_met_nc_3d
+
4056 (ncid, "sh", "SH", ctl, met, met->h2o, (float) (MA / MH2O), 1))
+
4057 WARN("Cannot read specific humidity!");
+
4058 if (!read_met_nc_3d
+
4059 (ncid, "o3", "O3", ctl, met, met->o3, (float) (MA / MO3), 1))
+
4060 WARN("Cannot read ozone data!");
+
4061 if (ctl->met_cloud == 1 || ctl->met_cloud == 3) {
+
4062 if (!read_met_nc_3d(ncid, "clwc", "CLWC", ctl, met, met->lwc, 1.0, 1))
+
4063 WARN("Cannot read cloud liquid water content!");
+
4064 if (!read_met_nc_3d(ncid, "ciwc", "CIWC", ctl, met, met->iwc, 1.0, 1))
+
4065 WARN("Cannot read cloud ice water content!");
+
4066 }
+
4067 if (ctl->met_cloud == 2 || ctl->met_cloud == 3) {
+
4068 if (!read_met_nc_3d
+
4069 (ncid, "crwc", "CRWC", ctl, met, met->lwc, 1.0,
+
4070 ctl->met_cloud == 2))
+
4071 WARN("Cannot read cloud rain water content!");
+
4072 if (!read_met_nc_3d
+
4073 (ncid, "cswc", "CSWC", ctl, met, met->iwc, 1.0,
+
4074 ctl->met_cloud == 2))
+
4075 WARN("Cannot read cloud snow water content!");
+
4076 }
+
4077 if (!read_met_nc_3d(ncid, "cc", "CC", ctl, met, met->cc, 1.0, 1))
+
4078 WARN("Cannot read cloud cover!");
+
4079
+
4080 } else
+
4081 ERRMSG("Meteo data format unknown!");
+
4082
+
4083 if (ctl->vert_coord_ap == 1) {
+
4084 /* Store the velocities on model levels for diabatic advection... */
+
4085 for (int ix = 0; ix < met->nx; ix++)
+
4086 for (int iy = 0; iy < met->ny; iy++)
+
4087 for (int ip = 0; ip < met->np; ip++) {
+
4088 met->ul[ix][iy][ip] = met->u[ix][iy][ip];
+
4089 met->vl[ix][iy][ip] = met->v[ix][iy][ip];
+
4090 met->zetal[ix][iy][ip] = met->zeta[ix][iy][ip];
+
4091 met->zeta_dotl[ix][iy][ip] = met->zeta_dot[ix][iy][ip];
+
4092 }
+
4093 /* Original number of vertical levels... */
+
4094 met->npl = met->np;
+
4095 }
+
4096
+
4097 if (ctl->met_np > 0 || ctl->vert_coord_ap == 1) {
+
4098 /* Read pressure on model levels... */
+
4099 if (!read_met_nc_3d(ncid, "pl", "PL", ctl, met, met->pl, 0.01f, 1))
+
4100 if (!read_met_nc_3d(ncid, "pl", "PRESS", ctl, met, met->pl, 1.0, 1))
+
4101 ERRMSG("Cannot read pressure on model levels!");
+
4102 }
+
4103
+
4104 /* Transfer from model levels to pressure levels... */
+
4105 if (ctl->met_np > 0) {
+
4106
+
4107 /* Vertical interpolation from model to pressure levels... */
+
4108 read_met_ml2pl(ctl, met, met->t);
+
4109 read_met_ml2pl(ctl, met, met->u);
+
4110 read_met_ml2pl(ctl, met, met->v);
+
4111 read_met_ml2pl(ctl, met, met->w);
+
4112 read_met_ml2pl(ctl, met, met->h2o);
+
4113 read_met_ml2pl(ctl, met, met->o3);
+
4114 read_met_ml2pl(ctl, met, met->lwc);
+
4115 read_met_ml2pl(ctl, met, met->iwc);
+
4116 read_met_ml2pl(ctl, met, met->cc);
+
4117
+
4118 /* Set new pressure levels... */
+
4119 met->np = ctl->met_np;
+
4120 for (int ip = 0; ip < met->np; ip++)
+
4121 met->p[ip] = ctl->met_p[ip];
+
4122 }
+
4123
+
4124 /* Check ordering of pressure levels... */
+
4125 for (int ip = 1; ip < met->np; ip++)
+
4126 if (met->p[ip - 1] < met->p[ip])
+
4127 ERRMSG("Pressure levels must be descending!");
+
4128
+
4129}
+
int read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init)
Read and convert 3D variable from meteo data file.
Definition: libtrac.c:4367
+
void read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP])
Convert meteo data from model levels to pressure levels.
Definition: libtrac.c:4133
+
#define MH2O
Molar mass of water vapor [g/mol].
Definition: libtrac.h:123
+
#define MO3
Molar mass of ozone [g/mol].
Definition: libtrac.h:128
+
float zeta_dotl[EX][EY][EP]
Vertical velocity on model levels [K/s].
Definition: libtrac.h:1975
+
float vl[EX][EY][EP]
Meridional wind on model levels [m/s].
Definition: libtrac.h:1936
+
float ul[EX][EY][EP]
Zonal wind on model levels [m/s].
Definition: libtrac.h:1930
+
float zeta_dot[EX][EY][EP]
Vertical velocity [K/s].
Definition: libtrac.h:1969
+
float pl[EX][EY][EP]
Pressure on model levels [hPa].
Definition: libtrac.h:1960
+
float zeta[EX][EY][EP]
Zeta [K].
Definition: libtrac.h:1966
+
float zetal[EX][EY][EP]
Zeta on model levels [K].
Definition: libtrac.h:1972
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ read_met_ml2pl()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_ml2pl (ctl_tctl,
met_tmet,
float var[EX][EY][EP] 
)
+
+ +

Convert meteo data from model levels to pressure levels.

+ +

Definition at line 4133 of file libtrac.c.

+
4136 {
+
4137
+
4138 double aux[EP], p[EP];
+
4139
+
4140 /* Set timer... */
+
4141 SELECT_TIMER("READ_MET_ML2PL", "METPROC", NVTX_READ);
+
4142 LOG(2, "Interpolate meteo data to pressure levels...");
+
4143
+
4144 /* Loop over columns... */
+
4145#pragma omp parallel for default(shared) private(aux,p) collapse(2)
+
4146 for (int ix = 0; ix < met->nx; ix++)
+
4147 for (int iy = 0; iy < met->ny; iy++) {
+
4148
+
4149 /* Copy pressure profile... */
+
4150 for (int ip = 0; ip < met->np; ip++)
+
4151 p[ip] = met->pl[ix][iy][ip];
+
4152
+
4153 /* Interpolate... */
+
4154 for (int ip = 0; ip < ctl->met_np; ip++) {
+
4155 double pt = ctl->met_p[ip];
+
4156 if ((pt > p[0] && p[0] > p[1]) || (pt < p[0] && p[0] < p[1]))
+
4157 pt = p[0];
+
4158 else if ((pt > p[met->np - 1] && p[1] > p[0])
+
4159 || (pt < p[met->np - 1] && p[1] < p[0]))
+
4160 pt = p[met->np - 1];
+
4161 int ip2 = locate_irr(p, met->np, pt);
+
4162 aux[ip] = LIN(p[ip2], var[ix][iy][ip2],
+
4163 p[ip2 + 1], var[ix][iy][ip2 + 1], pt);
+
4164 }
+
4165
+
4166 /* Copy data... */
+
4167 for (int ip = 0; ip < ctl->met_np; ip++)
+
4168 var[ix][iy][ip] = (float) aux[ip];
+
4169 }
+
4170}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_monotonize()

+ +
+
+ + + + + + + + +
void read_met_monotonize (met_tmet)
+
+ +

Smooth vertical zeta and pressure profiles.

+ +

Definition at line 4174 of file libtrac.c.

+
4175 {
+
4176
+
4177 /* Create monotone zeta profiles... */
+
4178#pragma omp parallel for default(shared) collapse(2)
+
4179 for (int i = 0; i < met->nx; i++)
+
4180 for (int j = 0; j < met->ny; j++) {
+
4181 int k = 1;
+
4182
+
4183 while (k < met->npl) { /* Check if there is an inversion at level k... */
+
4184 if ((met->zetal[i][j][k - 1] >= met->zetal[i][j][k])) {
+
4185 /* Find the upper level k+l over the inversion... */
+
4186 int l = 0;
+
4187 do {
+
4188 l++;
+
4189 }
+
4190 while ((met->zetal[i][j][k - 1] >=
+
4191 met->zetal[i][j][k + l]) & (k + l < met->npl));
+
4192
+
4193 /* Interpolate linear between the top and bottom
+
4194 of the inversion... */
+
4195 float s =
+
4196 (float) (met->zetal[i][j][k + l] - met->zetal[i][j][k - 1])
+
4197 / (float) (met->hybrid[k + l] - met->hybrid[k - 1]);
+
4198
+
4199 for (int m = k; m < k + l; m++) {
+
4200 float d = (float) (met->hybrid[m] - met->hybrid[k - 1]);
+
4201 met->zetal[i][j][m] = s * d + met->zetal[i][j][k - 1];
+
4202 }
+
4203
+
4204 /* Search for more inversions above the last inversion ... */
+
4205 k = k + l;
+
4206 } else {
+
4207 k++;
+
4208 }
+
4209 }
+
4210 }
+
4211
+
4212 /* Create monotone pressure profiles... */
+
4213#pragma omp parallel for default(shared) collapse(2)
+
4214 for (int i = 0; i < met->nx; i++)
+
4215 for (int j = 0; j < met->ny; j++) {
+
4216 int k = 1;
+
4217
+
4218 while (k < met->npl) { /* Check if there is an inversion at level k... */
+
4219 if ((met->pl[i][j][k - 1] <= met->pl[i][j][k])) {
+
4220 /* Find the upper level k+l over the inversion... */
+
4221 int l = 0;
+
4222 do {
+
4223 l++;
+
4224 }
+
4225 while ((met->pl[i][j][k - 1] <= met->pl[i][j][k + l]) & (k + l <
+
4226 met->npl));
+
4227
+
4228 /* Interpolate linear between the top and bottom
+
4229 of the inversion... */
+
4230 float s = (float) (met->pl[i][j][k + l] - met->pl[i][j][k - 1])
+
4231 / (float) (met->hybrid[k + l] - met->hybrid[k - 1]);
+
4232
+
4233 for (int m = k; m < k + l; m++) {
+
4234 float d = (float) (met->hybrid[m] - met->hybrid[k - 1]);
+
4235 met->pl[i][j][m] = s * d + met->pl[i][j][k - 1];
+
4236 }
+
4237
+
4238 /* Search for more inversions above the last inversion ... */
+
4239 k = k + l;
+
4240 } else {
+
4241 k++;
+
4242 }
+
4243 }
+
4244 }
+
4245}
+
+
+
+ +

◆ read_met_nc_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int read_met_nc_2d (int ncid,
char * varname,
char * varname2,
ctl_tctl,
met_tmet,
float dest[EX][EY],
float scl,
int init 
)
+
+ +

Read and convert 2D variable from meteo data file.

+ +

Definition at line 4249 of file libtrac.c.

+
4257 {
+
4258
+
4259 char varsel[LEN];
+
4260
+
4261 float offset, scalfac;
+
4262
+
4263 int varid;
+
4264
+
4265 /* Check if variable exists... */
+
4266 if (nc_inq_varid(ncid, varname, &varid) != NC_NOERR)
+
4267 if (nc_inq_varid(ncid, varname2, &varid) != NC_NOERR) {
+
4268 WARN("Cannot read 2-D variable: %s or %s", varname, varname2);
+
4269 return 0;
+
4270 } else {
+
4271 sprintf(varsel, "%s", varname2);
+
4272 } else
+
4273 sprintf(varsel, "%s", varname);
+
4274
+
4275 /* Read packed data... */
+
4276 if (ctl->met_nc_scale
+
4277 && nc_get_att_float(ncid, varid, "add_offset", &offset) == NC_NOERR
+
4278 && nc_get_att_float(ncid, varid, "scale_factor",
+
4279 &scalfac) == NC_NOERR) {
+
4280
+
4281 /* Allocate... */
+
4282 short *help;
+
4283 ALLOC(help, short,
+
4284 EX * EY * EP);
+
4285
+
4286 /* Read fill value and missing value... */
+
4287 short fillval, missval;
+
4288 if (nc_get_att_short(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4289 fillval = 0;
+
4290 if (nc_get_att_short(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4291 missval = 0;
+
4292
+
4293 /* Write info... */
+
4294 LOG(2, "Read 2-D variable: %s"
+
4295 " (FILL = %d, MISS = %d, SCALE = %g, OFFSET = %g)",
+
4296 varsel, fillval, missval, scalfac, offset);
+
4297
+
4298 /* Read data... */
+
4299 NC(nc_get_var_short(ncid, varid, help));
+
4300
+
4301 /* Copy and check data... */
+
4302#pragma omp parallel for default(shared) num_threads(12)
+
4303 for (int ix = 0; ix < met->nx; ix++)
+
4304 for (int iy = 0; iy < met->ny; iy++) {
+
4305 if (init)
+
4306 dest[ix][iy] = 0;
+
4307 short aux = help[ARRAY_2D(iy, ix, met->nx)];
+
4308 if ((fillval == 0 || aux != fillval)
+
4309 && (missval == 0 || aux != missval)
+
4310 && fabsf(aux * scalfac + offset) < 1e14f)
+
4311 dest[ix][iy] += scl * (aux * scalfac + offset);
+
4312 else
+
4313 dest[ix][iy] = GSL_NAN;
+
4314 }
+
4315
+
4316 /* Free... */
+
4317 free(help);
+
4318 }
+
4319
+
4320 /* Unpacked data... */
+
4321 else {
+
4322
+
4323 /* Allocate... */
+
4324 float *help;
+
4325 ALLOC(help, float,
+
4326 EX * EY);
+
4327
+
4328 /* Read fill value and missing value... */
+
4329 float fillval, missval;
+
4330 if (nc_get_att_float(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4331 fillval = 0;
+
4332 if (nc_get_att_float(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4333 missval = 0;
+
4334
+
4335 /* Write info... */
+
4336 LOG(2, "Read 2-D variable: %s (FILL = %g, MISS = %g)",
+
4337 varsel, fillval, missval);
+
4338
+
4339 /* Read data... */
+
4340 NC(nc_get_var_float(ncid, varid, help));
+
4341
+
4342 /* Copy and check data... */
+
4343#pragma omp parallel for default(shared) num_threads(12)
+
4344 for (int ix = 0; ix < met->nx; ix++)
+
4345 for (int iy = 0; iy < met->ny; iy++) {
+
4346 if (init)
+
4347 dest[ix][iy] = 0;
+
4348 float aux = help[ARRAY_2D(iy, ix, met->nx)];
+
4349 if ((fillval == 0 || aux != fillval)
+
4350 && (missval == 0 || aux != missval)
+
4351 && fabsf(aux) < 1e14f)
+
4352 dest[ix][iy] += scl * aux;
+
4353 else
+
4354 dest[ix][iy] = GSL_NAN;
+
4355 }
+
4356
+
4357 /* Free... */
+
4358 free(help);
+
4359 }
+
4360
+
4361 /* Return... */
+
4362 return 1;
+
4363}
+
+
+
+ +

◆ read_met_nc_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int read_met_nc_3d (int ncid,
char * varname,
char * varname2,
ctl_tctl,
met_tmet,
float dest[EX][EY][EP],
float scl,
int init 
)
+
+ +

Read and convert 3D variable from meteo data file.

+ +

Definition at line 4367 of file libtrac.c.

+
4375 {
+
4376
+
4377 char varsel[LEN];
+
4378
+
4379 float offset, scalfac;
+
4380
+
4381 int varid;
+
4382
+
4383 /* Check if variable exists... */
+
4384 if (nc_inq_varid(ncid, varname, &varid) != NC_NOERR)
+
4385 if (nc_inq_varid(ncid, varname2, &varid) != NC_NOERR) {
+
4386 WARN("Cannot read 3-D variable: %s or %s", varname, varname2);
+
4387 return 0;
+
4388 } else {
+
4389 sprintf(varsel, "%s", varname2);
+
4390 } else
+
4391 sprintf(varsel, "%s", varname);
+
4392
+
4393 /* Read packed data... */
+
4394 if (ctl->met_nc_scale
+
4395 && nc_get_att_float(ncid, varid, "add_offset", &offset) == NC_NOERR
+
4396 && nc_get_att_float(ncid, varid, "scale_factor",
+
4397 &scalfac) == NC_NOERR) {
+
4398
+
4399 /* Allocate... */
+
4400 short *help;
+
4401 ALLOC(help, short,
+
4402 EX * EY * EP);
+
4403
+
4404 /* Read fill value and missing value... */
+
4405 short fillval, missval;
+
4406 if (nc_get_att_short(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4407 fillval = 0;
+
4408 if (nc_get_att_short(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4409 missval = 0;
+
4410
+
4411 /* Write info... */
+
4412 LOG(2, "Read 3-D variable: %s "
+
4413 "(FILL = %d, MISS = %d, SCALE = %g, OFFSET = %g)",
+
4414 varsel, fillval, missval, scalfac, offset);
+
4415
+
4416 /* Read data... */
+
4417 NC(nc_get_var_short(ncid, varid, help));
+
4418
+
4419 /* Copy and check data... */
+
4420#pragma omp parallel for default(shared) num_threads(12)
+
4421 for (int ix = 0; ix < met->nx; ix++)
+
4422 for (int iy = 0; iy < met->ny; iy++)
+
4423 for (int ip = 0; ip < met->np; ip++) {
+
4424 if (init)
+
4425 dest[ix][iy][ip] = 0;
+
4426 short aux = help[ARRAY_3D(ip, iy, met->ny, ix, met->nx)];
+
4427 if ((fillval == 0 || aux != fillval)
+
4428 && (missval == 0 || aux != missval)
+
4429 && fabsf(aux * scalfac + offset) < 1e14f)
+
4430 dest[ix][iy][ip] += scl * (aux * scalfac + offset);
+
4431 else
+
4432 dest[ix][iy][ip] = GSL_NAN;
+
4433 }
+
4434
+
4435 /* Free... */
+
4436 free(help);
+
4437 }
+
4438
+
4439 /* Unpacked data... */
+
4440 else {
+
4441
+
4442 /* Allocate... */
+
4443 float *help;
+
4444 ALLOC(help, float,
+
4445 EX * EY * EP);
+
4446
+
4447 /* Read fill value and missing value... */
+
4448 float fillval, missval;
+
4449 if (nc_get_att_float(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4450 fillval = 0;
+
4451 if (nc_get_att_float(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4452 missval = 0;
+
4453
+
4454 /* Write info... */
+
4455 LOG(2, "Read 3-D variable: %s (FILL = %g, MISS = %g)",
+
4456 varsel, fillval, missval);
+
4457
+
4458 /* Read data... */
+
4459 NC(nc_get_var_float(ncid, varid, help));
+
4460
+
4461 if (ctl->met_convention == 0) {
+
4462 /* Copy and check data... */
+
4463#pragma omp parallel for default(shared) num_threads(12)
+
4464 for (int ix = 0; ix < met->nx; ix++)
+
4465 for (int iy = 0; iy < met->ny; iy++)
+
4466 for (int ip = 0; ip < met->np; ip++) {
+
4467 if (init)
+
4468 dest[ix][iy][ip] = 0;
+
4469 float aux = help[ARRAY_3D(ip, iy, met->ny, ix, met->nx)];
+
4470 if ((fillval == 0 || aux != fillval)
+
4471 && (missval == 0 || aux != missval)
+
4472 && fabsf(aux) < 1e14f)
+
4473 dest[ix][iy][ip] += scl * aux;
+
4474 else
+
4475 dest[ix][iy][ip] = GSL_NAN;
+
4476 }
+
4477 } else {
+
4478 /* Copy and check data... */
+
4479#pragma omp parallel for default(shared) num_threads(12)
+
4480 for (int ip = 0; ip < met->np; ip++)
+
4481 for (int iy = 0; iy < met->ny; iy++)
+
4482 for (int ix = 0; ix < met->nx; ix++) {
+
4483 if (init)
+
4484 dest[ix][iy][ip] = 0;
+
4485 float aux = help[ARRAY_3D(ix, iy, met->ny, ip, met->np)];
+
4486 if ((fillval == 0 || aux != fillval)
+
4487 && (missval == 0 || aux != missval)
+
4488 && fabsf(aux) < 1e14f)
+
4489 dest[ix][iy][ip] += scl * aux;
+
4490 else
+
4491 dest[ix][iy][ip] = GSL_NAN;
+
4492 }
+
4493 }
+
4494
+
4495 /* Free... */
+
4496 free(help);
+
4497 }
+
4498
+
4499 /* Return... */
+
4500 return 1;
+
4501}
+
+
+
+ +

◆ read_met_pbl()

+ +
+
+ + + + + + + + +
void read_met_pbl (met_tmet)
+
+ +

Calculate pressure of the boundary layer.

+ +

Definition at line 4505 of file libtrac.c.

+
4506 {
+
4507
+
4508 /* Set timer... */
+
4509 SELECT_TIMER("READ_MET_PBL", "METPROC", NVTX_READ);
+
4510 LOG(2, "Calculate planetary boundary layer...");
+
4511
+
4512 /* Parameters used to estimate the height of the PBL
+
4513 (e.g., Vogelezang and Holtslag, 1996; Seidel et al., 2012)... */
+
4514 const double rib_crit = 0.25, dz = 0.05, umin = 5.0;
+
4515
+
4516 /* Loop over grid points... */
+
4517#pragma omp parallel for default(shared) collapse(2)
+
4518 for (int ix = 0; ix < met->nx; ix++)
+
4519 for (int iy = 0; iy < met->ny; iy++) {
+
4520
+
4521 /* Set bottom level of PBL... */
+
4522 double pbl_bot = met->ps[ix][iy] + DZ2DP(dz, met->ps[ix][iy]);
+
4523
+
4524 /* Find lowest level near the bottom... */
+
4525 int ip;
+
4526 for (ip = 1; ip < met->np; ip++)
+
4527 if (met->p[ip] < pbl_bot)
+
4528 break;
+
4529
+
4530 /* Get near surface data... */
+
4531 double zs = LIN(met->p[ip - 1], met->z[ix][iy][ip - 1],
+
4532 met->p[ip], met->z[ix][iy][ip], pbl_bot);
+
4533 double ts = LIN(met->p[ip - 1], met->t[ix][iy][ip - 1],
+
4534 met->p[ip], met->t[ix][iy][ip], pbl_bot);
+
4535 double us = LIN(met->p[ip - 1], met->u[ix][iy][ip - 1],
+
4536 met->p[ip], met->u[ix][iy][ip], pbl_bot);
+
4537 double vs = LIN(met->p[ip - 1], met->v[ix][iy][ip - 1],
+
4538 met->p[ip], met->v[ix][iy][ip], pbl_bot);
+
4539 double h2os = LIN(met->p[ip - 1], met->h2o[ix][iy][ip - 1],
+
4540 met->p[ip], met->h2o[ix][iy][ip], pbl_bot);
+
4541 double tvs = THETAVIRT(pbl_bot, ts, h2os);
+
4542
+
4543 /* Init... */
+
4544 double rib_old = 0;
+
4545
+
4546 /* Loop over levels... */
+
4547 for (; ip < met->np; ip++) {
+
4548
+
4549 /* Get squared horizontal wind speed... */
+
4550 double vh2
+
4551 = SQR(met->u[ix][iy][ip] - us) + SQR(met->v[ix][iy][ip] - vs);
+
4552 vh2 = GSL_MAX(vh2, SQR(umin));
+
4553
+
4554 /* Calculate bulk Richardson number... */
+
4555 double rib = G0 * 1e3 * (met->z[ix][iy][ip] - zs) / tvs
+
4556 * (THETAVIRT(met->p[ip], met->t[ix][iy][ip],
+
4557 met->h2o[ix][iy][ip]) - tvs) / vh2;
+
4558
+
4559 /* Check for critical value... */
+
4560 if (rib >= rib_crit) {
+
4561 met->pbl[ix][iy] = (float) (LIN(rib_old, met->p[ip - 1],
+
4562 rib, met->p[ip], rib_crit));
+
4563 if (met->pbl[ix][iy] > pbl_bot)
+
4564 met->pbl[ix][iy] = (float) pbl_bot;
+
4565 break;
+
4566 }
+
4567
+
4568 /* Save Richardson number... */
+
4569 rib_old = rib;
+
4570 }
+
4571 }
+
4572}
+
#define THETAVIRT(p, t, h2o)
Compute virtual potential temperature.
Definition: libtrac.h:643
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
+
+
+ +

◆ read_met_periodic()

+ +
+
+ + + + + + + + +
void read_met_periodic (met_tmet)
+
+ +

Create meteo data with periodic boundary conditions.

+ +

Definition at line 4576 of file libtrac.c.

+
4577 {
+
4578
+
4579 /* Set timer... */
+
4580 SELECT_TIMER("READ_MET_PERIODIC", "METPROC", NVTX_READ);
+
4581 LOG(2, "Apply periodic boundary conditions...");
+
4582
+
4583 /* Check longitudes... */
+
4584 if (!(fabs(met->lon[met->nx - 1] - met->lon[0]
+
4585 + met->lon[1] - met->lon[0] - 360) < 0.01))
+
4586 return;
+
4587
+
4588 /* Increase longitude counter... */
+
4589 if ((++met->nx) > EX)
+
4590 ERRMSG("Cannot create periodic boundary conditions!");
+
4591
+
4592 /* Set longitude... */
+
4593 met->lon[met->nx - 1] = met->lon[met->nx - 2] + met->lon[1] - met->lon[0];
+
4594
+
4595 /* Loop over latitudes and pressure levels... */
+
4596#pragma omp parallel for default(shared)
+
4597 for (int iy = 0; iy < met->ny; iy++) {
+
4598 met->ps[met->nx - 1][iy] = met->ps[0][iy];
+
4599 met->zs[met->nx - 1][iy] = met->zs[0][iy];
+
4600 met->ts[met->nx - 1][iy] = met->ts[0][iy];
+
4601 met->us[met->nx - 1][iy] = met->us[0][iy];
+
4602 met->vs[met->nx - 1][iy] = met->vs[0][iy];
+
4603 met->lsm[met->nx - 1][iy] = met->lsm[0][iy];
+
4604 met->sst[met->nx - 1][iy] = met->sst[0][iy];
+
4605 for (int ip = 0; ip < met->np; ip++) {
+
4606 met->t[met->nx - 1][iy][ip] = met->t[0][iy][ip];
+
4607 met->u[met->nx - 1][iy][ip] = met->u[0][iy][ip];
+
4608 met->v[met->nx - 1][iy][ip] = met->v[0][iy][ip];
+
4609 met->w[met->nx - 1][iy][ip] = met->w[0][iy][ip];
+
4610 met->h2o[met->nx - 1][iy][ip] = met->h2o[0][iy][ip];
+
4611 met->o3[met->nx - 1][iy][ip] = met->o3[0][iy][ip];
+
4612 met->lwc[met->nx - 1][iy][ip] = met->lwc[0][iy][ip];
+
4613 met->iwc[met->nx - 1][iy][ip] = met->iwc[0][iy][ip];
+
4614 met->cc[met->nx - 1][iy][ip] = met->cc[0][iy][ip];
+
4615 met->patp[met->nx - 1][iy][ip] = met->patp[0][iy][ip];
+
4616 }
+
4617 for (int ip = 0; ip < met->npl; ip++) {
+
4618 met->ul[met->nx - 1][iy][ip] = met->ul[0][iy][ip];
+
4619 met->vl[met->nx - 1][iy][ip] = met->vl[0][iy][ip];
+
4620 met->pl[met->nx - 1][iy][ip] = met->pl[0][iy][ip];
+
4621 met->zetal[met->nx - 1][iy][ip] = met->zetal[0][iy][ip];
+
4622 met->zeta_dotl[met->nx - 1][iy][ip] = met->zeta_dotl[0][iy][ip];
+
4623 }
+
4624 }
+
4625}
+
float patp[EX][EY][EP]
Pressure field in pressure levels [hPa].
Definition: libtrac.h:1963
+
+
+
+ +

◆ read_met_pv()

+ +
+
+ + + + + + + + +
void read_met_pv (met_tmet)
+
+ +

Calculate potential vorticity.

+ +

Definition at line 4629 of file libtrac.c.

+
4630 {
+
4631
+
4632 double pows[EP];
+
4633
+
4634 /* Set timer... */
+
4635 SELECT_TIMER("READ_MET_PV", "METPROC", NVTX_READ);
+
4636 LOG(2, "Calculate potential vorticity...");
+
4637
+
4638 /* Set powers... */
+
4639#pragma omp parallel for default(shared)
+
4640 for (int ip = 0; ip < met->np; ip++)
+
4641 pows[ip] = pow(1000. / met->p[ip], 0.286);
+
4642
+
4643 /* Loop over grid points... */
+
4644#pragma omp parallel for default(shared)
+
4645 for (int ix = 0; ix < met->nx; ix++) {
+
4646
+
4647 /* Set indices... */
+
4648 int ix0 = GSL_MAX(ix - 1, 0);
+
4649 int ix1 = GSL_MIN(ix + 1, met->nx - 1);
+
4650
+
4651 /* Loop over grid points... */
+
4652 for (int iy = 0; iy < met->ny; iy++) {
+
4653
+
4654 /* Set indices... */
+
4655 int iy0 = GSL_MAX(iy - 1, 0);
+
4656 int iy1 = GSL_MIN(iy + 1, met->ny - 1);
+
4657
+
4658 /* Set auxiliary variables... */
+
4659 double latr = 0.5 * (met->lat[iy1] + met->lat[iy0]);
+
4660 double dx = 1000. * DEG2DX(met->lon[ix1] - met->lon[ix0], latr);
+
4661 double dy = 1000. * DEG2DY(met->lat[iy1] - met->lat[iy0]);
+
4662 double c0 = cos(met->lat[iy0] / 180. * M_PI);
+
4663 double c1 = cos(met->lat[iy1] / 180. * M_PI);
+
4664 double cr = cos(latr / 180. * M_PI);
+
4665 double vort = 2 * 7.2921e-5 * sin(latr * M_PI / 180.);
+
4666
+
4667 /* Loop over grid points... */
+
4668 for (int ip = 0; ip < met->np; ip++) {
+
4669
+
4670 /* Get gradients in longitude... */
+
4671 double dtdx
+
4672 = (met->t[ix1][iy][ip] - met->t[ix0][iy][ip]) * pows[ip] / dx;
+
4673 double dvdx = (met->v[ix1][iy][ip] - met->v[ix0][iy][ip]) / dx;
+
4674
+
4675 /* Get gradients in latitude... */
+
4676 double dtdy
+
4677 = (met->t[ix][iy1][ip] - met->t[ix][iy0][ip]) * pows[ip] / dy;
+
4678 double dudy
+
4679 = (met->u[ix][iy1][ip] * c1 - met->u[ix][iy0][ip] * c0) / dy;
+
4680
+
4681 /* Set indices... */
+
4682 int ip0 = GSL_MAX(ip - 1, 0);
+
4683 int ip1 = GSL_MIN(ip + 1, met->np - 1);
+
4684
+
4685 /* Get gradients in pressure... */
+
4686 double dtdp, dudp, dvdp;
+
4687 double dp0 = 100. * (met->p[ip] - met->p[ip0]);
+
4688 double dp1 = 100. * (met->p[ip1] - met->p[ip]);
+
4689 if (ip != ip0 && ip != ip1) {
+
4690 double denom = dp0 * dp1 * (dp0 + dp1);
+
4691 dtdp = (dp0 * dp0 * met->t[ix][iy][ip1] * pows[ip1]
+
4692 - dp1 * dp1 * met->t[ix][iy][ip0] * pows[ip0]
+
4693 + (dp1 * dp1 - dp0 * dp0) * met->t[ix][iy][ip] * pows[ip])
+
4694 / denom;
+
4695 dudp = (dp0 * dp0 * met->u[ix][iy][ip1]
+
4696 - dp1 * dp1 * met->u[ix][iy][ip0]
+
4697 + (dp1 * dp1 - dp0 * dp0) * met->u[ix][iy][ip])
+
4698 / denom;
+
4699 dvdp = (dp0 * dp0 * met->v[ix][iy][ip1]
+
4700 - dp1 * dp1 * met->v[ix][iy][ip0]
+
4701 + (dp1 * dp1 - dp0 * dp0) * met->v[ix][iy][ip])
+
4702 / denom;
+
4703 } else {
+
4704 double denom = dp0 + dp1;
+
4705 dtdp =
+
4706 (met->t[ix][iy][ip1] * pows[ip1] -
+
4707 met->t[ix][iy][ip0] * pows[ip0]) / denom;
+
4708 dudp = (met->u[ix][iy][ip1] - met->u[ix][iy][ip0]) / denom;
+
4709 dvdp = (met->v[ix][iy][ip1] - met->v[ix][iy][ip0]) / denom;
+
4710 }
+
4711
+
4712 /* Calculate PV... */
+
4713 met->pv[ix][iy][ip] = (float)
+
4714 (1e6 * G0 *
+
4715 (-dtdp * (dvdx - dudy / cr + vort) + dvdp * dtdx - dudp * dtdy));
+
4716 }
+
4717 }
+
4718 }
+
4719
+
4720 /* Fix for polar regions... */
+
4721#pragma omp parallel for default(shared)
+
4722 for (int ix = 0; ix < met->nx; ix++)
+
4723 for (int ip = 0; ip < met->np; ip++) {
+
4724 met->pv[ix][0][ip]
+
4725 = met->pv[ix][1][ip]
+
4726 = met->pv[ix][2][ip];
+
4727 met->pv[ix][met->ny - 1][ip]
+
4728 = met->pv[ix][met->ny - 2][ip]
+
4729 = met->pv[ix][met->ny - 3][ip];
+
4730 }
+
4731}
+
#define DEG2DY(dlat)
Convert degrees to meridional distance.
Definition: libtrac.h:274
+
#define DEG2DX(dlon, lat)
Convert degrees to zonal distance.
Definition: libtrac.h:270
+
+
+
+ +

◆ read_met_ozone()

+ +
+
+ + + + + + + + +
void read_met_ozone (met_tmet)
+
+ +

Calculate total column ozone.

+ +

Definition at line 4735 of file libtrac.c.

+
4736 {
+
4737
+
4738 /* Set timer... */
+
4739 SELECT_TIMER("READ_MET_OZONE", "METPROC", NVTX_READ);
+
4740 LOG(2, "Calculate total column ozone...");
+
4741
+
4742 /* Loop over columns... */
+
4743#pragma omp parallel for default(shared) collapse(2)
+
4744 for (int ix = 0; ix < met->nx; ix++)
+
4745 for (int iy = 0; iy < met->ny; iy++) {
+
4746
+
4747 /* Integrate... */
+
4748 double cd = 0;
+
4749 for (int ip = 1; ip < met->np; ip++)
+
4750 if (met->p[ip - 1] <= met->ps[ix][iy]) {
+
4751 double vmr = 0.5 * (met->o3[ix][iy][ip - 1] + met->o3[ix][iy][ip]);
+
4752 double dp = met->p[ip - 1] - met->p[ip];
+
4753 cd += vmr * MO3 / MA * dp * 1e2 / G0;
+
4754 }
+
4755
+
4756 /* Convert to Dobson units... */
+
4757 met->o3c[ix][iy] = (float) (cd / 2.1415e-5);
+
4758 }
+
4759}
+
float o3c[EX][EY]
Total column ozone [DU].
Definition: libtrac.h:1918
+
+
+
+ +

◆ read_met_sample()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_sample (ctl_tctl,
met_tmet 
)
+
+ +

Downsampling of meteo data.

+ +

Definition at line 4763 of file libtrac.c.

+
4765 {
+
4766
+
4767 met_t *help;
+
4768
+
4769 /* Check parameters... */
+
4770 if (ctl->met_dp <= 1 && ctl->met_dx <= 1 && ctl->met_dy <= 1
+
4771 && ctl->met_sp <= 1 && ctl->met_sx <= 1 && ctl->met_sy <= 1)
+
4772 return;
+
4773
+
4774 /* Set timer... */
+
4775 SELECT_TIMER("READ_MET_SAMPLE", "METPROC", NVTX_READ);
+
4776 LOG(2, "Downsampling of meteo data...");
+
4777
+
4778 /* Allocate... */
+
4779 ALLOC(help, met_t, 1);
+
4780
+
4781 /* Copy data... */
+
4782 help->nx = met->nx;
+
4783 help->ny = met->ny;
+
4784 help->np = met->np;
+
4785 memcpy(help->lon, met->lon, sizeof(met->lon));
+
4786 memcpy(help->lat, met->lat, sizeof(met->lat));
+
4787 memcpy(help->p, met->p, sizeof(met->p));
+
4788
+
4789 /* Smoothing... */
+
4790 for (int ix = 0; ix < met->nx; ix += ctl->met_dx) {
+
4791 for (int iy = 0; iy < met->ny; iy += ctl->met_dy) {
+
4792 for (int ip = 0; ip < met->np; ip += ctl->met_dp) {
+
4793 help->ps[ix][iy] = 0;
+
4794 help->zs[ix][iy] = 0;
+
4795 help->ts[ix][iy] = 0;
+
4796 help->us[ix][iy] = 0;
+
4797 help->vs[ix][iy] = 0;
+
4798 help->lsm[ix][iy] = 0;
+
4799 help->sst[ix][iy] = 0;
+
4800 help->t[ix][iy][ip] = 0;
+
4801 help->u[ix][iy][ip] = 0;
+
4802 help->v[ix][iy][ip] = 0;
+
4803 help->w[ix][iy][ip] = 0;
+
4804 help->h2o[ix][iy][ip] = 0;
+
4805 help->o3[ix][iy][ip] = 0;
+
4806 help->lwc[ix][iy][ip] = 0;
+
4807 help->iwc[ix][iy][ip] = 0;
+
4808 help->cc[ix][iy][ip] = 0;
+
4809 float wsum = 0;
+
4810 for (int ix2 = ix - ctl->met_sx + 1; ix2 <= ix + ctl->met_sx - 1;
+
4811 ix2++) {
+
4812 int ix3 = ix2;
+
4813 if (ix3 < 0)
+
4814 ix3 += met->nx;
+
4815 else if (ix3 >= met->nx)
+
4816 ix3 -= met->nx;
+
4817
+
4818 for (int iy2 = GSL_MAX(iy - ctl->met_sy + 1, 0);
+
4819 iy2 <= GSL_MIN(iy + ctl->met_sy - 1, met->ny - 1); iy2++)
+
4820 for (int ip2 = GSL_MAX(ip - ctl->met_sp + 1, 0);
+
4821 ip2 <= GSL_MIN(ip + ctl->met_sp - 1, met->np - 1); ip2++) {
+
4822 float w = (1.0f - (float) abs(ix - ix2) / (float) ctl->met_sx)
+
4823 * (1.0f - (float) abs(iy - iy2) / (float) ctl->met_sy)
+
4824 * (1.0f - (float) abs(ip - ip2) / (float) ctl->met_sp);
+
4825 help->ps[ix][iy] += w * met->ps[ix3][iy2];
+
4826 help->zs[ix][iy] += w * met->zs[ix3][iy2];
+
4827 help->ts[ix][iy] += w * met->ts[ix3][iy2];
+
4828 help->us[ix][iy] += w * met->us[ix3][iy2];
+
4829 help->vs[ix][iy] += w * met->vs[ix3][iy2];
+
4830 help->lsm[ix][iy] += w * met->lsm[ix3][iy2];
+
4831 help->sst[ix][iy] += w * met->sst[ix3][iy2];
+
4832 help->t[ix][iy][ip] += w * met->t[ix3][iy2][ip2];
+
4833 help->u[ix][iy][ip] += w * met->u[ix3][iy2][ip2];
+
4834 help->v[ix][iy][ip] += w * met->v[ix3][iy2][ip2];
+
4835 help->w[ix][iy][ip] += w * met->w[ix3][iy2][ip2];
+
4836 help->h2o[ix][iy][ip] += w * met->h2o[ix3][iy2][ip2];
+
4837 help->o3[ix][iy][ip] += w * met->o3[ix3][iy2][ip2];
+
4838 help->lwc[ix][iy][ip] += w * met->lwc[ix3][iy2][ip2];
+
4839 help->iwc[ix][iy][ip] += w * met->iwc[ix3][iy2][ip2];
+
4840 help->cc[ix][iy][ip] += w * met->cc[ix3][iy2][ip2];
+
4841 wsum += w;
+
4842 }
+
4843 }
+
4844 help->ps[ix][iy] /= wsum;
+
4845 help->zs[ix][iy] /= wsum;
+
4846 help->ts[ix][iy] /= wsum;
+
4847 help->us[ix][iy] /= wsum;
+
4848 help->vs[ix][iy] /= wsum;
+
4849 help->lsm[ix][iy] /= wsum;
+
4850 help->sst[ix][iy] /= wsum;
+
4851 help->t[ix][iy][ip] /= wsum;
+
4852 help->u[ix][iy][ip] /= wsum;
+
4853 help->v[ix][iy][ip] /= wsum;
+
4854 help->w[ix][iy][ip] /= wsum;
+
4855 help->h2o[ix][iy][ip] /= wsum;
+
4856 help->o3[ix][iy][ip] /= wsum;
+
4857 help->lwc[ix][iy][ip] /= wsum;
+
4858 help->iwc[ix][iy][ip] /= wsum;
+
4859 help->cc[ix][iy][ip] /= wsum;
+
4860 }
+
4861 }
+
4862 }
+
4863
+
4864 /* Downsampling... */
+
4865 met->nx = 0;
+
4866 for (int ix = 0; ix < help->nx; ix += ctl->met_dx) {
+
4867 met->lon[met->nx] = help->lon[ix];
+
4868 met->ny = 0;
+
4869 for (int iy = 0; iy < help->ny; iy += ctl->met_dy) {
+
4870 met->lat[met->ny] = help->lat[iy];
+
4871 met->ps[met->nx][met->ny] = help->ps[ix][iy];
+
4872 met->zs[met->nx][met->ny] = help->zs[ix][iy];
+
4873 met->ts[met->nx][met->ny] = help->ts[ix][iy];
+
4874 met->us[met->nx][met->ny] = help->us[ix][iy];
+
4875 met->vs[met->nx][met->ny] = help->vs[ix][iy];
+
4876 met->lsm[met->nx][met->ny] = help->lsm[ix][iy];
+
4877 met->sst[met->nx][met->ny] = help->sst[ix][iy];
+
4878 met->np = 0;
+
4879 for (int ip = 0; ip < help->np; ip += ctl->met_dp) {
+
4880 met->p[met->np] = help->p[ip];
+
4881 met->t[met->nx][met->ny][met->np] = help->t[ix][iy][ip];
+
4882 met->u[met->nx][met->ny][met->np] = help->u[ix][iy][ip];
+
4883 met->v[met->nx][met->ny][met->np] = help->v[ix][iy][ip];
+
4884 met->w[met->nx][met->ny][met->np] = help->w[ix][iy][ip];
+
4885 met->h2o[met->nx][met->ny][met->np] = help->h2o[ix][iy][ip];
+
4886 met->o3[met->nx][met->ny][met->np] = help->o3[ix][iy][ip];
+
4887 met->lwc[met->nx][met->ny][met->np] = help->lwc[ix][iy][ip];
+
4888 met->iwc[met->nx][met->ny][met->np] = help->iwc[ix][iy][ip];
+
4889 met->cc[met->nx][met->ny][met->np] = help->cc[ix][iy][ip];
+
4890 met->np++;
+
4891 }
+
4892 met->ny++;
+
4893 }
+
4894 met->nx++;
+
4895 }
+
4896
+
4897 /* Free... */
+
4898 free(help);
+
4899}
+
+
+
+ +

◆ read_met_surface()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_surface (int ncid,
met_tmet,
ctl_tctl 
)
+
+ +

Read surface data.

+ +

Definition at line 4903 of file libtrac.c.

+
4906 {
+
4907
+
4908 /* Set timer... */
+
4909 SELECT_TIMER("READ_MET_SURFACE", "INPUT", NVTX_READ);
+
4910 LOG(2, "Read surface data...");
+
4911
+
4912 /* MPTRAC meteo data... */
+
4913 if (ctl->clams_met_data == 0) {
+
4914
+
4915 /* Read surface pressure... */
+
4916 if (!read_met_nc_2d(ncid, "lnsp", "LNSP", ctl, met, met->ps, 1.0f, 1)) {
+
4917 if (!read_met_nc_2d(ncid, "ps", "PS", ctl, met, met->ps, 0.01f, 1)) {
+
4918 if (!read_met_nc_2d(ncid, "sp", "SP", ctl, met, met->ps, 0.01f, 1)) {
+
4919 WARN("Cannot not read surface pressure data (use lowest level)!");
+
4920 for (int ix = 0; ix < met->nx; ix++)
+
4921 for (int iy = 0; iy < met->ny; iy++)
+
4922 met->ps[ix][iy] = (float) met->p[0];
+
4923 }
+
4924 }
+
4925 } else
+
4926 for (int ix = 0; ix < met->nx; ix++)
+
4927 for (int iy = 0; iy < met->ny; iy++)
+
4928 met->ps[ix][iy] = (float) (exp(met->ps[ix][iy]) / 100.);
+
4929
+
4930 /* Read geopotential height at the surface... */
+
4931 if (!read_met_nc_2d
+
4932 (ncid, "z", "Z", ctl, met, met->zs, (float) (1. / (1000. * G0)), 1))
+
4933 if (!read_met_nc_2d
+
4934 (ncid, "zm", "ZM", ctl, met, met->zs, (float) (1. / 1000.), 1))
+
4935 WARN("Cannot read surface geopotential height!");
+
4936
+
4937 /* Read temperature at the surface... */
+
4938 if (!read_met_nc_2d(ncid, "t2m", "T2M", ctl, met, met->ts, 1.0, 1))
+
4939 WARN("Cannot read surface temperature!");
+
4940
+
4941 /* Read zonal wind at the surface... */
+
4942 if (!read_met_nc_2d(ncid, "u10m", "U10M", ctl, met, met->us, 1.0, 1))
+
4943 WARN("Cannot read surface zonal wind!");
+
4944
+
4945 /* Read meridional wind at the surface... */
+
4946 if (!read_met_nc_2d(ncid, "v10m", "V10M", ctl, met, met->vs, 1.0, 1))
+
4947 WARN("Cannot read surface meridional wind!");
+
4948
+
4949 /* Read land-sea mask... */
+
4950 if (!read_met_nc_2d(ncid, "lsm", "LSM", ctl, met, met->lsm, 1.0, 1))
+
4951 WARN("Cannot read land-sea mask!");
+
4952
+
4953 /* Read sea surface temperature... */
+
4954 if (!read_met_nc_2d(ncid, "sstk", "SSTK", ctl, met, met->sst, 1.0, 1))
+
4955 WARN("Cannot read sea surface temperature!");
+
4956 }
+
4957
+
4958 /* CLaMS meteo data... */
+
4959 else {
+
4960
+
4961 /* Read surface pressure... */
+
4962 if (!read_met_nc_2d(ncid, "ps", "PS", ctl, met, met->ps, 0.01f, 1)) {
+
4963 WARN("Cannot not read surface pressure data (use lowest level)!");
+
4964 for (int ix = 0; ix < met->nx; ix++)
+
4965 for (int iy = 0; iy < met->ny; iy++)
+
4966 met->ps[ix][iy] = (float) met->p[0];
+
4967 }
+
4968
+
4969 /* Read geopotential height at the surface
+
4970 (use lowermost level of 3-D data field)... */
+
4971 float *help;
+
4972 ALLOC(help, float,
+
4973 EX * EY * EP);
+
4974 memcpy(help, met->pl, sizeof(met->pl));
+
4975 if (!read_met_nc_3d
+
4976 (ncid, "gph", "GPH", ctl, met, met->pl, (float) (1e-3 / G0), 1)) {
+
4977 ERRMSG("Cannot read geopotential height!");
+
4978 } else
+
4979 for (int ix = 0; ix < met->nx; ix++)
+
4980 for (int iy = 0; iy < met->ny; iy++)
+
4981 met->zs[ix][iy] = met->pl[ix][iy][0];
+
4982 memcpy(met->pl, help, sizeof(met->pl));
+
4983 free(help);
+
4984
+
4985 /* Read temperature at the surface... */
+
4986 if (!read_met_nc_2d(ncid, "t2", "T2", ctl, met, met->ts, 1.0, 1))
+
4987 WARN("Cannot read surface temperature!");
+
4988
+
4989 /* Read zonal wind at the surface... */
+
4990 if (!read_met_nc_2d(ncid, "u10", "U10", ctl, met, met->us, 1.0, 1))
+
4991 WARN("Cannot read surface zonal wind!");
+
4992
+
4993 /* Read meridional wind at the surface... */
+
4994 if (!read_met_nc_2d(ncid, "v10", "V10", ctl, met, met->vs, 1.0, 1))
+
4995 WARN("Cannot read surface meridional wind!");
+
4996
+
4997 /* Read land-sea mask... */
+
4998 if (!read_met_nc_2d(ncid, "lsm", "LSM", ctl, met, met->lsm, 1.0, 1))
+
4999 WARN("Cannot read land-sea mask!");
+
5000
+
5001 /* Read sea surface temperature... */
+
5002 if (!read_met_nc_2d(ncid, "sstk", "SSTK", ctl, met, met->sst, 1.0, 1))
+
5003 WARN("Cannot read sea surface temperature!");
+
5004 }
+
5005}
+
int read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init)
Read and convert 2D variable from meteo data file.
Definition: libtrac.c:4249
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ read_met_tropo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_tropo (ctl_tctl,
clim_tclim,
met_tmet 
)
+
+ +

Calculate tropopause data.

+ +

Definition at line 5009 of file libtrac.c.

+
5012 {
+
5013
+
5014 double p2[200], pv[EP], pv2[200], t[EP], t2[200], th[EP],
+
5015 th2[200], z[EP], z2[200];
+
5016
+
5017 /* Set timer... */
+
5018 SELECT_TIMER("READ_MET_TROPO", "METPROC", NVTX_READ);
+
5019 LOG(2, "Calculate tropopause...");
+
5020
+
5021 /* Get altitude and pressure profiles... */
+
5022#pragma omp parallel for default(shared)
+
5023 for (int iz = 0; iz < met->np; iz++)
+
5024 z[iz] = Z(met->p[iz]);
+
5025#pragma omp parallel for default(shared)
+
5026 for (int iz = 0; iz <= 190; iz++) {
+
5027 z2[iz] = 4.5 + 0.1 * iz;
+
5028 p2[iz] = P(z2[iz]);
+
5029 }
+
5030
+
5031 /* Do not calculate tropopause... */
+
5032 if (ctl->met_tropo == 0)
+
5033#pragma omp parallel for default(shared) collapse(2)
+
5034 for (int ix = 0; ix < met->nx; ix++)
+
5035 for (int iy = 0; iy < met->ny; iy++)
+
5036 met->pt[ix][iy] = GSL_NAN;
+
5037
+
5038 /* Use tropopause climatology... */
+
5039 else if (ctl->met_tropo == 1) {
+
5040#pragma omp parallel for default(shared) collapse(2)
+
5041 for (int ix = 0; ix < met->nx; ix++)
+
5042 for (int iy = 0; iy < met->ny; iy++)
+
5043 met->pt[ix][iy] = (float) clim_tropo(clim, met->time, met->lat[iy]);
+
5044 }
+
5045
+
5046 /* Use cold point... */
+
5047 else if (ctl->met_tropo == 2) {
+
5048
+
5049 /* Loop over grid points... */
+
5050#pragma omp parallel for default(shared) private(t,t2) collapse(2)
+
5051 for (int ix = 0; ix < met->nx; ix++)
+
5052 for (int iy = 0; iy < met->ny; iy++) {
+
5053
+
5054 /* Interpolate temperature profile... */
+
5055 for (int iz = 0; iz < met->np; iz++)
+
5056 t[iz] = met->t[ix][iy][iz];
+
5057 spline(z, t, met->np, z2, t2, 171, ctl->met_tropo_spline);
+
5058
+
5059 /* Find minimum... */
+
5060 int iz = (int) gsl_stats_min_index(t2, 1, 171);
+
5061 if (iz > 0 && iz < 170)
+
5062 met->pt[ix][iy] = (float) p2[iz];
+
5063 else
+
5064 met->pt[ix][iy] = GSL_NAN;
+
5065 }
+
5066 }
+
5067
+
5068 /* Use WMO definition... */
+
5069 else if (ctl->met_tropo == 3 || ctl->met_tropo == 4) {
+
5070
+
5071 /* Loop over grid points... */
+
5072#pragma omp parallel for default(shared) private(t,t2) collapse(2)
+
5073 for (int ix = 0; ix < met->nx; ix++)
+
5074 for (int iy = 0; iy < met->ny; iy++) {
+
5075
+
5076 /* Interpolate temperature profile... */
+
5077 int iz;
+
5078 for (iz = 0; iz < met->np; iz++)
+
5079 t[iz] = met->t[ix][iy][iz];
+
5080 spline(z, t, met->np, z2, t2, 191, ctl->met_tropo_spline);
+
5081
+
5082 /* Find 1st tropopause... */
+
5083 met->pt[ix][iy] = GSL_NAN;
+
5084 for (iz = 0; iz <= 170; iz++) {
+
5085 int found = 1;
+
5086 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev; iz2++)
+
5087 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) >
+
5088 ctl->met_tropo_lapse) {
+
5089 found = 0;
+
5090 break;
+
5091 }
+
5092 if (found) {
+
5093 if (iz > 0 && iz < 170)
+
5094 met->pt[ix][iy] = (float) p2[iz];
+
5095 break;
+
5096 }
+
5097 }
+
5098
+
5099 /* Find 2nd tropopause... */
+
5100 if (ctl->met_tropo == 4) {
+
5101 met->pt[ix][iy] = GSL_NAN;
+
5102 for (; iz <= 170; iz++) {
+
5103 int found = 1;
+
5104 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev_sep; iz2++)
+
5105 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) <
+
5106 ctl->met_tropo_lapse_sep) {
+
5107 found = 0;
+
5108 break;
+
5109 }
+
5110 if (found)
+
5111 break;
+
5112 }
+
5113 for (; iz <= 170; iz++) {
+
5114 int found = 1;
+
5115 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev; iz2++)
+
5116 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) >
+
5117 ctl->met_tropo_lapse) {
+
5118 found = 0;
+
5119 break;
+
5120 }
+
5121 if (found) {
+
5122 if (iz > 0 && iz < 170)
+
5123 met->pt[ix][iy] = (float) p2[iz];
+
5124 break;
+
5125 }
+
5126 }
+
5127 }
+
5128 }
+
5129 }
+
5130
+
5131 /* Use dynamical tropopause... */
+
5132 else if (ctl->met_tropo == 5) {
+
5133
+
5134 /* Loop over grid points... */
+
5135#pragma omp parallel for default(shared) private(pv,pv2,th,th2) collapse(2)
+
5136 for (int ix = 0; ix < met->nx; ix++)
+
5137 for (int iy = 0; iy < met->ny; iy++) {
+
5138
+
5139 /* Interpolate potential vorticity profile... */
+
5140 for (int iz = 0; iz < met->np; iz++)
+
5141 pv[iz] = met->pv[ix][iy][iz];
+
5142 spline(z, pv, met->np, z2, pv2, 171, ctl->met_tropo_spline);
+
5143
+
5144 /* Interpolate potential temperature profile... */
+
5145 for (int iz = 0; iz < met->np; iz++)
+
5146 th[iz] = THETA(met->p[iz], met->t[ix][iy][iz]);
+
5147 spline(z, th, met->np, z2, th2, 171, ctl->met_tropo_spline);
+
5148
+
5149 /* Find dynamical tropopause... */
+
5150 met->pt[ix][iy] = GSL_NAN;
+
5151 for (int iz = 0; iz <= 170; iz++)
+
5152 if (fabs(pv2[iz]) >= ctl->met_tropo_pv
+
5153 || th2[iz] >= ctl->met_tropo_theta) {
+
5154 if (iz > 0 && iz < 170)
+
5155 met->pt[ix][iy] = (float) p2[iz];
+
5156 break;
+
5157 }
+
5158 }
+
5159 }
+
5160
+
5161 else
+
5162 ERRMSG("Cannot calculate tropopause!");
+
5163
+
5164 /* Interpolate temperature, geopotential height, and water vapor vmr... */
+
5165#pragma omp parallel for default(shared) collapse(2)
+
5166 for (int ix = 0; ix < met->nx; ix++)
+
5167 for (int iy = 0; iy < met->ny; iy++) {
+
5168 double h2ot, tt, zt;
+ +
5170 intpol_met_space_3d(met, met->t, met->pt[ix][iy], met->lon[ix],
+
5171 met->lat[iy], &tt, ci, cw, 1);
+
5172 intpol_met_space_3d(met, met->z, met->pt[ix][iy], met->lon[ix],
+
5173 met->lat[iy], &zt, ci, cw, 0);
+
5174 intpol_met_space_3d(met, met->h2o, met->pt[ix][iy], met->lon[ix],
+
5175 met->lat[iy], &h2ot, ci, cw, 0);
+
5176 met->tt[ix][iy] = (float) tt;
+
5177 met->zt[ix][iy] = (float) zt;
+
5178 met->h2ot[ix][iy] = (float) h2ot;
+
5179 }
+
5180}
+
void spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
Spline interpolation.
Definition: libtrac.c:5338
+
#define LAPSE(p1, t1, p2, t2)
Calculate lapse rate between pressure levels.
Definition: libtrac.h:416
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ read_obs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_obs (char * filename,
double * rt,
double * rz,
double * rlon,
double * rlat,
double * robs,
int * nobs 
)
+
+ +

Read observation data.

+ +

Definition at line 5184 of file libtrac.c.

+
5191 {
+
5192
+
5193 /* Open observation data file... */
+
5194 FILE *in;
+
5195 LOG(1, "Read observation data: %s", filename);
+
5196 if (!(in = fopen(filename, "r")))
+
5197 ERRMSG("Cannot open file!");
+
5198
+
5199 /* Read observations... */
+
5200 char line[LEN];
+
5201 while (fgets(line, LEN, in))
+
5202 if (sscanf(line, "%lg %lg %lg %lg %lg", &rt[*nobs], &rz[*nobs],
+
5203 &rlon[*nobs], &rlat[*nobs], &robs[*nobs]) == 5)
+
5204 if ((++(*nobs)) >= NOBS)
+
5205 ERRMSG("Too many observations!");
+
5206
+
5207 /* Close observation data file... */
+
5208 fclose(in);
+
5209
+
5210 /* Check time... */
+
5211 for (int i = 1; i < *nobs; i++)
+
5212 if (rt[i] < rt[i - 1])
+
5213 ERRMSG("Time must be ascending!");
+
5214
+
5215 /* Write info... */
+
5216 int n = *nobs;
+
5217 double mini, maxi;
+
5218 LOG(2, "Number of observations: %d", *nobs);
+
5219 gsl_stats_minmax(&mini, &maxi, rt, 1, (size_t) n);
+
5220 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
5221 gsl_stats_minmax(&mini, &maxi, rz, 1, (size_t) n);
+
5222 LOG(2, "Altitude range: %g ... %g km", mini, maxi);
+
5223 gsl_stats_minmax(&mini, &maxi, rlon, 1, (size_t) n);
+
5224 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
5225 gsl_stats_minmax(&mini, &maxi, rlat, 1, (size_t) n);
+
5226 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
5227 gsl_stats_minmax(&mini, &maxi, robs, 1, (size_t) n);
+
5228 LOG(2, "Observation range: %g ... %g", mini, maxi);
+
5229}
+
#define NOBS
Maximum number of observation data points.
Definition: libtrac.h:202
+
+
+
+ +

◆ scan_ctl()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double scan_ctl (const char * filename,
int argc,
char * argv[],
const char * varname,
int arridx,
const char * defvalue,
char * value 
)
+
+ +

Read a control parameter from file or command line.

+ +

Definition at line 5233 of file libtrac.c.

+
5240 {
+
5241
+
5242 FILE *in = NULL;
+
5243
+
5244 char fullname1[LEN], fullname2[LEN], rval[LEN];
+
5245
+
5246 int contain = 0, i;
+
5247
+
5248 /* Open file... */
+
5249 if (filename[strlen(filename) - 1] != '-')
+
5250 if (!(in = fopen(filename, "r")))
+
5251 ERRMSG("Cannot open file!");
+
5252
+
5253 /* Set full variable name... */
+
5254 if (arridx >= 0) {
+
5255 sprintf(fullname1, "%s[%d]", varname, arridx);
+
5256 sprintf(fullname2, "%s[*]", varname);
+
5257 } else {
+
5258 sprintf(fullname1, "%s", varname);
+
5259 sprintf(fullname2, "%s", varname);
+
5260 }
+
5261
+
5262 /* Read data... */
+
5263 if (in != NULL) {
+
5264 char dummy[LEN], line[LEN], rvarname[LEN];
+
5265 while (fgets(line, LEN, in)) {
+
5266 if (sscanf(line, "%4999s %4999s %4999s", rvarname, dummy, rval) == 3)
+
5267 if (strcasecmp(rvarname, fullname1) == 0 ||
+
5268 strcasecmp(rvarname, fullname2) == 0) {
+
5269 contain = 1;
+
5270 break;
+
5271 }
+
5272 }
+
5273 }
+
5274 for (i = 1; i < argc - 1; i++)
+
5275 if (strcasecmp(argv[i], fullname1) == 0 ||
+
5276 strcasecmp(argv[i], fullname2) == 0) {
+
5277 sprintf(rval, "%s", argv[i + 1]);
+
5278 contain = 1;
+
5279 break;
+
5280 }
+
5281
+
5282 /* Close file... */
+
5283 if (in != NULL)
+
5284 fclose(in);
+
5285
+
5286 /* Check for missing variables... */
+
5287 if (!contain) {
+
5288 if (strlen(defvalue) > 0)
+
5289 sprintf(rval, "%s", defvalue);
+
5290 else
+
5291 ERRMSG("Missing variable %s!\n", fullname1);
+
5292 }
+
5293
+
5294 /* Write info... */
+
5295 LOG(1, "%s = %s", fullname1, rval);
+
5296
+
5297 /* Return values... */
+
5298 if (value != NULL)
+
5299 sprintf(value, "%s", rval);
+
5300 return atof(rval);
+
5301}
+
+
+
+ +

◆ sedi()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double sedi (const double p,
const double T,
const double rp,
const double rhop 
)
+
+ +

Calculate sedimentation velocity.

+ +

Definition at line 5305 of file libtrac.c.

+
5309 {
+
5310
+
5311 /* Convert particle radius from microns to m... */
+
5312 double rp_help = rp * 1e-6;
+
5313
+
5314 /* Density of dry air [kg / m^3]... */
+
5315 double rho = RHO(p, T);
+
5316
+
5317 /* Dynamic viscosity of air [kg / (m s)]... */
+
5318 double eta = 1.8325e-5 * (416.16 / (T + 120.)) * pow(T / 296.16, 1.5);
+
5319
+
5320 /* Thermal velocity of an air molecule [m / s]... */
+
5321 double v = sqrt(8. * KB * T / (M_PI * 4.8096e-26));
+
5322
+
5323 /* Mean free path of an air molecule [m]... */
+
5324 double lambda = 2. * eta / (rho * v);
+
5325
+
5326 /* Knudsen number for air (dimensionless)... */
+
5327 double K = lambda / rp_help;
+
5328
+
5329 /* Cunningham slip-flow correction (dimensionless)... */
+
5330 double G = 1. + K * (1.249 + 0.42 * exp(-0.87 / K));
+
5331
+
5332 /* Sedimentation velocity [m / s]... */
+
5333 return 2. * SQR(rp_help) * (rhop - rho) * G0 / (9. * eta) * G;
+
5334}
+
#define KB
Boltzmann constant [kg m^2/(K s^2)].
Definition: libtrac.h:113
+
#define RHO(p, t)
Compute density of air.
Definition: libtrac.h:596
+
+
+
+ +

◆ spline()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void spline (const double * x,
const double * y,
const int n,
const double * x2,
double * y2,
const int n2,
const int method 
)
+
+ +

Spline interpolation.

+ +

Definition at line 5338 of file libtrac.c.

+
5345 {
+
5346
+
5347 /* Cubic spline interpolation... */
+
5348 if (method == 1) {
+
5349
+
5350 /* Allocate... */
+
5351 gsl_interp_accel *acc;
+
5352 gsl_spline *s;
+
5353 acc = gsl_interp_accel_alloc();
+
5354 s = gsl_spline_alloc(gsl_interp_cspline, (size_t) n);
+
5355
+
5356 /* Interpolate profile... */
+
5357 gsl_spline_init(s, x, y, (size_t) n);
+
5358 for (int i = 0; i < n2; i++)
+
5359 if (x2[i] <= x[0])
+
5360 y2[i] = y[0];
+
5361 else if (x2[i] >= x[n - 1])
+
5362 y2[i] = y[n - 1];
+
5363 else
+
5364 y2[i] = gsl_spline_eval(s, x2[i], acc);
+
5365
+
5366 /* Free... */
+
5367 gsl_spline_free(s);
+
5368 gsl_interp_accel_free(acc);
+
5369 }
+
5370
+
5371 /* Linear interpolation... */
+
5372 else {
+
5373 for (int i = 0; i < n2; i++)
+
5374 if (x2[i] <= x[0])
+
5375 y2[i] = y[0];
+
5376 else if (x2[i] >= x[n - 1])
+
5377 y2[i] = y[n - 1];
+
5378 else {
+
5379 int idx = locate_irr(x, n, x2[i]);
+
5380 y2[i] = LIN(x[idx], y[idx], x[idx + 1], y[idx + 1], x2[i]);
+
5381 }
+
5382 }
+
5383}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ stddev()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float stddev (const float * data,
const int n 
)
+
+ +

Calculate standard deviation.

+ +

Definition at line 5387 of file libtrac.c.

+
5389 {
+
5390
+
5391 if (n <= 0)
+
5392 return 0;
+
5393
+
5394 float mean = 0, var = 0;
+
5395
+
5396 for (int i = 0; i < n; ++i) {
+
5397 mean += data[i];
+
5398 var += SQR(data[i]);
+
5399 }
+
5400
+
5401 var = var / (float) n - SQR(mean / (float) n);
+
5402
+
5403 return (var > 0 ? sqrtf(var) : 0);
+
5404}
+
+
+
+ +

◆ sza_calc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double sza_calc (const double sec,
const double lon,
const double lat 
)
+
+ +

Calculate solar zenith angle.

+ +

Definition at line 5408 of file libtrac.c.

+
5411 {
+
5412
+
5413 /* Number of days and fraction with respect to 2000-01-01T12:00Z... */
+
5414 const double D = sec / 86400 - 0.5;
+
5415
+
5416 /* Geocentric apparent ecliptic longitude [rad]... */
+
5417 const double g = (357.529 + 0.98560028 * D) * M_PI / 180;
+
5418 const double q = 280.459 + 0.98564736 * D;
+
5419 const double L = (q + 1.915 * sin(g) + 0.020 * sin(2 * g)) * M_PI / 180;
+
5420
+
5421 /* Mean obliquity of the ecliptic [rad]... */
+
5422 const double e = (23.439 - 0.00000036 * D) * M_PI / 180;
+
5423
+
5424 /* Declination [rad]... */
+
5425 const double sindec = sin(e) * sin(L);
+
5426
+
5427 /* Right ascension [rad]... */
+
5428 const double ra = atan2(cos(e) * sin(L), cos(L));
+
5429
+
5430 /* Greenwich Mean Sidereal Time [h]... */
+
5431 const double GMST = 18.697374558 + 24.06570982441908 * D;
+
5432
+
5433 /* Local Sidereal Time [h]... */
+
5434 const double LST = GMST + lon / 15;
+
5435
+
5436 /* Hour angle [rad]... */
+
5437 const double h = LST / 12 * M_PI - ra;
+
5438
+
5439 /* Convert latitude... */
+
5440 const double lat_help = lat * M_PI / 180;
+
5441
+
5442 /* Return solar zenith angle [rad]... */
+
5443 return acos(sin(lat_help) * sindec +
+
5444 cos(lat_help) * sqrt(1 - SQR(sindec)) * cos(h));
+
5445}
+
+
+
+ +

◆ time2jsec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void time2jsec (const int year,
const int mon,
const int day,
const int hour,
const int min,
const int sec,
const double remain,
double * jsec 
)
+
+ +

Convert date to seconds.

+ +

Definition at line 5449 of file libtrac.c.

+
5457 {
+
5458
+
5459 struct tm t0, t1;
+
5460
+
5461 t0.tm_year = 100;
+
5462 t0.tm_mon = 0;
+
5463 t0.tm_mday = 1;
+
5464 t0.tm_hour = 0;
+
5465 t0.tm_min = 0;
+
5466 t0.tm_sec = 0;
+
5467
+
5468 t1.tm_year = year - 1900;
+
5469 t1.tm_mon = mon - 1;
+
5470 t1.tm_mday = day;
+
5471 t1.tm_hour = hour;
+
5472 t1.tm_min = min;
+
5473 t1.tm_sec = sec;
+
5474
+
5475 *jsec = (double) timegm(&t1) - (double) timegm(&t0) + remain;
+
5476}
+
+
+
+ +

◆ timer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void timer (const char * name,
const char * group,
int output 
)
+
+ +

Measure wall-clock time.

+ +

Definition at line 5480 of file libtrac.c.

+
5483 {
+
5484
+
5485 static char names[NTIMER][100], groups[NTIMER][100];
+
5486
+
5487 static double rt_name[NTIMER], rt_group[NTIMER],
+
5488 rt_min[NTIMER], rt_max[NTIMER], dt, t0, t1;
+
5489
+
5490 static int iname = -1, igroup = -1, nname, ngroup, ct_name[NTIMER];
+
5491
+
5492 /* Get time... */
+
5493 t1 = omp_get_wtime();
+
5494 dt = t1 - t0;
+
5495
+
5496 /* Add elapsed time to current timers... */
+
5497 if (iname >= 0) {
+
5498 rt_name[iname] += dt;
+
5499 rt_min[iname] = (ct_name[iname] <= 0 ? dt : GSL_MIN(rt_min[iname], dt));
+
5500 rt_max[iname] = (ct_name[iname] <= 0 ? dt : GSL_MAX(rt_max[iname], dt));
+
5501 ct_name[iname]++;
+
5502 }
+
5503 if (igroup >= 0)
+
5504 rt_group[igroup] += t1 - t0;
+
5505
+
5506 /* Report timers... */
+
5507 if (output) {
+
5508 for (int i = 0; i < nname; i++)
+
5509 LOG(1, "TIMER_%s = %.3f s (min= %g s, mean= %g s,"
+
5510 " max= %g s, n= %d)", names[i], rt_name[i], rt_min[i],
+
5511 rt_name[i] / ct_name[i], rt_max[i], ct_name[i]);
+
5512 for (int i = 0; i < ngroup; i++)
+
5513 LOG(1, "TIMER_GROUP_%s = %.3f s", groups[i], rt_group[i]);
+
5514 double total = 0.0;
+
5515 for (int i = 0; i < nname; i++)
+
5516 total += rt_name[i];
+
5517 LOG(1, "TIMER_TOTAL = %.3f s", total);
+
5518 }
+
5519
+
5520 /* Identify IDs of next timer... */
+
5521 for (iname = 0; iname < nname; iname++)
+
5522 if (strcasecmp(name, names[iname]) == 0)
+
5523 break;
+
5524 for (igroup = 0; igroup < ngroup; igroup++)
+
5525 if (strcasecmp(group, groups[igroup]) == 0)
+
5526 break;
+
5527
+
5528 /* Check whether this is a new timer... */
+
5529 if (iname >= nname) {
+
5530 sprintf(names[iname], "%s", name);
+
5531 if ((++nname) > NTIMER)
+
5532 ERRMSG("Too many timers!");
+
5533 }
+
5534
+
5535 /* Check whether this is a new group... */
+
5536 if (igroup >= ngroup) {
+
5537 sprintf(groups[igroup], "%s", group);
+
5538 if ((++ngroup) > NTIMER)
+
5539 ERRMSG("Too many groups!");
+
5540 }
+
5541
+
5542 /* Save starting time... */
+
5543 t0 = t1;
+
5544}
+
#define NTIMER
Maximum number of timers.
Definition: libtrac.h:714
+
+
+
+ +

◆ time_from_filename()

+ +
+
+ + + + + + + + + + + + + + + + + + +
double time_from_filename (const char * filename,
int offset 
)
+
+ +

Extract time information from filename.

+ +

Definition at line 5548 of file libtrac.c.

+
5550 {
+
5551
+
5552 char tstr[10];
+
5553
+
5554 double t;
+
5555
+
5556 /* Get time from filename... */
+
5557 int len = (int) strlen(filename);
+
5558 sprintf(tstr, "%.4s", &filename[len - offset]);
+
5559 int year = atoi(tstr);
+
5560 sprintf(tstr, "%.2s", &filename[len - offset + 5]);
+
5561 int mon = atoi(tstr);
+
5562 sprintf(tstr, "%.2s", &filename[len - offset + 8]);
+
5563 int day = atoi(tstr);
+
5564 sprintf(tstr, "%.2s", &filename[len - offset + 11]);
+
5565 int hour = atoi(tstr);
+
5566 sprintf(tstr, "%.2s", &filename[len - offset + 14]);
+
5567 int min = atoi(tstr);
+
5568
+
5569 /* Check time... */
+
5570 if (year < 1900 || year > 2100 || mon < 1 || mon > 12 || day < 1
+
5571 || day > 31 || hour < 0 || hour > 23 || min < 0 || min > 59)
+
5572 ERRMSG("Cannot read time from filename!");
+
5573
+
5574 /* Convert time to Julian seconds... */
+
5575 time2jsec(year, mon, day, hour, min, 0, 0.0, &t);
+
5576
+
5577 /* Return time... */
+
5578 return t;
+
5579}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ tropo_weight()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double tropo_weight (const clim_tclim,
const double t,
const double lat,
const double p 
)
+
+ +

Get weighting factor based on tropopause distance.

+ +

Definition at line 5583 of file libtrac.c.

+
5587 {
+
5588
+
5589 /* Get tropopause pressure... */
+
5590 double pt = clim_tropo(clim, t, lat);
+
5591
+
5592 /* Get pressure range... */
+
5593 double p1 = pt * 0.866877899;
+
5594 double p0 = pt / 0.866877899;
+
5595
+
5596 /* Get weighting factor... */
+
5597 if (p > p0)
+
5598 return 1;
+
5599 else if (p < p1)
+
5600 return 0;
+
5601 else
+
5602 return LIN(p0, 1.0, p1, 0.0, p);
+
5603}
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ write_atm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write atmospheric data.

+ +

Definition at line 5607 of file libtrac.c.

+
5611 {
+
5612
+
5613 /* Set timer... */
+
5614 SELECT_TIMER("WRITE_ATM", "OUTPUT", NVTX_WRITE);
+
5615
+
5616 /* Write info... */
+
5617 LOG(1, "Write atmospheric data: %s", filename);
+
5618
+
5619 /* Write ASCII data... */
+
5620 if (ctl->atm_type_out == 0)
+
5621 write_atm_asc(filename, ctl, atm, t);
+
5622
+
5623 /* Write binary data... */
+
5624 else if (ctl->atm_type_out == 1)
+
5625 write_atm_bin(filename, ctl, atm);
+
5626
+
5627 /* Write netCDF data... */
+
5628 else if (ctl->atm_type_out == 2)
+
5629 write_atm_nc(filename, ctl, atm);
+
5630
+
5631 /* Write CLaMS trajectory data... */
+
5632 else if (ctl->atm_type_out == 3)
+
5633 write_atm_clams_traj(filename, ctl, atm, t);
+
5634
+
5635 /* Write CLaMS pos data... */
+
5636 else if (ctl->atm_type_out == 4)
+
5637 write_atm_clams(filename, ctl, atm);
+
5638
+
5639 /* Error... */
+
5640 else
+
5641 ERRMSG("Atmospheric data type not supported!");
+
5642
+
5643 /* Write info... */
+
5644 double mini, maxi;
+
5645 LOG(2, "Number of particles: %d", atm->np);
+
5646 gsl_stats_minmax(&mini, &maxi, atm->time, 1, (size_t) atm->np);
+
5647 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
5648 gsl_stats_minmax(&mini, &maxi, atm->p, 1, (size_t) atm->np);
+
5649 LOG(2, "Altitude range: %g ... %g km", Z(maxi), Z(mini));
+
5650 LOG(2, "Pressure range: %g ... %g hPa", maxi, mini);
+
5651 gsl_stats_minmax(&mini, &maxi, atm->lon, 1, (size_t) atm->np);
+
5652 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
5653 gsl_stats_minmax(&mini, &maxi, atm->lat, 1, (size_t) atm->np);
+
5654 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
5655 for (int iq = 0; iq < ctl->nq; iq++) {
+
5656 char msg[LEN];
+
5657 sprintf(msg, "Quantity %s range: %s ... %s %s",
+
5658 ctl->qnt_name[iq], ctl->qnt_format[iq],
+
5659 ctl->qnt_format[iq], ctl->qnt_unit[iq]);
+
5660 gsl_stats_minmax(&mini, &maxi, atm->q[iq], 1, (size_t) atm->np);
+
5661 LOG(2, msg, mini, maxi);
+
5662 }
+
5663}
+
void write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in ASCII format.
Definition: libtrac.c:5667
+
void write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in CLaMS position file and trajectory format.
Definition: libtrac.c:5799
+
void write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in CLaMS position file format.
Definition: libtrac.c:5950
+
void write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in binary format.
Definition: libtrac.c:5749
+
void write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in netCDF format.
Definition: libtrac.c:6004
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + +
+ +
+
+ +

◆ write_atm_asc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_asc (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write atmospheric data in ASCII format.

+ +

Definition at line 5667 of file libtrac.c.

+
5671 {
+
5672
+
5673 FILE *out;
+
5674
+
5675 /* Set time interval for output... */
+
5676 double t0 = t - 0.5 * ctl->dt_mod;
+
5677 double t1 = t + 0.5 * ctl->dt_mod;
+
5678
+
5679 /* Check if gnuplot output is requested... */
+
5680 if (ctl->atm_gpfile[0] != '-') {
+
5681
+
5682 /* Create gnuplot pipe... */
+
5683 if (!(out = popen("gnuplot", "w")))
+
5684 ERRMSG("Cannot create pipe to gnuplot!");
+
5685
+
5686 /* Set plot filename... */
+
5687 fprintf(out, "set out \"%s.png\"\n", filename);
+
5688
+
5689 /* Set time string... */
+
5690 double r;
+
5691 int year, mon, day, hour, min, sec;
+
5692 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
5693 fprintf(out, "timestr=\"%d-%02d-%02d, %02d:%02d UTC\"\n",
+
5694 year, mon, day, hour, min);
+
5695
+
5696 /* Dump gnuplot file to pipe... */
+
5697 FILE *in;
+
5698 if (!(in = fopen(ctl->atm_gpfile, "r")))
+
5699 ERRMSG("Cannot open file!");
+
5700 char line[LEN];
+
5701 while (fgets(line, LEN, in))
+
5702 fprintf(out, "%s", line);
+
5703 fclose(in);
+
5704 }
+
5705
+
5706 else {
+
5707
+
5708 /* Create file... */
+
5709 if (!(out = fopen(filename, "w")))
+
5710 ERRMSG("Cannot create file!");
+
5711 }
+
5712
+
5713 /* Write header... */
+
5714 fprintf(out,
+
5715 "# $1 = time [s]\n"
+
5716 "# $2 = altitude [km]\n"
+
5717 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
5718 for (int iq = 0; iq < ctl->nq; iq++)
+
5719 fprintf(out, "# $%i = %s [%s]\n", iq + 5, ctl->qnt_name[iq],
+
5720 ctl->qnt_unit[iq]);
+
5721 fprintf(out, "\n");
+
5722
+
5723 /* Write data... */
+
5724 for (int ip = 0; ip < atm->np; ip += ctl->atm_stride) {
+
5725
+
5726 /* Check time... */
+
5727 if (ctl->atm_filter == 2 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
5728 continue;
+
5729
+
5730 /* Write output... */
+
5731 fprintf(out, "%.2f %g %g %g", atm->time[ip], Z(atm->p[ip]),
+
5732 atm->lon[ip], atm->lat[ip]);
+
5733 for (int iq = 0; iq < ctl->nq; iq++) {
+
5734 fprintf(out, " ");
+
5735 if (ctl->atm_filter == 1 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
5736 fprintf(out, ctl->qnt_format[iq], GSL_NAN);
+
5737 else
+
5738 fprintf(out, ctl->qnt_format[iq], atm->q[iq][ip]);
+
5739 }
+
5740 fprintf(out, "\n");
+
5741 }
+
5742
+
5743 /* Close file... */
+
5744 fclose(out);
+
5745}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_atm_bin()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_bin (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Write atmospheric data in binary format.

+ +

Definition at line 5749 of file libtrac.c.

+
5752 {
+
5753
+
5754 FILE *out;
+
5755
+
5756 /* Create file... */
+
5757 if (!(out = fopen(filename, "w")))
+
5758 ERRMSG("Cannot create file!");
+
5759
+
5760 /* Write version of binary data... */
+
5761 int version = 100;
+
5762 FWRITE(&version, int,
+
5763 1,
+
5764 out);
+
5765
+
5766 /* Write data... */
+
5767 FWRITE(&atm->np, int,
+
5768 1,
+
5769 out);
+
5770 FWRITE(atm->time, double,
+
5771 (size_t) atm->np,
+
5772 out);
+
5773 FWRITE(atm->p, double,
+
5774 (size_t) atm->np,
+
5775 out);
+
5776 FWRITE(atm->lon, double,
+
5777 (size_t) atm->np,
+
5778 out);
+
5779 FWRITE(atm->lat, double,
+
5780 (size_t) atm->np,
+
5781 out);
+
5782 for (int iq = 0; iq < ctl->nq; iq++)
+
5783 FWRITE(atm->q[iq], double,
+
5784 (size_t) atm->np,
+
5785 out);
+
5786
+
5787 /* Write final flag... */
+
5788 int final = 999;
+
5789 FWRITE(&final, int,
+
5790 1,
+
5791 out);
+
5792
+
5793 /* Close file... */
+
5794 fclose(out);
+
5795}
+
+
+
+ +

◆ write_atm_clams_traj()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_clams_traj (const char * dirname,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write atmospheric data in CLaMS position file and trajectory format.

+ +

Definition at line 5799 of file libtrac.c.

+
5803 {
+
5804
+
5805 /* Global Counter... */
+
5806 static size_t out_cnt = 0;
+
5807
+
5808 double r, r_start, r_stop;
+
5809 int year, mon, day, hour, min, sec;
+
5810 int year_start, mon_start, day_start, hour_start, min_start, sec_start;
+
5811 int year_stop, mon_stop, day_stop, hour_stop, min_stop, sec_stop;
+
5812 char filename_out[2 * LEN] = "traj_fix_3d_YYYYMMDDHH_YYYYMMDDHH.nc";
+
5813
+
5814 int ncid, varid, tid, pid, cid;
+
5815 int dim_ids[2];
+
5816
+
5817 /* time, nparc */
+
5818 size_t start[2];
+
5819 size_t count[2];
+
5820
+
5821 /* Determine start and stop times of calculation... */
+
5822 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
5823 jsec2time(ctl->t_start, &year_start, &mon_start, &day_start, &hour_start,
+
5824 &min_start, &sec_start, &r_start);
+
5825 jsec2time(ctl->t_stop, &year_stop, &mon_stop, &day_stop, &hour_stop,
+
5826 &min_stop, &sec_stop, &r_stop);
+
5827
+
5828 sprintf(filename_out, "%s/traj_fix_3d_%02d%02d%02d%02d_%02d%02d%02d%02d.nc",
+
5829 dirname,
+
5830 year_start % 100, mon_start, day_start, hour_start,
+
5831 year_stop % 100, mon_stop, day_stop, hour_stop);
+
5832 LOG(1, "Write traj file: %s", filename_out);
+
5833
+
5834 /* Define hyperslap for the traj_file... */
+
5835 start[0] = out_cnt;
+
5836 start[1] = 0;
+
5837 count[0] = 1;
+
5838 count[1] = (size_t) atm->np;
+
5839
+
5840 /* Create the file at the first timestep... */
+
5841 if (out_cnt == 0) {
+
5842
+
5843 /* Create file... */
+
5844 nc_create(filename_out, NC_CLOBBER, &ncid);
+
5845
+
5846 /* Define dimensions... */
+
5847 NC(nc_def_dim(ncid, "time", NC_UNLIMITED, &tid));
+
5848 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5849 NC(nc_def_dim(ncid, "TMDT", 7, &cid));
+
5850 dim_ids[0] = tid;
+
5851 dim_ids[1] = pid;
+
5852
+
5853 /* Define variables and their attributes... */
+
5854 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5855 "seconds since 2000-01-01 00:00:00 UTC");
+
5856 NC_DEF_VAR("LAT", NC_DOUBLE, 2, dim_ids, "Latitude", "deg");
+
5857 NC_DEF_VAR("LON", NC_DOUBLE, 2, dim_ids, "Longitude", "deg");
+
5858 NC_DEF_VAR("PRESS", NC_DOUBLE, 2, dim_ids, "Pressure", "hPa");
+
5859 NC_DEF_VAR("ZETA", NC_DOUBLE, 2, dim_ids, "Zeta", "K");
+
5860 for (int iq = 0; iq < ctl->nq; iq++)
+
5861 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5862 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5863
+
5864 /* Define global attributes... */
+
5865 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5866 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5867
+
5868 /* End definitions... */
+
5869 NC(nc_enddef(ncid));
+
5870 NC(nc_close(ncid));
+
5871 }
+
5872
+
5873 /* Increment global counter to change hyperslap... */
+
5874 out_cnt++;
+
5875
+
5876 /* Open file... */
+
5877 NC(nc_open(filename_out, NC_WRITE, &ncid));
+
5878
+
5879 /* Write data... */
+
5880 NC_PUT_DOUBLE("time", atm->time, 1);
+
5881 NC_PUT_DOUBLE("LAT", atm->lat, 1);
+
5882 NC_PUT_DOUBLE("LON", atm->lon, 1);
+
5883 NC_PUT_DOUBLE("PRESS", atm->p, 1);
+
5884 if (ctl->vert_coord_ap == 1) {
+
5885 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta], 1);
+
5886 } else if (ctl->qnt_zeta >= 0) {
+
5887 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 1);
+
5888 }
+
5889 for (int iq = 0; iq < ctl->nq; iq++)
+
5890 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 1);
+
5891
+
5892 /* Close file... */
+
5893 NC(nc_close(ncid));
+
5894
+
5895 /* At the last time step create the init_fix_YYYYMMDDHH file... */
+
5896 if ((year == year_stop) && (mon == mon_stop)
+
5897 && (day == day_stop) && (hour == hour_stop)) {
+
5898
+
5899 /* Set filename... */
+
5900 char filename_init[2 * LEN] = "./init_fix_YYYYMMDDHH.nc";
+
5901 sprintf(filename_init, "%s/init_fix_%02d%02d%02d%02d.nc",
+
5902 dirname, year_stop % 100, mon_stop, day_stop, hour_stop);
+
5903 LOG(1, "Write init file: %s", filename_init);
+
5904
+
5905 /* Create file... */
+
5906 nc_create(filename_init, NC_CLOBBER, &ncid);
+
5907
+
5908 /* Define dimensions... */
+
5909 NC(nc_def_dim(ncid, "time", 1, &tid));
+
5910 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5911 dim_ids[0] = tid;
+
5912 dim_ids[1] = pid;
+
5913
+
5914 /* Define variables and their attributes... */
+
5915 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5916 "seconds since 2000-01-01 00:00:00 UTC");
+
5917 NC_DEF_VAR("LAT", NC_DOUBLE, 1, &pid, "Latitude", "deg");
+
5918 NC_DEF_VAR("LON", NC_DOUBLE, 1, &pid, "Longitude", "deg");
+
5919 NC_DEF_VAR("PRESS", NC_DOUBLE, 1, &pid, "Pressure", "hPa");
+
5920 NC_DEF_VAR("ZETA", NC_DOUBLE, 1, &pid, "Zeta", "K");
+
5921 //NC_DEF_VAR("ZETA_GRID", NC_DOUBLE, 1, &zid, "levels", "K");
+
5922 //NC_DEF_VAR("ZETA_DELTA", NC_DOUBLE, 1, &zid, "Width of zeta levels", "K");
+
5923 for (int iq = 0; iq < ctl->nq; iq++)
+
5924 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5925 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5926
+
5927 /* Define global attributes... */
+
5928 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5929 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5930
+
5931 /* End definitions... */
+
5932 NC(nc_enddef(ncid));
+
5933
+
5934 /* Write data... */
+
5935 NC_PUT_DOUBLE("time", atm->time, 0);
+
5936 NC_PUT_DOUBLE("LAT", atm->lat, 0);
+
5937 NC_PUT_DOUBLE("LON", atm->lon, 0);
+
5938 NC_PUT_DOUBLE("PRESS", atm->p, 0);
+
5939 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 0);
+
5940 for (int iq = 0; iq < ctl->nq; iq++)
+
5941 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
5942
+
5943 /* Close file... */
+
5944 NC(nc_close(ncid));
+
5945 }
+
5946}
+
#define NC_PUT_ATT_GLOBAL(attname, text)
Set netCDF global attribute.
Definition: libtrac.h:549
+
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
Write netCDF double array.
Definition: libtrac.h:523
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_atm_clams()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_clams (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Write atmospheric data in CLaMS position file format.

+ +

Definition at line 5950 of file libtrac.c.

+
5953 {
+
5954
+
5955 int tid, pid, ncid, varid;
+
5956 size_t start[2], count[2];
+
5957
+
5958 /* Create file... */
+
5959 nc_create(filename, NC_CLOBBER, &ncid);
+
5960
+
5961 /* Define dimensions... */
+
5962 NC(nc_def_dim(ncid, "time", 1, &tid));
+
5963 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5964
+
5965 int dim_ids[2] = { tid, pid };
+
5966
+
5967 /* Define variables and their attributes... */
+
5968 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5969 "seconds since 2000-01-01 00:00:00 UTC");
+
5970 NC_DEF_VAR("LAT", NC_DOUBLE, 1, &pid, "Latitude", "deg");
+
5971 NC_DEF_VAR("LON", NC_DOUBLE, 1, &pid, "Longitude", "deg");
+
5972 NC_DEF_VAR("PRESS", NC_DOUBLE, 1, &pid, "Pressure", "hPa");
+
5973 NC_DEF_VAR("ZETA", NC_DOUBLE, 1, &pid, "Zeta", "K");
+
5974 //NC_DEF_VAR("ZETA_GRID", NC_DOUBLE, 1, &zid, "levels", "K");
+
5975 //NC_DEF_VAR("ZETA_DELTA", NC_DOUBLE, 1, &zid, "Width of zeta levels", "K");
+
5976 for (int iq = 0; iq < ctl->nq; iq++)
+
5977 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5978 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5979
+
5980 /* Define global attributes... */
+
5981 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5982 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5983
+
5984 /* End definitions... */
+
5985 NC(nc_enddef(ncid));
+
5986
+
5987 /* Write data... */
+
5988 NC_PUT_DOUBLE("time", atm->time, 0);
+
5989 NC_PUT_DOUBLE("LAT", atm->lat, 0);
+
5990 NC_PUT_DOUBLE("LON", atm->lon, 0);
+
5991 NC_PUT_DOUBLE("PRESS", atm->p, 0);
+
5992 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 0);
+
5993 for (int iq = 0; iq < ctl->nq; iq++)
+
5994 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
5995
+
5996 /* Close file... */
+
5997 NC(nc_close(ncid));
+
5998
+
5999}
+
+
+
+ +

◆ write_atm_nc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_nc (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Write atmospheric data in netCDF format.

+ +

Definition at line 6004 of file libtrac.c.

+
6007 {
+
6008
+
6009 int ncid, obsid, varid;
+
6010
+
6011 size_t start[2], count[2];
+
6012
+
6013 /* Create file... */
+
6014 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
6015
+
6016 /* Define dimensions... */
+
6017 NC(nc_def_dim(ncid, "obs", (size_t) atm->np, &obsid));
+
6018
+
6019 /* Define variables and their attributes... */
+
6020 NC_DEF_VAR("time", NC_DOUBLE, 1, &obsid, "time",
+
6021 "seconds since 2000-01-01 00:00:00 UTC");
+
6022 NC_DEF_VAR("press", NC_DOUBLE, 1, &obsid, "pressure", "hPa");
+
6023 NC_DEF_VAR("lon", NC_DOUBLE, 1, &obsid, "longitude", "degrees_east");
+
6024 NC_DEF_VAR("lat", NC_DOUBLE, 1, &obsid, "latitude", "degrees_north");
+
6025 for (int iq = 0; iq < ctl->nq; iq++)
+
6026 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 1, &obsid,
+
6027 ctl->qnt_longname[iq], ctl->qnt_unit[iq]);
+
6028
+
6029 /* Define global attributes... */
+
6030 NC_PUT_ATT_GLOBAL("featureType", "point");
+
6031
+
6032 /* End definitions... */
+
6033 NC(nc_enddef(ncid));
+
6034
+
6035 /* Write data... */
+
6036 NC_PUT_DOUBLE("time", atm->time, 0);
+
6037 NC_PUT_DOUBLE("press", atm->p, 0);
+
6038 NC_PUT_DOUBLE("lon", atm->lon, 0);
+
6039 NC_PUT_DOUBLE("lat", atm->lat, 0);
+
6040 for (int iq = 0; iq < ctl->nq; iq++)
+
6041 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
6042
+
6043 /* Close file... */
+
6044 NC(nc_close(ncid));
+
6045}
+
+
+
+ +

◆ write_csi()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_csi (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write CSI data.

+ +

Definition at line 6049 of file libtrac.c.

+
6053 {
+
6054
+
6055 static FILE *out;
+
6056
+
6057 static double *modmean, *obsmean, *rt, *rz, *rlon, *rlat, *robs, *area,
+
6058 dlon, dlat, dz, x[NCSI], y[NCSI], kz[EP], kw[EP];
+
6059
+
6060 static int *obscount, ct, cx, cy, cz, ip, ix, iy, iz, n, nobs, nk;
+
6061
+
6062 /* Set timer... */
+
6063 SELECT_TIMER("WRITE_CSI", "OUTPUT", NVTX_WRITE);
+
6064
+
6065 /* Init... */
+
6066 if (t == ctl->t_start) {
+
6067
+
6068 /* Check quantity index for mass... */
+
6069 if (ctl->qnt_m < 0)
+
6070 ERRMSG("Need quantity mass!");
+
6071
+
6072 /* Allocate... */
+
6073 ALLOC(area, double,
+
6074 ctl->csi_ny);
+
6075 ALLOC(rt, double,
+
6076 NOBS);
+
6077 ALLOC(rz, double,
+
6078 NOBS);
+
6079 ALLOC(rlon, double,
+
6080 NOBS);
+
6081 ALLOC(rlat, double,
+
6082 NOBS);
+
6083 ALLOC(robs, double,
+
6084 NOBS);
+
6085
+
6086 /* Read observation data... */
+
6087 read_obs(ctl->csi_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
6088
+
6089 /* Read kernel data... */
+
6090 if (ctl->csi_kernel[0] != '-')
+
6091 read_kernel(ctl->csi_kernel, kz, kw, &nk);
+
6092
+
6093 /* Create new file... */
+
6094 LOG(1, "Write CSI data: %s", filename);
+
6095 if (!(out = fopen(filename, "w")))
+
6096 ERRMSG("Cannot create file!");
+
6097
+
6098 /* Write header... */
+
6099 fprintf(out,
+
6100 "# $1 = time [s]\n"
+
6101 "# $2 = number of hits (cx)\n"
+
6102 "# $3 = number of misses (cy)\n"
+
6103 "# $4 = number of false alarms (cz)\n"
+
6104 "# $5 = number of observations (cx + cy)\n"
+
6105 "# $6 = number of forecasts (cx + cz)\n"
+
6106 "# $7 = bias (ratio of forecasts and observations) [%%]\n"
+
6107 "# $8 = probability of detection (POD) [%%]\n"
+
6108 "# $9 = false alarm rate (FAR) [%%]\n"
+
6109 "# $10 = critical success index (CSI) [%%]\n");
+
6110 fprintf(out,
+
6111 "# $11 = hits associated with random chance\n"
+
6112 "# $12 = equitable threat score (ETS) [%%]\n"
+
6113 "# $13 = Pearson linear correlation coefficient\n"
+
6114 "# $14 = Spearman rank-order correlation coefficient\n"
+
6115 "# $15 = column density mean error (F - O) [kg/m^2]\n"
+
6116 "# $16 = column density root mean square error (RMSE) [kg/m^2]\n"
+
6117 "# $17 = column density mean absolute error [kg/m^2]\n"
+
6118 "# $18 = number of data points\n\n");
+
6119
+
6120 /* Set grid box size... */
+
6121 dz = (ctl->csi_z1 - ctl->csi_z0) / ctl->csi_nz;
+
6122 dlon = (ctl->csi_lon1 - ctl->csi_lon0) / ctl->csi_nx;
+
6123 dlat = (ctl->csi_lat1 - ctl->csi_lat0) / ctl->csi_ny;
+
6124
+
6125 /* Set horizontal coordinates... */
+
6126 for (iy = 0; iy < ctl->csi_ny; iy++) {
+
6127 double lat = ctl->csi_lat0 + dlat * (iy + 0.5);
+
6128 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.) * cos(lat * M_PI / 180.);
+
6129 }
+
6130 }
+
6131
+
6132 /* Set time interval... */
+
6133 double t0 = t - 0.5 * ctl->dt_mod;
+
6134 double t1 = t + 0.5 * ctl->dt_mod;
+
6135
+
6136 /* Allocate... */
+
6137 ALLOC(modmean, double,
+
6138 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6139 ALLOC(obsmean, double,
+
6140 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6141 ALLOC(obscount, int,
+
6142 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6143
+
6144 /* Loop over observations... */
+
6145 for (int i = 0; i < nobs; i++) {
+
6146
+
6147 /* Check time... */
+
6148 if (rt[i] < t0)
+
6149 continue;
+
6150 else if (rt[i] >= t1)
+
6151 break;
+
6152
+
6153 /* Check observation data... */
+
6154 if (!isfinite(robs[i]))
+
6155 continue;
+
6156
+
6157 /* Calculate indices... */
+
6158 ix = (int) ((rlon[i] - ctl->csi_lon0) / dlon);
+
6159 iy = (int) ((rlat[i] - ctl->csi_lat0) / dlat);
+
6160 iz = (int) ((rz[i] - ctl->csi_z0) / dz);
+
6161
+
6162 /* Check indices... */
+
6163 if (ix < 0 || ix >= ctl->csi_nx ||
+
6164 iy < 0 || iy >= ctl->csi_ny || iz < 0 || iz >= ctl->csi_nz)
+
6165 continue;
+
6166
+
6167 /* Get mean observation index... */
+
6168 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6169 obsmean[idx] += robs[i];
+
6170 obscount[idx]++;
+
6171 }
+
6172
+
6173 /* Analyze model data... */
+
6174 for (ip = 0; ip < atm->np; ip++) {
+
6175
+
6176 /* Check time... */
+
6177 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
6178 continue;
+
6179
+
6180 /* Get indices... */
+
6181 ix = (int) ((atm->lon[ip] - ctl->csi_lon0) / dlon);
+
6182 iy = (int) ((atm->lat[ip] - ctl->csi_lat0) / dlat);
+
6183 iz = (int) ((Z(atm->p[ip]) - ctl->csi_z0) / dz);
+
6184
+
6185 /* Check indices... */
+
6186 if (ix < 0 || ix >= ctl->csi_nx ||
+
6187 iy < 0 || iy >= ctl->csi_ny || iz < 0 || iz >= ctl->csi_nz)
+
6188 continue;
+
6189
+
6190 /* Get total mass in grid cell... */
+
6191 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6192 modmean[idx] += kernel_weight(kz, kw, nk, atm->p[ip])
+
6193 * atm->q[ctl->qnt_m][ip];
+
6194 }
+
6195
+
6196 /* Analyze all grid cells... */
+
6197 for (ix = 0; ix < ctl->csi_nx; ix++)
+
6198 for (iy = 0; iy < ctl->csi_ny; iy++)
+
6199 for (iz = 0; iz < ctl->csi_nz; iz++) {
+
6200
+
6201 /* Calculate mean observation index... */
+
6202 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6203 if (obscount[idx] > 0)
+
6204 obsmean[idx] /= obscount[idx];
+
6205
+
6206 /* Calculate column density... */
+
6207 if (modmean[idx] > 0)
+
6208 modmean[idx] /= (1e6 * area[iy]);
+
6209
+
6210 /* Calculate CSI... */
+
6211 if (obscount[idx] > 0) {
+
6212 ct++;
+
6213 if (obsmean[idx] >= ctl->csi_obsmin &&
+
6214 modmean[idx] >= ctl->csi_modmin)
+
6215 cx++;
+
6216 else if (obsmean[idx] >= ctl->csi_obsmin &&
+
6217 modmean[idx] < ctl->csi_modmin)
+
6218 cy++;
+
6219 else if (obsmean[idx] < ctl->csi_obsmin &&
+
6220 modmean[idx] >= ctl->csi_modmin)
+
6221 cz++;
+
6222 }
+
6223
+
6224 /* Save data for other verification statistics... */
+
6225 if (obscount[idx] > 0
+
6226 && (obsmean[idx] >= ctl->csi_obsmin
+
6227 || modmean[idx] >= ctl->csi_modmin)) {
+
6228 x[n] = modmean[idx];
+
6229 y[n] = obsmean[idx];
+
6230 if ((++n) > NCSI)
+
6231 ERRMSG("Too many data points to calculate statistics!");
+
6232 }
+
6233 }
+
6234
+
6235 /* Write output... */
+
6236 if (fmod(t, ctl->csi_dt_out) == 0) {
+
6237
+
6238 /* Calculate verification statistics
+
6239 (https://www.cawcr.gov.au/projects/verification/) ... */
+
6240 static double work[2 * NCSI];
+
6241 int n_obs = cx + cy;
+
6242 int n_for = cx + cz;
+
6243 double bias = (n_obs > 0) ? 100. * n_for / n_obs : GSL_NAN;
+
6244 double pod = (n_obs > 0) ? (100. * cx) / n_obs : GSL_NAN;
+
6245 double far = (n_for > 0) ? (100. * cz) / n_for : GSL_NAN;
+
6246 double csi = (cx + cy + cz > 0) ? (100. * cx) / (cx + cy + cz) : GSL_NAN;
+
6247 double cx_rd = (ct > 0) ? (1. * n_obs * n_for) / ct : GSL_NAN;
+
6248 double ets = (cx + cy + cz - cx_rd > 0) ?
+
6249 (100. * (cx - cx_rd)) / (cx + cy + cz - cx_rd) : GSL_NAN;
+
6250 double rho_p =
+
6251 (n > 0) ? gsl_stats_correlation(x, 1, y, 1, (size_t) n) : GSL_NAN;
+
6252 double rho_s =
+
6253 (n > 0) ? gsl_stats_spearman(x, 1, y, 1, (size_t) n, work) : GSL_NAN;
+
6254 for (int i = 0; i < n; i++)
+
6255 work[i] = x[i] - y[i];
+
6256 double mean = (n > 0) ? gsl_stats_mean(work, 1, (size_t) n) : GSL_NAN;
+
6257 double rmse = (n > 0) ? gsl_stats_sd_with_fixed_mean(work, 1, (size_t) n,
+
6258 0.0) : GSL_NAN;
+
6259 double absdev =
+
6260 (n > 0) ? gsl_stats_absdev_m(work, 1, (size_t) n, 0.0) : GSL_NAN;
+
6261
+
6262 /* Write... */
+
6263 fprintf(out, "%.2f %d %d %d %d %d %g %g %g %g %g %g %g %g %g %g %g %d\n",
+
6264 t, cx, cy, cz, n_obs, n_for, bias, pod, far, csi, cx_rd, ets,
+
6265 rho_p, rho_s, mean, rmse, absdev, n);
+
6266
+
6267 /* Set counters to zero... */
+
6268 n = ct = cx = cy = cz = 0;
+
6269 }
+
6270
+
6271 /* Free... */
+
6272 free(modmean);
+
6273 free(obsmean);
+
6274 free(obscount);
+
6275
+
6276 /* Finalize... */
+
6277 if (t == ctl->t_stop) {
+
6278
+
6279 /* Close output file... */
+
6280 fclose(out);
+
6281
+
6282 /* Free... */
+
6283 free(area);
+
6284 free(rt);
+
6285 free(rz);
+
6286 free(rlon);
+
6287 free(rlat);
+
6288 free(robs);
+
6289 }
+
6290}
+
void read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk)
Read kernel data file.
Definition: libtrac.c:3058
+
void read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs)
Read observation data.
Definition: libtrac.c:5184
+
double kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p)
Get weighting factor from kernel function.
Definition: libtrac.c:1515
+
#define NCSI
Maximum number of data points for CSI calculation.
Definition: libtrac.h:177
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ write_ens()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_ens (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write ensemble data.

+ +

Definition at line 6294 of file libtrac.c.

+
6298 {
+
6299
+
6300 static FILE *out;
+
6301
+
6302 static double dummy, lat, lon, qm[NQ][NENS], qs[NQ][NENS], xm[NENS][3],
+
6303 x[3], zm[NENS];
+
6304
+
6305 static int n[NENS];
+
6306
+
6307 /* Set timer... */
+
6308 SELECT_TIMER("WRITE_ENS", "OUTPUT", NVTX_WRITE);
+
6309
+
6310 /* Check quantities... */
+
6311 if (ctl->qnt_ens < 0)
+
6312 ERRMSG("Missing ensemble IDs!");
+
6313
+
6314 /* Set time interval... */
+
6315 double t0 = t - 0.5 * ctl->dt_mod;
+
6316 double t1 = t + 0.5 * ctl->dt_mod;
+
6317
+
6318 /* Init... */
+
6319 for (int i = 0; i < NENS; i++) {
+
6320 for (int iq = 0; iq < ctl->nq; iq++)
+
6321 qm[iq][i] = qs[iq][i] = 0;
+
6322 xm[i][0] = xm[i][1] = xm[i][2] = zm[i] = 0;
+
6323 n[i] = 0;
+
6324 }
+
6325
+
6326 /* Loop over air parcels... */
+
6327 for (int ip = 0; ip < atm->np; ip++) {
+
6328
+
6329 /* Check time... */
+
6330 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
6331 continue;
+
6332
+
6333 /* Check ensemble ID... */
+
6334 if (atm->q[ctl->qnt_ens][ip] < 0 || atm->q[ctl->qnt_ens][ip] >= NENS)
+
6335 ERRMSG("Ensemble ID is out of range!");
+
6336
+
6337 /* Get means... */
+
6338 geo2cart(0, atm->lon[ip], atm->lat[ip], x);
+
6339 for (int iq = 0; iq < ctl->nq; iq++) {
+
6340 qm[iq][ctl->qnt_ens] += atm->q[iq][ip];
+
6341 qs[iq][ctl->qnt_ens] += SQR(atm->q[iq][ip]);
+
6342 }
+
6343 xm[ctl->qnt_ens][0] += x[0];
+
6344 xm[ctl->qnt_ens][1] += x[1];
+
6345 xm[ctl->qnt_ens][2] += x[2];
+
6346 zm[ctl->qnt_ens] += Z(atm->p[ip]);
+
6347 n[ctl->qnt_ens]++;
+
6348 }
+
6349
+
6350 /* Create file... */
+
6351 LOG(1, "Write ensemble data: %s", filename);
+
6352 if (!(out = fopen(filename, "w")))
+
6353 ERRMSG("Cannot create file!");
+
6354
+
6355 /* Write header... */
+
6356 fprintf(out,
+
6357 "# $1 = time [s]\n"
+
6358 "# $2 = altitude [km]\n"
+
6359 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
6360 for (int iq = 0; iq < ctl->nq; iq++)
+
6361 fprintf(out, "# $%d = %s (mean) [%s]\n", 5 + iq,
+
6362 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
6363 for (int iq = 0; iq < ctl->nq; iq++)
+
6364 fprintf(out, "# $%d = %s (sigma) [%s]\n", 5 + ctl->nq + iq,
+
6365 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
6366 fprintf(out, "# $%d = number of members\n\n", 5 + 2 * ctl->nq);
+
6367
+
6368 /* Write data... */
+
6369 for (int i = 0; i < NENS; i++)
+
6370 if (n[i] > 0) {
+
6371 cart2geo(xm[i], &dummy, &lon, &lat);
+
6372 fprintf(out, "%.2f %g %g %g", t, zm[i] / n[i], lon, lat);
+
6373 for (int iq = 0; iq < ctl->nq; iq++) {
+
6374 fprintf(out, " ");
+
6375 fprintf(out, ctl->qnt_format[iq], qm[iq][i] / n[i]);
+
6376 }
+
6377 for (int iq = 0; iq < ctl->nq; iq++) {
+
6378 fprintf(out, " ");
+
6379 double var = qs[iq][i] / n[i] - SQR(qm[iq][i] / n[i]);
+
6380 fprintf(out, ctl->qnt_format[iq], (var > 0 ? sqrt(var) : 0));
+
6381 }
+
6382 fprintf(out, " %d\n", n[i]);
+
6383 }
+
6384
+
6385 /* Close file... */
+
6386 fclose(out);
+
6387}
+
void cart2geo(const double *x, double *z, double *lon, double *lat)
Convert Cartesian coordinates to geolocation.
Definition: libtrac.c:44
+
#define NENS
Maximum number of data points for ensemble analysis.
Definition: libtrac.h:197
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ write_grid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_grid (const char * filename,
ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Write gridded data.

+ +

Definition at line 6391 of file libtrac.c.

+
6397 {
+
6398
+
6399 static double kz[EP], kw[EP];
+
6400
+
6401 static int nk;
+
6402
+
6403 double *cd, *mean[NQ], *vmr_impl, *z, *lon, *lat, *area, *press;
+
6404
+
6405 int *ixs, *iys, *izs, *np;
+
6406
+
6407 /* Set timer... */
+
6408 SELECT_TIMER("WRITE_GRID", "OUTPUT", NVTX_WRITE);
+
6409
+
6410 /* Write info... */
+
6411 LOG(1, "Write grid data: %s", filename);
+
6412
+
6413 /* Init... */
+
6414 if (t == ctl->t_start) {
+
6415
+
6416 /* Read kernel data... */
+
6417 if (ctl->grid_kernel[0] != '-')
+
6418 read_kernel(ctl->grid_kernel, kz, kw, &nk);
+
6419 }
+
6420
+
6421 /* Allocate... */
+
6422 ALLOC(cd, double,
+
6423 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6424 for (int iq = 0; iq < ctl->nq; iq++) {
+
6425 ALLOC(mean[iq], double,
+
6426 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6427 }
+
6428 ALLOC(vmr_impl, double,
+
6429 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6430 ALLOC(z, double,
+
6431 ctl->grid_nz);
+
6432 ALLOC(lon, double,
+
6433 ctl->grid_nx);
+
6434 ALLOC(lat, double,
+
6435 ctl->grid_ny);
+
6436 ALLOC(area, double,
+
6437 ctl->grid_ny);
+
6438 ALLOC(press, double,
+
6439 ctl->grid_nz);
+
6440 ALLOC(np, int,
+
6441 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6442 ALLOC(ixs, int,
+
6443 atm->np);
+
6444 ALLOC(iys, int,
+
6445 atm->np);
+
6446 ALLOC(izs, int,
+
6447 atm->np);
+
6448
+
6449 /* Set grid box size... */
+
6450 double dz = (ctl->grid_z1 - ctl->grid_z0) / ctl->grid_nz;
+
6451 double dlon = (ctl->grid_lon1 - ctl->grid_lon0) / ctl->grid_nx;
+
6452 double dlat = (ctl->grid_lat1 - ctl->grid_lat0) / ctl->grid_ny;
+
6453
+
6454 /* Set vertical coordinates... */
+
6455#pragma omp parallel for default(shared)
+
6456 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6457 z[iz] = ctl->grid_z0 + dz * (iz + 0.5);
+
6458 press[iz] = P(z[iz]);
+
6459 }
+
6460
+
6461 /* Set horizontal coordinates... */
+
6462 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6463 lon[ix] = ctl->grid_lon0 + dlon * (ix + 0.5);
+
6464#pragma omp parallel for default(shared)
+
6465 for (int iy = 0; iy < ctl->grid_ny; iy++) {
+
6466 lat[iy] = ctl->grid_lat0 + dlat * (iy + 0.5);
+
6467 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
6468 * cos(lat[iy] * M_PI / 180.);
+
6469 }
+
6470
+
6471 /* Set time interval for output... */
+
6472 double t0 = t - 0.5 * ctl->dt_mod;
+
6473 double t1 = t + 0.5 * ctl->dt_mod;
+
6474
+
6475 /* Get grid box indices... */
+
6476#pragma omp parallel for default(shared)
+
6477 for (int ip = 0; ip < atm->np; ip++) {
+
6478 ixs[ip] = (int) ((atm->lon[ip] - ctl->grid_lon0) / dlon);
+
6479 iys[ip] = (int) ((atm->lat[ip] - ctl->grid_lat0) / dlat);
+
6480 izs[ip] = (int) ((Z(atm->p[ip]) - ctl->grid_z0) / dz);
+
6481 if (atm->time[ip] < t0 || atm->time[ip] > t1
+
6482 || ixs[ip] < 0 || ixs[ip] >= ctl->grid_nx
+
6483 || iys[ip] < 0 || iys[ip] >= ctl->grid_ny
+
6484 || izs[ip] < 0 || izs[ip] >= ctl->grid_nz)
+
6485 izs[ip] = -1;
+
6486 }
+
6487
+
6488 /* Average data... */
+
6489 for (int ip = 0; ip < atm->np; ip++)
+
6490 if (izs[ip] >= 0) {
+
6491 int idx =
+
6492 ARRAY_3D(ixs[ip], iys[ip], ctl->grid_ny, izs[ip], ctl->grid_nz);
+
6493 double kernel = kernel_weight(kz, kw, nk, atm->p[ip]);
+
6494 np[idx]++;
+
6495 for (int iq = 0; iq < ctl->nq; iq++)
+
6496 mean[iq][idx] += kernel * atm->q[iq][ip];
+
6497 }
+
6498
+
6499 /* Calculate column density and vmr... */
+
6500#pragma omp parallel for default(shared)
+
6501 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6502 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6503 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6504
+
6505 /* Get grid index... */
+
6506 int idx = ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz);
+
6507
+
6508 /* Calculate column density... */
+
6509 cd[idx] = GSL_NAN;
+
6510 if (ctl->qnt_m >= 0)
+
6511 cd[idx] = mean[ctl->qnt_m][idx] / (1e6 * area[iy]);
+
6512
+
6513 /* Calculate volume mixing ratio (implicit)... */
+
6514 vmr_impl[idx] = GSL_NAN;
+
6515 if (ctl->qnt_m >= 0 && ctl->molmass > 0) {
+
6516 vmr_impl[idx] = 0;
+
6517 if (mean[ctl->qnt_m][idx] > 0) {
+
6518
+
6519 /* Get temperature... */
+
6520 double temp;
+ +
6522 intpol_met_time_3d(met0, met0->t, met1, met1->t, t, press[iz],
+
6523 lon[ix], lat[iy], &temp, ci, cw, 1);
+
6524
+
6525 /* Calculate volume mixing ratio... */
+
6526 vmr_impl[idx] = MA / ctl->molmass * mean[ctl->qnt_m][idx]
+
6527 / (RHO(press[iz], temp) * 1e6 * area[iy] * 1e3 * dz);
+
6528 }
+
6529 }
+
6530
+
6531 /* Calculate mean... */
+
6532 if (np[idx] > 0)
+
6533 for (int iq = 0; iq < ctl->nq; iq++)
+
6534 mean[iq][idx] /= np[idx];
+
6535 else
+
6536 for (int iq = 0; iq < ctl->nq; iq++)
+
6537 mean[iq][idx] = GSL_NAN;
+
6538
+
6539 }
+
6540
+
6541 /* Write ASCII data... */
+
6542 if (ctl->grid_type == 0)
+
6543 write_grid_asc(filename, ctl, cd, mean, vmr_impl, t, z, lon, lat, area,
+
6544 dz, np);
+
6545
+
6546 /* Write netCDF data... */
+
6547 else if (ctl->grid_type == 1)
+
6548 write_grid_nc(filename, ctl, cd, mean, vmr_impl, t, z, lon, lat, area, dz,
+
6549 np);
+
6550
+
6551 /* Error message... */
+
6552 else
+
6553 ERRMSG("Grid data format GRID_TYPE unknown!");
+
6554
+
6555 /* Free... */
+
6556 free(cd);
+
6557 for (int iq = 0; iq < ctl->nq; iq++)
+
6558 free(mean[iq]);
+
6559 free(vmr_impl);
+
6560 free(z);
+
6561 free(lon);
+
6562 free(lat);
+
6563 free(area);
+
6564 free(press);
+
6565 free(np);
+
6566 free(ixs);
+
6567 free(iys);
+
6568 free(izs);
+
6569}
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
void write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in ASCII format.
Definition: libtrac.c:6573
+
void write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in netCDF format.
Definition: libtrac.c:6666
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + +
+ +
+
+ +

◆ write_grid_asc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_grid_asc (const char * filename,
ctl_tctl,
double * cd,
double * mean[NQ],
double * vmr_impl,
double t,
double * z,
double * lon,
double * lat,
double * area,
double dz,
int * np 
)
+
+ +

Write gridded data in ASCII format.

+ +

Definition at line 6573 of file libtrac.c.

+
6585 {
+
6586
+
6587 FILE *in, *out;
+
6588
+
6589 char line[LEN];
+
6590
+
6591 /* Check if gnuplot output is requested... */
+
6592 if (ctl->grid_gpfile[0] != '-') {
+
6593
+
6594 /* Create gnuplot pipe... */
+
6595 if (!(out = popen("gnuplot", "w")))
+
6596 ERRMSG("Cannot create pipe to gnuplot!");
+
6597
+
6598 /* Set plot filename... */
+
6599 fprintf(out, "set out \"%s.png\"\n", filename);
+
6600
+
6601 /* Set time string... */
+
6602 double r;
+
6603 int year, mon, day, hour, min, sec;
+
6604 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
6605 fprintf(out, "timestr=\"%d-%02d-%02d, %02d:%02d UTC\"\n",
+
6606 year, mon, day, hour, min);
+
6607
+
6608 /* Dump gnuplot file to pipe... */
+
6609 if (!(in = fopen(ctl->grid_gpfile, "r")))
+
6610 ERRMSG("Cannot open file!");
+
6611 while (fgets(line, LEN, in))
+
6612 fprintf(out, "%s", line);
+
6613 fclose(in);
+
6614 }
+
6615
+
6616 else {
+
6617
+
6618 /* Create file... */
+
6619 if (!(out = fopen(filename, "w")))
+
6620 ERRMSG("Cannot create file!");
+
6621 }
+
6622
+
6623 /* Write header... */
+
6624 fprintf(out,
+
6625 "# $1 = time [s]\n"
+
6626 "# $2 = altitude [km]\n"
+
6627 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
6628 for (int iq = 0; iq < ctl->nq; iq++)
+
6629 fprintf(out, "# $%i = %s (mean) [%s]\n", 5 + iq, ctl->qnt_name[iq],
+
6630 ctl->qnt_unit[iq]);
+
6631 fprintf(out, "# $%d = number of particles [1]\n", 5 + ctl->nq);
+
6632 fprintf(out, "# $%d = surface area [km^2]\n", 6 + ctl->nq);
+
6633 fprintf(out, "# $%d = layer depth [km]\n", 7 + ctl->nq);
+
6634 fprintf(out, "# $%d = column density (implicit) [kg/m^2]\n", 8 + ctl->nq);
+
6635 fprintf(out, "# $%d = volume mixing ratio (implicit) [ppv]\n", 9 + ctl->nq);
+
6636 fprintf(out, "\n");
+
6637
+
6638 /* Write data... */
+
6639 for (int ix = 0; ix < ctl->grid_nx; ix++) {
+
6640 if (ix > 0 && ctl->grid_ny > 1 && !ctl->grid_sparse)
+
6641 fprintf(out, "\n");
+
6642 for (int iy = 0; iy < ctl->grid_ny; iy++) {
+
6643 if (iy > 0 && ctl->grid_nz > 1 && !ctl->grid_sparse)
+
6644 fprintf(out, "\n");
+
6645 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6646 int idx = ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz);
+
6647 if (!ctl->grid_sparse || vmr_impl[idx] > 0) {
+
6648 fprintf(out, "%.2f %g %g %g", t, z[iz], lon[ix], lat[iy]);
+
6649 for (int iq = 0; iq < ctl->nq; iq++) {
+
6650 fprintf(out, " ");
+
6651 fprintf(out, ctl->qnt_format[iq], mean[iq][idx]);
+
6652 }
+
6653 fprintf(out, " %d %g %g %g %g\n", np[idx], area[iy], dz, cd[idx],
+
6654 vmr_impl[idx]);
+
6655 }
+
6656 }
+
6657 }
+
6658 }
+
6659
+
6660 /* Close file... */
+
6661 fclose(out);
+
6662}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_grid_nc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_grid_nc (const char * filename,
ctl_tctl,
double * cd,
double * mean[NQ],
double * vmr_impl,
double t,
double * z,
double * lon,
double * lat,
double * area,
double dz,
int * np 
)
+
+ +

Write gridded data in netCDF format.

+ +

Definition at line 6666 of file libtrac.c.

+
6678 {
+
6679
+
6680 double *help;
+
6681
+
6682 int *help2, ncid, dimid[10], varid;
+
6683
+
6684 size_t start[2], count[2];
+
6685
+
6686 /* Allocate... */
+
6687 ALLOC(help, double,
+
6688 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6689 ALLOC(help2, int,
+
6690 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6691
+
6692 /* Create file... */
+
6693 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
6694
+
6695 /* Define dimensions... */
+
6696 NC(nc_def_dim(ncid, "time", 1, &dimid[0]));
+
6697 NC(nc_def_dim(ncid, "z", (size_t) ctl->grid_nz, &dimid[1]));
+
6698 NC(nc_def_dim(ncid, "lat", (size_t) ctl->grid_ny, &dimid[2]));
+
6699 NC(nc_def_dim(ncid, "lon", (size_t) ctl->grid_nx, &dimid[3]));
+
6700 NC(nc_def_dim(ncid, "dz", 1, &dimid[4]));
+
6701
+
6702 /* Define variables and their attributes... */
+
6703 NC_DEF_VAR("time", NC_DOUBLE, 1, &dimid[0], "time",
+
6704 "seconds since 2000-01-01 00:00:00 UTC");
+
6705 NC_DEF_VAR("z", NC_DOUBLE, 1, &dimid[1], "altitude", "km");
+
6706 NC_DEF_VAR("lat", NC_DOUBLE, 1, &dimid[2], "latitude", "degrees_north");
+
6707 NC_DEF_VAR("lon", NC_DOUBLE, 1, &dimid[3], "longitude", "degrees_east");
+
6708 NC_DEF_VAR("dz", NC_DOUBLE, 1, &dimid[1], "layer depth", "km");
+
6709 NC_DEF_VAR("area", NC_DOUBLE, 1, &dimid[2], "surface area", "km**2");
+
6710 NC_DEF_VAR("cd", NC_FLOAT, 4, dimid, "column density", "kg m**-2");
+
6711 NC_DEF_VAR("vmr_impl", NC_FLOAT, 4, dimid,
+
6712 "volume mixing ratio (implicit)", "ppv");
+
6713 NC_DEF_VAR("np", NC_INT, 4, dimid, "number of particles", "1");
+
6714 for (int iq = 0; iq < ctl->nq; iq++)
+
6715 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 4, dimid,
+
6716 ctl->qnt_longname[iq], ctl->qnt_unit[iq]);
+
6717
+
6718 /* End definitions... */
+
6719 NC(nc_enddef(ncid));
+
6720
+
6721 /* Write data... */
+
6722 NC_PUT_DOUBLE("time", &t, 0);
+
6723 NC_PUT_DOUBLE("lon", lon, 0);
+
6724 NC_PUT_DOUBLE("lat", lat, 0);
+
6725 NC_PUT_DOUBLE("z", z, 0);
+
6726 NC_PUT_DOUBLE("area", area, 0);
+
6727 NC_PUT_DOUBLE("dz", &dz, 0);
+
6728
+
6729 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6730 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6731 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6732 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6733 cd[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6734 NC_PUT_DOUBLE("cd", help, 0);
+
6735
+
6736 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6737 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6738 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6739 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6740 vmr_impl[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6741 NC_PUT_DOUBLE("vmr_impl", help, 0);
+
6742
+
6743 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6744 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6745 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6746 help2[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6747 np[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6748 NC_PUT_INT("np", help2, 0);
+
6749
+
6750 for (int iq = 0; iq < ctl->nq; iq++) {
+
6751 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6752 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6753 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6754 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6755 mean[iq][ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6756 NC_PUT_DOUBLE(ctl->qnt_name[iq], help, 0);
+
6757 }
+
6758
+
6759 /* Close file... */
+
6760 NC(nc_close(ncid));
+
6761
+
6762 /* Free... */
+
6763 free(help);
+
6764 free(help2);
+
6765}
+
#define NC_PUT_INT(varname, ptr, hyperslab)
Write netCDF integer array.
Definition: libtrac.h:533
+
+
+
+ +

◆ write_met()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int write_met (char * filename,
ctl_tctl,
met_tmet 
)
+
+ +

Read meteo data file.

+ +

Definition at line 6769 of file libtrac.c.

+
6772 {
+
6773
+
6774 /* Set timer... */
+
6775 SELECT_TIMER("WRITE_MET", "OUTPUT", NVTX_WRITE);
+
6776
+
6777 /* Write info... */
+
6778 LOG(1, "Write meteo data: %s", filename);
+
6779
+
6780 /* Check compression flags... */
+
6781#ifndef ZFP
+
6782 if (ctl->met_type == 3)
+
6783 ERRMSG("MPTRAC was compiled without zfp compression!");
+
6784#endif
+
6785#ifndef ZSTD
+
6786 if (ctl->met_type == 4)
+
6787 ERRMSG("MPTRAC was compiled without zstd compression!");
+
6788#endif
+
6789
+
6790 /* Write binary data... */
+
6791 if (ctl->met_type >= 1 && ctl->met_type <= 4) {
+
6792
+
6793 /* Create file... */
+
6794 FILE *out;
+
6795 if (!(out = fopen(filename, "w")))
+
6796 ERRMSG("Cannot create file!");
+
6797
+
6798 /* Write type of binary data... */
+
6799 FWRITE(&ctl->met_type, int,
+
6800 1,
+
6801 out);
+
6802
+
6803 /* Write version of binary data... */
+
6804 int version = 101;
+
6805 FWRITE(&version, int,
+
6806 1,
+
6807 out);
+
6808
+
6809 /* Write grid data... */
+
6810 FWRITE(&met->time, double,
+
6811 1,
+
6812 out);
+
6813 FWRITE(&met->nx, int,
+
6814 1,
+
6815 out);
+
6816 FWRITE(&met->ny, int,
+
6817 1,
+
6818 out);
+
6819 FWRITE(&met->np, int,
+
6820 1,
+
6821 out);
+
6822 FWRITE(met->lon, double,
+
6823 (size_t) met->nx,
+
6824 out);
+
6825 FWRITE(met->lat, double,
+
6826 (size_t) met->ny,
+
6827 out);
+
6828 FWRITE(met->p, double,
+
6829 (size_t) met->np,
+
6830 out);
+
6831
+
6832 /* Write surface data... */
+
6833 write_met_bin_2d(out, met, met->ps, "PS");
+
6834 write_met_bin_2d(out, met, met->ts, "TS");
+
6835 write_met_bin_2d(out, met, met->zs, "ZS");
+
6836 write_met_bin_2d(out, met, met->us, "US");
+
6837 write_met_bin_2d(out, met, met->vs, "VS");
+
6838 write_met_bin_2d(out, met, met->lsm, "LSM");
+
6839 write_met_bin_2d(out, met, met->sst, "SST");
+
6840 write_met_bin_2d(out, met, met->pbl, "PBL");
+
6841 write_met_bin_2d(out, met, met->pt, "PT");
+
6842 write_met_bin_2d(out, met, met->tt, "TT");
+
6843 write_met_bin_2d(out, met, met->zt, "ZT");
+
6844 write_met_bin_2d(out, met, met->h2ot, "H2OT");
+
6845 write_met_bin_2d(out, met, met->pct, "PCT");
+
6846 write_met_bin_2d(out, met, met->pcb, "PCB");
+
6847 write_met_bin_2d(out, met, met->cl, "CL");
+
6848 write_met_bin_2d(out, met, met->plcl, "PLCL");
+
6849 write_met_bin_2d(out, met, met->plfc, "PLFC");
+
6850 write_met_bin_2d(out, met, met->pel, "PEL");
+
6851 write_met_bin_2d(out, met, met->cape, "CAPE");
+
6852 write_met_bin_2d(out, met, met->cin, "CIN");
+
6853
+
6854 /* Write level data... */
+
6855 write_met_bin_3d(out, ctl, met, met->z, "Z", 0, ctl->met_zfp_tol_z);
+
6856 write_met_bin_3d(out, ctl, met, met->t, "T", 0, ctl->met_zfp_tol_t);
+
6857 write_met_bin_3d(out, ctl, met, met->u, "U", ctl->met_zfp_prec, 0);
+
6858 write_met_bin_3d(out, ctl, met, met->v, "V", ctl->met_zfp_prec, 0);
+
6859 write_met_bin_3d(out, ctl, met, met->w, "W", ctl->met_zfp_prec, 0);
+
6860 write_met_bin_3d(out, ctl, met, met->pv, "PV", ctl->met_zfp_prec, 0);
+
6861 write_met_bin_3d(out, ctl, met, met->h2o, "H2O", ctl->met_zfp_prec, 0);
+
6862 write_met_bin_3d(out, ctl, met, met->o3, "O3", ctl->met_zfp_prec, 0);
+
6863 write_met_bin_3d(out, ctl, met, met->lwc, "LWC", ctl->met_zfp_prec, 0);
+
6864 write_met_bin_3d(out, ctl, met, met->iwc, "IWC", ctl->met_zfp_prec, 0);
+
6865 write_met_bin_3d(out, ctl, met, met->cc, "CC", ctl->met_zfp_prec, 0);
+
6866
+
6867 /* Write final flag... */
+
6868 int final = 999;
+
6869 FWRITE(&final, int,
+
6870 1,
+
6871 out);
+
6872
+
6873 /* Close file... */
+
6874 fclose(out);
+
6875 }
+
6876
+
6877 return 0;
+
6878}
+
void write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance)
Write 3-D meteo variable.
Definition: libtrac.c:6911
+
void write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname)
Write 2-D meteo variable.
Definition: libtrac.c:6882
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ write_met_bin_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_met_bin_2d (FILE * out,
met_tmet,
float var[EX][EY],
char * varname 
)
+
+ +

Write 2-D meteo variable.

+ +

Definition at line 6882 of file libtrac.c.

+
6886 {
+
6887
+
6888 float *help;
+
6889
+
6890 /* Allocate... */
+
6891 ALLOC(help, float,
+
6892 EX * EY);
+
6893
+
6894 /* Copy data... */
+
6895 for (int ix = 0; ix < met->nx; ix++)
+
6896 for (int iy = 0; iy < met->ny; iy++)
+
6897 help[ARRAY_2D(ix, iy, met->ny)] = var[ix][iy];
+
6898
+
6899 /* Write uncompressed data... */
+
6900 LOG(2, "Write 2-D variable: %s (uncompressed)", varname);
+
6901 FWRITE(help, float,
+
6902 (size_t) (met->nx * met->ny),
+
6903 out);
+
6904
+
6905 /* Free... */
+
6906 free(help);
+
6907}
+
+
+
+ +

◆ write_met_bin_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_met_bin_3d (FILE * out,
ctl_tctl,
met_tmet,
float var[EX][EY][EP],
char * varname,
int precision,
double tolerance 
)
+
+ +

Write 3-D meteo variable.

+ +

Definition at line 6911 of file libtrac.c.

+
6918 {
+
6919
+
6920 float *help;
+
6921
+
6922 /* Allocate... */
+
6923 ALLOC(help, float,
+
6924 EX * EY * EP);
+
6925
+
6926 /* Copy data... */
+
6927#pragma omp parallel for default(shared) collapse(2)
+
6928 for (int ix = 0; ix < met->nx; ix++)
+
6929 for (int iy = 0; iy < met->ny; iy++)
+
6930 for (int ip = 0; ip < met->np; ip++)
+
6931 help[ARRAY_3D(ix, iy, met->ny, ip, met->np)] = var[ix][iy][ip];
+
6932
+
6933 /* Write uncompressed data... */
+
6934 if (ctl->met_type == 1) {
+
6935 LOG(2, "Write 3-D variable: %s (uncompressed)", varname);
+
6936 FWRITE(help, float,
+
6937 (size_t) (met->nx * met->ny * met->np),
+
6938 out);
+
6939 }
+
6940
+
6941 /* Write packed data... */
+
6942 else if (ctl->met_type == 2)
+
6943 compress_pack(varname, help, (size_t) (met->ny * met->nx),
+
6944 (size_t) met->np, 0, out);
+
6945
+
6946 /* Write zfp data... */
+
6947#ifdef ZFP
+
6948 else if (ctl->met_type == 3) {
+
6949 FWRITE(&precision, int,
+
6950 1,
+
6951 out);
+
6952 FWRITE(&tolerance, double,
+
6953 1,
+
6954 out);
+
6955 compress_zfp(varname, help, met->np, met->ny, met->nx, precision,
+
6956 tolerance, 0, out);
+
6957 }
+
6958#endif
+
6959
+
6960 /* Write zstd data... */
+
6961#ifdef ZSTD
+
6962 else if (ctl->met_type == 4)
+
6963 compress_zstd(varname, help, (size_t) (met->np * met->ny * met->nx), 0,
+
6964 out);
+
6965#endif
+
6966
+
6967 /* Unknown method... */
+
6968 else {
+
6969 ERRMSG("MET_TYPE not supported!");
+
6970 LOG(3, "%d %g", precision, tolerance);
+
6971 }
+
6972
+
6973 /* Free... */
+
6974 free(help);
+
6975}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_prof()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_prof (const char * filename,
ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Write profile data.

+ +

Definition at line 6979 of file libtrac.c.

+
6985 {
+
6986
+
6987 static FILE *out;
+
6988
+
6989 static double *mass, *obsmean, *rt, *rz, *rlon, *rlat, *robs, *area,
+
6990 dz, dlon, dlat, *lon, *lat, *z, *press, temp, vmr, h2o, o3;
+
6991
+
6992 static int nobs, *obscount, ip, okay;
+
6993
+
6994 /* Set timer... */
+
6995 SELECT_TIMER("WRITE_PROF", "OUTPUT", NVTX_WRITE);
+
6996
+
6997 /* Init... */
+
6998 if (t == ctl->t_start) {
+
6999
+
7000 /* Check quantity index for mass... */
+
7001 if (ctl->qnt_m < 0)
+
7002 ERRMSG("Need quantity mass!");
+
7003
+
7004 /* Check molar mass... */
+
7005 if (ctl->molmass <= 0)
+
7006 ERRMSG("Specify molar mass!");
+
7007
+
7008 /* Allocate... */
+
7009 ALLOC(lon, double,
+
7010 ctl->prof_nx);
+
7011 ALLOC(lat, double,
+
7012 ctl->prof_ny);
+
7013 ALLOC(area, double,
+
7014 ctl->prof_ny);
+
7015 ALLOC(z, double,
+
7016 ctl->prof_nz);
+
7017 ALLOC(press, double,
+
7018 ctl->prof_nz);
+
7019 ALLOC(rt, double,
+
7020 NOBS);
+
7021 ALLOC(rz, double,
+
7022 NOBS);
+
7023 ALLOC(rlon, double,
+
7024 NOBS);
+
7025 ALLOC(rlat, double,
+
7026 NOBS);
+
7027 ALLOC(robs, double,
+
7028 NOBS);
+
7029
+
7030 /* Read observation data... */
+
7031 read_obs(ctl->prof_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
7032
+
7033 /* Create new output file... */
+
7034 LOG(1, "Write profile data: %s", filename);
+
7035 if (!(out = fopen(filename, "w")))
+
7036 ERRMSG("Cannot create file!");
+
7037
+
7038 /* Write header... */
+
7039 fprintf(out,
+
7040 "# $1 = time [s]\n"
+
7041 "# $2 = altitude [km]\n"
+
7042 "# $3 = longitude [deg]\n"
+
7043 "# $4 = latitude [deg]\n"
+
7044 "# $5 = pressure [hPa]\n"
+
7045 "# $6 = temperature [K]\n"
+
7046 "# $7 = volume mixing ratio [ppv]\n"
+
7047 "# $8 = H2O volume mixing ratio [ppv]\n"
+
7048 "# $9 = O3 volume mixing ratio [ppv]\n"
+
7049 "# $10 = observed BT index [K]\n"
+
7050 "# $11 = number of observations\n");
+
7051
+
7052 /* Set grid box size... */
+
7053 dz = (ctl->prof_z1 - ctl->prof_z0) / ctl->prof_nz;
+
7054 dlon = (ctl->prof_lon1 - ctl->prof_lon0) / ctl->prof_nx;
+
7055 dlat = (ctl->prof_lat1 - ctl->prof_lat0) / ctl->prof_ny;
+
7056
+
7057 /* Set vertical coordinates... */
+
7058 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7059 z[iz] = ctl->prof_z0 + dz * (iz + 0.5);
+
7060 press[iz] = P(z[iz]);
+
7061 }
+
7062
+
7063 /* Set horizontal coordinates... */
+
7064 for (int ix = 0; ix < ctl->prof_nx; ix++)
+
7065 lon[ix] = ctl->prof_lon0 + dlon * (ix + 0.5);
+
7066 for (int iy = 0; iy < ctl->prof_ny; iy++) {
+
7067 lat[iy] = ctl->prof_lat0 + dlat * (iy + 0.5);
+
7068 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
7069 * cos(lat[iy] * M_PI / 180.);
+
7070 }
+
7071 }
+
7072
+
7073 /* Set time interval... */
+
7074 double t0 = t - 0.5 * ctl->dt_mod;
+
7075 double t1 = t + 0.5 * ctl->dt_mod;
+
7076
+
7077 /* Allocate... */
+
7078 ALLOC(mass, double,
+
7079 ctl->prof_nx * ctl->prof_ny * ctl->prof_nz);
+
7080 ALLOC(obsmean, double,
+
7081 ctl->prof_nx * ctl->prof_ny);
+
7082 ALLOC(obscount, int,
+
7083 ctl->prof_nx * ctl->prof_ny);
+
7084
+
7085 /* Loop over observations... */
+
7086 for (int i = 0; i < nobs; i++) {
+
7087
+
7088 /* Check time... */
+
7089 if (rt[i] < t0)
+
7090 continue;
+
7091 else if (rt[i] >= t1)
+
7092 break;
+
7093
+
7094 /* Check observation data... */
+
7095 if (!isfinite(robs[i]))
+
7096 continue;
+
7097
+
7098 /* Calculate indices... */
+
7099 int ix = (int) ((rlon[i] - ctl->prof_lon0) / dlon);
+
7100 int iy = (int) ((rlat[i] - ctl->prof_lat0) / dlat);
+
7101
+
7102 /* Check indices... */
+
7103 if (ix < 0 || ix >= ctl->prof_nx || iy < 0 || iy >= ctl->prof_ny)
+
7104 continue;
+
7105
+
7106 /* Get mean observation index... */
+
7107 int idx = ARRAY_2D(ix, iy, ctl->prof_ny);
+
7108 obsmean[idx] += robs[i];
+
7109 obscount[idx]++;
+
7110 }
+
7111
+
7112 /* Analyze model data... */
+
7113 for (ip = 0; ip < atm->np; ip++) {
+
7114
+
7115 /* Check time... */
+
7116 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7117 continue;
+
7118
+
7119 /* Get indices... */
+
7120 int ix = (int) ((atm->lon[ip] - ctl->prof_lon0) / dlon);
+
7121 int iy = (int) ((atm->lat[ip] - ctl->prof_lat0) / dlat);
+
7122 int iz = (int) ((Z(atm->p[ip]) - ctl->prof_z0) / dz);
+
7123
+
7124 /* Check indices... */
+
7125 if (ix < 0 || ix >= ctl->prof_nx ||
+
7126 iy < 0 || iy >= ctl->prof_ny || iz < 0 || iz >= ctl->prof_nz)
+
7127 continue;
+
7128
+
7129 /* Get total mass in grid cell... */
+
7130 int idx = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7131 mass[idx] += atm->q[ctl->qnt_m][ip];
+
7132 }
+
7133
+
7134 /* Extract profiles... */
+
7135 for (int ix = 0; ix < ctl->prof_nx; ix++)
+
7136 for (int iy = 0; iy < ctl->prof_ny; iy++) {
+
7137 int idx2 = ARRAY_2D(ix, iy, ctl->prof_ny);
+
7138 if (obscount[idx2] > 0) {
+
7139
+
7140 /* Check profile... */
+
7141 okay = 0;
+
7142 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7143 int idx3 = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7144 if (mass[idx3] > 0) {
+
7145 okay = 1;
+
7146 break;
+
7147 }
+
7148 }
+
7149 if (!okay)
+
7150 continue;
+
7151
+
7152 /* Write output... */
+
7153 fprintf(out, "\n");
+
7154
+
7155 /* Loop over altitudes... */
+
7156 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7157
+
7158 /* Get temperature, water vapor, and ozone... */
+ +
7160 intpol_met_time_3d(met0, met0->t, met1, met1->t, t, press[iz],
+
7161 lon[ix], lat[iy], &temp, ci, cw, 1);
+
7162 intpol_met_time_3d(met0, met0->h2o, met1, met1->h2o, t, press[iz],
+
7163 lon[ix], lat[iy], &h2o, ci, cw, 0);
+
7164 intpol_met_time_3d(met0, met0->o3, met1, met1->o3, t, press[iz],
+
7165 lon[ix], lat[iy], &o3, ci, cw, 0);
+
7166
+
7167 /* Calculate volume mixing ratio... */
+
7168 int idx3 = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7169 vmr = MA / ctl->molmass * mass[idx3]
+
7170 / (RHO(press[iz], temp) * area[iy] * dz * 1e9);
+
7171
+
7172 /* Write output... */
+
7173 fprintf(out, "%.2f %g %g %g %g %g %g %g %g %g %d\n",
+
7174 t, z[iz], lon[ix], lat[iy], press[iz], temp, vmr, h2o, o3,
+
7175 obsmean[idx2] / obscount[idx2], obscount[idx2]);
+
7176 }
+
7177 }
+
7178 }
+
7179
+
7180 /* Free... */
+
7181 free(mass);
+
7182 free(obsmean);
+
7183 free(obscount);
+
7184
+
7185 /* Finalize... */
+
7186 if (t == ctl->t_stop) {
+
7187
+
7188 /* Close output file... */
+
7189 fclose(out);
+
7190
+
7191 /* Free... */
+
7192 free(lon);
+
7193 free(lat);
+
7194 free(area);
+
7195 free(z);
+
7196 free(press);
+
7197 free(rt);
+
7198 free(rz);
+
7199 free(rlon);
+
7200 free(rlat);
+
7201 free(robs);
+
7202 }
+
7203}
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ write_sample()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_sample (const char * filename,
ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Write sample data.

+ +

Definition at line 7207 of file libtrac.c.

+
7213 {
+
7214
+
7215 static FILE *out;
+
7216
+
7217 static double area, dlat, rmax2, *rt, *rz, *rlon, *rlat, *robs, kz[EP],
+
7218 kw[EP];
+
7219
+
7220 static int nobs, nk;
+
7221
+
7222 /* Set timer... */
+
7223 SELECT_TIMER("WRITE_SAMPLE", "OUTPUT", NVTX_WRITE);
+
7224
+
7225 /* Init... */
+
7226 if (t == ctl->t_start) {
+
7227
+
7228 /* Allocate... */
+
7229 ALLOC(rt, double,
+
7230 NOBS);
+
7231 ALLOC(rz, double,
+
7232 NOBS);
+
7233 ALLOC(rlon, double,
+
7234 NOBS);
+
7235 ALLOC(rlat, double,
+
7236 NOBS);
+
7237 ALLOC(robs, double,
+
7238 NOBS);
+
7239
+
7240 /* Read observation data... */
+
7241 read_obs(ctl->sample_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
7242
+
7243 /* Read kernel data... */
+
7244 if (ctl->sample_kernel[0] != '-')
+
7245 read_kernel(ctl->sample_kernel, kz, kw, &nk);
+
7246
+
7247 /* Create output file... */
+
7248 LOG(1, "Write sample data: %s", filename);
+
7249 if (!(out = fopen(filename, "w")))
+
7250 ERRMSG("Cannot create file!");
+
7251
+
7252 /* Write header... */
+
7253 fprintf(out,
+
7254 "# $1 = time [s]\n"
+
7255 "# $2 = altitude [km]\n"
+
7256 "# $3 = longitude [deg]\n"
+
7257 "# $4 = latitude [deg]\n"
+
7258 "# $5 = surface area [km^2]\n"
+
7259 "# $6 = layer depth [km]\n"
+
7260 "# $7 = number of particles [1]\n"
+
7261 "# $8 = column density [kg/m^2]\n"
+
7262 "# $9 = volume mixing ratio [ppv]\n"
+
7263 "# $10 = observed BT index [K]\n\n");
+
7264
+
7265 /* Set latitude range, squared radius, and area... */
+
7266 dlat = DY2DEG(ctl->sample_dx);
+
7267 rmax2 = SQR(ctl->sample_dx);
+
7268 area = M_PI * rmax2;
+
7269 }
+
7270
+
7271 /* Set time interval for output... */
+
7272 double t0 = t - 0.5 * ctl->dt_mod;
+
7273 double t1 = t + 0.5 * ctl->dt_mod;
+
7274
+
7275 /* Loop over observations... */
+
7276 for (int i = 0; i < nobs; i++) {
+
7277
+
7278 /* Check time... */
+
7279 if (rt[i] < t0)
+
7280 continue;
+
7281 else if (rt[i] >= t1)
+
7282 break;
+
7283
+
7284 /* Calculate Cartesian coordinates... */
+
7285 double x0[3];
+
7286 geo2cart(0, rlon[i], rlat[i], x0);
+
7287
+
7288 /* Set pressure range... */
+
7289 double rp = P(rz[i]);
+
7290 double ptop = P(rz[i] + ctl->sample_dz);
+
7291 double pbot = P(rz[i] - ctl->sample_dz);
+
7292
+
7293 /* Init... */
+
7294 double mass = 0;
+
7295 int np = 0;
+
7296
+
7297 /* Loop over air parcels... */
+
7298#pragma omp parallel for default(shared) reduction(+:mass,np)
+
7299 for (int ip = 0; ip < atm->np; ip++) {
+
7300
+
7301 /* Check time... */
+
7302 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7303 continue;
+
7304
+
7305 /* Check latitude... */
+
7306 if (fabs(rlat[i] - atm->lat[ip]) > dlat)
+
7307 continue;
+
7308
+
7309 /* Check horizontal distance... */
+
7310 double x1[3];
+
7311 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
7312 if (DIST2(x0, x1) > rmax2)
+
7313 continue;
+
7314
+
7315 /* Check pressure... */
+
7316 if (ctl->sample_dz > 0)
+
7317 if (atm->p[ip] > pbot || atm->p[ip] < ptop)
+
7318 continue;
+
7319
+
7320 /* Add mass... */
+
7321 if (ctl->qnt_m >= 0)
+
7322 mass +=
+
7323 kernel_weight(kz, kw, nk, atm->p[ip]) * atm->q[ctl->qnt_m][ip];
+
7324 np++;
+
7325 }
+
7326
+
7327 /* Calculate column density... */
+
7328 double cd = mass / (1e6 * area);
+
7329
+
7330 /* Calculate volume mixing ratio... */
+
7331 double vmr = 0;
+
7332 if (ctl->molmass > 0 && ctl->sample_dz > 0) {
+
7333 if (mass > 0) {
+
7334
+
7335 /* Get temperature... */
+
7336 double temp;
+ +
7338 intpol_met_time_3d(met0, met0->t, met1, met1->t, rt[i], rp,
+
7339 rlon[i], rlat[i], &temp, ci, cw, 1);
+
7340
+
7341 /* Calculate volume mixing ratio... */
+
7342 vmr = MA / ctl->molmass * mass
+
7343 / (RHO(rp, temp) * 1e6 * area * 1e3 * ctl->sample_dz);
+
7344 }
+
7345 } else
+
7346 vmr = GSL_NAN;
+
7347
+
7348 /* Write output... */
+
7349 fprintf(out, "%.2f %g %g %g %g %g %d %g %g %g\n", rt[i], rz[i],
+
7350 rlon[i], rlat[i], area, ctl->sample_dz, np, cd, vmr, robs[i]);
+
7351 }
+
7352
+
7353 /* Finalize...... */
+
7354 if (t == ctl->t_stop) {
+
7355
+
7356 /* Close output file... */
+
7357 fclose(out);
+
7358
+
7359 /* Free... */
+
7360 free(rt);
+
7361 free(rz);
+
7362 free(rlon);
+
7363 free(rlat);
+
7364 free(robs);
+
7365 }
+
7366}
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + +
+ +
+
+ +

◆ write_station()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_station (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write station data.

+ +

Definition at line 7370 of file libtrac.c.

+
7374 {
+
7375
+
7376 static FILE *out;
+
7377
+
7378 static double rmax2, x0[3], x1[3];
+
7379
+
7380 /* Set timer... */
+
7381 SELECT_TIMER("WRITE_STATION", "OUTPUT", NVTX_WRITE);
+
7382
+
7383 /* Init... */
+
7384 if (t == ctl->t_start) {
+
7385
+
7386 /* Write info... */
+
7387 LOG(1, "Write station data: %s", filename);
+
7388
+
7389 /* Create new file... */
+
7390 if (!(out = fopen(filename, "w")))
+
7391 ERRMSG("Cannot create file!");
+
7392
+
7393 /* Write header... */
+
7394 fprintf(out,
+
7395 "# $1 = time [s]\n"
+
7396 "# $2 = altitude [km]\n"
+
7397 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
7398 for (int iq = 0; iq < ctl->nq; iq++)
+
7399 fprintf(out, "# $%i = %s [%s]\n", (iq + 5),
+
7400 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
7401 fprintf(out, "\n");
+
7402
+
7403 /* Set geolocation and search radius... */
+
7404 geo2cart(0, ctl->stat_lon, ctl->stat_lat, x0);
+
7405 rmax2 = SQR(ctl->stat_r);
+
7406 }
+
7407
+
7408 /* Set time interval for output... */
+
7409 double t0 = t - 0.5 * ctl->dt_mod;
+
7410 double t1 = t + 0.5 * ctl->dt_mod;
+
7411
+
7412 /* Loop over air parcels... */
+
7413 for (int ip = 0; ip < atm->np; ip++) {
+
7414
+
7415 /* Check time... */
+
7416 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7417 continue;
+
7418
+
7419 /* Check time range for station output... */
+
7420 if (atm->time[ip] < ctl->stat_t0 || atm->time[ip] > ctl->stat_t1)
+
7421 continue;
+
7422
+
7423 /* Check station flag... */
+
7424 if (ctl->qnt_stat >= 0)
+
7425 if (atm->q[ctl->qnt_stat][ip])
+
7426 continue;
+
7427
+
7428 /* Get Cartesian coordinates... */
+
7429 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
7430
+
7431 /* Check horizontal distance... */
+
7432 if (DIST2(x0, x1) > rmax2)
+
7433 continue;
+
7434
+
7435 /* Set station flag... */
+
7436 if (ctl->qnt_stat >= 0)
+
7437 atm->q[ctl->qnt_stat][ip] = 1;
+
7438
+
7439 /* Write data... */
+
7440 fprintf(out, "%.2f %g %g %g",
+
7441 atm->time[ip], Z(atm->p[ip]), atm->lon[ip], atm->lat[ip]);
+
7442 for (int iq = 0; iq < ctl->nq; iq++) {
+
7443 fprintf(out, " ");
+
7444 fprintf(out, ctl->qnt_format[iq], atm->q[iq][ip]);
+
7445 }
+
7446 fprintf(out, "\n");
+
7447 }
+
7448
+
7449 /* Close file... */
+
7450 if (t == ctl->t_stop)
+
7451 fclose(out);
+
7452}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_vtk()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_vtk (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write VTK data.

+ +

Definition at line 7456 of file libtrac.c.

+
7460 {
+
7461
+
7462 FILE *out;
+
7463
+
7464 /* Set timer... */
+
7465 SELECT_TIMER("WRITE_VTK", "OUTPUT", NVTX_WRITE);
+
7466
+
7467 /* Write info... */
+
7468 LOG(1, "Write VTK data: %s", filename);
+
7469
+
7470 /* Set time interval for output... */
+
7471 double t0 = t - 0.5 * ctl->dt_mod;
+
7472 double t1 = t + 0.5 * ctl->dt_mod;
+
7473
+
7474 /* Create file... */
+
7475 if (!(out = fopen(filename, "w")))
+
7476 ERRMSG("Cannot create file!");
+
7477
+
7478 /* Count data points... */
+
7479 int np = 0;
+
7480 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7481 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7482 continue;
+
7483 np++;
+
7484 }
+
7485
+
7486 /* Write header... */
+
7487 fprintf(out,
+
7488 "# vtk DataFile Version 3.0\n"
+
7489 "vtk output\n" "ASCII\n" "DATASET POLYDATA\n");
+
7490
+
7491 /* Write point coordinates... */
+
7492 fprintf(out, "POINTS %d float\n", np);
+
7493 if (ctl->vtk_sphere) {
+
7494 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7495 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7496 continue;
+
7497 double radius = (RE + Z(atm->p[ip]) * ctl->vtk_scale
+
7498 + ctl->vtk_offset) / RE;
+
7499 double x = radius * cos(atm->lat[ip] / 180. * M_PI)
+
7500 * cos(atm->lon[ip] / 180. * M_PI);
+
7501 double y = radius * cos(atm->lat[ip] / 180. * M_PI)
+
7502 * sin(atm->lon[ip] / 180. * M_PI);
+
7503 double z = radius * sin(atm->lat[ip] / 180. * M_PI);
+
7504 fprintf(out, "%g %g %g\n", x, y, z);
+
7505 }
+
7506 } else
+
7507 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7508 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7509 continue;
+
7510 fprintf(out, "%g %g %g\n", atm->lon[ip], atm->lat[ip],
+
7511 Z(atm->p[ip]) * ctl->vtk_scale + ctl->vtk_offset);
+
7512 }
+
7513
+
7514 /* Write point data... */
+
7515 fprintf(out, "POINT_DATA %d\n", np);
+
7516 for (int iq = 0; iq < ctl->nq; iq++) {
+
7517 fprintf(out, "SCALARS %s float 1\n" "LOOKUP_TABLE default\n",
+
7518 ctl->qnt_name[iq]);
+
7519 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7520 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7521 continue;
+
7522 fprintf(out, "%g\n", atm->q[iq][ip]);
+
7523 }
+
7524 }
+
7525
+
7526 /* Close file... */
+
7527 fclose(out);
+
7528}
+
+
+
+
+
+ + + + diff --git a/doxygen/libtrac_8c.js b/doxygen/libtrac_8c.js new file mode 100644 index 0000000000..9eea2970ba --- /dev/null +++ b/doxygen/libtrac_8c.js @@ -0,0 +1,95 @@ +var libtrac_8c = +[ + [ "buoyancy_frequency", "libtrac_8c.html#ae6b1ba8f9877aeed2c68ae3109f1d234", null ], + [ "cart2geo", "libtrac_8c.html#aaf98f7230de0893b8dc4833d3c83c7a4", null ], + [ "clim_oh", "libtrac_8c.html#a9ba00889eeb600010467d8b62de94a36", null ], + [ "clim_oh_diurnal_correction", "libtrac_8c.html#a40393f78fb69719a43e79b54dace29b5", null ], + [ "clim_photo", "libtrac_8c.html#afb5aaa2ee2de7b0625084e6a18503996", null ], + [ "clim_tropo", "libtrac_8c.html#a4531cb279e09061a6f34a73695c7b692", null ], + [ "clim_tropo_init", "libtrac_8c.html#aa9cf40c6960c5078d1ea9e12a2fb0872", null ], + [ "clim_ts", "libtrac_8c.html#acbf877af94269d0aa1c94b7c50121df8", null ], + [ "clim_zm", "libtrac_8c.html#a41f5ab8ff7acad400fe7332b6b53288a", null ], + [ "compress_pack", "libtrac_8c.html#abe573e8a40cd632144770a326361c8fc", null ], + [ "day2doy", "libtrac_8c.html#a0816a7fc51af1fbaf5146435baf29f82", null ], + [ "doy2day", "libtrac_8c.html#ab49cba44fc2caf4c419798b0ffc47f77", null ], + [ "geo2cart", "libtrac_8c.html#ae3aea782dfca9019f3f2d169f8cc0f6d", null ], + [ "get_met", "libtrac_8c.html#a7e748a53552146213c2716ca829d345f", null ], + [ "get_met_help", "libtrac_8c.html#adad9dec9d69ea6d2be2891eab7f6f67a", null ], + [ "get_met_replace", "libtrac_8c.html#ac54a92b848d49b96ef6091df37b552f2", null ], + [ "intpol_met_4d_coord", "libtrac_8c.html#a8d75be729f28e7e8927561210d81e48c", null ], + [ "intpol_met_space_3d", "libtrac_8c.html#ab697dbe3b5a6fc59b5defc1b80c558aa", null ], + [ "intpol_met_space_2d", "libtrac_8c.html#adafd1410822189cadee393d5cec50a59", null ], + [ "intpol_met_time_3d", "libtrac_8c.html#a45e1b76bdf16030222665374ecc02e18", null ], + [ "intpol_met_time_2d", "libtrac_8c.html#a0306bc1616303cc969e103d6faca3593", null ], + [ "jsec2time", "libtrac_8c.html#acc0c1829ca7770d2dd6342f2cdf10bb9", null ], + [ "locate_irr_3d", "libtrac_8c.html#abe2fe1fe05e15b55bc4d4031a084490b", null ], + [ "locate_vert", "libtrac_8c.html#ad93b6fdc706c932016eb2586f35dc985", null ], + [ "kernel_weight", "libtrac_8c.html#ae61cf973263fcc45574daa27d0dec8cd", null ], + [ "lapse_rate", "libtrac_8c.html#afa485eb277a5ced6dac0ed77665c976c", null ], + [ "level_definitions", "libtrac_8c.html#a51f61e053cfec3bdd62fa3a8110e046e", null ], + [ "locate_irr", "libtrac_8c.html#a4e1b87dc3c93a23c89f739adf10b60dc", null ], + [ "locate_reg", "libtrac_8c.html#a2a3c8ab98f21179741b274439786726d", null ], + [ "nat_temperature", "libtrac_8c.html#a623b433e01381315e5d49fc4c2bc3548", null ], + [ "quicksort", "libtrac_8c.html#a2d35c49f4a1313a00a0b6da2f9bb877c", null ], + [ "quicksort_partition", "libtrac_8c.html#acae80df3d9e2a42d76476a8d223119a4", null ], + [ "read_atm", "libtrac_8c.html#a10ab9cbb20f7bacc7bad573191f7cabb", null ], + [ "read_atm_asc", "libtrac_8c.html#a324e0e62532d05f6711ce43bfebfa897", null ], + [ "read_atm_bin", "libtrac_8c.html#a69ed50f3a7f993df25260736697ae960", null ], + [ "read_atm_clams", "libtrac_8c.html#a66f35b5e3cd571f05c2430ebc9ba62a0", null ], + [ "read_atm_nc", "libtrac_8c.html#a099fcc594e7bb8ce70bb55be9cccb69e", null ], + [ "read_clim", "libtrac_8c.html#a28828a87a5a435af28435a7976e499e4", null ], + [ "read_clim_photo", "libtrac_8c.html#a898220b4fa13f36f4d91453fbe7d7ee5", null ], + [ "read_clim_ts", "libtrac_8c.html#a4cede5e5a40493bb4b55605a64cbf567", null ], + [ "read_clim_zm", "libtrac_8c.html#a0a2bbd978da0bcd524e44647ff349a73", null ], + [ "read_ctl", "libtrac_8c.html#ab8054000249eb04a88fc06bba77dd573", null ], + [ "read_kernel", "libtrac_8c.html#a7a3277ab872141360b876c25b5643ba6", null ], + [ "read_met", "libtrac_8c.html#adaf12f02099c61792e04447367f1c37d", null ], + [ "read_met_bin_2d", "libtrac_8c.html#a029c77074da450079bdb1ce77964159b", null ], + [ "read_met_bin_3d", "libtrac_8c.html#a1cafe18e5c051e7107cb918a1dbd0db8", null ], + [ "read_met_cape", "libtrac_8c.html#ae8d8e4969b972ebf2bfea8ad774b9822", null ], + [ "read_met_cloud", "libtrac_8c.html#a99a02172665504fa93b85dd442c850db", null ], + [ "read_met_detrend", "libtrac_8c.html#a95998555c31d67b672339a2332f7ee1c", null ], + [ "read_met_extrapolate", "libtrac_8c.html#a089d9c0099e3fc6944c2a48667362ca0", null ], + [ "read_met_geopot", "libtrac_8c.html#aeaaa3090b6f7f9f471fbd24392304341", null ], + [ "read_met_grid", "libtrac_8c.html#ad3b59a5ce89df2ef37437ed08f6ef77b", null ], + [ "read_met_levels", "libtrac_8c.html#a15081510cdc536f13a7179118ef21687", null ], + [ "read_met_ml2pl", "libtrac_8c.html#a3cdb424353dfdea020de7512894ef08f", null ], + [ "read_met_monotonize", "libtrac_8c.html#a6e7c69ecd95581d555b8a6359f78a4ca", null ], + [ "read_met_nc_2d", "libtrac_8c.html#ac1ca5ed33a24caef6d62d5e283052438", null ], + [ "read_met_nc_3d", "libtrac_8c.html#a1dd9f12ef11ed0a54d9e4337756e5da5", null ], + [ "read_met_pbl", "libtrac_8c.html#a5ea707d2282eb7750fd4e9b4de10c1e0", null ], + [ "read_met_periodic", "libtrac_8c.html#a38f91765df8eb0a66fb3a6408dca0600", null ], + [ "read_met_pv", "libtrac_8c.html#ac2c90884cb02bf90f095ff36f41e020a", null ], + [ "read_met_ozone", "libtrac_8c.html#a9ee63e8a6c82ac0dc569255455a50da2", null ], + [ "read_met_sample", "libtrac_8c.html#a6a49f49a3a974cda1f9b0ff261d34c81", null ], + [ "read_met_surface", "libtrac_8c.html#ab3e201b153aa01202bb286d650ef07c5", null ], + [ "read_met_tropo", "libtrac_8c.html#a66ef5f17dd5cbc26a4a456f7a0d6205c", null ], + [ "read_obs", "libtrac_8c.html#a8031d82ad41705d1a3662e25e87a3dff", null ], + [ "scan_ctl", "libtrac_8c.html#ad42c44913b360d00d45282d96dad493b", null ], + [ "sedi", "libtrac_8c.html#a1b580107362b559d90f6766d340cc370", null ], + [ "spline", "libtrac_8c.html#a62786d005ed312f3c9ba2fac7cd544fc", null ], + [ "stddev", "libtrac_8c.html#a87088b5ccf95f03d986f1bdd570b5b2f", null ], + [ "sza_calc", "libtrac_8c.html#ab0bfcf61833d71fb831d4faae03ce709", null ], + [ "time2jsec", "libtrac_8c.html#a578e7ebaa62304182de8fe7ddf144b8f", null ], + [ "timer", "libtrac_8c.html#a15d51008ea7a5446b5a532dc6cfaee2b", null ], + [ "time_from_filename", "libtrac_8c.html#a98e813ec34f6121b5fdd8652d29b10dc", null ], + [ "tropo_weight", "libtrac_8c.html#ae9583382a3025752eaaf56a1fcc3380f", null ], + [ "write_atm", "libtrac_8c.html#a6f8a7ad670fbfe7dd4ed81f66695db6f", null ], + [ "write_atm_asc", "libtrac_8c.html#a35d13994c6a0e753baf0e0df39bc8645", null ], + [ "write_atm_bin", "libtrac_8c.html#ac8f665b550ead41a8cc17da17132a63c", null ], + [ "write_atm_clams_traj", "libtrac_8c.html#a56873d15f57e990c702ec46e5016abd8", null ], + [ "write_atm_clams", "libtrac_8c.html#aa166d9de337fa3572477f102168b2907", null ], + [ "write_atm_nc", "libtrac_8c.html#ad5e5574adb44a2bb04fc21c3e20a9e2a", null ], + [ "write_csi", "libtrac_8c.html#a70ca26c59c2fca1fda54a29dfd3625b6", null ], + [ "write_ens", "libtrac_8c.html#af5d8dfa5fe43fa2bf192ee4a7b821b1f", null ], + [ "write_grid", "libtrac_8c.html#a59757e2569c3f96f57e291fdbe3ddc29", null ], + [ "write_grid_asc", "libtrac_8c.html#a8bdd741d54d2111b3341ef04d826b475", null ], + [ "write_grid_nc", "libtrac_8c.html#ace302042852c62c50d34e6b1ef672bb6", null ], + [ "write_met", "libtrac_8c.html#a044c272334c81fcf88f9f01c551c1bb1", null ], + [ "write_met_bin_2d", "libtrac_8c.html#a463d151fd69782a7f31f4d535f377cb0", null ], + [ "write_met_bin_3d", "libtrac_8c.html#a277456b731e2a0a531884a8390250b03", null ], + [ "write_prof", "libtrac_8c.html#af2d95b1eb426ead1c25fe5f198f476c9", null ], + [ "write_sample", "libtrac_8c.html#a684686ab1a1db21abc1c65b66d9db10a", null ], + [ "write_station", "libtrac_8c.html#a6afa769139ff29d1aa185e317f2f69c7", null ], + [ "write_vtk", "libtrac_8c.html#a2b06d8cbf3ebbe76a9c0e23db3eb5a41", null ] +]; \ No newline at end of file diff --git a/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.map b/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.map new file mode 100644 index 0000000000..bb5da78118 --- /dev/null +++ b/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.md5 b/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.md5 new file mode 100644 index 0000000000..77bb870357 --- /dev/null +++ b/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.md5 @@ -0,0 +1 @@ +639fafce9efe69c9febb4a69e135534c \ No newline at end of file diff --git a/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.png b/doxygen/libtrac_8c_a0306bc1616303cc969e103d6faca3593_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..434b5736940b967b8cbd6ab9cbc25cf3bfa425e9 GIT binary patch literal 4568 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 a*k?L4aBR|~75fT)h3MWwX%%bOhyE9Cd%ju# literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map b/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map new file mode 100644 index 0000000000..695654872e --- /dev/null +++ b/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 b/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 new file mode 100644 index 0000000000..76152fcb18 --- /dev/null +++ b/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 @@ -0,0 +1 @@ +0a108ca4c2026af30905e31c6a1f9a4c \ No newline at end of file diff --git a/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.png b/doxygen/libtrac_8c_a044c272334c81fcf88f9f01c551c1bb1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..85aeb454ec27d89eb472ce03977773c3e1f1fab2 GIT binary patch literal 6659 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map b/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map new file mode 100644 index 0000000000..d5f3d3dd97 --- /dev/null +++ b/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 b/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 new file mode 100644 index 0000000000..9eda2f0fb2 --- /dev/null +++ b/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 @@ -0,0 +1 @@ +591d5efa1233a24791cd252541de403f \ No newline at end of file diff --git a/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.png b/doxygen/libtrac_8c_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7732a8195fdab3666fa3b45a5b31104be4446ec1 GIT binary patch literal 9759 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.map b/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.map new file mode 100644 index 0000000000..a15908a9da --- /dev/null +++ b/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.md5 b/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.md5 new file mode 100644 index 0000000000..214a083919 --- /dev/null +++ b/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.md5 @@ -0,0 +1 @@ +6c8c68a05b1384c86d96cd4d683282f8 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.png b/doxygen/libtrac_8c_a15081510cdc536f13a7179118ef21687_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..22954708694394960014017055f51c543382fd94 GIT binary patch literal 6472 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 W^QSK9!6Wc!1fs62qx1!875*PrS@vN7 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map b/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map new file mode 100644 index 0000000000..d0f7cd7088 --- /dev/null +++ b/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 b/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 new file mode 100644 index 0000000000..51cc62fcfa --- /dev/null +++ b/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 @@ -0,0 +1 @@ +336be5e877de50edf516db5ff22ae61b \ No newline at end of file diff --git a/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.png b/doxygen/libtrac_8c_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..b09767e7b660ab879d243f0c23e95ba04308bcd7 GIT binary patch literal 3381 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 RIqWOxIiTYCLo_ + + + diff --git a/doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.md5 b/doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.md5 new file mode 100644 index 0000000000..1b8cdccb77 --- /dev/null +++ b/doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.md5 @@ -0,0 +1 @@ +d67a26df05ec6f86b23b5690565b4654 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.png b/doxygen/libtrac_8c_a277456b731e2a0a531884a8390250b03_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a3558c106c7f0c847797d3df54f7315cebd4fa GIT binary patch literal 3120 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 f-$(yv**%^cucIGcly%PQnMDzj{ literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.map b/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.map new file mode 100644 index 0000000000..192525094c --- /dev/null +++ b/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.md5 b/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.md5 new file mode 100644 index 0000000000..d306f4d006 --- /dev/null +++ b/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.md5 @@ -0,0 +1 @@ +55d6846df9c6806bfd85803a4de66999 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.png b/doxygen/libtrac_8c_a28828a87a5a435af28435a7976e499e4_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..c713c8033ee6d48a046794b0732ee7323ea921ea GIT binary patch literal 16160 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 + + + diff --git a/doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 b/doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 new file mode 100644 index 0000000000..e6f15fb336 --- /dev/null +++ b/doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 @@ -0,0 +1 @@ +79939d42837247b411e0146fce6ae7f7 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png b/doxygen/libtrac_8c_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a101af3f273281f62969928b8c2096d5268e239 GIT binary patch literal 4092 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 + + + diff --git a/doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 b/doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 new file mode 100644 index 0000000000..a3a2391a83 --- /dev/null +++ b/doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 @@ -0,0 +1 @@ +c84d38b5eb76cab914f3433f04c4c209 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.png b/doxygen/libtrac_8c_a35d13994c6a0e753baf0e0df39bc8645_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b2c399380608260ad7e8b790ff079a1b486664 GIT binary patch literal 2640 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.map b/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.map new file mode 100644 index 0000000000..06c92a5c33 --- /dev/null +++ b/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 b/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 new file mode 100644 index 0000000000..510b9a70f1 --- /dev/null +++ b/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 @@ -0,0 +1 @@ +67700b9833548241633b6d2a336dec7a \ No newline at end of file diff --git a/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.png b/doxygen/libtrac_8c_a3cdb424353dfdea020de7512894ef08f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..b3862960ea0caa338f0c5f5b9e7eae18c1733f09 GIT binary patch literal 2528 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.map b/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.map new file mode 100644 index 0000000000..7965067f13 --- /dev/null +++ b/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 b/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 new file mode 100644 index 0000000000..399469326c --- /dev/null +++ b/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 @@ -0,0 +1 @@ +8e3cb09b485e940d41f7161bf3f07930 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.png b/doxygen/libtrac_8c_a40393f78fb69719a43e79b54dace29b5_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a6eb4c0612d6fd602d41dd65c1fd3fd3814be655 GIT binary patch literal 2686 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map b/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map new file mode 100644 index 0000000000..f561671d85 --- /dev/null +++ b/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 b/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 new file mode 100644 index 0000000000..6411f5239f --- /dev/null +++ b/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 @@ -0,0 +1 @@ +7156a460489e661353a6fde0739e0c69 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.png b/doxygen/libtrac_8c_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f2c34b9ec5639fde15889f6fdbcc213d61b284 GIT binary patch literal 4216 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 eT>sV6G) + + + + diff --git a/doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 b/doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 new file mode 100644 index 0000000000..63b38e39af --- /dev/null +++ b/doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 @@ -0,0 +1 @@ +682ff328b0172e5f53a65dafc9277afb \ No newline at end of file diff --git a/doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.png b/doxygen/libtrac_8c_a4531cb279e09061a6f34a73695c7b692_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..bdfe865d843095dd6665e14f2ee1c14c98714de1 GIT binary patch literal 4473 zcmZWtbyyT#xF44kBm_ia3HcBZmRdnNB^E&%;iIKx(WODU5ms72KoF2#Qc93kNVsG*c}!Fd53Mx-!MT2DBY zgA=ipx~dX%_1~V|T$ltwHwDy`6!g8{ZDl^w*PEQ__99h)-MRjh>kh?J1geM_@vU>c ztm22`JL)`L#)HPMGrvCu;quvLIOZO`S*-h*r+hE}OJXiNS*(LgF6-f5Fe1qcd1}tPcf)&a5_^|DHYSSc+u~Sd zzS$tJ6Lyps;L_96AxO7aL|XbsM@PrkuV3fqTU%OKA>IM%NA& z7Azro1qB61N5`j6bF_Knp?v9*0Z*VIr`sKbkG@+~w->0()DK z7|P4bGcq=Q@Zf=+y?u9Q=SyE-0%&A(bU0o3e>VssRM_0w%E-v*cK0|x**iJ$uEC9s z=_AvA%*|=$>((+a;PJO_-W0y{`6f>#S>b@e*dx81Wo5k&I4%D0fxv$)uDz>kC6X;be(ddPTY@ApF)>p` z;SIXgCJt$7>AQFH8yg$z>%|^Cm>3-$9T?z8AP}OWwdLiSyvYHlYlWAWmk@-Y@3TRc zm6r1I@g*fCby`)K3aEa6?(XIF4=D{jeaf3R`i6#+v$GlL>5dqT91@8<(;~!!h*ee! z==Mq*p;Gtf zYkHqd1ycJme=Fq3dk|oi`4H!30){-vCHLq@CdG_Q`YI|g-BuLKt_`}^At)l^$h+zM z^e`fs@27`-#b6L@oWk5(q``F0Y1&~qR53@N=S^TLyZF11_Emq;@#_o7q;hA^I$@z9 zdaSjBgQa65yRge>u5#QfC6>~i)$2o{gEYvr+~T$CaozYmLTT34f(R{k25e{O656VY z_|e^uPru}bg~ia*hw&MX*v}hZTqAQYh(|?SoqWjbrX8Cgb3_vbUj9YpXeXk$5cC6+ zlY8@5<^kKL9%^bo=P_>3Wh~}kw-WFAke)wxW6)FP7h^CPVThF1_UbpfpT8Csb~#L5 z8Z$63lviL>SvcdkPc|yL$-)y+BA#y5`^R1{uP%}iDWN!A4DYwP>gt{KaY+NWhYt}^ zVON{ghwbgM)*LQGu=ZlTLi4V=hQ9l-W;eX1gF{id#xQ?-dwY`E4Ym(GR~I`8x>3|o z-eO|2LC_?X>kFt=I^|^TUlv z`+3TrAz2ZA0v8t#saV}#>u^Td{91SXpqrPGu|-bV=zNDFw4I%lhI--8`zt~TNk{WP z@49_ag0Od?jt>#6jt<@>J#trmVeGGBC=xndjp_$8I$fPTYW=rFvBe&m>K6A>eoF)nDFo&Sb z7mL4@XPeTtek)s7!FlNP%uJ5g0ggsjRY`OFVgsX=dOJqr!EmiayiS2VcX4g4sIc%& zXlQ)=aIc$9OZ|QIjZA^dh0uBem}!pWVf5O~A|(!mr6&XZ{d2xM&Ck|oVb?}mZns*t z!|1VxNEuFUZZNMkQ)S{C2K866Wn^TywX&A?|LXIKiinKO%ouy9bJDQL`km}9egQ}m z9v%*uqO-G;5cU*5m?v+v(7?jN;x6gGF;T`zbDgCFfPGOBXAX6W18^KcFC{HqYK#8b+Y2U~l!Sy1&zr%)K|o7kVT2qB-bb7N@+LQ8=4GL_kG6fD zn^P_u6Z}$Ap8;%smp$tr9HfMVgoK>e$BLD)^f48Gk7hAiN5Xe}I`U*3&}iJ}v(?3a zZxAnSZN+q2iB51Ppd8@YIXQR26%}xdOiV4_Z&||?@6bd+knH=Nm6ZZsFE20EYRZIO z8~scuD4hKEpTFl(j*2ThN%TCdacuB0=V%u$ArZL8E{LI}rM!WxkdURLBN-I`DF0Eu zu7QJ<6;kJM58QSHW?Ma7kD1@z-X?|skONjz%O6>*Rm+#SB`YgyYik?FCPxg_)YZ*3 z``#X46hR_&O-*k=46LjI2!u`bH0^j;zYdoS$>Gt_inDk^LV~-b89Q~UMeE#G8%e{u zdvuSCjb{MsIM^Mz_s#b8p+^fI14=I(c7O$2o*ivzYHA)H9@-%P9&ODkD=Tv(^b8LR zgRK1e)y8k&nFtlKPde$-;#jd>PEL-X>yPsKdP5$%nVFgNj0^%OPxqO+IyN%0yQc^B z@F4-VQ#TocPS4I}XJ?1g&=wZ+OWkpR+PT(WIy+Yu7e{FpT2~nvQ1Mt*8S&8R7VE=; zA*iULLQ6xVe_-G_215b?9v$!P6Bd21uBaH2oIK7KQ2AIc?U%W9ng&-=Z%G^%7gtf@ z>({S`I#C8dz4Z5M95zQQaU`JfA|fI%Er0F&>On%8SKGxD7IL5Jm}No`N5ZQBdtH*y z_92HF;czCj;tEHj1mf5B_T}$XixwMhR#sNPaQih=1j8nlQ^HCW!7!HmvKa5pDZzS- z*wK;ZelFp%Z4h2Tm5~YAKPaFlSJ`hhybx@gNdO=Nhg&^Z(>RQe3kmTx-Bvc}A;BtV zq{PR)emxR+(TD9F`%r3m3RwO=b=1jS^|$INuM1upQl;|=l&h)pF@Bi5M>t?>^M>oL z*{fLdy~Rk}bwUb-E^3c#`C0`|CftUB%;u+0pH^D0_;tcraGW@BSzWEgnFvA1`JWm0n2EYD0|yt{Ltsj(^^wAjrTC- zQH69?TThRrjnXwp-t0>#3CqTW|1G+jll|{v#>TQgkN@oNKMd?%O}1(Z43k*5Clh&T z^t=ojV2j|Q`k<}h>yx*1wIU9m=pjAc>)ugPzW6dUWI2b=fB$Ol@A@L#y+BCRzpIs! zGIngztLfOhKqZbn>7ETzS+Qe!bJN81MbD;j$z)sj>A$czF<0kGYHVc9m=5nv*;f0F ziT+3`eiaoFHiE!$AjM?7rCWHv*Q+>-mj+)WR){Yb@bjqMYH%B`w#%4>OO^n$rI$l6xf-SwlVN3ESuDV&AB^>m%w+WKz<1=iiEiWMS~^xgILBfRG6 z34k1JkJsTxraf_QB%(a-C%-t^!>i`HHv9nT_wL=hG^C;2e|=~aaN>$ zb$JuS4-PMF*3{M2wXxw0VW)`-`?6?cVp45{K%+O%ljV0vks=~=baXaobe~=Iz`%f@ zMaye;l$+cA&~|4pFZ=3gLRd~^CAC8Q@4i$5C`HghfQ~FOGV)7Dhm(`joc9t1IXQM@ zM3?_V>)G~a4KBC76n-WX09vBxiK&?xA0HoAarpiF)hjD2cv*3XT~JV~nb2oQLd)1V z9mVPR>{)Sfv4ra~N?(6$ch?zI2NVKKfPsMlU>4w@AgJ~76m4WQ6-q)?Qc^-gL(_6` zWCFDTEeal;|G}1(ZB1GP4&e8J&d1?!aV%1Rb7W*Yo^%2nE;nsROieAUGVt+fG(x-p zU&G<{_x9FycHYm7wo9zOE6mHY0et2y%?eT9ym^zEd3I>Xd9fpWb=ASz+8UBap-3A= z!?{>DcXk3#cAqLMcb=RR17HMyi7PE7gn-R+cXt;N6_t>ZLc_f}qi?P9$CL?}HPW%L zGy}qi+OlMP&36r_i1J1)iZ6s&i!Wy@|{lZ}8!QsibUXZ$OtU%s>_S(sv%*@OL zW(7!u&d&TsANR~wur)Qoq1|5Y_hFHdKgF)zGV`Eig;nN>&$zxQoQBjM| z;^3wR*Zx$MwGxNR+DJYiU$5;S5^gIR*49f=wA__On_nWShL@k%55D`i{)HKU^sX3Y z7jbxu${A>1N=iz{7OiTH1LFreq02+Zo9uJ2s&j+*eyuG6e45u?lEni9bWf_F#mb&H zu%95QRZ_P>u4A#-ow??WgoG-a-b7k%O@Mt!q=Sg@lPB~c?0_NvgMC}uy9ub*SS(1% z9pJ2BFj#bSG)N!Kcj8qbyudxmdbvYET~B}@u>YRLFDNMIf9n3|5m^ZPD&pnGwk6Ng zSC{a5G%&GfG_%Dv5CUAuX|KAvRN$2O)m2jHlh@AN`Z(@$V`J8a(xQu0&+;eFtr-xs z?$pA9f{)Wq{1knCeYCW+R4kHU#w8{u*1h;CS!*Z_77Lg^gR0=K>6lbhRA3N@Ixz{! zWQBzs7ws_?EC8h4C5~W_lqdOS_-75tf^G4Xc_W9B2baP literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.map b/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.map new file mode 100644 index 0000000000..66c4a8d60a --- /dev/null +++ b/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 b/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 new file mode 100644 index 0000000000..5a92f074cc --- /dev/null +++ b/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 @@ -0,0 +1 @@ +380058c0605bbf2c94e2b73a1c05b878 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.png b/doxygen/libtrac_8c_a45e1b76bdf16030222665374ecc02e18_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e872e523a54d852ffc12293fd491158ae207340b GIT binary patch literal 7308 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 VSERj*K09SZD9dZe<;z;V{x1+ntvUbz literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.map b/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.map new file mode 100644 index 0000000000..f58516ed25 --- /dev/null +++ b/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 b/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 new file mode 100644 index 0000000000..1860b5d861 --- /dev/null +++ b/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 @@ -0,0 +1 @@ +4da36f19be8bb5cd402c37dd196ee770 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.png b/doxygen/libtrac_8c_a56873d15f57e990c702ec46e5016abd8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..07d73e74c14f54ee0c366e34410ee9cb9c115fa9 GIT binary patch literal 2792 zcmVP) zm!M7uF>0yE`C#|MQ$fo_o)I8<44~DFA^$u*1RL1|X3CH(;nB5R8GLfSIW2 zYim+clD%CRAtfbcpTMx`!+2t z?dsL5mg!b#6O;Bf1?ubT zMIupdZtnBv&v)+J$>DI+YW2&PFA)S8AIBj4R`AZD5{X1|xf}q{-`~G(-MUMcE&%`r z1_mM{Behy>Yip}eC@d%_V6)jB9UbWOPb3m`baZ_C?YGs{)c}B&mX_VScgMxW2?PSA zQfWr3xVShWAt5FvX6x3iw{G2STruj$5>hSr5)#ta*JnobU3uqFu~@9%fBzi-pj0Yx zI9zjcGXUVhg9po(FGqXQ(b1vP=}JmU@OV7BiA*N*_xC?@<_w$7e(~bPp+kp~lanuB zzMPPdAdyIhhK7s^wY9a$UfPW}4puY5iqeSXTY6aYY_Qh9iIl$V!(_St7*v6w=k z$mMbxjaFP-Y|6h@tCdJ3+qP}{`RAXLlar-Vsp0<2sOYRh_wL=Rs;WA7?p#Gh1s;zt zDk?IiKFz;=ta^KUjp{B~#>XcCn9}J+E?sKmamTWe)%OcGqa?mefsIAd-v`I z031JlTtDDityZm8FI%<@-LH*}jrsZc8EO?3746%%ueY}sL69%L_(Cd`c6N3S4-Xd< z6qpjV0wYgUn1{(^78VvxOiU=1%J}&B>gwvr$;syCW)_QuHkh286bgloj*fr)@yE=~ zuV23&92~rM?OFgpbaZr0O^rgKh>D7u*^)w`R8>`>%S)Cl85|s(*#?itCnhEW0K&q; z8X6ilZrlg}2n`J_DJe1K|N8ao3XcC0MDNf{`6DBg$s4dmwWSg^xkAP{`{<(DiL z>*dRrMzucw{PT6|)&T$_BO?O>0>Z+=0080P;R6E$rbJ03(z}kyJBP~8&(F=xO{G#P zmCD1157*b%x3{-Hc<>-2BLi(fAP^iK9ZhZC*Vk8DTU%ROt6zhT(M;aFc_Ww0@87@Q z-QDf$>ua=)tE(%zfFQ^RAAF!+HsfET(U_`cM%27eNJvOzWTZeK`0&FI>2x}e$0HJn zW<2Q8kCi2zHBVzB$=7$E6&qs3*w_RBpsPzGll>b2qKC(umX@AXt7iX2ipAn@zWIhk zBGG6xHk-X?&mMPo_a{%D2!%qSP^fSA^y$;??rwj7|CtrET5WoIdTniOW@ct;YN{D6 zcXxMm!NI}7a2Z`NDr$>R0RWgx=B-<|v|25hOs3Ijb#-+bjb_!VRp__of74!GUa_&U zVzGEum7=1e#>U3<^z@Z0R}KseBqt|ZVRa@10-?RV9a~WZL3ZxknUGdr<b9I-Snl-CbYG3g-ZTh=_>d;$nqD!C)}% z-@h-FN-HWV%!|%iv#hMFy1M$*sZ;*`{wr3jXlrXT)7YqgQ=PTEUj)MNh7B~!+gpK~ zoAKL9XqJe?zwvm%Nl8q9f1k~pH(Oqo!{HDJgzW5WCX-1flhI)C`TP?nP6P!7EnT|w z!i5VmnXId;i_hn0W@fHgvxZD2pEz;i#*G^d4Glm3_#=%*JAL}JVNG;z)!*Omi6G&KQS>86%{3sNOE#=dU|>m zFJ3GXiHs%+0Knt%GBY#zd_Iv#+_h_0e}DgxBS+4iJEt#Y;S_5cBogW9(W5yzIZ~s6$73)Uetv!`mCAA_Mn$dY z5n{N@EG;cfOiY}4`wU_)Qc_YR63MLhf2C5Xx3~9vziM&w=6_RC&O13djE_&bxh>*y zgEnnquvlaVhv`{Dk5uOUsMYEfD^_52|JRNn2qKru6A}{iYpgj^VawgScMl#sICK4$ zEnBv4-@eew+ERUJXh^5iIXgRJYHd!qx;n?i{GG>RL_~bz>}>LKlqFaj#)upAS_I6<(jD+ggv17LP0huEU=LKPuJ9qA&&-MQWLE!(VfM^}7z0BEfnW>_6$FAYFjNo-#{3Vg$ow9yN@M8&0000 + + + + + + + + + + + diff --git a/doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 b/doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 new file mode 100644 index 0000000000..83b2d2456e --- /dev/null +++ b/doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 @@ -0,0 +1 @@ +995e891f4c0c3f6ed9e274d1dde194b3 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.png b/doxygen/libtrac_8c_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..9b20c3d4d9518b30643de0a7cf0ec0fb61fe2b87 GIT binary patch literal 20057 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map b/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map new file mode 100644 index 0000000000..3b24d9bc0d --- /dev/null +++ b/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 b/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 new file mode 100644 index 0000000000..7ae214fc02 --- /dev/null +++ b/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 @@ -0,0 +1 @@ +e56d555bef9a60e89eeac2edeb2fa946 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.png b/doxygen/libtrac_8c_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..01698e179d38c007550ca856e9def82fd61c7625 GIT binary patch literal 2036 zcmVbIZXrlt zM2IiMfF%+Y63VrNKtmv?Va-BvR}*qk3-VfsK?_>7NfT+JM&X7Ufq-2olot#2lHQG_ zo&7KymMtL6SXy!C_vy?tXP)yvC;yo_GiL?|K@h;eKnUL50x&ium~Sx9fcXXk4VZ5* z&_Gza(bLmYRaNCKDM)E)X>qrN|FF5n4IPIL9m>ngTipB~-;9oqwzjr%I2@O&LdNv; zv`(jUw~GG)j~k!Qcejv@LaWs}LP@ZiD4RLlAB;RAf1 z(rUFaF)<}2B_tB5ySsa_Y&M$_bpf$&UcY|*;K75NH*YEw3KEGVm&@V!z`(%N)Ko)5 zgG?rCZ*O1igwX5t27^H^mzS27*45P+jYgBnR9IM;mX_Am)+Q7RrBbQIVnM2Eqk$mE zX0t;O)Z6>dpMP%s;fJD(jN2_OFD;hONK=iBjHITf78MnZkB?uxcrh_CacXMHU@#;n zCl?nNfBg7SB9RD%LaWvK=FOYy*RLy;O0(H4kw`9FxBvi9sZ>lR^U0GZXV0EB8jXpG zi3J4(6B848d3i}mNuNG_T2nx8Z?DN@8Xg|@_4Qp^M$`+$zWMz5Gl4+x^zeQ*lGsXd{)ta51O(Kz4EY^-4JIrRYN~Ma5ii(YmB@&5o zadCV1?(OO6L8{7S*ldu^W?xvaX*2^@uG|j~FUrl8_xI1Pe`X6v~-1 zXQHB_IyyQU8XArqIg*l+LL?H?)6?hX=C*9v!eX&ZCe!}?`@Oupf`fxiCdX-3eSLj= ze0*wZDw#}9PfusF*`1x8YYMR2?NwD(G#bsJjEEK18NN(ROw8fKhqJP>wr}4a85w!v z#EG3dcLD%>eSN*Xz2Q26fq~Q0(<>fMrBXdTJ>fDAhXVjiPEM-TYPDLuScl1Et|`OE z=P$czJAt50SH7yp)jT<+fJ$v^4{rly60RVcvzPY)%xw&~UvYxd?8jVIE5SEt_f%q64 z4ws#seg6FU!NI|fj*fzYf_wMw0RYTqv&CY8tz$44wr$(C+TjinDwWFRatjIy5Xt!C zk9TtU-;s((icI!kety-d41s{R+3ZB3*MS4Rj~@M!lk*Qe-m!Pf2?z*y_3G8)=E%rM zR8$m^NPPSDtwYW7@^Yn8SyNLJ85ub_Il0trFfFVmLtgH+P2?-4i9UL5l<955frlv+L7LSjQ-@kwV+_`h>OvvGI#9}dr!(lR+eSLkU zrKQ!?)yv1o0jqU}$BRHJ9x0WTkCq2LJn(iqL?GZe9ELy;ose*#y}hlYV{|>H0RRYv z!m_e5g+dV@AK%v2_VVS+`uh6$`T6ql^3KlAxVX5dPoD~f!ik9q4-XGNKfgVD_UQHc zt5>f=5HveGOQlkAINa>)tle(s^Z9Hxo6qOR#>Q$i8j(n((P+ZM!<{`0D}dNHNl8fq z0|S|vnO3VcEG$eamBMj9KRq!_C6eN{OZ{NOcFc@ewT7G{1 znx=6JI2;a-$3YOpX46HYKXbX^WU?2EJajs}wY60uk(@q#n!#W^eE87c-yZgrl?Nk=M`mX(z`u_5R9X5YSjF1y&clBT8$G#auO8}20`A;C45J#3xf zOKdLFxDw1a7-+zJgMkLjHyCKZe1n086`rS-E){*7^!N9>Tfzz~T_^g^7#kZ43=CWv zS;05o;IB!W0+C4MZV4NR!(WBC@Axez#>RooZ!pk+`33_Gm~Sx9fcXXk4gUr(1Nf_c SwuJcr0000 + + + + + + + diff --git a/doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 b/doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 new file mode 100644 index 0000000000..be38abc780 --- /dev/null +++ b/doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 @@ -0,0 +1 @@ +d96599d1f4f98d4c4225e620d1b4a10f \ No newline at end of file diff --git a/doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png b/doxygen/libtrac_8c_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..553ab043eef6f2cd50179b908a3286f2bf1f6108 GIT binary patch literal 13282 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 KsYt;z;Qs)J_k}tD literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map b/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map new file mode 100644 index 0000000000..bbed01041b --- /dev/null +++ b/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 b/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 new file mode 100644 index 0000000000..4339a0a0d3 --- /dev/null +++ b/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 @@ -0,0 +1 @@ +d034a08e72f7561d001ff8fab6b58c0d \ No newline at end of file diff --git a/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.png b/doxygen/libtrac_8c_a684686ab1a1db21abc1c65b66d9db10a_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..338741d3ef28ac2a4935695d8b2fa38362be4162 GIT binary patch literal 18640 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map b/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map new file mode 100644 index 0000000000..6ac47c2fbe --- /dev/null +++ b/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 b/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 new file mode 100644 index 0000000000..b3c9108a0a --- /dev/null +++ b/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 @@ -0,0 +1 @@ +0601da9765539f74eb043b47c7d0be78 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.png b/doxygen/libtrac_8c_a6afa769139ff29d1aa185e317f2f69c7_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..63ff3445b7b5932a5ff5727979defd5a92591ab3 GIT binary patch literal 3036 zcmY*bbyQT_9_9iU5Co(p1OZ70rMpBJL{L&1lo-0ZQE6ttiztZ1P(wJ<0usY0NDn17 zj5N~25JTrXzWc{pZ=H3{-fNw;_x{BfJIUawHZ3&=H3S&aixO5jK_j8uJHjZX;8YDqO9VjJzW|db8Y7vBg`3R zS_?-AIA04|?Pic>C3Ukqnt1%iUv-rjx;;h25fxgT+0tyQCi!nr!Nj^TSQaYs*W4O6 z|0ZSPjWxV2&hX!<-R}JBI_IIcd3jziOY)=M-d>5IYi~5=qrgu2tBucZB9X}6fdMVS zbd|J1@<G#oo7rPu; zPmb=?TT&A{^vkZF0zq0@kiD5;bpCh)d&|3o5>w93eNT)+G%hk=% z@eTrk5R~dlFY6wA|9-~t>`>$Uyn%tW0gAy~l^~X*VKx)hxL?1n(bGG3CbLM(%GP?% zsj6P=8>ez9NR}*xgoOC){qB|6^d7T=L81IgN}MkMY zISKZKA4yD@EGfzwbIeB>cPeUXJ}D`tm(QawSjtV3D=NfhXJ_MAspd=JQSBWaWL8#I z5s{I!n}cw*q2t}9scJhi`91?wu7ABt#)OBU%Fd(~v2vasZy>9De0}WzU;(uq#^L(9 zQaCNzA{0VHLxq{C8JU>Y@p!JnpcMIJ&u6@$K8U=BO~4rlzLYgal%*5Zq^TLX5;~`s*uGq!z*`Ehk6M z$w~0w;Gk$`09-n`xlWiU8eJE;Uj;75*d5|EO)F0Ga&j0iPd5qt2Ua#VDc1L#&knc7 z#>XYxCqPf(sOb2? z>zkY3Oi4)rz+_}>JX#u*0*)yv;tt4s43!3Y4u%#4lgp7nhHee`c^ zjl*)4fDDH=; z91+$HkX1Vi2^Ot;eNGcqX1?o2ob>+Y5D0{Uiwl$O-PQ}B*--SoUbZalT2>P|C1qW} zx{;vXhi`rF@1{LQFtf4(Js&tfAp+#W;&8Q20~`?%5vNbIuFi@2toLp8w6!S#DssvD zyv)zP4IsXzp}}dn@BMUhAdRlBuCj`XtEVSqFh>E#DMu$HBm~rzHgY{c@#pAhO=BZZ z`o(en1MdV*5#ZOKQ{Ue;190qt`;xS{XkTfIdJF&)F0S`c`WirKyE6|Lm-+qm(Ri~S zTLOXb&`U0uU`Hrpp;+<2jRbnsjCr>FNElYu#%6{j zASfs;bJ9P>)BEb))#Z^$VbK+hR9yj2bYP$iz_EC=79T@uYO4AWXlc0MA(vu6*^sPc z77T~8yu+viUuI1D;RD8RZ19PRrR?tq6c!f#5j$B~Srap}rNu?b7h<`&x%la(^yg70 zammTaQCs+}t(xkafsPb1f+}YxCk3WRS1&IxU)ub_!uKpGXBRg&`$POxd=S5i_!b^d zMN2Ed%ezppaU)4nQ(K#fom~e45ztQM;^pOi6?t}e;EpsZKi+DbJD!iB4_QZKy12VL zoa`-kq)LSDIf{yko`L`?>KGp%H|TJ=SXG1IXIdP_E?}lcKkab8t~eTU6fr<6 zeEiQS5@nEVdzZ`+6eYv#rXorJM{bEEMK%IypIEr=}Kw#y@;W7Ji6-P&GL^GV-dT!V}(b zL_}TDhyZY6RO*@nSe|WyNVNAPfY; z{L^cll(-{s=Qj%-&mg}V+DY>Pxq&cqadEMMfq}ZZI>}trnOJ>&eWE7cZ$Aa2a^@!M zR5V)6t^OmVKLhBgp)j+@TwCt>dBp3OnBM;WBEXX_&W?;tOf+3xMJ6k4Hl=j`N=!_= zEg%rr-mbASkgaWK$Uq(U8W3B|z(DBb$*ONq&}725{MD7ra@WVl=eD3=JmB389#id= zHZ7-LP*->YP+dPi$(G=4K_KS!(b77HZaTpyANLzWikyV`(x{}Q7=YfDo3z(LqGIEl zCG6V2Y7_jsVC;Xi~j{QUeeF_iSRzDr;}K0d(hc$Jj0 zlbD2Rqb|ZS?mth}+`!687jXUZ^70F}%wEUOmi5WuM}!m?QyH$27&P7F z8Os~v(x)lS{@*(`FR0&(oV&o`bIxO9U)Tpa-&R=i32 + + + + + + + + diff --git a/doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 b/doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 new file mode 100644 index 0000000000..5344195bb9 --- /dev/null +++ b/doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 @@ -0,0 +1 @@ +1c674fae910ceb855ed8e8b30cc12422 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png b/doxygen/libtrac_8c_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e17a94e744720d5c637ba47ade428f5661c3307e GIT binary patch literal 19321 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 Rc$XHEw1k3qiI~3c{{e$>H#q + + + + + + diff --git a/doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 b/doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 new file mode 100644 index 0000000000..b509b6dc42 --- /dev/null +++ b/doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 @@ -0,0 +1 @@ +7a9a41b6e2c5c0e0b47da045e574f682 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.png b/doxygen/libtrac_8c_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..49caf23d8e2e6d2f16c4c4a7e34013fab57a411a GIT binary patch literal 8761 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.md5 b/doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.md5 new file mode 100644 index 0000000000..4abd8c1106 --- /dev/null +++ b/doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.md5 @@ -0,0 +1 @@ +9decb186f76d96343b23cd21dbea0161 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.png b/doxygen/libtrac_8c_a7e748a53552146213c2716ca829d345f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9ab9235837db2029835b5688dd702fad73e6b2 GIT binary patch literal 137220 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%0DKoz2wv?t>M~crrVZ5S1Jp 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

qo}FM$iz(=(8kb~tT8Mi?c+ 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 OgbQcYls+gL-~V3;wd}wE literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.map b/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.map new file mode 100644 index 0000000000..bd746a7af3 --- /dev/null +++ b/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 b/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 new file mode 100644 index 0000000000..16da279bb0 --- /dev/null +++ b/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 @@ -0,0 +1 @@ +e2622a62bbabf216f3b3c14b9adfc047 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.png b/doxygen/libtrac_8c_a8bdd741d54d2111b3341ef04d826b475_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d670431708a0a99b0dcc2abfda2771a1be2e3142 GIT binary patch literal 2835 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 Z7jDG{GoQL;*MeOxfVOr-)tvQB{vQKOdvX8( literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.map b/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.map new file mode 100644 index 0000000000..bbe4d09c2c --- /dev/null +++ b/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.md5 b/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.md5 new file mode 100644 index 0000000000..0188e9cae1 --- /dev/null +++ b/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.md5 @@ -0,0 +1 @@ +cee17082bd2a98ed6a08df256966a11c \ No newline at end of file diff --git a/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.png b/doxygen/libtrac_8c_a8d75be729f28e7e8927561210d81e48c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..342e91dd64878fbe955a0b78f1406156c36f39f7 GIT binary patch literal 6795 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.map b/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.map new file mode 100644 index 0000000000..6463092de1 --- /dev/null +++ b/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 b/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 new file mode 100644 index 0000000000..77e0ef1622 --- /dev/null +++ b/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 @@ -0,0 +1 @@ +7551677443f2ac910445387fb2734c27 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.png b/doxygen/libtrac_8c_a95998555c31d67b672339a2332f7ee1c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d47e894ed96b7bb5bba81b7779d3130c711c2a83 GIT binary patch literal 2598 zcmY+Gc{p2X8^%w9FvPw@?PFg`ZG%*dh}c!tR#lbS*Q#}5uT;?#gHbg@Eum?Ou|#Mm zr9M-lwp5GK6t!=)bYicf-di*t-@al$Y?psE-Bb+R2+_={rt@dk^04d~Ia~m$#j+N1aZanMtb_+5((+q-scE z5FsH=*fwzIIY%OZnI@nB($C0 z+2|VFT3+_R;hMt4Cx@v1uf~Va!yH1N1QsDY@!bEb;Zh#=y?giS>g(NIjwbn>6KO*C z2;-2w>e{uYu`$z&6&>C_K9|}g06<+sgG!}ZkeqdNbS_q)E)lanzv3VgiNh6UlcBXg zNqwFZ-Q^aPJH8e~hl)`?G+znrnr_GE%b7`uiN$^0-_-u0USu{(68MEq=aR@l$fV@i z9$$8H^1nP$6~kJMdrqe#VHv)>Nu(Y%U(zmx`OifMA%*@Qq&DU;d7urg~VFdJ> z(NR7)Tt-%w3qYkD>MAQQmf+IB9aD39*xcM4a`PrP;NAXH9$FzJJUlr$Sx`U#3M{Xz z`1||w!{K0^eE}`IseZn`zF}cuQBlqH^;)nD2%sRuQ=6_$8al75tE(W96CNIpKp zE!EZ4Qc_Ziii#~X+RDlb?nM$Kh;|OwIW;xqNOmEYox6kajf{+pi;MI3SIWc`p0U(9 zIXP*^e_oC<3D8F>DRuYuW-)_Ik;r#rV*v1&LYY7W>i;%AJ`RUFOAFUh&jkGj3RT~}B4u`{)u9OT|NGNJ}_EiT@QoQdT7PD8cmmcPFIUtg-3!B6Vz z+tW^xTwO;8OU{8xAtXS4KwT+sL)zNfy1ToLjEwa3^ni3z{FWF35o;pzW93a>Utu{p z0ibVqIGE}=;#O2t1SNEhjI@wQg#G|oE-WmxRUYZ? z=Ez~dxVe=IZSi0CXS`F26|+y2fl*F=-~>7j7v9MRp~eQj+Gt0g4OeWe<^`90YXzW)KY0nwy*JtbU(J?BCsO-NhOkKl|ek6Y!^Vp}5yRMEhrxEMD#F#yP6?C- zV`TJG{G-}hjmqJYpUuG>Fft1A^HUTdqEILd2IKReH0`gm-E&b&N=o6pjGmrZc7jAs zV0ieTA2ne3nv~S!Uo}7L%N5KmEfqg}xUsZkr7V)1lmuGuUQW&rhK6rK3kS^ zE3#GgqaJn-g6P z+@HkJl9F-=1Sfm%BBp`)w@X_nCM}7TPYBR;CANHIqoBDQPqW zw+M-i-PzdK7#VRPIfn!U+<)-ET0sa7hldzS727lBq9{(~rKP0<{r&W$y)Yl2k9pF@ zjo$Q@;Nc3;51ZP&fPx6IMCaPk?%L>|8Qc?-PpT`)Z1{>N8SZxme ziHVFiQTXdst^tdk^0%fw%*!AU#`^m63k#sZdHMK|G6GP--TZucd3iw|9w8!DSp=le z&egTZo($$uW>(hgp&`&;Sy?bic<%z+%gf7Sre$w$FFHCJO!d>#Q}E z!0ftlLmNr}6ZnA5X3fD0at2V%H)lGVsIw{L)*1e60i>Ln{m9r<#kcm|)an;6PF}ve zotH0p4S5 zsVw44^>nX4gcH!tmoHPmRwWm$;Mtzx(86m})}ZJs1OP&Eayl$M+h@kNN`9xmu6&`E lmF{d=weqhn=ATaL7|}VF@{5@NYzpW~z|P7E+laY-`@c9!-Y5V7 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map b/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map new file mode 100644 index 0000000000..9a8ded73ed --- /dev/null +++ b/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 b/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 new file mode 100644 index 0000000000..0890fd92bc --- /dev/null +++ b/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 @@ -0,0 +1 @@ +be15fe56407e06560a9fcff36bdad81e \ No newline at end of file diff --git a/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.png b/doxygen/libtrac_8c_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a139480f924d3023507d0a5c55723209ce7e31 GIT binary patch literal 2588 zcmY*bc{r4N8-DE?YhyiGvt=h7vX3Ivki%G~Y+1*#CVP{m(m13+F&s2@C4CGd%a9`! z$ubzbV~`;`S;k?$w{u3cYkC|Iz1Whv*SLLmB$1wBS76n`I|fPRRN(ag-u!NzoDun0q5R<^Xg-F;fUBJ;t? zL3496UZaB(9v|Oor&vZ_C2vBs)NO2Rrij~YKYsk+;o+&Rt)0@?W99$u#)1@^^4R}>u9oYX;&B1w-ft#7RZE9*dfJ*E3W?^9&K)wD{ z#(dYyD}1?6$i~%7NkbzuJ$-+FfAqapnw{d(PR!WYm|n9R|APl9OiT=;=-P$T zlgxZaUM{ZI$kh=a!TS38Dui+pEG#MttcM+NadYG4=OuFD!A~_lb##+3i6E1>N=b zj);hG??6kOKi}y`==R=O@*QKp=jrY3U1a)DQcMi#>N+_&snj7CghEjxn)UVdK?uyu z%nrBaZ{51(PnZKPHTL(h6k)={)AFYbV~XQNj~_jnX}N!su=h&-x^Mk?EN#9uy1224VHpr$YtdbN?V47Naz#Z2 z0EqKarl#_Xi#0mr45QXXbNhV>lVAuHr<(WoR-WbNieRlG@8928Tg&46GBD6cAZY9A z`qjDYdLkShk55kCxs&o?((5zLmu;?K!M)Q&JMCEL`_A7i<=v6Wp#A)+i`XA;0h9nEH;X@uVwsmya(c4QX*50 z$j`|UghFKmA$q@0gl+%b8ND@UU3VY$nZrn-ursO;gX_E;Haxx2T=1PBQUDJdygSXh8X zBb0x=azzvfJKFY2f+hB)byH*azTuNE+5SmeT@4HjjNPXVHwIDq`ulsyN-8Rgd&kSm z%Mub22L}i7hntR}5jqDs=`d+lHnxSGnCR$eEnFM=G|otJ>)W?+3WWoBk3MZ75D2NM z9Fm!b`}++|P0r!QBcDET=Jx-3`Eqq_ZB%$Tp1k_x$&Pg0@$SADlhh|q zWMpJGS(8gkWpQvcNk{ikYHE8^uheolCLE+iK1`>dQ_ar2=WoMIXTnR@BXQwBJ z^3ZbzL?Us#tLrYg!Up6V%#eeFgNK_NRK2RIs(V|^d47J)B3pNNcQ~9oV2DiC_Wvs0 zP<$01867=6F_F-!?vz6>vr|-1PypGOMlCjZpscQr273Vx$CA40ywslS1pRv@W7D!3 z+sAvFKk0X-?T-R9yB1T=j!LoJbVDZz8LVO`jYd-hFD4Ro)pProBZfCT+7kl3yoSkS z0U;rID8}C2o)|h`t0*cW(iDFf0!kVzPa(V6e^62eTZO13k!Huoh2JdH1*mGy_k8^L zvA6eWg|H?YMsJ#1Sg758zr8Wt z1ggRj`S5B@%^ZUsq*`&&eB|xt=j7%#H9zm+?3|mEvrp~*V}1Siasxrg@^XJ}wqCWZ zCqL`z_wQZ%y#OsT&c{ct(6(|oAR{9K?1Hv7xu@s)eKz)#@PqY9FeQCML(1r=j-H;B zL1YzyAkg~Yi^+?S>e5nhj$XyvwY0Q=)AYKfrDHQEB2+Rx!}RnYLW;pjsg`~9Ze>GD zi-Fc8?F)_$|2C2clWC^V70WhLAE?|4^bRj2)hEx?~T*j`no!68yiyWp5L82g==$m zqvt?o8AdEUg)1QIeK2X)zI`n$c>er(VWAq<3d9RcShJiBfZ^?8jNF}^#)nHS-`3RF zJ2+U&W%aO>j#iGa9f;|Lz^$#pD+D3Fl-fHa5($IBEG#UbXhBgTI?TM4D%lxd^6;%8 zvsoWtxnplc7Q$Ly^Id{sz*R^f64AR$n6*-3@bviD*z(E>1?(gVym8}3a&q!gF^^fhKvs74XP;e!MrG~|4iPnjr_z8KIIMg&rn(FC4CCX}hbavD zbLEb@@y%UyolBc%XL8`tI@IhrmFnG{y{0qUmA&!5Fi6&b>BmuaP*KTDy;BqEdCwhc_fKB~ni_EbPDSA*_>UM~ tpo2;}{ApDFjr8FIOjzErsz*w(s2G4FT;QU~OS*UVGIu`M=)L@N578 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.map b/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.map new file mode 100644 index 0000000000..28597b097f --- /dev/null +++ b/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 b/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 new file mode 100644 index 0000000000..9c93cacdd2 --- /dev/null +++ b/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 @@ -0,0 +1 @@ +bb615cc8bdd0a88a7687e8d5632315f3 \ No newline at end of file diff --git a/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.png b/doxygen/libtrac_8c_a9ba00889eeb600010467d8b62de94a36_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..58aa184f29c53e80b4dbed668d9ffa4de748516c GIT binary patch literal 6921 zcmZu$WmpvL*Iy6;my|B)ZrmjVq$QP3=>|y&X;BdnacPi7gq7}IO1itGQ&PI5|F_SV z_se@T7c6_t%eJ#Bi$U$syDKiFZy(}C$7HVTDD}ujUTL`IjgAn=pm$p^#ie0jWOJi2IQE=(?UFNL zd@N;dKfdCcn{(ew5%;M(XFYG?Q|63E$Nm7ve>s6BMF?jybC!*=`A~-^o%~>32*aMW zF#q1WZ%Hv19!z$#K*_S@+r>w zY*dJfnwp*`HjIUz-!;{C`7QMaIB~xd_ULo|8U{sJ%UlTk0ERoYFY>hr4Q5bgevzJz z&O_{vl*u&UBlEr>5HHl!hHzityHkJo5n52NlP2Z`KEWLvys0Mavf$zAIWaYLesarsgURGNxYQ1BF) zanR5pE}F(0uk7&Z)q%IauP;iGSy@$ea%#%O-u@vpSdQ`V=yzXZW8=nP8jPQxf`Wpb zlan!8(c0SDqU`T@o)#-BYqvHpFK>;@VuCVKEnQpy4sY<-()98=uXEqP#lx#dp-7w? ztEeUh}2f8YJL%F=_coWS(F8y_E!=hDN(z}Vc`aam}XZfjf3 z$#{!$U2gqM$~9SJm{U+t|9Z7^a8Q+pheuer=Irc^t*xz-lM`mp$ijkzMgH-|(ACvd ziD`4X6uskI?MPoA7YufcL{nsrS?!8UNlHR^7s9;LNKMDHz`K_+3>@74JYG?>t8bG810s>zCTgi@Lk�x_xNG3HjA<>IxakLMbRMd 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.map b/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.map new file mode 100644 index 0000000000..d74e980f45 --- /dev/null +++ b/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 b/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 new file mode 100644 index 0000000000..fa38bf9d36 --- /dev/null +++ b/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 @@ -0,0 +1 @@ +8a2aa92c346dd0a788746d632c2765b6 \ No newline at end of file diff --git a/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.png b/doxygen/libtrac_8c_ab3e201b153aa01202bb286d650ef07c5_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2862aeb776a9142eae3a703c13ced09b3d27b4c3 GIT binary patch literal 5281 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 G2>cHuR}-QD literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map b/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map new file mode 100644 index 0000000000..8d45d18849 --- /dev/null +++ b/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 b/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 new file mode 100644 index 0000000000..4ea60029b9 --- /dev/null +++ b/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 @@ -0,0 +1 @@ +ce1662f31f2c56b82b0c7e326734d7b7 \ No newline at end of file diff --git a/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png b/doxygen/libtrac_8c_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5a702c8c47daeafc5f21ca9ad6e1c9e50b8f8965 GIT binary patch literal 6078 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 + + + + diff --git a/doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 b/doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 new file mode 100644 index 0000000000..40bc0c5fc7 --- /dev/null +++ b/doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 @@ -0,0 +1 @@ +27300a6a8424cd3da389e812c307cae4 \ No newline at end of file diff --git a/doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.png b/doxygen/libtrac_8c_ab8054000249eb04a88fc06bba77dd573_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..0e624d31ec27c98d5649c2a4ed51c82d8ec6d878 GIT binary patch literal 4585 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 ba>JzH*Dk}VTXq2M-2l&&G!?59tit~Tb^hJP literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.map b/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.map new file mode 100644 index 0000000000..6a2746619b --- /dev/null +++ b/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 b/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 new file mode 100644 index 0000000000..c89464bc90 --- /dev/null +++ b/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 @@ -0,0 +1 @@ +4e5a79f82059d4e5295ca1d926307b06 \ No newline at end of file diff --git a/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.png b/doxygen/libtrac_8c_acbf877af94269d0aa1c94b7c50121df8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..1852d80f9fcf10ee3ced5c6fa0b27ebd9c2046af GIT binary patch literal 1991 zcmV;&2RQhNP)N80ORMrQg3*E{jYXgj z3j__|BSv>4xUCU`#UKVPtbe$hh)W`YMq6rw1k<9Rz1t{V1*Il7D`C4eT+BrGc`GrIxkvp_}1=MPFadEMyRm^4iJTDQ4!{N-y zLFZ2>NP_wa1xZjpp&$wBCln+>#!q^^{?MUA005)Wn4Fx9NX-8ev|4RgSeU0;@9yqi zw{9JR0Uf;GeF+2tL8(+C8*>?Q=FFYY(15fwT3FcMJgw!62oDdRoSZ~3;IbR<^78W9 z+uJ>@ViErMV^Az^ii^9Pm?*BS{KwFc$M;K)X~v#^ypCrgOQt? z+t$`*e`;`W&^q4f_4<=1Pu{w9i^*j2c)Yf@HnCXDVzDwZGG4!ay-?(Wf`WJN-km*r zR;5w_0II92*=%-la&kdI!RYAd5~O}jU;uz#-(OPFK&2KlnLqvd>u+OYUv#fGH8oKv z6klK89XobtG#YEBTCI+Xit_RCiHwYV`0$}M^U9Sgp`oGP-rf-r5ekI@06?eHbvj*Q zV&d)Fw*dgpo;{0>j`sESrO{}%Q1f~J{=Id)(`vObF)<>M2#?1%H8t7NCX;Koipzc) z9UUz!EX>Z%zJLEdpU)SGL}s(uVad+UPCq|Cxm><$*DirTuyyNJsZ>g#P$Uw`Lcz<+ z%Sj}XSS)5R813!t4Gj&~uU}Uv6nH$owzk$)scry~^Gp}6=ynOwwX|6Eu1 z;;+B{>1rs0!H}Mwe&ND}{{H?`r%o}M%;Di-qtTd>l2TMuG&VLS6biXq?##^0t5>hC zUAv}KDorMnP$)cc;sgMoxw)B4CO>-g=*W>HgM))iCQ~2~3=9n9=jXFntWTdlEh<2# z(~Xah_w@Am`}^CcUAhXF=TFVe%`_Tq_wL;Q06Lvcr_&cIiO1u4JRSfbE-vor)2AsZ zDFA@j*w{OF?l{xX^z<|qi(R{REe?mfbm@|-I^B%L0$ZP0zyIE&)xP`jM`?U~L`aAk zf-p`-kV>Wd_wTnZ&Ky2`xVpN!zP{dMGVR;9FEuq40FarPnVFdh0Emi;8Xq6G)(Q&? zv!!iFB$A}0r1bQ3Ypt4^n#RV)jEs!MF2Pb!QGvx`4F-cP?Lrp-0G8mVk&%($;9zG; z;&3=?0)ikPA0J!V$%bNLV)pLcd+gY;4I4I4snoQzv`w2fEn3UppB@~1#>pm@jJNmN zg-*@RS^xmk)3YrtdKdL?Y34NF);b`uaY8{752^=9HY8 zni7k}j~_pN`}XbpvjBkJ-d>qZCX>l*InJ!f1_cG#3}l~n376{x1O#+NYOZ~4ZDnQ3o}S@_&SEfL77Og{z2>{`{F|C8 zfB4~NEOzmE1%W`YpNtv|hV9$8<8Zi+j*dAcOG`_YO683kH>gzV(9n>*3#|kN1?A-A zR8>{Ea!tU?%gbTfC0zE?o;`ac5=m=oD~(2b`SPVmB(ly2kphCC&!0cTFf5nLRVr0k zSs95$3J(wO>gsZ)`pnGmfddo-^*H30U!Kg*#9$x*AP9ou`(5a!X1|6beOBQqsM9_g=hsA(2QXCnrlwOB)*->2!KaOAD9F9T*tEU@(D!fm^n0 z>Fw=3fBrlS!xIw|>({S`AZTJ@!eX(o+3e`(Xf~T2A0MyLXm~uHMx%+0j6}K{9N@B_ z2n0e=QBh@OrAQouXUg6<^ z9L|n|2dSZ<0iKq#I4YIO;W}7hVPQ#034#rI#!owU?p(P~K>$Ei)sdhe*FMa676yai zp2y^}TW?trtSmFR6Vy*ANP_wa1xZjpp&$wBCln-c@P4OOtKBXG8Q#2k<7o*FuwO@8 zW%Tv+g@lCI=Q!}wGTg$pqOtyDv09n4TNPTxUvE*|4?2HBK@!wYC`f|(2?a?|KcOJW ZzW~}v$w&LOiI)HX002ovPDHLkV1htW!xR7j literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map b/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map new file mode 100644 index 0000000000..4fda715784 --- /dev/null +++ b/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 b/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 new file mode 100644 index 0000000000..d95e51b04c --- /dev/null +++ b/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 @@ -0,0 +1 @@ +5b2c96d19f2250268004475f02319c33 \ No newline at end of file diff --git a/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png b/doxygen/libtrac_8c_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..97cf832a3ae2caf11cc3b9c41c7194de9af81fa6 GIT binary patch literal 8687 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 DO^O=# literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.map b/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.map new file mode 100644 index 0000000000..337d64ff99 --- /dev/null +++ b/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.md5 b/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.md5 new file mode 100644 index 0000000000..717405e5f5 --- /dev/null +++ b/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.md5 @@ -0,0 +1 @@ +d38aa7c0628739d611326aae11b4be1f \ No newline at end of file diff --git a/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.png b/doxygen/libtrac_8c_ad93b6fdc706c932016eb2586f35dc985_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4af15da98c6d36d0350362cf192231e15b89af57 GIT binary patch literal 2628 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 Zh0O7dve}r<@_=n2aLdRNUVqaq?tkx!{AK_E literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map b/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map new file mode 100644 index 0000000000..d9b4484b7f --- /dev/null +++ b/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 b/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 new file mode 100644 index 0000000000..ecd5376a53 --- /dev/null +++ b/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 @@ -0,0 +1 @@ +b5414a39c4fbae6f770e1983fa748859 \ No newline at end of file diff --git a/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png b/doxygen/libtrac_8c_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..934875227d31f9075d0826b2ac12868b2de49e51 GIT binary patch literal 5043 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.md5 b/doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.md5 new file mode 100644 index 0000000000..f09e69baac --- /dev/null +++ b/doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.md5 @@ -0,0 +1 @@ +306342cea0233cae486344fc8b7d12c6 \ No newline at end of file diff --git a/doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.png b/doxygen/libtrac_8c_adaf12f02099c61792e04447367f1c37d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2b72ce63816b11a049b6e53599383cb6c52649 GIT binary patch literal 109838 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%0AD=RJSMcDP`e@~iZLzqe} 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.map b/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.map new file mode 100644 index 0000000000..d54ee7ed63 --- /dev/null +++ b/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.md5 b/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.md5 new file mode 100644 index 0000000000..5db71019a6 --- /dev/null +++ b/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.md5 @@ -0,0 +1 @@ +874248238b21e6119ec31a037caba5b9 \ No newline at end of file diff --git a/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.png b/doxygen/libtrac_8c_adafd1410822189cadee393d5cec50a59_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..109ab04bdb7a0a2ecfec9f533aa654e79bccd975 GIT binary patch literal 3454 zcmZ8kcQl*(8`op&6?=x-Ts30GZlnag+EROzDk_B9d+%99?Aa=6 z@13GHzi@;f-Jn(aIjVdo^&d$)isrMUM7uGrul| zOkRxY|7#dNKo<^gJ2}|UjDev$gpJF{L`6mQ@Mu094wn_Vt48SSL;kKubSP)SV-gaA zqoTCy-_l!X%AW0#f)4hoqs65qi1WCZ&*3(5U4VU}xcQ=+@PR+Irofo^N(HCWkR#nT z^SZdWIG0|&K^+AJ1r7F|)%kgkXf-6&4OI3&%^X>g+|udhvZy|+OfuB2zrrp- zX-LeyV54|nK{Lt~%>F+J;<6lc(va>zUj@p><(Q`9{^-V$;*9^BeU^_f11< z-4`VE@Q&rMFvghZXv=kGrGu#s<&2?KSyX&NLb+w@U%&SDsHmu3%(sVZPE^vo9v?Rn zF|TVM&QyQmwHodJb8E7iftgvw$cQ;HF;V&~C~9~Zju^md%E^)JtqiP8)p{bk4@%CF zlT{G^Gjx_lV%yqCwsAe`J_ElN4;NRuYO<}Zts)FYM@!oRnh$z72F@Qyd2ieNS|kAc ztgNkbb8{VH@q=h66iP)y^L1t>wW~`dl3gmxb#Em#0MY;XNjR%Sq;WaI{bYYFd)b9> zyth(XQSs*nM#jbv^seRE+1dUU_OW{)cr+BXY4q{FX{T%R%Z4|Vxs<0h>FJ?yainN8 z4;}5U=*3=Y#^~so%l@>8MZ^2%X4$H$s%y+*ultfEHWJM1QP*qDA`1)e`_*ty z!T@{Vxp8f6ZH$w(m}7B&e}AvFVRBbj*Yu2xgLBq5Lj#y1^ZFo@LOyP8(o8r3%sOcQ zpun^`(*OLV6t!j28No^^2ZNDIxK7&)U}boCc}u-_EJ8y=YupzoLPA0mm6T!=5|mX` zu5t#PxhLNY3=O4rMj{D4J=RCNbL|}+5X%;lvhs5GmoIstP=?o&)vkL(%A9l@9R1(_ z3D5**NhA_S$HrtJ)pzasKjTVDqDM#d0TD_|OYd@XXQ*QNBM#f%(b(A8mHQkxHXSds za&d9(i*_d^vCJccG1XM4VW07d#lnULIF4X z=H^q&o#{rjudl?tx9o{p*%>(bFs8pN<~fG_VXuurHQ7z{FQt6?!|rlI6OYCVq?PtxI6mo zn+It7R%EXJ>eUnQLwkEWEhp!|A6(bG$S5hH_Jel>g@g!QU6x~c&u=j?RSR1C_(&>8 zaoC<65h*5LeR>IS%NcW|r>7qW+VtE>RhBvYJg~67v5_d@%JK2z$C}#Ox!Kv4pY`7E zUS7^sMOxY1e0&s6PEOPQr$_+KW6Y7**w`4_$7h|B$Sj2tp7A?m$47DEfBdK&Gj?`% z-uE_aI-K@BJ6eb$BPYKyyR-x|FkmEs!C+`KTFk2bDv44QN8jAnU@+Z_(Hz~v?H%A& zfJA?(tE)?TZ)?Ee@chntL>~(^4b8#E6G=(9scHVeBd=ARhQ`K&AK+?a#S}|KP({Uq z_4W0u)YMjgkoWNsNAxn2@M(M+%!4*XDrJx0#-2XrmVCJ`&dZx%RJSjL!A$c#7-a}) zKTDjrfB*i{@2yE5etv5gm&k+!rlFxB8ylNhF!{m8cU3jDwy7yL2?>ewL`X}Dl=uFn zw}(f%Ubfa$lV80tr`-S+28=j1Hc*jk?x*(*FCSl!jPGwTkHxNRgjo~j2`S}`#ok0H z#bjw!)$(#*vcN6s-oC!SrBDS!D`XKCn9a@2l8TDaOW_!mYelCMPQ@>f$imB7@11FV zLqk11y=OoS$pu0m2suSXE_%c@;3ps0qJAIP7v<#%hK7YDH+t68)Kt`ozJBpFXl`W% z4;t2{8>P0lw>6R;P$g=LSa)=W&kKT zD=V%P$(Qrr3Qha4c0S)$lIIt+%k6auP^6P^WMq}LxpF>|EUn1`AH%(L>vsG|2A=H( zTMiG8Vvp>_(22qqgM45PHl{Tt<5hhoBEIc@jKwM z%+e@e1WM1J-$o!bWowR3PXRHDEgG>Ck!qQak0P7=PSfGJCS%G@%#BAC`pz8Qhuh}h zaQ7*{m=tz`DhRbAGyb|9a2zwcebUdpg=KyZ2jhxkYUkaxt+F+_}`9|Nu8aY2uh5uE?pRtC;}hJ zesp~N0!V5%!ay*7esi-oQ$1lKZfmIYX<-UTlQej4l1-z}L0)Uyv2eHr#)KmOTLS{f6hjxTdW=@M!0I>zl2s*SwH>sLnX73%aSh zS0hmI*X+!DI#;?|i%N1Ww9d|wr4D*L%gcoU+BnQO1xVXR^FC`cm8CfEceQEM@3W$js23A z_WE!pptlkLSZg zRa8}R+Nn=5Cu`Z`latNS^9zfMiWrQvX|)Ti(11H$EhHjhjI$+b*~LM`7HlQ@`ubv? z%NoFn|9Wf{}=c@wai%J0-jXI$fzrj zoW`geas6lA%Rk6LtUJ?2);>LOpvPjdQ!o~_9tbjcOXM%unyd>F^A0e$S zFV2O{YN8hxZR${4-M|}-ODyG+%S=p6Se)^_z2R+b3d_BTUy~j>?GlN1#l>S!PJA*p z`AG;10gdx>+`Aw*8;2xc#ex+yHa7NXJ-^t(URE@$c@pjC=SS%8e{^gJ*GP)%Bz#CH zEfLGW;bH$W~>U2DC{DEP~kALI@2r*mW#saPSsZZQ}Q&`JsjZhT=NQzM0*Xorb-B8d)hQ zB6UD&x=O60>6I~Z>gX_sjuF48hF;YV}z+}+&nKp=D=hB7K{ z@(Di;9OSqVdA9ZSpx5TdMohszqOUh&e{Ub@HR5%OMAsYW+S!9L@-5I z6g(Gm_XQa);}3NnJ{%i`SQz(hyD^f<+f&wB^()hoeW305Z$08v*z|ArcbLP0KU5^D MFfGL*1 + + + diff --git a/doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 b/doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 new file mode 100644 index 0000000000..ff44c96efa --- /dev/null +++ b/doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 @@ -0,0 +1 @@ +0313833dc8cc631fb99288180678a50f \ No newline at end of file diff --git a/doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.png b/doxygen/libtrac_8c_ae61cf973263fcc45574daa27d0dec8cd_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..11ebdfc7697f9be04c83f362e12f8bc6e3316899 GIT binary patch literal 2491 zcmY*bX*kvg$d3fEO#~c2Ht)W-ZARkCwA?OAEkwn zslvxkIRz1s5k^X?$akrbY#+uwmweJ`e336^0^#~I`-uxP_cS5ks)^}%pak*>1VS5&RTvk6(1w3YP0X|$tKcN~Bh}(|I zhT-OL_>}w&IVID+uwY&kn}oS`?b_1gKi`LihyPVr_|k>x0hN&nz#z!4##{*mf`Or- z4C>hXb9#FE{(d+LMOVLG)ciHffNZt<3*uyPef@N6>(yyv-Q@lK{l31w+tw#CXtX+V zk~aM=#tn%?eqWomuTJXWkI5HQ|M>i0*Go#D^D*$#)lBQS9K`GPHn$r}d-!myDTeZuqy9-FgmLFw)LM+ zD=WFRRb^RmadA8zPh4$xndYn`B_%aeA5r|f%<+6j8r|CZc<=B#?c~Yh?vF3$Nc&z| z+a5*-n_Mvg9HGRaUd!PU!$GxZaB=jtTkOT4ovkeeMa8`zKj=nL&ski4Aj|+sHGTE+ z<=1cDB7W?sQ%(K+{SEGIdfD3ctxi^RzdI}pi%fdQ!O zJMqo+**m^|mu>R)voh>MLPG4#%#LfjI=K`ICCp&vKdbtkw6nSFmz?C ze|T6B*!{|ht*WZZ$;sJ_Au=$^%F0-51A`GT+Ym{*09;X!vQT)uw6v6)o7>f8$#CxW zuDt8-4-pePJUDQm(X9n%?C|)5>c2M~NhHz4%!qB@AP>4Tg%G+vqkjH;Nks(;2HRb& zp0%N4#Q`55pPQBA*4Ea>1%17}7xeVb0HnEg>e0~yWSa7+l+$ zfuW(_r=}2DEb$X3R@T;@c6zzFxvj0OS$Z|Sefzeiwl+K>VtIKP#QV>FpBlI8*H53~ zEiL&HiJPmFmt=S*>gGjSK(y`db~|+*3K^WFb$S~;&*^uMq+AYND=aGdInl(^bFQVO zB@Jb?v$Hc(OGfMHJh>vbGEw!au<#3~H35jW%DMo?;g$vr3b}pjmZqjABj4f1jWc;R z%2J8(@$vq;b(NL&a*|~#O|7lxbag{OYKVQ-VYD&6B|S8eKYjW%6fz9H0f9IHz+`3b z{(m@bos|>;IjE$hG%*p?Q^H_uq{?1q!?1d;7pyw_Fo@o!ru^#aEEd=M_U-!c?WJ$? zpHSHQHDMc{0|jLf2)47@DRk0R$++g5>@g5HGqXDlZ>k0cJ-u%QSWw!i{2@V6joCd9 z_;I|t(Br+u!G)v4Y#C`mem-Pcf~TROA(*jPx{;O^(bKasf1b^jqxJAenETk-uCA`W zJ`ygWpx`W=YWkuds@~e#>a6DUK6+2qY2^c=G#f@WEiNt&!XT6~?(KfPb?)3b5W=~R zv^!p2-Rtdh8@vc2!{{lCfYr~zKiJ#k?(SlcX`vw@4>mqC$HrhQLyBTaCh`~!9i79i zMQH?!yV>90&y6dWLBA?l9+e)wVWPJ_BmVTsp^Js^-Mi{J__c+HhewAmN*2?GF)$#S zNfZ_mVuyKqo2o#6b9TGCWL?TVOZG+Su3>6%~OD!(y=(78als;Qxcg<#D-BGBeAZ&8pP2 za=M9(+`PQABJxs+U3YF~$_!mU%CIE6GbU?qw6xXMPE=L~jf^Zjk|dgobWXr!;qco1Bruy!2(_|UtceMI zG@8}i+&nU(tE#GMWJEVEU~hyeWsHMmZe--I@^Wg&T))p2?b3fC5XjcnRw3cMfu2;N z*Qe)(c6N4nr9sfUfq_k456xdUf<&_2SeteLc^LEM%a@v(n&@Z%EFeO$c1})8k|G)~ zysxh+GR-5vy6W%031^c{uhIwoF)q+hQ1A*2d~95x zt*w1U68g(8Xei_-etre1L>g_f+@%@-1O)}>d-KpLD*3i5pe-sYy0^Edr>6&EoY1?zXaK;o&LI7PzDQ@__Cq?{>PTw`1oTH(X)cW(r#`6$sW+JmIr + + + + + + + diff --git a/doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 b/doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 new file mode 100644 index 0000000000..1ac769029c --- /dev/null +++ b/doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 @@ -0,0 +1 @@ +8f7b876ee3a4fd5795d708016a31397b \ No newline at end of file diff --git a/doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.png b/doxygen/libtrac_8c_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..671f7d6b45da0c3454d797dba3c35e330ace956e GIT binary patch literal 12186 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 E0r$yPR{#J2 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map b/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map new file mode 100644 index 0000000000..dad6d54a57 --- /dev/null +++ b/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 b/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 new file mode 100644 index 0000000000..f7363db1b4 --- /dev/null +++ b/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 @@ -0,0 +1 @@ +f5a6621b8626ec6e507a9c77c62a9192 \ No newline at end of file diff --git a/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.png b/doxygen/libtrac_8c_ae9583382a3025752eaaf56a1fcc3380f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4648a288f58a3de8fa6829f04f2196cee6ad4528 GIT binary patch literal 6255 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 + + + diff --git a/doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 b/doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 new file mode 100644 index 0000000000..f67fff7e9e --- /dev/null +++ b/doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 @@ -0,0 +1 @@ +6e79a3f13f15e9bbbfd7bb0ccb1a49da \ No newline at end of file diff --git a/doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.png b/doxygen/libtrac_8c_aeaaa3090b6f7f9f471fbd24392304341_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..34d59f7243116059cd9b5d9b89da2caec89f9423 GIT binary patch literal 2727 zcmY*bc{r47AAZMZ&ZJTyM-o{ZV+qruhNu{fF`PNJht*|+RWe6R11@4CL{eXsX=pX+*_-}C&I`@VnCW_W``0^$My030$h)FS`@ z1pEc$;e6m%29~imf!#JX&;xe&o{ZZ3BmfYwHPX9c9`I@|%?&5~O|->7>=|38_i?TW z@<%`h-#S6hwIQY_O29B!+8j9^DwOc_T2yG1%vE{pQS6g|A0z{FyDa@Dw|_tr-&jjI zAH)iC1>oHT?7s1sQ{?Z5eb`pkM?$`42i5@`B$jAtl zZ}@%_;#pNxG&9~tNwi$5ZMdb@jOjcF#NbKdfPVg!L!nvh|6b;)x-JHTv9ptuDgLYO zXqfI135h4>>$9`&Qc~$I%26Fa{pGm0n2e0KN>;B!b~ur=6i@lHXK8QWx{Dv!xdekB zIuyLayV!*UHWHsVyfG(@k3Xy5L3(*IUs_b;HoJBG`t_N<(g`oko}Qkmsi_m^-AC@zUv9}#F$MB(h?UJ2LNqtZ7s>K-Q6MyEvQu7#_BMK?gIg=mERQ<><6BvrI}>2elk-> z=jMh62QS&MeI_~@Z-(*nU2$+2`xJNL_`y$|0Tov2$;U@PZ-<74^!4?FgM+=jy&({Y zyuAF*&d$=(5_rby>MDc5C@3hnaE}8zzxZ9C!2IR&=d|GMwXQCLzrTN+5{+PGb%D6% zo@n^dLF3MyJ09-tF|n~}uU-iVfY6b;{7`Jb93i4=`>&d|_7I!>w_E$#+Sbrlh2#P$+Kg z5?1>wR@M){>6w20y0ovPmN%LpaYIIf0Rs6EY$aYiet?d0VB~*-)T!c-Yg!Bl!2$>e$#= zR#uk(!uNsxetsAXuczzh_pY?mQ(vD^7C^u;01}DB<#P38%0GPIFc^0kF~>9|I+~lC zJ38>nqTl-aZEO5I8XxboR_^6+cj*T~h-AY^d=?^sKBV(E8@D@c^yMr%r|H$;4Ssf3GDTgpnAx zxl0>h!Lpobk%y)DfNs|Z4h}ix6wk`BPYUbaoaeCj?g9&H6|GSXoi1)DtI9n&h+N;^I&!lqct32+&{Y zWNKk?EERWNL!+XsY-5qzTt;yE`Z_K)*2m9J;RyU{W?6N$4Kg`isiCLm90KvVzdyiQ zOOfVI76VTZ25SolwN)*ByEnQY>gBVyx3<74x%nZ0)zx*|-X4;ml#E3t7aE-qPvDPi zZiK){jiXC1#RO^RPg?m9iD>dw)^nMpFWJciWU}}G$g|`uGsG#l%n`V_x;fG!)6Cb` z_X$(N>Wi9Ptwv>8KWd;d?`X0s0Ce`QO)b=-dIq;{dM9M&Sx15Lob(+suc+WjKFRSvXh#; z##k?6AZNeIBpR;#`V|uwcXG=GkMBr2Z7L%x>*3*nMx&v8piamM6})?AnY6s~ds|Vd zchJ`sXJRrlGsCqmwrm^!#ljvF6|DrdOV!Fx^ zFQ8Opdh{qON!yL^*+DAlSxJ0iC}Vnk{V+4#^O9!&EyuOHGNw8}LswTtdHK5s#%hjV)ga;2T}QeN#CtRSpyghW?5>d{Y%-{ zxD8zUcRv1suW#9a`(F7#Ni6KrCJ*J*A)y`A-P($jmuGzZm{VNb&SWw<94$FHexSjz z63mXe81pmJJNZ<6SXdqQoU?<&C*}ds@E$%4h~kA zl&ETITB}mFH#QI=0!~g76%`e!fm;yZMP}QsF-6r|^A&M@z8&Yu&-Ky-a+dH`S6+@`Ol%AOxMxl(RsB|bmqUI&m{isooQY~lkn+)#$gyBbh^_2`y_?45|F=;8?dNu(2P`t}aEBB0T;GExBvhE literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map b/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map new file mode 100644 index 0000000000..3f232cb9ad --- /dev/null +++ b/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 b/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 new file mode 100644 index 0000000000..fb9430f4cd --- /dev/null +++ b/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 @@ -0,0 +1 @@ +700719c7b63053311c06c56d0ac47966 \ No newline at end of file diff --git a/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.png b/doxygen/libtrac_8c_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..13e47d1050f6a3009506caff02e38125e8d9b4ac GIT binary patch literal 10452 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 WF|XH-lQ)4DA|ym)go{wR@BRmlE`+}T literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map b/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map new file mode 100644 index 0000000000..ca1dbe6bf3 --- /dev/null +++ b/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 b/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 new file mode 100644 index 0000000000..142a41be0c --- /dev/null +++ b/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 @@ -0,0 +1 @@ +238d4b3b9deba88a0de89601247ea186 \ No newline at end of file diff --git a/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png b/doxygen/libtrac_8c_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8e95359baa2d1b69353a2300b16ad907bd13b518 GIT binary patch literal 4724 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map b/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map new file mode 100644 index 0000000000..2c70a17fb3 --- /dev/null +++ b/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 b/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 new file mode 100644 index 0000000000..26432847ae --- /dev/null +++ b/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 @@ -0,0 +1 @@ +543ac5c4ae1f4e89b4c5687d93f7842b \ No newline at end of file diff --git a/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.png b/doxygen/libtrac_8c_afb5aaa2ee2de7b0625084e6a18503996_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..1cec145baa5983807beb87bb48c5637714221dd0 GIT binary patch literal 5022 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 M=_#UI!8GW900^py^#A|> literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8c_source.html b/doxygen/libtrac_8c_source.html new file mode 100644 index 0000000000..8a81a84fed --- /dev/null +++ b/doxygen/libtrac_8c_source.html @@ -0,0 +1,8170 @@ + + + + + + + +MPTRAC: libtrac.c Source File + + + + + + + + + + + + + + +

+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
libtrac.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/*****************************************************************************/
+
28
+ +
30 const double p0,
+
31 const double t0,
+
32 const double p1,
+
33 const double t1) {
+
34
+
35 double theta0 = THETA(p0, t0);
+
36 double theta1 = THETA(p1, t1);
+
37 double dz = RI / MA / G0 * 0.5 * (t0 + t1) * (log(p0) - log(p1));
+
38
+
39 return sqrt(2. * G0 / (theta0 + theta1) * (theta1 - theta0) / dz);
+
40}
+
41
+
42/*****************************************************************************/
+
43
+ +
45 const double *x,
+
46 double *z,
+
47 double *lon,
+
48 double *lat) {
+
49
+
50 double radius = NORM(x);
+
51 *lat = asin(x[2] / radius) * 180. / M_PI;
+
52 *lon = atan2(x[1], x[0]) * 180. / M_PI;
+
53 *z = radius - RE;
+
54}
+
55
+
56/*****************************************************************************/
+
57
+
58double clim_oh(
+
59 const ctl_t * ctl,
+
60 const clim_t * clim,
+
61 const double t,
+
62 const double lon,
+
63 const double lat,
+
64 const double p) {
+
65
+
66 /* Get OH data from climatology... */
+
67 double oh = clim_zm(&clim->oh, t, lat, p);
+
68
+
69 /* Apply diurnal correction... */
+
70 if (ctl->oh_chem_beta > 0) {
+
71 double sza = sza_calc(t, lon, lat);
+
72 if (sza <= M_PI / 2. * 85. / 90.)
+
73 return oh * exp(-ctl->oh_chem_beta / cos(sza));
+
74 else
+
75 return oh * exp(-ctl->oh_chem_beta / cos(M_PI / 2. * 85. / 90.));
+
76 } else
+
77 return oh;
+
78}
+
79
+
80/*****************************************************************************/
+
81
+ +
83 ctl_t * ctl,
+
84 clim_t * clim) {
+
85
+
86 /* Loop over climatology data points... */
+
87 for (int it = 0; it < clim->oh.ntime; it++)
+
88 for (int iz = 0; iz < clim->oh.np; iz++)
+
89 for (int iy = 0; iy < clim->oh.nlat; iy++) {
+
90
+
91 /* Init... */
+
92 int n = 0;
+
93 double sum = 0;
+
94
+
95 /* Integrate day/night correction factor over longitude... */
+
96 for (double lon = -180; lon < 180; lon += 1.0) {
+
97 double sza = sza_calc(clim->oh.time[it], lon, clim->oh.lat[iy]);
+
98 if (sza <= M_PI / 2. * 85. / 90.)
+
99 sum += exp(-ctl->oh_chem_beta / cos(sza));
+
100 else
+
101 sum += exp(-ctl->oh_chem_beta / cos(M_PI / 2. * 85. / 90.));
+
102 n++;
+
103 }
+
104
+
105 /* Apply scaling factor to OH data... */
+
106 clim->oh.vmr[it][iz][iy] /= (sum / (double) n);
+
107 }
+
108}
+
109
+
110/*****************************************************************************/
+
111
+ +
113 double rate[CP][CSZA][CO3],
+
114 clim_photo_t * photo,
+
115 double p,
+
116 double sza,
+
117 double o3c) {
+
118
+
119 /* Check pressure range... */
+
120 double p_help = p;
+
121 if (p < photo->p[photo->np - 1])
+
122 p_help = photo->p[photo->np - 1];
+
123 else if (p > photo->p[0])
+
124 p_help = photo->p[0];
+
125
+
126 /* Check sza range... */
+
127 double sza_help = sza;
+
128 if (sza < photo->sza[0])
+
129 sza_help = photo->sza[0];
+
130 else if (sza > photo->sza[photo->nsza - 1])
+
131 sza_help = photo->sza[photo->nsza - 1];
+
132
+
133 /* Check ozone column range... */
+
134 double o3c_help = o3c;
+
135 if (o3c < photo->o3c[0])
+
136 o3c_help = photo->o3c[0];
+
137 else if (o3c > photo->o3c[photo->no3c - 1])
+
138 o3c_help = photo->o3c[photo->no3c - 1];
+
139
+
140 /* Get indices... */
+
141 int ip = locate_irr(photo->p, photo->np, p_help);
+
142 int isza = locate_reg(photo->sza, photo->nsza, sza_help);
+
143 int io3c = locate_reg(photo->o3c, photo->no3c, o3c_help);
+
144
+
145 /* Interpolate photolysis rate... */
+
146 double aux00 = LIN(photo->p[ip], rate[ip][isza][io3c],
+
147 photo->p[ip + 1], rate[ip + 1][isza][io3c], p_help);
+
148 double aux01 = LIN(photo->p[ip], rate[ip][isza][io3c + 1],
+
149 photo->p[ip + 1], rate[ip + 1][isza][io3c + 1], p_help);
+
150 double aux10 = LIN(photo->p[ip], rate[ip][isza + 1][io3c],
+
151 photo->p[ip + 1], rate[ip + 1][isza + 1][io3c], p_help);
+
152 double aux11 = LIN(photo->p[ip], rate[ip][isza + 1][io3c + 1],
+
153 photo->p[ip + 1], rate[ip + 1][isza + 1][io3c + 1],
+
154 p_help);
+
155 aux00 = LIN(photo->o3c[io3c], aux00, photo->o3c[io3c + 1], aux01, o3c_help);
+
156 aux11 = LIN(photo->o3c[io3c], aux10, photo->o3c[io3c + 1], aux11, o3c_help);
+
157 aux00 = LIN(photo->sza[isza], aux00, photo->sza[isza + 1], aux11, sza_help);
+
158 return GSL_MAX(aux00, 0.0);
+
159}
+
160
+
161/*****************************************************************************/
+
162
+ +
164 const clim_t * clim,
+
165 const double t,
+
166 const double lat) {
+
167
+
168 /* Get seconds since begin of year... */
+
169 double sec = FMOD(t, 365.25 * 86400.);
+
170 while (sec < 0)
+
171 sec += 365.25 * 86400.;
+
172
+
173 /* Get indices... */
+
174 int isec = locate_irr(clim->tropo_time, clim->tropo_ntime, sec);
+
175 int ilat = locate_reg(clim->tropo_lat, clim->tropo_nlat, lat);
+
176
+
177 /* Interpolate tropopause pressure... */
+
178 double p0 = LIN(clim->tropo_lat[ilat],
+
179 clim->tropo[isec][ilat],
+
180 clim->tropo_lat[ilat + 1],
+
181 clim->tropo[isec][ilat + 1], lat);
+
182 double p1 = LIN(clim->tropo_lat[ilat],
+
183 clim->tropo[isec + 1][ilat],
+
184 clim->tropo_lat[ilat + 1],
+
185 clim->tropo[isec + 1][ilat + 1], lat);
+
186 return LIN(clim->tropo_time[isec], p0, clim->tropo_time[isec + 1], p1, sec);
+
187}
+
188
+
189/*****************************************************************************/
+
190
+ +
192 clim_t * clim) {
+
193
+
194 /* Write info... */
+
195 LOG(1, "Initialize tropopause data...");
+
196
+
197 /* Set time [s]... */
+
198 clim->tropo_ntime = 12;
+
199 double tropo_time[12] = {
+
200 1209600.00, 3888000.00, 6393600.00,
+
201 9072000.00, 11664000.00, 14342400.00,
+
202 16934400.00, 19612800.00, 22291200.00,
+
203 24883200.00, 27561600.00, 30153600.00
+
204 };
+
205 memcpy(clim->tropo_time, tropo_time, sizeof(clim->tropo_time));
+
206
+
207 /* Set latitudes [deg]... */
+
208 clim->tropo_nlat = 73;
+
209 double tropo_lat[73] = {
+
210 -90, -87.5, -85, -82.5, -80, -77.5, -75, -72.5, -70, -67.5,
+
211 -65, -62.5, -60, -57.5, -55, -52.5, -50, -47.5, -45, -42.5,
+
212 -40, -37.5, -35, -32.5, -30, -27.5, -25, -22.5, -20, -17.5,
+
213 -15, -12.5, -10, -7.5, -5, -2.5, 0, 2.5, 5, 7.5, 10, 12.5,
+
214 15, 17.5, 20, 22.5, 25, 27.5, 30, 32.5, 35, 37.5, 40, 42.5,
+
215 45, 47.5, 50, 52.5, 55, 57.5, 60, 62.5, 65, 67.5, 70, 72.5,
+
216 75, 77.5, 80, 82.5, 85, 87.5, 90
+
217 };
+
218 memcpy(clim->tropo_lat, tropo_lat, sizeof(clim->tropo_lat));
+
219
+
220 /* Set tropopause pressure [hPa] (NCEP/NCAR Reanalysis 1)... */
+
221 double tropo[12][73] = {
+
222 {324.1, 325.6, 325, 324.3, 322.5, 319.7, 314, 307.2, 301.8, 299.6,
+
223 297.1, 292.2, 285.6, 276.1, 264, 248.9, 231.9, 213.5, 194.4,
+
224 175.3, 157, 140.4, 126.7, 116.3, 109.5, 105.4, 103, 101.4, 100.4,
+
225 99.69, 99.19, 98.84, 98.56, 98.39, 98.39, 98.42, 98.44, 98.54,
+
226 98.68, 98.81, 98.89, 98.96, 99.12, 99.65, 101.4, 105.4, 113.5, 128,
+
227 152.1, 184.7, 214, 234.1, 247.3, 255.8, 262.6, 267.7, 271.7, 275,
+
228 277.2, 279, 280.1, 280.4, 280.6, 280.1, 279.3, 278.3, 276.8, 275.8,
+
229 275.3, 275.6, 275.4, 274.1, 273.5},
+
230 {337.3, 338.7, 337.8, 336.4, 333, 328.8, 321.1, 312.6, 306.6, 303.7,
+
231 300.2, 293.8, 285.4, 273.8, 259.6, 242.7, 224.4, 205.2, 186, 167.5,
+
232 150.3, 135, 122.8, 113.9, 108.2, 104.7, 102.5, 101.1, 100.2, 99.42,
+
233 98.88, 98.52, 98.25, 98.09, 98.07, 98.1, 98.12, 98.2, 98.25, 98.27,
+
234 98.26, 98.27, 98.36, 98.79, 100.2, 104.2, 113.7, 131.2, 159.5, 193,
+
235 220.4, 238.1, 250.2, 258.1, 264.7, 269.7, 273.7, 277.3, 280.2, 282.8,
+
236 284.9, 286.5, 288.1, 288.8, 289, 288.5, 287.2, 286.3, 286.1, 287.2,
+
237 287.5, 286.2, 285.8},
+
238 {335, 336, 335.7, 335.1, 332.3, 328.1, 320.6, 311.8, 305.1, 301.9,
+
239 297.6, 290, 280.4, 268.3, 254.6, 239.6, 223.9, 207.9, 192.2, 176.9,
+
240 161.7, 146.4, 132.2, 120.6, 112.3, 107.2, 104.3, 102.4, 101.3,
+
241 100.4, 99.86, 99.47, 99.16, 98.97, 98.94, 98.97, 99, 99.09, 99.2,
+
242 99.31, 99.35, 99.41, 99.51, 99.86, 101.1, 104.9, 114.3, 131, 156.8,
+
243 186.3, 209.3, 224.6, 236.8, 246.3, 254.9, 262.3, 268.8, 274.8,
+
244 279.9, 284.6, 288.6, 291.6, 294.9, 297.5, 299.8, 301.8, 303.1,
+
245 304.3, 304.9, 306, 306.6, 306.2, 306},
+
246 {306.2, 306.7, 305.7, 307.1, 307.3, 306.4, 301.8, 296.2, 292.4,
+
247 290.3, 287.1, 280.9, 273.4, 264.3, 254.1, 242.8, 231, 219, 207.2,
+
248 195.5, 183.3, 169.7, 154.7, 138.7, 124.1, 113.6, 107.8, 104.7,
+
249 102.8, 101.7, 100.9, 100.4, 100, 99.79, 99.7, 99.66, 99.68, 99.79,
+
250 99.94, 100.2, 100.5, 100.9, 101.4, 102.1, 103.4, 107, 115.2, 129.1,
+
251 148.7, 171, 190.8, 205.6, 218.4, 229.4, 239.6, 248.6, 256.5,
+
252 263.7, 270.3, 276.6, 282.6, 288.1, 294.5, 300.4, 306.3, 311.4,
+
253 315.1, 318.3, 320.3, 322.2, 322.8, 321.5, 321.1},
+
254 {266.5, 264.9, 260.8, 261, 262, 263, 261.3, 259.7, 259.2, 259.8,
+
255 260.1, 258.6, 256.7, 253.6, 249.5, 243.9, 237.4, 230, 222.1, 213.9,
+
256 205, 194.4, 180.4, 161.8, 140.7, 122.9, 112.1, 106.7, 104.1, 102.7,
+
257 101.8, 101.4, 101.1, 101, 101, 101, 101.1, 101.2, 101.5, 101.9,
+
258 102.4, 103, 103.8, 104.9, 106.8, 110.1, 115.6, 124, 135.2, 148.9,
+
259 165.2, 181.3, 198, 211.8, 223.5, 233.8, 242.9, 251.5, 259, 266.2,
+
260 273.1, 279.2, 286.2, 292.8, 299.6, 306, 311.1, 315.5, 318.8, 322.6,
+
261 325.3, 325.8, 325.8},
+
262 {220.1, 218.1, 210.8, 207.2, 207.6, 210.5, 211.4, 213.5, 217.3,
+
263 222.4, 227.9, 232.8, 237.4, 240.8, 242.8, 243, 241.5, 238.6, 234.2,
+
264 228.5, 221, 210.7, 195.1, 172.9, 147.8, 127.6, 115.6, 109.9, 107.1,
+
265 105.7, 105, 104.8, 104.8, 104.9, 105, 105.1, 105.3, 105.5, 105.8,
+
266 106.4, 107, 107.6, 108.1, 108.8, 110, 111.8, 114.2, 117.4, 121.6,
+
267 127.9, 137.3, 151.2, 169.5, 189, 205.8, 218.9, 229.1, 237.8, 245,
+
268 251.5, 257.1, 262.3, 268.2, 274, 280.4, 286.7, 292.4, 297.9, 302.9,
+
269 308.5, 312.2, 313.1, 313.3},
+
270 {187.4, 184.5, 173.3, 166.1, 165.4, 167.8, 169.6, 173.6, 179.6,
+
271 187.9, 198.9, 210, 220.5, 229.2, 235.7, 239.9, 241.8, 241.6, 239.6,
+
272 235.8, 229.4, 218.6, 200.9, 175.9, 149.4, 129.4, 118.3, 113.1,
+
273 110.8, 109.7, 109.3, 109.4, 109.7, 110, 110.2, 110.4, 110.5, 110.7,
+
274 111, 111.4, 111.8, 112.1, 112.3, 112.7, 113.2, 113.9, 115, 116.4,
+
275 117.9, 120.4, 124.1, 130.9, 142.2, 159.6, 179.6, 198.5, 212.9,
+
276 224.2, 232.7, 239.1, 243.8, 247.7, 252.4, 257.3, 263.2, 269.5,
+
277 275.4, 281.1, 286.3, 292, 296.3, 298.2, 298.8},
+
278 {166, 166.4, 155.7, 148.3, 147.1, 149, 152.1, 157, 163.6, 172.4,
+
279 185.3, 199.2, 212.6, 224, 233.2, 239.6, 243.3, 244.6, 243.6, 240.3,
+
280 233.9, 222.6, 203.7, 177, 149.5, 129.7, 119, 114, 111.7, 110.7,
+
281 110.3, 110.3, 110.6, 110.9, 111.1, 111.3, 111.5, 111.6, 111.9,
+
282 112.2, 112.5, 112.6, 112.8, 113, 113.4, 114, 115.1, 116.5, 118.3,
+
283 120.9, 124.4, 130.2, 139.4, 154.6, 173.8, 193.1, 208.1, 220.4,
+
284 230.1, 238.2, 244.7, 249.5, 254.5, 259.3, 264.5, 269.4, 273.7,
+
285 278.2, 282.6, 287.4, 290.9, 292.5, 293},
+
286 {171.9, 172.8, 166.2, 162.3, 161.4, 162.5, 165.2, 169.6, 175.3,
+
287 183.1, 193.8, 205.9, 218.3, 229.6, 238.5, 244.3, 246.9, 246.7,
+
288 243.8, 238.4, 230.2, 217.9, 199.6, 174.9, 148.9, 129.8, 119.5,
+
289 114.8, 112.3, 110.9, 110.3, 110.1, 110.2, 110.3, 110.4, 110.5,
+
290 110.6, 110.8, 111, 111.4, 111.8, 112, 112.2, 112.4, 112.9, 113.6,
+
291 114.7, 116.3, 118.4, 121.9, 127.1, 136.1, 149.8, 168.4, 186.9,
+
292 203.3, 217, 229.1, 238.7, 247, 254, 259.3, 264.3, 268.3, 272.5,
+
293 276.6, 280.4, 284.4, 288.4, 293.3, 297.2, 298.7, 299.1},
+
294 {191.6, 192.2, 189, 188.1, 190.2, 193.7, 197.8, 202.9, 208.5,
+
295 215.6, 224.2, 233.1, 241.2, 247.3, 250.8, 251.3, 248.9, 244.2,
+
296 237.3, 228.4, 217.2, 202.9, 184.5, 162.5, 140.7, 124.8, 116.2,
+
297 111.8, 109.4, 107.9, 107, 106.7, 106.6, 106.6, 106.7, 106.7,
+
298 106.8, 107, 107.4, 108, 108.7, 109.3, 109.8, 110.4, 111.2,
+
299 112.4, 114.2, 116.9, 121.1, 127.9, 139.3, 155.2, 173.6, 190.7,
+
300 206.1, 220.1, 232.3, 243, 251.8, 259.2, 265.7, 270.6, 275.3,
+
301 279.3, 283.3, 286.9, 289.7, 292.8, 296.1, 300.5, 303.9, 304.8,
+
302 305.1},
+
303 {241.5, 239.6, 236.8, 237.4, 239.4, 242.3, 244.2, 246.4, 249.2,
+
304 253.6, 258.6, 262.7, 264.8, 264.2, 260.6, 254.1, 245.5, 235.3,
+
305 223.9, 211.7, 198.3, 183.1, 165.6, 147.1, 130.5, 118.7, 111.9,
+
306 108.1, 105.8, 104.3, 103.4, 102.8, 102.5, 102.4, 102.5, 102.5,
+
307 102.5, 102.7, 103.1, 103.8, 104.6, 105.4, 106.1, 107, 108.2,
+
308 109.9, 112.8, 117.5, 126, 140.4, 161, 181.9, 201.2, 216.8, 230.4,
+
309 241.8, 251.4, 259.9, 266.9, 272.8, 277.4, 280.4, 282.9, 284.6,
+
310 286.1, 287.4, 288.3, 289.5, 290.9, 294.2, 296.9, 297.5, 297.6},
+
311 {301.2, 300.3, 296.6, 295.4, 295, 294.3, 291.2, 287.4, 284.9, 284.7,
+
312 284.1, 281.5, 277.1, 270.4, 261.7, 250.6, 237.6, 223.1, 207.9, 192,
+
313 175.8, 158.8, 142.1, 127.6, 116.8, 109.9, 106, 103.6, 102.1, 101.1,
+
314 100.4, 99.96, 99.6, 99.37, 99.32, 99.32, 99.31, 99.46, 99.77, 100.2,
+
315 100.7, 101.3, 101.8, 102.7, 104.1, 106.8, 111.9, 121, 136.7, 160,
+
316 186.9, 209.9, 228.1, 241.2, 251.5, 259.5, 265.7, 270.9, 274.8, 278,
+
317 280.3, 281.8, 283, 283.3, 283.7, 283.8, 283, 282.2, 281.2, 281.4,
+
318 281.7, 281.1, 281.2}
+
319 };
+
320 memcpy(clim->tropo, tropo, sizeof(clim->tropo));
+
321
+
322 /* Get range... */
+
323 double tropomin = 1e99, tropomax = -1e99;
+
324 for (int it = 0; it < clim->tropo_ntime; it++)
+
325 for (int iy = 0; iy < clim->tropo_nlat; iy++) {
+
326 tropomin = GSL_MIN(tropomin, clim->tropo[it][iy]);
+
327 tropomax = GSL_MAX(tropomax, clim->tropo[it][iy]);
+
328 }
+
329
+
330 /* Write info... */
+
331 LOG(2, "Number of time steps: %d", clim->tropo_ntime);
+
332 LOG(2, "Time steps: %.2f, %.2f ... %.2f s",
+
333 clim->tropo_time[0], clim->tropo_time[1],
+
334 clim->tropo_time[clim->tropo_ntime - 1]);
+
335 LOG(2, "Number of latitudes: %d", clim->tropo_nlat);
+
336 LOG(2, "Latitudes: %g, %g ... %g deg",
+
337 clim->tropo_lat[0], clim->tropo_lat[1],
+
338 clim->tropo_lat[clim->tropo_nlat - 1]);
+
339 LOG(2, "Tropopause altitude range: %g ... %g hPa", Z(tropomax),
+
340 Z(tropomin));
+
341 LOG(2, "Tropopause pressure range: %g ... %g hPa", tropomin, tropomax);
+
342}
+
343
+
344/*****************************************************************************/
+
345
+
346double clim_ts(
+
347 const clim_ts_t * ts,
+
348 const double t) {
+
349
+
350 /* Interpolate... */
+
351 if (t <= ts->time[0])
+
352 return ts->vmr[0];
+
353 else if (t >= ts->time[ts->ntime - 1])
+
354 return ts->vmr[ts->ntime - 1];
+
355 else {
+
356 int idx = locate_irr(ts->time, ts->ntime, t);
+
357 return LIN(ts->time[idx], ts->vmr[idx],
+
358 ts->time[idx + 1], ts->vmr[idx + 1], t);
+
359 }
+
360}
+
361
+
362/*****************************************************************************/
+
363
+
364double clim_zm(
+
365 const clim_zm_t * zm,
+
366 const double t,
+
367 const double lat,
+
368 const double p) {
+
369
+
370 /* Get seconds since begin of year... */
+
371 double sec = FMOD(t, 365.25 * 86400.);
+
372 while (sec < 0)
+
373 sec += 365.25 * 86400.;
+
374
+
375 /* Check pressure range... */
+
376 double p_help = p;
+
377 if (p < zm->p[zm->np - 1])
+
378 p_help = zm->p[zm->np - 1];
+
379 else if (p > zm->p[0])
+
380 p_help = zm->p[0];
+
381
+
382 /* Check latitude range... */
+
383 double lat_help = lat;
+
384 if (lat < zm->lat[0])
+
385 lat_help = zm->lat[0];
+
386 else if (lat > zm->lat[zm->nlat - 1])
+
387 lat_help = zm->lat[zm->nlat - 1];
+
388
+
389 /* Get indices... */
+
390 int isec = locate_irr(zm->time, zm->ntime, sec);
+
391 int ilat = locate_reg(zm->lat, zm->nlat, lat_help);
+
392 int ip = locate_irr(zm->p, zm->np, p_help);
+
393
+
394 /* Interpolate climatology data... */
+
395 double aux00 = LIN(zm->p[ip], zm->vmr[isec][ip][ilat],
+
396 zm->p[ip + 1], zm->vmr[isec][ip + 1][ilat], p_help);
+
397 double aux01 = LIN(zm->p[ip], zm->vmr[isec][ip][ilat + 1],
+
398 zm->p[ip + 1], zm->vmr[isec][ip + 1][ilat + 1], p_help);
+
399 double aux10 = LIN(zm->p[ip], zm->vmr[isec + 1][ip][ilat],
+
400 zm->p[ip + 1], zm->vmr[isec + 1][ip + 1][ilat], p_help);
+
401 double aux11 = LIN(zm->p[ip], zm->vmr[isec + 1][ip][ilat + 1],
+
402 zm->p[ip + 1], zm->vmr[isec + 1][ip + 1][ilat + 1],
+
403 p_help);
+
404 aux00 = LIN(zm->lat[ilat], aux00, zm->lat[ilat + 1], aux01, lat_help);
+
405 aux11 = LIN(zm->lat[ilat], aux10, zm->lat[ilat + 1], aux11, lat_help);
+
406 aux00 = LIN(zm->time[isec], aux00, zm->time[isec + 1], aux11, sec);
+
407
+
408 return GSL_MAX(aux00, 0.0);
+
409}
+
410
+
411/*****************************************************************************/
+
412
+ +
414 char *varname,
+
415 float *array,
+
416 size_t nxy,
+
417 size_t nz,
+
418 int decompress,
+
419 FILE * inout) {
+
420
+
421 double min[EP], max[EP], off[EP], scl[EP];
+
422
+
423 unsigned short *sarray;
+
424
+
425 /* Allocate... */
+
426 ALLOC(sarray, unsigned short,
+
427 nxy * nz);
+
428
+
429 /* Read compressed stream and decompress array... */
+
430 if (decompress) {
+
431
+
432 /* Write info... */
+
433 LOG(2, "Read 3-D variable: %s (pack, RATIO= %g %%)",
+
434 varname, 100. * sizeof(unsigned short) / sizeof(float));
+
435
+
436 /* Read data... */
+
437 FREAD(&scl, double,
+
438 nz,
+
439 inout);
+
440 FREAD(&off, double,
+
441 nz,
+
442 inout);
+
443 FREAD(sarray, unsigned short,
+
444 nxy * nz,
+
445 inout);
+
446
+
447 /* Convert to float... */
+
448#pragma omp parallel for default(shared)
+
449 for (size_t ixy = 0; ixy < nxy; ixy++)
+
450 for (size_t iz = 0; iz < nz; iz++)
+
451 array[ixy * nz + iz]
+
452 = (float) (sarray[ixy * nz + iz] * scl[iz] + off[iz]);
+
453 }
+
454
+
455 /* Compress array and output compressed stream... */
+
456 else {
+
457
+
458 /* Write info... */
+
459 LOG(2, "Write 3-D variable: %s (pack, RATIO= %g %%)",
+
460 varname, 100. * sizeof(unsigned short) / sizeof(float));
+
461
+
462 /* Get range... */
+
463 for (size_t iz = 0; iz < nz; iz++) {
+
464 min[iz] = array[iz];
+
465 max[iz] = array[iz];
+
466 }
+
467 for (size_t ixy = 1; ixy < nxy; ixy++)
+
468 for (size_t iz = 0; iz < nz; iz++) {
+
469 if (array[ixy * nz + iz] < min[iz])
+
470 min[iz] = array[ixy * nz + iz];
+
471 if (array[ixy * nz + iz] > max[iz])
+
472 max[iz] = array[ixy * nz + iz];
+
473 }
+
474
+
475 /* Get offset and scaling factor... */
+
476 for (size_t iz = 0; iz < nz; iz++) {
+
477 scl[iz] = (max[iz] - min[iz]) / 65533.;
+
478 off[iz] = min[iz];
+
479 }
+
480
+
481 /* Convert to short... */
+
482#pragma omp parallel for default(shared)
+
483 for (size_t ixy = 0; ixy < nxy; ixy++)
+
484 for (size_t iz = 0; iz < nz; iz++)
+
485 if (scl[iz] != 0)
+
486 sarray[ixy * nz + iz] = (unsigned short)
+
487 ((array[ixy * nz + iz] - off[iz]) / scl[iz] + .5);
+
488 else
+
489 sarray[ixy * nz + iz] = 0;
+
490
+
491 /* Write data... */
+
492 FWRITE(&scl, double,
+
493 nz,
+
494 inout);
+
495 FWRITE(&off, double,
+
496 nz,
+
497 inout);
+
498 FWRITE(sarray, unsigned short,
+
499 nxy * nz,
+
500 inout);
+
501 }
+
502
+
503 /* Free... */
+
504 free(sarray);
+
505}
+
506
+
507/*****************************************************************************/
+
508
+
509#ifdef ZFP
+
510void compress_zfp(
+
511 char *varname,
+
512 float *array,
+
513 int nx,
+
514 int ny,
+
515 int nz,
+
516 int precision,
+
517 double tolerance,
+
518 int decompress,
+
519 FILE * inout) {
+
520
+
521 zfp_type type; /* array scalar type */
+
522 zfp_field *field; /* array meta data */
+
523 zfp_stream *zfp; /* compressed stream */
+
524 void *buffer; /* storage for compressed stream */
+
525 size_t bufsize; /* byte size of compressed buffer */
+
526 bitstream *stream; /* bit stream to write to or read from */
+
527 size_t zfpsize; /* byte size of compressed stream */
+
528
+
529 /* Allocate meta data for the 3D array a[nz][ny][nx]... */
+
530 type = zfp_type_float;
+
531 field = zfp_field_3d(array, type, (uint) nx, (uint) ny, (uint) nz);
+
532
+
533 /* Allocate meta data for a compressed stream... */
+
534 zfp = zfp_stream_open(NULL);
+
535
+
536 /* Set compression mode... */
+
537 int actual_prec = 0;
+
538 double actual_tol = 0;
+
539 if (precision > 0)
+
540 actual_prec = (int) zfp_stream_set_precision(zfp, (uint) precision);
+
541 else if (tolerance > 0)
+
542 actual_tol = zfp_stream_set_accuracy(zfp, tolerance);
+
543 else
+
544 ERRMSG("Set precision or tolerance!");
+
545
+
546 /* Allocate buffer for compressed data... */
+
547 bufsize = zfp_stream_maximum_size(zfp, field);
+
548 buffer = malloc(bufsize);
+
549
+
550 /* Associate bit stream with allocated buffer... */
+
551 stream = stream_open(buffer, bufsize);
+
552 zfp_stream_set_bit_stream(zfp, stream);
+
553 zfp_stream_rewind(zfp);
+
554
+
555 /* Read compressed stream and decompress array... */
+
556 if (decompress) {
+
557 FREAD(&zfpsize, size_t,
+
558 1,
+
559 inout);
+
560 if (fread(buffer, 1, zfpsize, inout) != zfpsize)
+
561 ERRMSG("Error while reading zfp data!");
+
562 if (!zfp_decompress(zfp, field)) {
+
563 ERRMSG("Decompression failed!");
+
564 }
+
565 LOG(2, "Read 3-D variable: %s "
+
566 "(zfp, PREC= %d, TOL= %g, RATIO= %g %%)",
+
567 varname, actual_prec, actual_tol,
+
568 (100. * (double) zfpsize) / (double) (nx * ny * nz));
+
569 }
+
570
+
571 /* Compress array and output compressed stream... */
+
572 else {
+
573 zfpsize = zfp_compress(zfp, field);
+
574 if (!zfpsize) {
+
575 ERRMSG("Compression failed!");
+
576 } else {
+
577 FWRITE(&zfpsize, size_t,
+
578 1,
+
579 inout);
+
580 if (fwrite(buffer, 1, zfpsize, inout) != zfpsize)
+
581 ERRMSG("Error while writing zfp data!");
+
582 }
+
583 LOG(2, "Write 3-D variable: %s "
+
584 "(zfp, PREC= %d, TOL= %g, RATIO= %g %%)",
+
585 varname, actual_prec, actual_tol,
+
586 (100. * (double) zfpsize) / (double) (nx * ny * nz));
+
587 }
+
588
+
589 /* Free... */
+
590 zfp_field_free(field);
+
591 zfp_stream_close(zfp);
+
592 stream_close(stream);
+
593 free(buffer);
+
594}
+
595#endif
+
596
+
597/*****************************************************************************/
+
598
+
599#ifdef ZSTD
+
600void compress_zstd(
+
601 char *varname,
+
602 float *array,
+
603 size_t n,
+
604 int decompress,
+
605 FILE * inout) {
+
606
+
607 /* Get buffer sizes... */
+
608 size_t uncomprLen = n * sizeof(float);
+
609 size_t comprLen = ZSTD_compressBound(uncomprLen);
+
610 size_t compsize;
+
611
+
612 /* Allocate... */
+
613 char *compr = (char *) calloc((uint) comprLen, 1);
+
614 char *uncompr = (char *) array;
+
615
+
616 /* Read compressed stream and decompress array... */
+
617 if (decompress) {
+
618 FREAD(&comprLen, size_t,
+
619 1,
+
620 inout);
+
621 if (fread(compr, 1, comprLen, inout) != comprLen)
+
622 ERRMSG("Error while reading zstd data!");
+
623 compsize = ZSTD_decompress(uncompr, uncomprLen, compr, comprLen);
+
624 if (ZSTD_isError(compsize)) {
+
625 ERRMSG("Decompression failed!");
+
626 }
+
627 LOG(2, "Read 3-D variable: %s (zstd, RATIO= %g %%)",
+
628 varname, (100. * (double) comprLen) / (double) uncomprLen);
+
629 }
+
630
+
631 /* Compress array and output compressed stream... */
+
632 else {
+
633 compsize = ZSTD_compress(compr, comprLen, uncompr, uncomprLen, 0);
+
634 if (ZSTD_isError(compsize)) {
+
635 ERRMSG("Compression failed!");
+
636 } else {
+
637 FWRITE(&compsize, size_t,
+
638 1,
+
639 inout);
+
640 if (fwrite(compr, 1, compsize, inout) != compsize)
+
641 ERRMSG("Error while writing zstd data!");
+
642 }
+
643 LOG(2, "Write 3-D variable: %s (zstd, RATIO= %g %%)",
+
644 varname, (100. * (double) compsize) / (double) uncomprLen);
+
645 }
+
646
+
647 /* Free... */
+
648 free(compr);
+
649}
+
650#endif
+
651
+
652/*****************************************************************************/
+
653
+ +
655 const int year,
+
656 const int mon,
+
657 const int day,
+
658 int *doy) {
+
659
+
660 const int
+
661 d0[12] = { 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },
+
662 d0l[12] = { 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 };
+
663
+
664 /* Get day of year... */
+
665 if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
+
666 *doy = d0l[mon - 1] + day - 1;
+
667 else
+
668 *doy = d0[mon - 1] + day - 1;
+
669}
+
670
+
671/*****************************************************************************/
+
672
+ +
674 const int year,
+
675 const int doy,
+
676 int *mon,
+
677 int *day) {
+
678
+
679 const int
+
680 d0[12] = { 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },
+
681 d0l[12] = { 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 };
+
682
+
683 int i;
+
684
+
685 /* Get month and day... */
+
686 if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
+
687 for (i = 11; i > 0; i--)
+
688 if (d0l[i] <= doy)
+
689 break;
+
690 *mon = i + 1;
+
691 *day = doy - d0l[i] + 1;
+
692 } else {
+
693 for (i = 11; i > 0; i--)
+
694 if (d0[i] <= doy)
+
695 break;
+
696 *mon = i + 1;
+
697 *day = doy - d0[i] + 1;
+
698 }
+
699}
+
700
+
701/*****************************************************************************/
+
702
+ +
704 const double z,
+
705 const double lon,
+
706 const double lat,
+
707 double *x) {
+
708
+
709 double radius = z + RE;
+
710 x[0] = radius * cos(lat / 180. * M_PI) * cos(lon / 180. * M_PI);
+
711 x[1] = radius * cos(lat / 180. * M_PI) * sin(lon / 180. * M_PI);
+
712 x[2] = radius * sin(lat / 180. * M_PI);
+
713}
+
714
+
715/*****************************************************************************/
+
716
+ +
718 ctl_t * ctl,
+
719 clim_t * clim,
+
720 double t,
+
721 met_t ** met0,
+
722 met_t ** met1) {
+
723
+
724 static int init;
+
725
+
726 met_t *mets;
+
727
+
728 char cachefile[LEN], cmd[2 * LEN], filename[LEN];
+
729
+
730 /* Set timer... */
+
731 SELECT_TIMER("GET_MET", "INPUT", NVTX_READ);
+
732
+
733 /* Init... */
+
734 if (t == ctl->t_start || !init) {
+
735 init = 1;
+
736
+
737 /* Read meteo data... */
+
738 get_met_help(ctl, t + (ctl->direction == -1 ? -1 : 0), -1,
+
739 ctl->metbase, ctl->dt_met, filename);
+
740 if (!read_met(filename, ctl, clim, *met0))
+
741 ERRMSG("Cannot open file!");
+
742
+
743 get_met_help(ctl, t + (ctl->direction == 1 ? 1 : 0), 1,
+
744 ctl->metbase, ctl->dt_met, filename);
+
745 if (!read_met(filename, ctl, clim, *met1))
+
746 ERRMSG("Cannot open file!");
+
747
+
748 /* Update GPU... */
+
749#ifdef _OPENACC
+
750 met_t *met0up = *met0;
+
751 met_t *met1up = *met1;
+
752#ifdef ASYNCIO
+
753#pragma acc update device(met0up[:1],met1up[:1]) async(5)
+
754#else
+
755#pragma acc update device(met0up[:1],met1up[:1])
+
756#endif
+
757#endif
+
758
+
759 /* Caching... */
+
760 if (ctl->met_cache && t != ctl->t_stop) {
+
761 get_met_help(ctl, t + 1.1 * ctl->dt_met * ctl->direction,
+
762 ctl->direction, ctl->metbase, ctl->dt_met, cachefile);
+
763 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
764 LOG(1, "Caching: %s", cachefile);
+
765 if (system(cmd) != 0)
+
766 WARN("Caching command failed!");
+
767 }
+
768 }
+
769
+
770 /* Read new data for forward trajectories... */
+
771 if (t > (*met1)->time) {
+
772
+
773 /* Pointer swap... */
+
774 mets = *met1;
+
775 *met1 = *met0;
+
776 *met0 = mets;
+
777
+
778 /* Read new meteo data... */
+
779 get_met_help(ctl, t, 1, ctl->metbase, ctl->dt_met, filename);
+
780 if (!read_met(filename, ctl, clim, *met1))
+
781 ERRMSG("Cannot open file!");
+
782
+
783 /* Update GPU... */
+
784#ifdef _OPENACC
+
785 met_t *met1up = *met1;
+
786#ifdef ASYNCIO
+
787#pragma acc update device(met1up[:1]) async(5)
+
788#else
+
789#pragma acc update device(met1up[:1])
+
790#endif
+
791#endif
+
792
+
793 /* Caching... */
+
794 if (ctl->met_cache && t != ctl->t_stop) {
+
795 get_met_help(ctl, t + ctl->dt_met, 1, ctl->metbase, ctl->dt_met,
+
796 cachefile);
+
797 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
798 LOG(1, "Caching: %s", cachefile);
+
799 if (system(cmd) != 0)
+
800 WARN("Caching command failed!");
+
801 }
+
802 }
+
803 /* Read new data for backward trajectories... */
+
804 if (t < (*met0)->time) {
+
805
+
806 /* Pointer swap... */
+
807 mets = *met1;
+
808 *met1 = *met0;
+
809 *met0 = mets;
+
810
+
811 /* Read new meteo data... */
+
812 get_met_help(ctl, t, -1, ctl->metbase, ctl->dt_met, filename);
+
813 if (!read_met(filename, ctl, clim, *met0))
+
814 ERRMSG("Cannot open file!");
+
815
+
816 /* Update GPU... */
+
817#ifdef _OPENACC
+
818 met_t *met0up = *met0;
+
819#ifdef ASYNCIO
+
820#pragma acc update device(met0up[:1]) async(5)
+
821#else
+
822#pragma acc update device(met0up[:1])
+
823#endif
+
824#endif
+
825
+
826 /* Caching... */
+
827 if (ctl->met_cache && t != ctl->t_stop) {
+
828 get_met_help(ctl, t - ctl->dt_met, -1, ctl->metbase, ctl->dt_met,
+
829 cachefile);
+
830 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
831 LOG(1, "Caching: %s", cachefile);
+
832 if (system(cmd) != 0)
+
833 WARN("Caching command failed!");
+
834 }
+
835 }
+
836 /* Check that grids are consistent... */
+
837 if ((*met0)->nx != 0 && (*met1)->nx != 0) {
+
838 if ((*met0)->nx != (*met1)->nx
+
839 || (*met0)->ny != (*met1)->ny || (*met0)->np != (*met1)->np)
+
840 ERRMSG("Meteo grid dimensions do not match!");
+
841 for (int ix = 0; ix < (*met0)->nx; ix++)
+
842 if (fabs((*met0)->lon[ix] - (*met1)->lon[ix]) > 0.001)
+
843 ERRMSG("Meteo grid longitudes do not match!");
+
844 for (int iy = 0; iy < (*met0)->ny; iy++)
+
845 if (fabs((*met0)->lat[iy] - (*met1)->lat[iy]) > 0.001)
+
846 ERRMSG("Meteo grid latitudes do not match!");
+
847 for (int ip = 0; ip < (*met0)->np; ip++)
+
848 if (fabs((*met0)->p[ip] - (*met1)->p[ip]) > 0.001)
+
849 ERRMSG("Meteo grid pressure levels do not match!");
+
850 }
+
851}
+
852
+
853/*****************************************************************************/
+
854
+ +
856 ctl_t * ctl,
+
857 double t,
+
858 int direct,
+
859 char *metbase,
+
860 double dt_met,
+
861 char *filename) {
+
862
+
863 char repl[LEN];
+
864
+
865 double t6, r;
+
866
+
867 int year, mon, day, hour, min, sec;
+
868
+
869 /* Round time to fixed intervals... */
+
870 if (direct == -1)
+
871 t6 = floor(t / dt_met) * dt_met;
+
872 else
+
873 t6 = ceil(t / dt_met) * dt_met;
+
874
+
875 /* Decode time... */
+
876 jsec2time(t6, &year, &mon, &day, &hour, &min, &sec, &r);
+
877
+
878 /* Set filename of MPTRAC meteo files... */
+
879 if (ctl->clams_met_data == 0) {
+
880 if (ctl->met_type == 0)
+
881 sprintf(filename, "%s_YYYY_MM_DD_HH.nc", metbase);
+
882 else if (ctl->met_type == 1)
+
883 sprintf(filename, "%s_YYYY_MM_DD_HH.bin", metbase);
+
884 else if (ctl->met_type == 2)
+
885 sprintf(filename, "%s_YYYY_MM_DD_HH.pck", metbase);
+
886 else if (ctl->met_type == 3)
+
887 sprintf(filename, "%s_YYYY_MM_DD_HH.zfp", metbase);
+
888 else if (ctl->met_type == 4)
+
889 sprintf(filename, "%s_YYYY_MM_DD_HH.zstd", metbase);
+
890 sprintf(repl, "%d", year);
+
891 get_met_replace(filename, "YYYY", repl);
+
892 sprintf(repl, "%02d", mon);
+
893 get_met_replace(filename, "MM", repl);
+
894 sprintf(repl, "%02d", day);
+
895 get_met_replace(filename, "DD", repl);
+
896 sprintf(repl, "%02d", hour);
+
897 get_met_replace(filename, "HH", repl);
+
898 }
+
899
+
900 /* Set filename of CLaMS meteo files... */
+
901 else {
+
902 sprintf(filename, "%s_YYMMDDHH.nc", metbase);
+
903 sprintf(repl, "%d", year);
+
904 get_met_replace(filename, "YYYY", repl);
+
905 sprintf(repl, "%02d", year % 100);
+
906 get_met_replace(filename, "YY", repl);
+
907 sprintf(repl, "%02d", mon);
+
908 get_met_replace(filename, "MM", repl);
+
909 sprintf(repl, "%02d", day);
+
910 get_met_replace(filename, "DD", repl);
+
911 sprintf(repl, "%02d", hour);
+
912 get_met_replace(filename, "HH", repl);
+
913 }
+
914}
+
915
+
916/*****************************************************************************/
+
917
+ +
919 char *orig,
+
920 char *search,
+
921 char *repl) {
+
922
+
923 char buffer[LEN];
+
924
+
925 /* Iterate... */
+
926 for (int i = 0; i < 3; i++) {
+
927
+
928 /* Replace sub-string... */
+
929 char *ch;
+
930 if (!(ch = strstr(orig, search)))
+
931 return;
+
932 strncpy(buffer, orig, (size_t) (ch - orig));
+
933 buffer[ch - orig] = 0;
+
934 sprintf(buffer + (ch - orig), "%s%s", repl, ch + strlen(search));
+
935 orig[0] = 0;
+
936 strcpy(orig, buffer);
+
937 }
+
938}
+
939
+
940/*****************************************************************************/
+
941
+ +
943 met_t * met0,
+
944 float heights0[EX][EY][EP],
+
945 float array0[EX][EY][EP],
+
946 met_t * met1,
+
947 float heights1[EX][EY][EP],
+
948 float array1[EX][EY][EP],
+
949 double ts,
+
950 double height,
+
951 double lon,
+
952 double lat,
+
953 double *var,
+
954 int *ci,
+
955 double *cw,
+
956 int init) {
+
957
+
958 if (init) {
+
959
+
960 /* Restrict positions to coordinate range... */
+
961 lon = FMOD(lon, 360.);
+
962 if (met0->lon[met0->nx - 1] > 180 && lon < 0)
+
963 lon += 360;
+
964
+
965 /* Get horizontal indizes... */
+
966 ci[0] = locate_irr(met0->lon, met0->nx, lon);
+
967 ci[1] = locate_irr(met0->lat, met0->ny, lat);
+
968
+
969 /* Locate the vertical indizes for each edge of the column... */
+
970 int ind[2][4];
+
971 locate_vert(heights0, met0->npl, ci[0], ci[1], height, ind[0]);
+
972 locate_vert(heights1, met1->npl, ci[0], ci[1], height, ind[1]);
+
973
+
974 /* Find minimum and maximum indizes... */
+
975 ci[2] = ind[0][0];
+
976 int k_max = ind[0][0];
+
977 for (int i = 0; i < 2; i++)
+
978 for (int j = 0; j < 4; j++) {
+
979 if (ci[2] > ind[i][j])
+
980 ci[2] = ind[i][j];
+
981 if (k_max < ind[i][j])
+
982 k_max = ind[i][j];
+
983 }
+
984
+
985 /* Get weighting factors for time, longitude and latitude... */
+
986 cw[3] = (ts - met0->time) / (met1->time - met0->time);
+
987 cw[0] = (lon - met0->lon[ci[0]]) /
+
988 (met0->lon[ci[0] + 1] - met0->lon[ci[0]]);
+
989 cw[1] = (lat - met0->lat[ci[1]]) /
+
990 (met0->lat[ci[1] + 1] - met0->lat[ci[1]]);
+
991
+
992 /* Start determiniation of the altitude weighting factor... */
+
993 double height_top, height_bot;
+
994 double height00, height01, height10, height11, height0, height1;
+
995
+
996 /* Interpolate in time at the lowest level... */
+
997 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2]]
+
998 - heights0[ci[0]][ci[1]][ci[2]])
+
999 + heights0[ci[0]][ci[1]][ci[2]];
+
1000 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2]]
+
1001 - heights0[ci[0]][ci[1] + 1][ci[2]])
+
1002 + heights0[ci[0]][ci[1] + 1][ci[2]];
+
1003 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2]]
+
1004 - heights0[ci[0] + 1][ci[1]][ci[2]])
+
1005 + heights0[ci[0] + 1][ci[1]][ci[2]];
+
1006 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2]]
+
1007 - heights0[ci[0] + 1][ci[1] + 1][ci[2]])
+
1008 + heights0[ci[0] + 1][ci[1] + 1][ci[2]];
+
1009
+
1010 /* Interpolate in latitude direction... */
+
1011 height0 = cw[1] * (height01 - height00) + height00;
+
1012 height1 = cw[1] * (height11 - height10) + height10;
+
1013
+
1014 /* Interpolate in longitude direction... */
+
1015 height_bot = cw[0] * (height1 - height0) + height0;
+
1016
+
1017 /* Interpolate in time at the upper level... */
+
1018 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2] + 1]
+
1019 - heights0[ci[0]][ci[1]][ci[2] + 1])
+
1020 + heights0[ci[0]][ci[1]][ci[2] + 1];
+
1021 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1022 - heights0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1023 + heights0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1024 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1025 - heights0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1026 + heights0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1027 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1028 - heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1029 + heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1030
+
1031 /* Interpolate in latitude direction... */
+
1032 height0 = cw[1] * (height01 - height00) + height00;
+
1033 height1 = cw[1] * (height11 - height10) + height10;
+
1034
+
1035 /* Interpolate in longitude direction... */
+
1036 height_top = cw[0] * (height1 - height0) + height0;
+
1037
+
1038 /* Search at higher levels if height is not in box... */
+
1039 while (((heights0[0][0][0] > heights0[0][0][1]) &&
+
1040 ((height_bot <= height) || (height_top > height))
+
1041 && (height_bot >= height) && (ci[2] < k_max))
+
1042 ||
+
1043 ((heights0[0][0][0] < heights0[0][0][1]) &&
+
1044 ((height_bot >= height) || (height_top < height))
+
1045 && (height_bot <= height) && (ci[2] < k_max))
+
1046 ) {
+
1047
+
1048 ci[2]++;
+
1049 height_bot = height_top;
+
1050
+
1051 /* Interpolate in time at the next level... */
+
1052 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2] + 1]
+
1053 - heights0[ci[0]][ci[1]][ci[2] + 1])
+
1054 + heights0[ci[0]][ci[1]][ci[2] + 1];
+
1055 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1056 - heights0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1057 + heights0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1058 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1059 - heights0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1060 + heights0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1061 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1062 - heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1063 + heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1064
+
1065 /* Interpolate in latitude direction... */
+
1066 height0 = cw[1] * (height01 - height00) + height00;
+
1067 height1 = cw[1] * (height11 - height10) + height10;
+
1068
+
1069 /* Interpolate in longitude direction... */
+
1070 height_top = cw[0] * (height1 - height0) + height0;
+
1071 }
+
1072
+
1073 /* Get vertical weighting factors... */
+
1074 cw[2] = (height - height_bot)
+
1075 / (height_top - height_bot);
+
1076
+
1077 }
+
1078
+
1079 /* Calculate the needed array values... */
+
1080 double array000 = cw[3] * (array1[ci[0]][ci[1]][ci[2]]
+
1081 - array0[ci[0]][ci[1]][ci[2]])
+
1082 + array0[ci[0]][ci[1]][ci[2]];
+
1083 double array100 = cw[3] * (array1[ci[0] + 1][ci[1]][ci[2]]
+
1084 - array0[ci[0] + 1][ci[1]][ci[2]])
+
1085 + array0[ci[0] + 1][ci[1]][ci[2]];
+
1086 double array010 = cw[3] * (array1[ci[0]][ci[1] + 1][ci[2]]
+
1087 - array0[ci[0]][ci[1] + 1][ci[2]])
+
1088 + array0[ci[0]][ci[1] + 1][ci[2]];
+
1089 double array110 = cw[3] * (array1[ci[0] + 1][ci[1] + 1][ci[2]]
+
1090 - array0[ci[0] + 1][ci[1] + 1][ci[2]])
+
1091 + array0[ci[0] + 1][ci[1] + 1][ci[2]];
+
1092 double array001 = cw[3] * (array1[ci[0]][ci[1]][ci[2] + 1]
+
1093 - array0[ci[0]][ci[1]][ci[2] + 1])
+
1094 + array0[ci[0]][ci[1]][ci[2] + 1];
+
1095 double array101 = cw[3] * (array1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1096 - array0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1097 + array0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1098 double array011 = cw[3] * (array1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1099 - array0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1100 + array0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1101 double array111 = cw[3] * (array1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1102 - array0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1103 + array0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1104
+
1105 double array00 = cw[0] * (array100 - array000) + array000;
+
1106 double array10 = cw[0] * (array110 - array010) + array010;
+
1107 double array01 = cw[0] * (array101 - array001) + array001;
+
1108 double array11 = cw[0] * (array111 - array011) + array011;
+
1109
+
1110 double aux0 = cw[1] * (array10 - array00) + array00;
+
1111 double aux1 = cw[1] * (array11 - array01) + array01;
+
1112
+
1113 /* Interpolate vertically... */
+
1114 *var = cw[2] * (aux1 - aux0) + aux0;
+
1115
+
1116}
+
1117
+
1118/*****************************************************************************/
+
1119
+ +
1121 met_t * met,
+
1122 float array[EX][EY][EP],
+
1123 double p,
+
1124 double lon,
+
1125 double lat,
+
1126 double *var,
+
1127 int *ci,
+
1128 double *cw,
+
1129 int init) {
+
1130
+
1131 /* Initialize interpolation... */
+
1132 if (init) {
+
1133
+
1134 /* Check longitude... */
+
1135 if (met->lon[met->nx - 1] > 180 && lon < 0)
+
1136 lon += 360;
+
1137
+
1138 /* Get interpolation indices... */
+
1139 ci[0] = locate_irr(met->p, met->np, p);
+
1140 ci[1] = locate_reg(met->lon, met->nx, lon);
+
1141 ci[2] = locate_reg(met->lat, met->ny, lat);
+
1142
+
1143 /* Get interpolation weights... */
+
1144 cw[0] = (met->p[ci[0] + 1] - p)
+
1145 / (met->p[ci[0] + 1] - met->p[ci[0]]);
+
1146 cw[1] = (met->lon[ci[1] + 1] - lon)
+
1147 / (met->lon[ci[1] + 1] - met->lon[ci[1]]);
+
1148 cw[2] = (met->lat[ci[2] + 1] - lat)
+
1149 / (met->lat[ci[2] + 1] - met->lat[ci[2]]);
+
1150 }
+
1151
+
1152 /* Interpolate vertically... */
+
1153 double aux00 =
+
1154 cw[0] * (array[ci[1]][ci[2]][ci[0]] - array[ci[1]][ci[2]][ci[0] + 1])
+
1155 + array[ci[1]][ci[2]][ci[0] + 1];
+
1156 double aux01 =
+
1157 cw[0] * (array[ci[1]][ci[2] + 1][ci[0]] -
+
1158 array[ci[1]][ci[2] + 1][ci[0] + 1])
+
1159 + array[ci[1]][ci[2] + 1][ci[0] + 1];
+
1160 double aux10 =
+
1161 cw[0] * (array[ci[1] + 1][ci[2]][ci[0]] -
+
1162 array[ci[1] + 1][ci[2]][ci[0] + 1])
+
1163 + array[ci[1] + 1][ci[2]][ci[0] + 1];
+
1164 double aux11 =
+
1165 cw[0] * (array[ci[1] + 1][ci[2] + 1][ci[0]] -
+
1166 array[ci[1] + 1][ci[2] + 1][ci[0] + 1])
+
1167 + array[ci[1] + 1][ci[2] + 1][ci[0] + 1];
+
1168
+
1169 /* Interpolate horizontally... */
+
1170 aux00 = cw[2] * (aux00 - aux01) + aux01;
+
1171 aux11 = cw[2] * (aux10 - aux11) + aux11;
+
1172 *var = cw[1] * (aux00 - aux11) + aux11;
+
1173}
+
1174
+
1175/*****************************************************************************/
+
1176
+ +
1178 met_t * met,
+
1179 float array[EX][EY],
+
1180 double lon,
+
1181 double lat,
+
1182 double *var,
+
1183 int *ci,
+
1184 double *cw,
+
1185 int init) {
+
1186
+
1187 /* Initialize interpolation... */
+
1188 if (init) {
+
1189
+
1190 /* Check longitude... */
+
1191 if (met->lon[met->nx - 1] > 180 && lon < 0)
+
1192 lon += 360;
+
1193
+
1194 /* Get interpolation indices... */
+
1195 ci[1] = locate_reg(met->lon, met->nx, lon);
+
1196 ci[2] = locate_reg(met->lat, met->ny, lat);
+
1197
+
1198 /* Get interpolation weights... */
+
1199 cw[1] = (met->lon[ci[1] + 1] - lon)
+
1200 / (met->lon[ci[1] + 1] - met->lon[ci[1]]);
+
1201 cw[2] = (met->lat[ci[2] + 1] - lat)
+
1202 / (met->lat[ci[2] + 1] - met->lat[ci[2]]);
+
1203 }
+
1204
+
1205 /* Set variables... */
+
1206 double aux00 = array[ci[1]][ci[2]];
+
1207 double aux01 = array[ci[1]][ci[2] + 1];
+
1208 double aux10 = array[ci[1] + 1][ci[2]];
+
1209 double aux11 = array[ci[1] + 1][ci[2] + 1];
+
1210
+
1211 /* Interpolate horizontally... */
+
1212 if (isfinite(aux00) && isfinite(aux01)
+
1213 && isfinite(aux10) && isfinite(aux11)) {
+
1214 aux00 = cw[2] * (aux00 - aux01) + aux01;
+
1215 aux11 = cw[2] * (aux10 - aux11) + aux11;
+
1216 *var = cw[1] * (aux00 - aux11) + aux11;
+
1217 } else {
+
1218 if (cw[2] < 0.5) {
+
1219 if (cw[1] < 0.5)
+
1220 *var = aux11;
+
1221 else
+
1222 *var = aux01;
+
1223 } else {
+
1224 if (cw[1] < 0.5)
+
1225 *var = aux10;
+
1226 else
+
1227 *var = aux00;
+
1228 }
+
1229 }
+
1230}
+
1231
+
1232/*****************************************************************************/
+
1233
+
1234#ifdef UVW
+
1235void intpol_met_space_uvw(
+
1236 met_t * met,
+
1237 double p,
+
1238 double lon,
+
1239 double lat,
+
1240 double *u,
+
1241 double *v,
+
1242 double *w,
+
1243 int *ci,
+
1244 double *cw,
+
1245 int init) {
+
1246
+
1247 /* Initialize interpolation... */
+
1248 if (init) {
+
1249
+
1250 /* Check longitude... */
+
1251 if (met->lon[met->nx - 1] > 180 && lon < 0)
+
1252 lon += 360;
+
1253
+
1254 /* Get interpolation indices... */
+
1255 ci[0] = locate_irr(met->p, met->np, p);
+
1256 ci[1] = locate_reg(met->lon, met->nx, lon);
+
1257 ci[2] = locate_reg(met->lat, met->ny, lat);
+
1258
+
1259 /* Get interpolation weights... */
+
1260 cw[0] = (met->p[ci[0] + 1] - p)
+
1261 / (met->p[ci[0] + 1] - met->p[ci[0]]);
+
1262 cw[1] = (met->lon[ci[1] + 1] - lon)
+
1263 / (met->lon[ci[1] + 1] - met->lon[ci[1]]);
+
1264 cw[2] = (met->lat[ci[2] + 1] - lat)
+
1265 / (met->lat[ci[2] + 1] - met->lat[ci[2]]);
+
1266 }
+
1267
+
1268 /* Interpolate vertically... */
+
1269 double u00 =
+
1270 cw[0] * (met->uvw[ci[1]][ci[2]][ci[0]][0] -
+
1271 met->uvw[ci[1]][ci[2]][ci[0] + 1][0])
+
1272 + met->uvw[ci[1]][ci[2]][ci[0] + 1][0];
+
1273 double u01 =
+
1274 cw[0] * (met->uvw[ci[1]][ci[2] + 1][ci[0]][0] -
+
1275 met->uvw[ci[1]][ci[2] + 1][ci[0] + 1][0])
+
1276 + met->uvw[ci[1]][ci[2] + 1][ci[0] + 1][0];
+
1277 double u10 =
+
1278 cw[0] * (met->uvw[ci[1] + 1][ci[2]][ci[0]][0] -
+
1279 met->uvw[ci[1] + 1][ci[2]][ci[0] + 1][0])
+
1280 + met->uvw[ci[1] + 1][ci[2]][ci[0] + 1][0];
+
1281 double u11 =
+
1282 cw[0] * (met->uvw[ci[1] + 1][ci[2] + 1][ci[0]][0] -
+
1283 met->uvw[ci[1] + 1][ci[2] + 1][ci[0] + 1][0])
+
1284 + met->uvw[ci[1] + 1][ci[2] + 1][ci[0] + 1][0];
+
1285
+
1286 double v00 =
+
1287 cw[0] * (met->uvw[ci[1]][ci[2]][ci[0]][1] -
+
1288 met->uvw[ci[1]][ci[2]][ci[0] + 1][1])
+
1289 + met->uvw[ci[1]][ci[2]][ci[0] + 1][1];
+
1290 double v01 =
+
1291 cw[0] * (met->uvw[ci[1]][ci[2] + 1][ci[0]][1] -
+
1292 met->uvw[ci[1]][ci[2] + 1][ci[0] + 1][1])
+
1293 + met->uvw[ci[1]][ci[2] + 1][ci[0] + 1][1];
+
1294 double v10 =
+
1295 cw[0] * (met->uvw[ci[1] + 1][ci[2]][ci[0]][1] -
+
1296 met->uvw[ci[1] + 1][ci[2]][ci[0] + 1][1])
+
1297 + met->uvw[ci[1] + 1][ci[2]][ci[0] + 1][1];
+
1298 double v11 =
+
1299 cw[0] * (met->uvw[ci[1] + 1][ci[2] + 1][ci[0]][1] -
+
1300 met->uvw[ci[1] + 1][ci[2] + 1][ci[0] + 1][1])
+
1301 + met->uvw[ci[1] + 1][ci[2] + 1][ci[0] + 1][1];
+
1302
+
1303 double w00 =
+
1304 cw[0] * (met->uvw[ci[1]][ci[2]][ci[0]][2] -
+
1305 met->uvw[ci[1]][ci[2]][ci[0] + 1][2])
+
1306 + met->uvw[ci[1]][ci[2]][ci[0] + 1][2];
+
1307 double w01 =
+
1308 cw[0] * (met->uvw[ci[1]][ci[2] + 1][ci[0]][2] -
+
1309 met->uvw[ci[1]][ci[2] + 1][ci[0] + 1][2])
+
1310 + met->uvw[ci[1]][ci[2] + 1][ci[0] + 1][2];
+
1311 double w10 =
+
1312 cw[0] * (met->uvw[ci[1] + 1][ci[2]][ci[0]][2] -
+
1313 met->uvw[ci[1] + 1][ci[2]][ci[0] + 1][2])
+
1314 + met->uvw[ci[1] + 1][ci[2]][ci[0] + 1][2];
+
1315 double w11 =
+
1316 cw[0] * (met->uvw[ci[1] + 1][ci[2] + 1][ci[0]][2] -
+
1317 met->uvw[ci[1] + 1][ci[2] + 1][ci[0] + 1][2])
+
1318 + met->uvw[ci[1] + 1][ci[2] + 1][ci[0] + 1][2];
+
1319
+
1320 /* Interpolate horizontally... */
+
1321 u00 = cw[2] * (u00 - u01) + u01;
+
1322 u11 = cw[2] * (u10 - u11) + u11;
+
1323 *u = cw[1] * (u00 - u11) + u11;
+
1324
+
1325 v00 = cw[2] * (v00 - v01) + v01;
+
1326 v11 = cw[2] * (v10 - v11) + v11;
+
1327 *v = cw[1] * (v00 - v11) + v11;
+
1328
+
1329 w00 = cw[2] * (w00 - w01) + w01;
+
1330 w11 = cw[2] * (w10 - w11) + w11;
+
1331 *w = cw[1] * (w00 - w11) + w11;
+
1332}
+
1333#endif
+
1334
+
1335/*****************************************************************************/
+
1336
+ +
1338 met_t * met0,
+
1339 float array0[EX][EY][EP],
+
1340 met_t * met1,
+
1341 float array1[EX][EY][EP],
+
1342 double ts,
+
1343 double p,
+
1344 double lon,
+
1345 double lat,
+
1346 double *var,
+
1347 int *ci,
+
1348 double *cw,
+
1349 int init) {
+
1350
+
1351 double var0, var1, wt;
+
1352
+
1353 /* Spatial interpolation... */
+
1354 intpol_met_space_3d(met0, array0, p, lon, lat, &var0, ci, cw, init);
+
1355 intpol_met_space_3d(met1, array1, p, lon, lat, &var1, ci, cw, 0);
+
1356
+
1357 /* Get weighting factor... */
+
1358 wt = (met1->time - ts) / (met1->time - met0->time);
+
1359
+
1360 /* Interpolate... */
+
1361 *var = wt * (var0 - var1) + var1;
+
1362}
+
1363
+
1364/*****************************************************************************/
+
1365
+ +
1367 met_t * met0,
+
1368 float array0[EX][EY],
+
1369 met_t * met1,
+
1370 float array1[EX][EY],
+
1371 double ts,
+
1372 double lon,
+
1373 double lat,
+
1374 double *var,
+
1375 int *ci,
+
1376 double *cw,
+
1377 int init) {
+
1378
+
1379 double var0, var1, wt;
+
1380
+
1381 /* Spatial interpolation... */
+
1382 intpol_met_space_2d(met0, array0, lon, lat, &var0, ci, cw, init);
+
1383 intpol_met_space_2d(met1, array1, lon, lat, &var1, ci, cw, 0);
+
1384
+
1385 /* Get weighting factor... */
+
1386 wt = (met1->time - ts) / (met1->time - met0->time);
+
1387
+
1388 /* Interpolate... */
+
1389 if (isfinite(var0) && isfinite(var1))
+
1390 *var = wt * (var0 - var1) + var1;
+
1391 else if (wt < 0.5)
+
1392 *var = var1;
+
1393 else
+
1394 *var = var0;
+
1395}
+
1396
+
1397/*****************************************************************************/
+
1398
+
1399#ifdef UVW
+
1400void intpol_met_time_uvw(
+
1401 met_t * met0,
+
1402 met_t * met1,
+
1403 double ts,
+
1404 double p,
+
1405 double lon,
+
1406 double lat,
+
1407 double *u,
+
1408 double *v,
+
1409 double *w) {
+
1410
+
1411 double u0, u1, v0, v1, w0, w1, wt;
+
1412
+
1413 /* Spatial interpolation... */
+ +
1415 intpol_met_space_uvw(met0, p, lon, lat, &u0, &v0, &w0, ci, cw, 1);
+
1416 intpol_met_space_uvw(met1, p, lon, lat, &u1, &v1, &w1, ci, cw, 0);
+
1417
+
1418 /* Get weighting factor... */
+
1419 wt = (met1->time - ts) / (met1->time - met0->time);
+
1420
+
1421 /* Interpolate... */
+
1422 *u = wt * (u0 - u1) + u1;
+
1423 *v = wt * (v0 - v1) + v1;
+
1424 *w = wt * (w0 - w1) + w1;
+
1425}
+
1426#endif
+
1427
+
1428/*****************************************************************************/
+
1429
+ +
1431 const double jsec,
+
1432 int *year,
+
1433 int *mon,
+
1434 int *day,
+
1435 int *hour,
+
1436 int *min,
+
1437 int *sec,
+
1438 double *remain) {
+
1439
+
1440 struct tm t0, *t1;
+
1441
+
1442 t0.tm_year = 100;
+
1443 t0.tm_mon = 0;
+
1444 t0.tm_mday = 1;
+
1445 t0.tm_hour = 0;
+
1446 t0.tm_min = 0;
+
1447 t0.tm_sec = 0;
+
1448
+
1449 time_t jsec0 = (time_t) jsec + timegm(&t0);
+
1450 t1 = gmtime(&jsec0);
+
1451
+
1452 *year = t1->tm_year + 1900;
+
1453 *mon = t1->tm_mon + 1;
+
1454 *day = t1->tm_mday;
+
1455 *hour = t1->tm_hour;
+
1456 *min = t1->tm_min;
+
1457 *sec = t1->tm_sec;
+
1458 *remain = jsec - floor(jsec);
+
1459}
+
1460
+
1461/*****************************************************************************/
+
1462
+ +
1464 float profiles[EX][EY][EP],
+
1465 int np,
+
1466 int ind_lon,
+
1467 int ind_lat,
+
1468 double x) {
+
1469
+
1470 int ilo = 0;
+
1471 int ihi = np - 1;
+
1472 int i = (ihi + ilo) >> 1;
+
1473
+
1474 if (profiles[ind_lon][ind_lat][i] < profiles[ind_lon][ind_lat][i + 1])
+
1475 while (ihi > ilo + 1) {
+
1476 i = (ihi + ilo) >> 1;
+
1477 if (profiles[ind_lon][ind_lat][i] > x) {
+
1478 ihi = i;
+
1479 } else {
+
1480 ilo = i;
+
1481 }
+
1482 } else
+
1483 while (ihi > ilo + 1) {
+
1484 i = (ihi + ilo) >> 1;
+
1485 if (profiles[ind_lon][ind_lat][i] <= x) {
+
1486 ihi = i;
+
1487 } else {
+
1488 ilo = i;
+
1489 }
+
1490 }
+
1491
+
1492 return ilo;
+
1493}
+
1494
+
1495/*****************************************************************************/
+
1496
+ +
1498 float profiles[EX][EY][EP],
+
1499 int np,
+
1500 int lon_ap_ind,
+
1501 int lat_ap_ind,
+
1502 double height_ap,
+
1503 int *ind) {
+
1504
+
1505 ind[0] = locate_irr_3d(profiles, np, lon_ap_ind, lat_ap_ind, height_ap);
+
1506 ind[1] = locate_irr_3d(profiles, np, lon_ap_ind + 1, lat_ap_ind, height_ap);
+
1507 ind[2] = locate_irr_3d(profiles, np, lon_ap_ind, lat_ap_ind + 1, height_ap);
+
1508 ind[3] =
+
1509 locate_irr_3d(profiles, np, lon_ap_ind + 1, lat_ap_ind + 1, height_ap);
+
1510
+
1511}
+
1512
+
1513/*****************************************************************************/
+
1514
+ +
1516 const double kz[EP],
+
1517 const double kw[EP],
+
1518 const int nk,
+
1519 const double p) {
+
1520
+
1521 /* Check number of data points... */
+
1522 if (nk < 2)
+
1523 return 1.0;
+
1524
+
1525 /* Get altitude... */
+
1526 double z = Z(p);
+
1527
+
1528 /* Get weighting factor... */
+
1529 if (z < kz[0])
+
1530 return kw[0];
+
1531 else if (z > kz[nk - 1])
+
1532 return kw[nk - 1];
+
1533 else {
+
1534 int idx = locate_irr(kz, nk, z);
+
1535 return LIN(kz[idx], kw[idx], kz[idx + 1], kw[idx + 1], z);
+
1536 }
+
1537}
+
1538
+
1539/*****************************************************************************/
+
1540
+ +
1542 const double t,
+
1543 const double h2o) {
+
1544
+
1545 /*
+
1546 Calculate moist adiabatic lapse rate [K/km] from temperature [K]
+
1547 and water vapor volume mixing ratio [1].
+
1548
+
1549 Reference: https://en.wikipedia.org/wiki/Lapse_rate
+
1550 */
+
1551
+
1552 const double a = RA * SQR(t), r = SH(h2o) / (1. - SH(h2o));
+
1553
+
1554 return 1e3 * G0 * (a + LV * r * t) / (CPD * a + SQR(LV) * r * EPS);
+
1555}
+
1556
+
1557/*****************************************************************************/
+
1558
+ +
1560 ctl_t * ctl) {
+
1561
+
1562 if (0 == ctl->press_level_def) {
+
1563
+
1564 ctl->met_np = 138;
+
1565
+
1566 double press[138] = {
+
1567 0.0200, 0.0310, 0.0467, 0.0683, 0.0975, 0.1361, 0.1861, 0.2499,
+
1568 0.3299, 0.4288, 0.5496, 0.6952, 0.8690, 1.0742, 1.3143, 1.5928, 1.9134,
+
1569 2.2797, 2.6954, 3.1642, 3.6898, 4.2759, 4.9262, 5.6441, 6.4334, 7.2974,
+
1570 8.2397, 9.2634, 10.3720, 11.5685, 12.8561, 14.2377, 15.7162, 17.2945,
+
1571 18.9752, 20.7610, 22.6543, 24.6577, 26.7735, 29.0039, 31.3512, 33.8174,
+
1572 36.4047, 39.1149, 41.9493, 44.9082, 47.9915, 51.1990, 54.5299, 57.9834,
+
1573 61.5607, 65.2695, 69.1187, 73.1187, 77.2810, 81.6182, 86.1450, 90.8774,
+
1574 95.8280, 101.0047, 106.4153, 112.0681, 117.9714, 124.1337, 130.5637,
+
1575 137.2703, 144.2624, 151.5493, 159.1403, 167.0450, 175.2731, 183.8344,
+
1576 192.7389, 201.9969, 211.6186, 221.6146, 231.9954, 242.7719, 253.9549,
+
1577 265.5556, 277.5852, 290.0548, 302.9762, 316.3607, 330.2202, 344.5663,
+
1578 359.4111, 374.7666, 390.6450, 407.0583, 424.0190, 441.5395, 459.6321,
+
1579 478.3096, 497.5845, 517.4198, 537.7195, 558.3430, 579.1926, 600.1668,
+
1580 621.1624, 642.0764, 662.8084, 683.2620, 703.3467, 722.9795, 742.0855,
+
1581 760.5996, 778.4661, 795.6396, 812.0847, 827.7756, 842.6959, 856.8376,
+
1582 870.2004, 882.7910, 894.6222, 905.7116, 916.0815, 925.7571, 934.7666,
+
1583 943.1399, 950.9082, 958.1037, 964.7584, 970.9046, 976.5737, 981.7968,
+
1584 986.6036, 991.0230, 995.0824, 998.8081, 1002.2250, 1005.3562, 1008.2239,
+
1585 1010.8487, 1013.2500, 1044.45
+
1586 };
+
1587
+
1588 for (int ip = 0; ip < ctl->met_np; ip++)
+
1589 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1590
+
1591 } else if (1 == ctl->press_level_def) {
+
1592
+
1593 ctl->met_np = 92;
+
1594
+
1595 double press[92] = {
+
1596 0.0200, 0.0398, 0.0739, 0.1291, 0.2141, 0.3395, 0.5175, 0.7617,
+
1597 1.0872, 1.5099, 2.0464, 2.7136, 3.5282, 4.5069, 5.6652, 7.0181,
+
1598 8.5795, 10.3617, 12.3759, 14.6316, 17.1371, 19.8987, 22.9216, 26.2090,
+
1599 29.7630, 33.5843, 37.6720, 42.0242, 46.6378, 51.5086, 56.6316, 61.9984,
+
1600 67.5973, 73.4150, 79.4434, 85.7016, 92.2162, 99.0182, 106.1445,
+
1601 113.6382,
+
1602 121.5502, 129.9403, 138.8558, 148.3260, 158.3816, 169.0545, 180.3786,
+
1603 192.3889, 205.1222, 218.6172, 232.9140, 248.0547, 264.0833, 281.0456,
+
1604 298.9895, 317.9651, 338.0245, 359.2221, 381.6144, 405.2606, 430.2069,
+
1605 456.4813, 483.8505, 512.0662, 540.8577, 569.9401, 599.0310, 627.9668,
+
1606 656.6129, 684.8491, 712.5573, 739.5739, 765.7697, 791.0376, 815.2774,
+
1607 838.3507, 860.1516, 880.6080, 899.6602, 917.2205, 933.2247, 947.6584,
+
1608 960.5245, 971.8169, 981.5301, 989.7322, 996.8732, 1002.8013,
+
1609 1007.4431, 1010.8487, 1013.2500, 1044.45
+
1610 };
+
1611
+
1612 for (int ip = 0; ip < ctl->met_np; ip++)
+
1613 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1614
+
1615 } else if (2 == ctl->press_level_def) {
+
1616
+
1617 ctl->met_np = 60;
+
1618
+
1619 double press[60] = {
+
1620 0.01, 0.1361, 0.2499, 0.4288, 0.6952, 1.0742,
+
1621 2.2797, 3.1642, 4.2759, 7.2974, 9.2634, 11.5685, 14.2377, 20.761,
+
1622 24.6577, 33.8174, 39.1149, 51.199, 57.9834, 73.1187, 81.6182,
+
1623 90.8774, 101.005, 112.068, 124.134, 137.27, 151.549, 167.045, 183.834,
+
1624 201.997, 221.615, 242.772, 265.556, 290.055, 316.361, 344.566, 374.767,
+
1625 407.058, 441.539, 478.31, 517.42, 558.343, 600.167, 683.262, 722.979,
+
1626 760.6, 795.64, 827.776, 856.838, 882.791, 905.712, 925.757, 943.14,
+
1627 958.104, 972.495, 986.886, 1001.28, 1015.67, 1030.06, 1044.45
+
1628 };
+
1629
+
1630 for (int ip = 0; ip < ctl->met_np; ip++)
+
1631 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1632
+
1633 } else {
+
1634 ERRMSG
+
1635 ("Definition does not exist, use 0 for l137, 1 for l91 or 2 for l60")
+
1636 }
+
1637
+
1638}
+
1639
+
1640/*****************************************************************************/
+
1641
+ +
1643 const double *xx,
+
1644 const int n,
+
1645 const double x) {
+
1646
+
1647 int ilo = 0;
+
1648 int ihi = n - 1;
+
1649 int i = (ihi + ilo) >> 1;
+
1650
+
1651 if (xx[i] < xx[i + 1])
+
1652 while (ihi > ilo + 1) {
+
1653 i = (ihi + ilo) >> 1;
+
1654 if (xx[i] > x)
+
1655 ihi = i;
+
1656 else
+
1657 ilo = i;
+
1658 } else
+
1659 while (ihi > ilo + 1) {
+
1660 i = (ihi + ilo) >> 1;
+
1661 if (xx[i] <= x)
+
1662 ihi = i;
+
1663 else
+
1664 ilo = i;
+
1665 }
+
1666
+
1667 return ilo;
+
1668}
+
1669
+
1670/*****************************************************************************/
+
1671
+ +
1673 const double *xx,
+
1674 const int n,
+
1675 const double x) {
+
1676
+
1677 /* Calculate index... */
+
1678 int i = (int) ((x - xx[0]) / (xx[1] - xx[0]));
+
1679
+
1680 /* Check range... */
+
1681 if (i < 0)
+
1682 return 0;
+
1683 else if (i > n - 2)
+
1684 return n - 2;
+
1685 else
+
1686 return i;
+
1687}
+
1688
+
1689/*****************************************************************************/
+
1690
+ +
1692 const double p,
+
1693 const double h2o,
+
1694 const double hno3) {
+
1695
+
1696 /* Check water vapor vmr... */
+
1697 double h2o_help = GSL_MAX(h2o, 0.1e-6);
+
1698
+
1699 /* Calculate T_NAT... */
+
1700 double p_hno3 = hno3 * p / 1.333224;
+
1701 double p_h2o = h2o_help * p / 1.333224;
+
1702 double a = 0.009179 - 0.00088 * log10(p_h2o);
+
1703 double b = (38.9855 - log10(p_hno3) - 2.7836 * log10(p_h2o)) / a;
+
1704 double c = -11397.0 / a;
+
1705 double tnat = (-b + sqrt(b * b - 4. * c)) / 2.;
+
1706 double x2 = (-b - sqrt(b * b - 4. * c)) / 2.;
+
1707 if (x2 > 0)
+
1708 tnat = x2;
+
1709
+
1710 return tnat;
+
1711}
+
1712
+
1713/*****************************************************************************/
+
1714
+ +
1716 double arr[],
+
1717 int brr[],
+
1718 const int low,
+
1719 const int high) {
+
1720
+
1721 if (low < high) {
+
1722 int pi = quicksort_partition(arr, brr, low, high);
+
1723
+
1724#pragma omp task firstprivate(arr,brr,low,pi)
+
1725 {
+
1726 quicksort(arr, brr, low, pi - 1);
+
1727 }
+
1728 {
+
1729 quicksort(arr, brr, pi + 1, high);
+
1730 }
+
1731 }
+
1732}
+
1733
+
1734/*****************************************************************************/
+
1735
+ +
1737 double arr[],
+
1738 int brr[],
+
1739 const int low,
+
1740 const int high) {
+
1741
+
1742 double pivot = arr[high];
+
1743 int i = (low - 1);
+
1744
+
1745 for (int j = low; j <= high - 1; j++)
+
1746 if (arr[j] <= pivot) {
+
1747 i++;
+
1748 SWAP(arr[i], arr[j], double);
+
1749 SWAP(brr[i], brr[j], int);
+
1750 }
+
1751 SWAP(arr[high], arr[i + 1], double);
+
1752 SWAP(brr[high], brr[i + 1], int);
+
1753
+
1754 return (i + 1);
+
1755}
+
1756
+
1757/*****************************************************************************/
+
1758
+ +
1760 const char *filename,
+
1761 ctl_t * ctl,
+
1762 atm_t * atm) {
+
1763
+
1764 int result;
+
1765
+
1766 /* Set timer... */
+
1767 SELECT_TIMER("READ_ATM", "INPUT", NVTX_READ);
+
1768
+
1769 /* Init... */
+
1770 atm->np = 0;
+
1771
+
1772 /* Write info... */
+
1773 LOG(1, "Read atmospheric data: %s", filename);
+
1774
+
1775 /* Read ASCII data... */
+
1776 if (ctl->atm_type == 0)
+
1777 result = read_atm_asc(filename, ctl, atm);
+
1778
+
1779 /* Read binary data... */
+
1780 else if (ctl->atm_type == 1)
+
1781 result = read_atm_bin(filename, ctl, atm);
+
1782
+
1783 /* Read netCDF data... */
+
1784 else if (ctl->atm_type == 2)
+
1785 result = read_atm_nc(filename, ctl, atm);
+
1786
+
1787 /* Read CLaMS data... */
+
1788 else if (ctl->atm_type == 3 || ctl->atm_type == 4)
+
1789 result = read_atm_clams(filename, ctl, atm);
+
1790
+
1791 /* Error... */
+
1792 else
+
1793 ERRMSG("Atmospheric data type not supported!");
+
1794
+
1795 /* Check result... */
+
1796 if (result != 1)
+
1797 return 0;
+
1798
+
1799 /* Check number of air parcels... */
+
1800 if (atm->np < 1)
+
1801 ERRMSG("Can not read any data!");
+
1802
+
1803 /* Write info... */
+
1804 double mini, maxi;
+
1805 LOG(2, "Number of particles: %d", atm->np);
+
1806 gsl_stats_minmax(&mini, &maxi, atm->time, 1, (size_t) atm->np);
+
1807 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
1808 gsl_stats_minmax(&mini, &maxi, atm->p, 1, (size_t) atm->np);
+
1809 LOG(2, "Altitude range: %g ... %g km", Z(maxi), Z(mini));
+
1810 LOG(2, "Pressure range: %g ... %g hPa", maxi, mini);
+
1811 gsl_stats_minmax(&mini, &maxi, atm->lon, 1, (size_t) atm->np);
+
1812 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
1813 gsl_stats_minmax(&mini, &maxi, atm->lat, 1, (size_t) atm->np);
+
1814 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
1815 for (int iq = 0; iq < ctl->nq; iq++) {
+
1816 char msg[LEN];
+
1817 sprintf(msg, "Quantity %s range: %s ... %s %s",
+
1818 ctl->qnt_name[iq], ctl->qnt_format[iq],
+
1819 ctl->qnt_format[iq], ctl->qnt_unit[iq]);
+
1820 gsl_stats_minmax(&mini, &maxi, atm->q[iq], 1, (size_t) atm->np);
+
1821 LOG(2, msg, mini, maxi);
+
1822 }
+
1823
+
1824 /* Return success... */
+
1825 return 1;
+
1826}
+
1827
+
1828/*****************************************************************************/
+
1829
+ +
1831 const char *filename,
+
1832 ctl_t * ctl,
+
1833 atm_t * atm) {
+
1834
+
1835 /* Open file... */
+
1836 FILE *in;
+
1837 if (!(in = fopen(filename, "r"))) {
+
1838 WARN("Cannot open file!");
+
1839 return 0;
+
1840 }
+
1841
+
1842 /* Read line... */
+
1843 char line[LEN];
+
1844 while (fgets(line, LEN, in)) {
+
1845
+
1846 /* Read data... */
+
1847 char *tok;
+
1848 TOK(line, tok, "%lg", atm->time[atm->np]);
+
1849 TOK(NULL, tok, "%lg", atm->p[atm->np]);
+
1850 TOK(NULL, tok, "%lg", atm->lon[atm->np]);
+
1851 TOK(NULL, tok, "%lg", atm->lat[atm->np]);
+
1852 for (int iq = 0; iq < ctl->nq; iq++)
+
1853 TOK(NULL, tok, "%lg", atm->q[iq][atm->np]);
+
1854
+
1855 /* Convert altitude to pressure... */
+
1856 atm->p[atm->np] = P(atm->p[atm->np]);
+
1857
+
1858 /* Increment data point counter... */
+
1859 if ((++atm->np) > NP)
+
1860 ERRMSG("Too many data points!");
+
1861 }
+
1862
+
1863 /* Close file... */
+
1864 fclose(in);
+
1865
+
1866 /* Return success... */
+
1867 return 1;
+
1868}
+
1869
+
1870/*****************************************************************************/
+
1871
+ +
1873 const char *filename,
+
1874 ctl_t * ctl,
+
1875 atm_t * atm) {
+
1876
+
1877 /* Open file... */
+
1878 FILE *in;
+
1879 if (!(in = fopen(filename, "r")))
+
1880 return 0;
+
1881
+
1882 /* Check version of binary data... */
+
1883 int version;
+
1884 FREAD(&version, int,
+
1885 1,
+
1886 in);
+
1887 if (version != 100)
+
1888 ERRMSG("Wrong version of binary data!");
+
1889
+
1890 /* Read data... */
+
1891 FREAD(&atm->np, int,
+
1892 1,
+
1893 in);
+
1894 FREAD(atm->time, double,
+
1895 (size_t) atm->np,
+
1896 in);
+
1897 FREAD(atm->p, double,
+
1898 (size_t) atm->np,
+
1899 in);
+
1900 FREAD(atm->lon, double,
+
1901 (size_t) atm->np,
+
1902 in);
+
1903 FREAD(atm->lat, double,
+
1904 (size_t) atm->np,
+
1905 in);
+
1906 for (int iq = 0; iq < ctl->nq; iq++)
+
1907 FREAD(atm->q[iq], double,
+
1908 (size_t) atm->np,
+
1909 in);
+
1910
+
1911 /* Read final flag... */
+
1912 int final;
+
1913 FREAD(&final, int,
+
1914 1,
+
1915 in);
+
1916 if (final != 999)
+
1917 ERRMSG("Error while reading binary data!");
+
1918
+
1919 /* Close file... */
+
1920 fclose(in);
+
1921
+
1922 /* Return success... */
+
1923 return 1;
+
1924}
+
1925
+
1926/*****************************************************************************/
+
1927
+ +
1929 const char *filename,
+
1930 ctl_t * ctl,
+
1931 atm_t * atm) {
+
1932
+
1933 int ncid, varid;
+
1934
+
1935 /* Open file... */
+
1936 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR)
+
1937 return 0;
+
1938
+
1939 /* Get dimensions... */
+
1940 NC_INQ_DIM("NPARTS", &atm->np, 1, NP);
+
1941
+
1942 /* Get time... */
+
1943 if (nc_inq_varid(ncid, "TIME_INIT", &varid) == NC_NOERR) {
+
1944 NC(nc_get_var_double(ncid, varid, atm->time));
+
1945 } else {
+
1946 WARN("TIME_INIT not found use time instead!");
+
1947 double time_init;
+
1948 NC_GET_DOUBLE("time", &time_init, 1);
+
1949 for (int ip = 0; ip < atm->np; ip++) {
+
1950 atm->time[ip] = time_init;
+
1951 }
+
1952 }
+
1953
+
1954 /* Read zeta coordinate, pressure is optional... */
+
1955 if (ctl->vert_coord_ap == 1) {
+
1956 NC_GET_DOUBLE("ZETA", atm->q[ctl->qnt_zeta], 1);
+
1957 NC_GET_DOUBLE("PRESS", atm->p, 0);
+
1958 }
+
1959
+
1960 /* Read pressure, zeta coordinate is optional... */
+
1961 else {
+
1962 if (nc_inq_varid(ncid, "PRESS_INIT", &varid) == NC_NOERR) {
+
1963 NC(nc_get_var_double(ncid, varid, atm->p));
+
1964 } else {
+
1965 WARN("PRESS_INIT not found use PRESS instead!");
+
1966 nc_inq_varid(ncid, "PRESS", &varid);
+
1967 NC(nc_get_var_double(ncid, varid, atm->p));
+
1968 }
+
1969 }
+
1970
+
1971 /* Read longitude and latitude... */
+
1972 NC_GET_DOUBLE("LON", atm->lon, 1);
+
1973 NC_GET_DOUBLE("LAT", atm->lat, 1);
+
1974
+
1975 /* Close file... */
+
1976 NC(nc_close(ncid));
+
1977
+
1978 /* Return success... */
+
1979 return 1;
+
1980}
+
1981
+
1982/*****************************************************************************/
+
1983
+ +
1985 const char *filename,
+
1986 ctl_t * ctl,
+
1987 atm_t * atm) {
+
1988
+
1989 int ncid, varid;
+
1990
+
1991 /* Open file... */
+
1992 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR)
+
1993 return 0;
+
1994
+
1995 /* Get dimensions... */
+
1996 NC_INQ_DIM("obs", &atm->np, 1, NP);
+
1997
+
1998 /* Read geolocations... */
+
1999 NC_GET_DOUBLE("time", atm->time, 1);
+
2000 NC_GET_DOUBLE("press", atm->p, 1);
+
2001 NC_GET_DOUBLE("lon", atm->lon, 1);
+
2002 NC_GET_DOUBLE("lat", atm->lat, 1);
+
2003
+
2004 /* Read variables... */
+
2005 for (int iq = 0; iq < ctl->nq; iq++)
+
2006 NC_GET_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
2007
+
2008 /* Close file... */
+
2009 NC(nc_close(ncid));
+
2010
+
2011 /* Return success... */
+
2012 return 1;
+
2013}
+
2014
+
2015/*****************************************************************************/
+
2016
+ +
2018 ctl_t * ctl,
+
2019 clim_t * clim) {
+
2020
+
2021 /* Set timer... */
+
2022 SELECT_TIMER("READ_CLIM", "INPUT", NVTX_READ);
+
2023
+
2024 /* Init tropopause climatology... */
+
2025 clim_tropo_init(clim);
+
2026
+
2027 /* Read photolysis rates... */
+
2028 if (ctl->clim_photo[0] != '-')
+
2029 read_clim_photo(ctl->clim_photo, &clim->photo);
+
2030
+
2031 /* Read HNO3 climatology... */
+
2032 if (ctl->clim_hno3_filename[0] != '-')
+
2033 read_clim_zm(ctl->clim_hno3_filename, "HNO3", &clim->hno3);
+
2034
+
2035 /* Read OH climatology... */
+
2036 if (ctl->clim_oh_filename[0] != '-') {
+
2037 read_clim_zm(ctl->clim_oh_filename, "OH", &clim->oh);
+
2038 if (ctl->oh_chem_beta > 0)
+
2039 clim_oh_diurnal_correction(ctl, clim);
+
2040 }
+
2041
+
2042 /* Read H2O2 climatology... */
+
2043 if (ctl->clim_h2o2_filename[0] != '-')
+
2044 read_clim_zm(ctl->clim_h2o2_filename, "H2O2", &clim->h2o2);
+
2045
+
2046 /* Read HO2 climatology... */
+
2047 if (ctl->clim_ho2_filename[0] != '-')
+
2048 read_clim_zm(ctl->clim_ho2_filename, "HO2", &clim->ho2);
+
2049
+
2050 /* Read O(1D) climatology... */
+
2051 if (ctl->clim_o1d_filename[0] != '-')
+
2052 read_clim_zm(ctl->clim_o1d_filename, "O1D", &clim->o1d);
+
2053
+
2054 /* Read CFC-10 time series... */
+
2055 if (ctl->clim_ccl4_timeseries[0] != '-')
+ +
2057
+
2058 /* Read CFC-11 time series... */
+
2059 if (ctl->clim_ccl3f_timeseries[0] != '-')
+ +
2061
+
2062 /* Read CFC-12 time series... */
+
2063 if (ctl->clim_ccl2f2_timeseries[0] != '-')
+ +
2065
+
2066 /* Read N2O time series... */
+
2067 if (ctl->clim_n2o_timeseries[0] != '-')
+
2068 read_clim_ts(ctl->clim_n2o_timeseries, &clim->n2o);
+
2069
+
2070 /* Read SF6 time series... */
+
2071 if (ctl->clim_sf6_timeseries[0] != '-')
+
2072 read_clim_ts(ctl->clim_sf6_timeseries, &clim->sf6);
+
2073}
+
2074
+
2075/*****************************************************************************/
+
2076
+ +
2078 char *filename,
+
2079 clim_photo_t * photo) {
+
2080
+
2081 int ncid, varid, ip, is, io;
+
2082
+
2083 double *help1, *help2, *help3, *help4;
+
2084
+
2085 /* Write info... */
+
2086 LOG(1, "Read photolysis rates: %s", filename);
+
2087
+
2088 /* Open netCDF file... */
+
2089 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR) {
+
2090 WARN("Photolysis rate data are missing!");
+
2091 return;
+
2092 }
+
2093
+
2094 /* Read pressure data... */
+
2095 NC_INQ_DIM("press", &photo->np, 2, CP);
+
2096 NC_GET_DOUBLE("press", photo->p, 1);
+
2097 if (photo->p[0] < photo->p[1])
+
2098 ERRMSG("Pressure data are not descending!");
+
2099
+
2100 /* Read total column ozone data... */
+
2101 NC_INQ_DIM("total_o3col", &photo->no3c, 2, CO3);
+
2102 NC_GET_DOUBLE("total_o3col", photo->o3c, 1);
+
2103 if (photo->o3c[0] > photo->o3c[1])
+
2104 ERRMSG("Total column ozone data are not ascending!");
+
2105
+
2106 /* Read solar zenith angle data... */
+
2107 NC_INQ_DIM("sza", &photo->nsza, 2, CSZA);
+
2108 NC_GET_DOUBLE("sza", photo->sza, 1);
+
2109 if (photo->sza[0] > photo->sza[1])
+
2110 ERRMSG("Solar zenith angle data are not ascending!");
+
2111
+
2112 /* Read data... */
+
2113 ALLOC(help1, double,
+
2114 photo->np * photo->nsza * photo->no3c);
+
2115 ALLOC(help2, double,
+
2116 photo->np * photo->nsza * photo->no3c);
+
2117 ALLOC(help3, double,
+
2118 photo->np * photo->nsza * photo->no3c);
+
2119 ALLOC(help4, double,
+
2120 photo->np * photo->nsza * photo->no3c);
+
2121 NC_GET_DOUBLE("n2o", help1, 1);
+
2122 NC_GET_DOUBLE("ccl4", help2, 1);
+
2123 NC_GET_DOUBLE("cfc11", help3, 1);
+
2124 NC_GET_DOUBLE("cfc12", help4, 1);
+
2125 for (ip = 0; ip < photo->np; ip++)
+
2126 for (is = 0; is < photo->nsza; is++)
+
2127 for (io = 0; io < photo->no3c; io++) {
+
2128 photo->n2o[ip][is][io] =
+
2129 help1[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2130 photo->ccl4[ip][is][io] =
+
2131 help2[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2132 photo->ccl3f[ip][is][io] =
+
2133 help3[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2134 photo->ccl2f2[ip][is][io] =
+
2135 help4[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2136 }
+
2137 free(help1);
+
2138 free(help2);
+
2139 free(help3);
+
2140 free(help4);
+
2141
+
2142 /* Close netCDF file... */
+
2143 NC(nc_close(ncid));
+
2144}
+
2145
+
2146/*****************************************************************************/
+
2147
+ +
2149 char *filename,
+
2150 clim_ts_t * ts) {
+
2151
+
2152 /* Write info... */
+
2153 LOG(1, "Read climatological time series: %s", filename);
+
2154
+
2155 /* Open file... */
+
2156 FILE *in;
+
2157 if (!(in = fopen(filename, "r"))) {
+
2158 WARN("Cannot open file!");
+
2159 return 0;
+
2160 }
+
2161
+
2162 /* Read data... */
+
2163 char line[LEN];
+
2164 int nh = 0;
+
2165 while (fgets(line, LEN, in))
+
2166 if (sscanf(line, "%lg %lg", &ts->time[nh], &ts->vmr[nh]) == 2) {
+
2167
+
2168 /* Convert years to seconds... */
+
2169 ts->time[nh] = (ts->time[nh] - 2000.0) * 365.25 * 86400.;
+
2170
+
2171 /* Check data... */
+
2172 if (nh > 0 && ts->time[nh] <= ts->time[nh - 1])
+
2173 ERRMSG("Time series must be ascending!");
+
2174
+
2175 /* Count time steps... */
+
2176 if ((++nh) >= 1000)
+
2177 ERRMSG("Too many data points!");
+
2178 }
+
2179
+
2180 /* Close file... */
+
2181 fclose(in);
+
2182
+
2183 /* Check number of data points... */
+
2184 ts->ntime = nh;
+
2185 if (nh < 2)
+
2186 ERRMSG("Not enough data points!");
+
2187
+
2188 /* Write info... */
+
2189 LOG(2, "Number of time steps: %d", ts->ntime);
+
2190 LOG(2, "Time steps: %.2f, %.2f ... %.2f s", ts->time[0], ts->time[1],
+
2191 ts->time[nh - 1]);
+
2192 LOG(2, "Volume mixing ratio range: %g ... %g ppv",
+
2193 gsl_stats_min(ts->vmr, 1, (size_t) nh), gsl_stats_max(ts->vmr, 1,
+
2194 (size_t) nh));
+
2195
+
2196 /* Exit success... */
+
2197 return 1;
+
2198}
+
2199
+
2200/*****************************************************************************/
+
2201
+ +
2203 char *filename,
+
2204 char *varname,
+
2205 clim_zm_t * zm) {
+
2206
+
2207 int ncid, varid, it, iy, iz, iz2, nt;
+
2208
+
2209 double *help, varmin = 1e99, varmax = -1e99;
+
2210
+
2211 /* Write info... */
+
2212 LOG(1, "Read %s data: %s", varname, filename);
+
2213
+
2214 /* Open netCDF file... */
+
2215 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR) {
+
2216 WARN("%s climatology data are missing!", varname);
+
2217 return;
+
2218 }
+
2219
+
2220 /* Read pressure data... */
+
2221 NC_INQ_DIM("press", &zm->np, 2, CP);
+
2222 NC_GET_DOUBLE("press", zm->p, 1);
+
2223 if (zm->p[0] < zm->p[1])
+
2224 ERRMSG("Pressure data are not descending!");
+
2225
+
2226 /* Read latitudes... */
+
2227 NC_INQ_DIM("lat", &zm->nlat, 2, CY);
+
2228 NC_GET_DOUBLE("lat", zm->lat, 1);
+
2229 if (zm->lat[0] > zm->lat[1])
+
2230 ERRMSG("Latitude data are not ascending!");
+
2231
+
2232 /* Set time data (for monthly means)... */
+
2233 zm->ntime = 12;
+
2234 zm->time[0] = 1209600.00;
+
2235 zm->time[1] = 3888000.00;
+
2236 zm->time[2] = 6393600.00;
+
2237 zm->time[3] = 9072000.00;
+
2238 zm->time[4] = 11664000.00;
+
2239 zm->time[5] = 14342400.00;
+
2240 zm->time[6] = 16934400.00;
+
2241 zm->time[7] = 19612800.00;
+
2242 zm->time[8] = 22291200.00;
+
2243 zm->time[9] = 24883200.00;
+
2244 zm->time[10] = 27561600.00;
+
2245 zm->time[11] = 30153600.00;
+
2246
+
2247 /* Check number of timesteps... */
+
2248 NC_INQ_DIM("time", &nt, 12, 12);
+
2249
+
2250 /* Read data... */
+
2251 ALLOC(help, double,
+
2252 zm->nlat * zm->np * zm->ntime);
+
2253 NC_GET_DOUBLE(varname, help, 1);
+
2254 for (it = 0; it < zm->ntime; it++)
+
2255 for (iz = 0; iz < zm->np; iz++)
+
2256 for (iy = 0; iy < zm->nlat; iy++)
+
2257 zm->vmr[it][iz][iy] = help[ARRAY_3D(it, iz, zm->np, iy, zm->nlat)];
+
2258 free(help);
+
2259
+
2260 /* Fix data gaps... */
+
2261 for (it = 0; it < zm->ntime; it++)
+
2262 for (iy = 0; iy < zm->nlat; iy++)
+
2263 for (iz = 0; iz < zm->np; iz++) {
+
2264 if (zm->vmr[it][iz][iy] < 0) {
+
2265 for (iz2 = 0; iz2 < zm->np; iz2++)
+
2266 if (zm->vmr[it][iz2][iy] >= 0) {
+
2267 zm->vmr[it][iz][iy] = zm->vmr[it][iz2][iy];
+
2268 break;
+
2269 }
+
2270 for (iz2 = zm->np - 1; iz2 >= 0; iz2--)
+
2271 if (zm->vmr[it][iz2][iy] >= 0) {
+
2272 zm->vmr[it][iz][iy] = zm->vmr[it][iz2][iy];
+
2273 break;
+
2274 }
+
2275 }
+
2276 varmin = GSL_MIN(varmin, zm->vmr[it][iz][iy]);
+
2277 varmax = GSL_MAX(varmax, zm->vmr[it][iz][iy]);
+
2278 }
+
2279
+
2280 /* Close netCDF file... */
+
2281 NC(nc_close(ncid));
+
2282
+
2283 /* Write info... */
+
2284 LOG(2, "Number of time steps: %d", zm->ntime);
+
2285 LOG(2, "Time steps: %.2f, %.2f ... %.2f s",
+
2286 zm->time[0], zm->time[1], zm->time[zm->ntime - 1]);
+
2287 LOG(2, "Number of pressure levels: %d", zm->np);
+
2288 LOG(2, "Altitude levels: %g, %g ... %g km",
+
2289 Z(zm->p[0]), Z(zm->p[1]), Z(zm->p[zm->np - 1]));
+
2290 LOG(2, "Pressure levels: %g, %g ... %g hPa", zm->p[0],
+
2291 zm->p[1], zm->p[zm->np - 1]);
+
2292 LOG(2, "Number of latitudes: %d", zm->nlat);
+
2293 LOG(2, "Latitudes: %g, %g ... %g deg",
+
2294 zm->lat[0], zm->lat[1], zm->lat[zm->nlat - 1]);
+
2295 LOG(2, "%s concentration range: %g ... %g ppv", varname, varmin, varmax);
+
2296}
+
2297
+
2298/*****************************************************************************/
+
2299
+ +
2301 const char *filename,
+
2302 int argc,
+
2303 char *argv[],
+
2304 ctl_t * ctl) {
+
2305
+
2306 /* Set timer... */
+
2307 SELECT_TIMER("READ_CTL", "INPUT", NVTX_READ);
+
2308
+
2309 /* Write info... */
+
2310 LOG(1, "\nMassive-Parallel Trajectory Calculations (MPTRAC)\n"
+
2311 "(executable: %s | version: %s | compiled: %s, %s)\n",
+
2312 argv[0], VERSION, __DATE__, __TIME__);
+
2313
+
2314 /* Initialize quantity indices... */
+
2315 ctl->qnt_idx = -1;
+
2316 ctl->qnt_ens = -1;
+
2317 ctl->qnt_stat = -1;
+
2318 ctl->qnt_m = -1;
+
2319 ctl->qnt_vmr = -1;
+
2320 ctl->qnt_rp = -1;
+
2321 ctl->qnt_rhop = -1;
+
2322 ctl->qnt_ps = -1;
+
2323 ctl->qnt_ts = -1;
+
2324 ctl->qnt_zs = -1;
+
2325 ctl->qnt_us = -1;
+
2326 ctl->qnt_vs = -1;
+
2327 ctl->qnt_lsm = -1;
+
2328 ctl->qnt_sst = -1;
+
2329 ctl->qnt_pbl = -1;
+
2330 ctl->qnt_pt = -1;
+
2331 ctl->qnt_tt = -1;
+
2332 ctl->qnt_zt = -1;
+
2333 ctl->qnt_h2ot = -1;
+
2334 ctl->qnt_zg = -1;
+
2335 ctl->qnt_p = -1;
+
2336 ctl->qnt_t = -1;
+
2337 ctl->qnt_rho = -1;
+
2338 ctl->qnt_u = -1;
+
2339 ctl->qnt_v = -1;
+
2340 ctl->qnt_w = -1;
+
2341 ctl->qnt_h2o = -1;
+
2342 ctl->qnt_o3 = -1;
+
2343 ctl->qnt_lwc = -1;
+
2344 ctl->qnt_iwc = -1;
+
2345 ctl->qnt_cc = -1;
+
2346 ctl->qnt_pct = -1;
+
2347 ctl->qnt_pcb = -1;
+
2348 ctl->qnt_cl = -1;
+
2349 ctl->qnt_plcl = -1;
+
2350 ctl->qnt_plfc = -1;
+
2351 ctl->qnt_pel = -1;
+
2352 ctl->qnt_cape = -1;
+
2353 ctl->qnt_cin = -1;
+
2354 ctl->qnt_o3c = -1;
+
2355 ctl->qnt_hno3 = -1;
+
2356 ctl->qnt_oh = -1;
+
2357 ctl->qnt_h2o2 = -1;
+
2358 ctl->qnt_ho2 = -1;
+
2359 ctl->qnt_o1d = -1;
+
2360 ctl->qnt_mloss_oh = -1;
+
2361 ctl->qnt_mloss_h2o2 = -1;
+
2362 ctl->qnt_mloss_wet = -1;
+
2363 ctl->qnt_mloss_dry = -1;
+
2364 ctl->qnt_mloss_decay = -1;
+
2365 ctl->qnt_psat = -1;
+
2366 ctl->qnt_psice = -1;
+
2367 ctl->qnt_pw = -1;
+
2368 ctl->qnt_sh = -1;
+
2369 ctl->qnt_rh = -1;
+
2370 ctl->qnt_rhice = -1;
+
2371 ctl->qnt_theta = -1;
+
2372 ctl->qnt_zeta = -1;
+
2373 ctl->qnt_zeta_d = -1;
+
2374 ctl->qnt_tvirt = -1;
+
2375 ctl->qnt_lapse = -1;
+
2376 ctl->qnt_vh = -1;
+
2377 ctl->qnt_vz = -1;
+
2378 ctl->qnt_pv = -1;
+
2379 ctl->qnt_tdew = -1;
+
2380 ctl->qnt_tice = -1;
+
2381 ctl->qnt_tsts = -1;
+
2382 ctl->qnt_tnat = -1;
+
2383 ctl->qnt_Cx = -1;
+
2384 ctl->qnt_Ch2o = -1;
+
2385 ctl->qnt_Co3 = -1;
+
2386 ctl->qnt_Cco = -1;
+
2387 ctl->qnt_Coh = -1;
+
2388 ctl->qnt_Ch = -1;
+
2389 ctl->qnt_Cho2 = -1;
+
2390 ctl->qnt_Ch2o2 = -1;
+
2391 ctl->qnt_Co1d = -1;
+
2392 ctl->qnt_Co3p = -1;
+
2393 ctl->qnt_Cccl4 = -1;
+
2394 ctl->qnt_Cccl3f = -1;
+
2395 ctl->qnt_Cccl2f2 = -1;
+
2396 ctl->qnt_Cn2o = -1;
+
2397 ctl->qnt_Csf6 = -1;
+
2398 ctl->qnt_aoa = -1;
+
2399
+
2400 /* Read quantities... */
+
2401 ctl->nq = (int) scan_ctl(filename, argc, argv, "NQ", -1, "0", NULL);
+
2402 if (ctl->nq > NQ)
+
2403 ERRMSG("Too many quantities!");
+
2404 for (int iq = 0; iq < ctl->nq; iq++) {
+
2405
+
2406 /* Read quantity name and format... */
+
2407 scan_ctl(filename, argc, argv, "QNT_NAME", iq, "", ctl->qnt_name[iq]);
+
2408 scan_ctl(filename, argc, argv, "QNT_LONGNAME", iq, ctl->qnt_name[iq],
+
2409 ctl->qnt_longname[iq]);
+
2410 scan_ctl(filename, argc, argv, "QNT_FORMAT", iq, "%g",
+
2411 ctl->qnt_format[iq]);
+
2412 if (strcasecmp(ctl->qnt_name[iq], "aoa") == 0)
+
2413 sprintf(ctl->qnt_format[iq], "%%.2f");
+
2414
+
2415 /* Try to identify quantity... */
+
2416 SET_QNT(qnt_idx, "idx", "particle index", "-")
+
2417 SET_QNT(qnt_ens, "ens", "ensemble index", "-")
+
2418 SET_QNT(qnt_stat, "stat", "station flag", "-")
+
2419 SET_QNT(qnt_m, "m", "mass", "kg")
+
2420 SET_QNT(qnt_vmr, "vmr", "volume mixing ratio", "ppv")
+
2421 SET_QNT(qnt_rp, "rp", "particle radius", "microns")
+
2422 SET_QNT(qnt_rhop, "rhop", "particle density", "kg/m^3")
+
2423 SET_QNT(qnt_ps, "ps", "surface pressure", "hPa")
+
2424 SET_QNT(qnt_ts, "ts", "surface temperature", "K")
+
2425 SET_QNT(qnt_zs, "zs", "surface height", "km")
+
2426 SET_QNT(qnt_us, "us", "surface zonal wind", "m/s")
+
2427 SET_QNT(qnt_vs, "vs", "surface meridional wind", "m/s")
+
2428 SET_QNT(qnt_lsm, "lsm", "land-sea mask", "1")
+
2429 SET_QNT(qnt_sst, "sst", "sea surface temperature", "K")
+
2430 SET_QNT(qnt_pbl, "pbl", "planetary boundary layer", "hPa")
+
2431 SET_QNT(qnt_pt, "pt", "tropopause pressure", "hPa")
+
2432 SET_QNT(qnt_tt, "tt", "tropopause temperature", "K")
+
2433 SET_QNT(qnt_zt, "zt", "tropopause geopotential height", "km")
+
2434 SET_QNT(qnt_h2ot, "h2ot", "tropopause water vapor", "ppv")
+
2435 SET_QNT(qnt_zg, "zg", "geopotential height", "km")
+
2436 SET_QNT(qnt_p, "p", "pressure", "hPa")
+
2437 SET_QNT(qnt_t, "t", "temperature", "K")
+
2438 SET_QNT(qnt_rho, "rho", "air density", "kg/m^3")
+
2439 SET_QNT(qnt_u, "u", "zonal wind", "m/s")
+
2440 SET_QNT(qnt_v, "v", "meridional wind", "m/s")
+
2441 SET_QNT(qnt_w, "w", "vertical velocity", "hPa/s")
+
2442 SET_QNT(qnt_h2o, "h2o", "water vapor", "ppv")
+
2443 SET_QNT(qnt_o3, "o3", "ozone", "ppv")
+
2444 SET_QNT(qnt_lwc, "lwc", "cloud ice water content", "kg/kg")
+
2445 SET_QNT(qnt_iwc, "iwc", "cloud liquid water content", "kg/kg")
+
2446 SET_QNT(qnt_cc, "cc", "cloud cover", "1")
+
2447 SET_QNT(qnt_pct, "pct", "cloud top pressure", "hPa")
+
2448 SET_QNT(qnt_pcb, "pcb", "cloud bottom pressure", "hPa")
+
2449 SET_QNT(qnt_cl, "cl", "total column cloud water", "kg/m^2")
+
2450 SET_QNT(qnt_plcl, "plcl", "lifted condensation level", "hPa")
+
2451 SET_QNT(qnt_plfc, "plfc", "level of free convection", "hPa")
+
2452 SET_QNT(qnt_pel, "pel", "equilibrium level", "hPa")
+
2453 SET_QNT(qnt_cape, "cape", "convective available potential energy",
+
2454 "J/kg")
+
2455 SET_QNT(qnt_cin, "cin", "convective inhibition", "J/kg")
+
2456 SET_QNT(qnt_o3c, "o3c", "total column ozone", "DU")
+
2457 SET_QNT(qnt_hno3, "hno3", "nitric acid", "ppv")
+
2458 SET_QNT(qnt_oh, "oh", "hydroxyl radical", "ppv")
+
2459 SET_QNT(qnt_h2o2, "h2o2", "hydrogen peroxide", "ppv")
+
2460 SET_QNT(qnt_ho2, "ho2", "hydroperoxyl radical", "ppv")
+
2461 SET_QNT(qnt_o1d, "o1d", "atomic oxygen", "ppv")
+
2462 SET_QNT(qnt_mloss_oh, "mloss_oh", "mass loss due to OH chemistry", "kg")
+
2463 SET_QNT(qnt_mloss_h2o2, "mloss_h2o2", "mass loss due to H2O2 chemistry",
+
2464 "kg")
+
2465 SET_QNT(qnt_mloss_wet, "mloss_wet", "mass loss due to wet deposition",
+
2466 "kg")
+
2467 SET_QNT(qnt_mloss_dry, "mloss_dry", "mass loss due to dry deposition",
+
2468 "kg")
+
2469 SET_QNT(qnt_mloss_decay, "mloss_decay",
+
2470 "mass loss due to exponential decay", "kg")
+
2471 SET_QNT(qnt_psat, "psat", "saturation pressure over water", "hPa")
+
2472 SET_QNT(qnt_psice, "psice", "saturation pressure over ice", "hPa")
+
2473 SET_QNT(qnt_pw, "pw", "partial water vapor pressure", "hPa")
+
2474 SET_QNT(qnt_sh, "sh", "specific humidity", "kg/kg")
+
2475 SET_QNT(qnt_rh, "rh", "relative humidity", "%%")
+
2476 SET_QNT(qnt_rhice, "rhice", "relative humidity over ice", "%%")
+
2477 SET_QNT(qnt_theta, "theta", "potential temperature", "K")
+
2478 SET_QNT(qnt_zeta, "zeta", "zeta coordinate", "K")
+
2479 SET_QNT(qnt_zeta_d, "zeta_d", "diagnosed zeta coordinate", "K")
+
2480 SET_QNT(qnt_tvirt, "tvirt", "virtual temperature", "K")
+
2481 SET_QNT(qnt_lapse, "lapse", "temperature lapse rate", "K/km")
+
2482 SET_QNT(qnt_vh, "vh", "horizontal velocity", "m/s")
+
2483 SET_QNT(qnt_vz, "vz", "vertical velocity", "m/s")
+
2484 SET_QNT(qnt_pv, "pv", "potential vorticity", "PVU")
+
2485 SET_QNT(qnt_tdew, "tdew", "dew point temperature", "K")
+
2486 SET_QNT(qnt_tice, "tice", "frost point temperature", "K")
+
2487 SET_QNT(qnt_tsts, "tsts", "STS existence temperature", "K")
+
2488 SET_QNT(qnt_tnat, "tnat", "NAT existence temperature", "K")
+
2489 SET_QNT(qnt_Cx, "Cx", "Trace species x volume mixing ratio", "ppv")
+
2490 SET_QNT(qnt_Ch2o, "Ch2o", "H2O volume mixing ratio", "ppv")
+
2491 SET_QNT(qnt_Co3, "Co3", "O3 volume mixing ratio", "ppv")
+
2492 SET_QNT(qnt_Cco, "Cco", "CO volume mixing ratio", "ppv")
+
2493 SET_QNT(qnt_Coh, "Coh", "HO volume mixing ratio", "ppv")
+
2494 SET_QNT(qnt_Ch, "Ch", "H radical volume mixing ratio", "ppv")
+
2495 SET_QNT(qnt_Cho2, "Cho2", "HO2 volume mixing ratio", "ppv")
+
2496 SET_QNT(qnt_Ch2o2, "Ch2o2", "H2O2 volume mixing ratio", "ppv")
+
2497 SET_QNT(qnt_Co1d, "Co1d", "O(1D) volume mixing ratio", "ppv")
+
2498 SET_QNT(qnt_Co3p, "Co3p", "O(3P) radical volume mixing ratio", "ppv")
+
2499 SET_QNT(qnt_Cccl4, "Cccl4", "CCl4 (CFC-10) volume mixing ratio", "ppv")
+
2500 SET_QNT(qnt_Cccl3f, "Cccl3f", "CCl3F (CFC-11) volume mixing ratio",
+
2501 "ppv")
+
2502 SET_QNT(qnt_Cccl2f2, "Cccl2f2", "CCl2F2 (CFC-12) volume mixing ratio",
+
2503 "ppv")
+
2504 SET_QNT(qnt_Cn2o, "Cn2o", "N2O volume mixing ratio", "ppv")
+
2505 SET_QNT(qnt_Csf6, "Csf6", "SF6 volume mixing ratio", "ppv")
+
2506 SET_QNT(qnt_aoa, "aoa", "age of air", "s")
+
2507 scan_ctl(filename, argc, argv, "QNT_UNIT", iq, "", ctl->qnt_unit[iq]);
+
2508 }
+
2509
+
2510 /* netCDF I/O parameters... */
+
2511 ctl->chunkszhint =
+
2512 (size_t) scan_ctl(filename, argc, argv, "CHUNKSZHINT", -1, "163840000",
+
2513 NULL);
+
2514 ctl->read_mode =
+
2515 (int) scan_ctl(filename, argc, argv, "READMODE", -1, "0", NULL);
+
2516
+
2517 /* Vertical coordinates and velocities... */
+
2518 ctl->vert_coord_ap =
+
2519 (int) scan_ctl(filename, argc, argv, "VERT_COORD_AP", -1, "0", NULL);
+
2520 ctl->vert_coord_met =
+
2521 (int) scan_ctl(filename, argc, argv, "VERT_COORD_MET", -1, "0", NULL);
+
2522 if (ctl->vert_coord_ap == 1) {
+
2523 int error = 1;
+
2524 for (int iq = 0; iq < ctl->nq; iq++) {
+
2525 if (strcmp(ctl->qnt_name[iq], "zeta") == 0) {
+
2526 error = 0;
+
2527 break;
+
2528 }
+
2529 }
+
2530 if (error == 1)
+
2531 ERRMSG("Please add zeta to your quantities for diabatic calculations.");
+
2532 }
+
2533 ctl->clams_met_data =
+
2534 (int) scan_ctl(filename, argc, argv, "CLAMS_MET_DATA", -1, "0", NULL);
+ +
2536 (int) scan_ctl(filename, argc, argv, "CPL_ZETA_PRESS_MODULES", -1, "1",
+
2537 NULL);
+
2538
+
2539 /* Time steps of simulation... */
+
2540 ctl->direction =
+
2541 (int) scan_ctl(filename, argc, argv, "DIRECTION", -1, "1", NULL);
+
2542 if (ctl->direction != -1 && ctl->direction != 1)
+
2543 ERRMSG("Set DIRECTION to -1 or 1!");
+
2544 ctl->t_stop = scan_ctl(filename, argc, argv, "T_STOP", -1, "1e100", NULL);
+
2545 ctl->dt_mod = scan_ctl(filename, argc, argv, "DT_MOD", -1, "180", NULL);
+
2546
+
2547 /* Meteo data... */
+
2548 scan_ctl(filename, argc, argv, "METBASE", -1, "-", ctl->metbase);
+
2549 ctl->dt_met = scan_ctl(filename, argc, argv, "DT_MET", -1, "3600", NULL);
+
2550 ctl->met_convention =
+
2551 (int) scan_ctl(filename, argc, argv, "MET_CONVENTION", -1, "0", NULL);
+
2552 ctl->met_type =
+
2553 (int) scan_ctl(filename, argc, argv, "MET_TYPE", -1, "0", NULL);
+
2554 if (ctl->vert_coord_ap == 1 && ctl->met_type != 0)
+
2555 ERRMSG
+
2556 ("Please use meteorological files in netcdf format for diabatic calculations.");
+
2557 ctl->met_nc_scale =
+
2558 (int) scan_ctl(filename, argc, argv, "MET_NC_SCALE", -1, "1", NULL);
+
2559 ctl->met_zfp_prec =
+
2560 (int) scan_ctl(filename, argc, argv, "MET_ZFP_PREC", -1, "8", NULL);
+
2561 ctl->met_zfp_tol_t =
+
2562 scan_ctl(filename, argc, argv, "MET_ZFP_TOL_T", -1, "5.0", NULL);
+
2563 ctl->met_zfp_tol_z =
+
2564 scan_ctl(filename, argc, argv, "MET_ZFP_TOL_Z", -1, "0.5", NULL);
+
2565 ctl->met_dx = (int) scan_ctl(filename, argc, argv, "MET_DX", -1, "1", NULL);
+
2566 ctl->met_dy = (int) scan_ctl(filename, argc, argv, "MET_DY", -1, "1", NULL);
+
2567 ctl->met_dp = (int) scan_ctl(filename, argc, argv, "MET_DP", -1, "1", NULL);
+
2568 if (ctl->met_dx < 1 || ctl->met_dy < 1 || ctl->met_dp < 1)
+
2569 ERRMSG("MET_DX, MET_DY, and MET_DP need to be greater than zero!");
+
2570 ctl->met_sx = (int) scan_ctl(filename, argc, argv, "MET_SX", -1, "1", NULL);
+
2571 ctl->met_sy = (int) scan_ctl(filename, argc, argv, "MET_SY", -1, "1", NULL);
+
2572 ctl->met_sp = (int) scan_ctl(filename, argc, argv, "MET_SP", -1, "1", NULL);
+
2573 if (ctl->met_sx < 1 || ctl->met_sy < 1 || ctl->met_sp < 1)
+
2574 ERRMSG("MET_SX, MET_SY, and MET_SP need to be greater than zero!");
+
2575 ctl->met_detrend =
+
2576 scan_ctl(filename, argc, argv, "MET_DETREND", -1, "-999", NULL);
+
2577 ctl->met_np = (int) scan_ctl(filename, argc, argv, "MET_NP", -1, "0", NULL);
+
2578 if (ctl->met_np > EP)
+
2579 ERRMSG("Too many levels!");
+
2580 ctl->press_level_def =
+
2581 (int) scan_ctl(filename, argc, argv, "PRESS_LEVEL_DEF", -1, "-1", NULL);
+
2582 if (ctl->press_level_def >= 0) {
+
2583 level_definitions(ctl);
+
2584 } else {
+
2585 if (ctl->met_np > 0) {
+
2586 for (int ip = 0; ip < ctl->met_np; ip++)
+
2587 ctl->met_p[ip] =
+
2588 scan_ctl(filename, argc, argv, "MET_P", ip, "", NULL);
+
2589 }
+
2590 }
+
2591 ctl->met_geopot_sx
+
2592 = (int) scan_ctl(filename, argc, argv, "MET_GEOPOT_SX", -1, "-1", NULL);
+
2593 ctl->met_geopot_sy
+
2594 = (int) scan_ctl(filename, argc, argv, "MET_GEOPOT_SY", -1, "-1", NULL);
+
2595 ctl->met_relhum
+
2596 = (int) scan_ctl(filename, argc, argv, "MET_RELHUM", -1, "0", NULL);
+
2597 ctl->met_tropo =
+
2598 (int) scan_ctl(filename, argc, argv, "MET_TROPO", -1, "3", NULL);
+
2599 if (ctl->met_tropo < 0 || ctl->met_tropo > 5)
+
2600 ERRMSG("Set MET_TROPO = 0 ... 5!");
+
2601 ctl->met_tropo_lapse =
+
2602 scan_ctl(filename, argc, argv, "MET_TROPO_LAPSE", -1, "2.0", NULL);
+
2603 ctl->met_tropo_nlev =
+
2604 (int) scan_ctl(filename, argc, argv, "MET_TROPO_NLEV", -1, "20", NULL);
+
2605 ctl->met_tropo_lapse_sep =
+
2606 scan_ctl(filename, argc, argv, "MET_TROPO_LAPSE_SEP", -1, "3.0", NULL);
+
2607 ctl->met_tropo_nlev_sep =
+
2608 (int) scan_ctl(filename, argc, argv, "MET_TROPO_NLEV_SEP", -1, "10",
+
2609 NULL);
+
2610 ctl->met_tropo_pv =
+
2611 scan_ctl(filename, argc, argv, "MET_TROPO_PV", -1, "3.5", NULL);
+
2612 ctl->met_tropo_theta =
+
2613 scan_ctl(filename, argc, argv, "MET_TROPO_THETA", -1, "380", NULL);
+
2614 ctl->met_tropo_spline =
+
2615 (int) scan_ctl(filename, argc, argv, "MET_TROPO_SPLINE", -1, "1", NULL);
+
2616 ctl->met_cloud =
+
2617 (int) scan_ctl(filename, argc, argv, "MET_CLOUD", -1, "1", NULL);
+
2618 if (ctl->met_cloud < 0 || ctl->met_cloud > 3)
+
2619 ERRMSG("Set MET_CLOUD = 0 ... 3!");
+
2620 ctl->met_cloud_min =
+
2621 scan_ctl(filename, argc, argv, "MET_CLOUD_MIN", -1, "0", NULL);
+
2622 ctl->met_dt_out =
+
2623 scan_ctl(filename, argc, argv, "MET_DT_OUT", -1, "0.1", NULL);
+
2624 ctl->met_cache =
+
2625 (int) scan_ctl(filename, argc, argv, "MET_CACHE", -1, "0", NULL);
+
2626
+
2627 /* Sorting... */
+
2628 ctl->sort_dt = scan_ctl(filename, argc, argv, "SORT_DT", -1, "-999", NULL);
+
2629
+
2630 /* Isosurface parameters... */
+
2631 ctl->isosurf =
+
2632 (int) scan_ctl(filename, argc, argv, "ISOSURF", -1, "0", NULL);
+
2633 scan_ctl(filename, argc, argv, "BALLOON", -1, "-", ctl->balloon);
+
2634
+
2635 /* Advection parameters... */
+
2636 ctl->advect = (int) scan_ctl(filename, argc, argv, "ADVECT", -1, "2", NULL);
+
2637 if (!(ctl->advect == 0 || ctl->advect == 1
+
2638 || ctl->advect == 2 || ctl->advect == 4))
+
2639 ERRMSG("Set ADVECT to 0, 1, 2, or 4!");
+
2640 ctl->reflect =
+
2641 (int) scan_ctl(filename, argc, argv, "REFLECT", -1, "0", NULL);
+
2642
+
2643 /* Diffusion parameters... */
+
2644 ctl->turb_dx_trop =
+
2645 scan_ctl(filename, argc, argv, "TURB_DX_TROP", -1, "50", NULL);
+
2646 ctl->turb_dx_strat =
+
2647 scan_ctl(filename, argc, argv, "TURB_DX_STRAT", -1, "0", NULL);
+
2648 ctl->turb_dz_trop =
+
2649 scan_ctl(filename, argc, argv, "TURB_DZ_TROP", -1, "0", NULL);
+
2650 ctl->turb_dz_strat =
+
2651 scan_ctl(filename, argc, argv, "TURB_DZ_STRAT", -1, "0.1", NULL);
+
2652 ctl->turb_mesox =
+
2653 scan_ctl(filename, argc, argv, "TURB_MESOX", -1, "0.16", NULL);
+
2654 ctl->turb_mesoz =
+
2655 scan_ctl(filename, argc, argv, "TURB_MESOZ", -1, "0.16", NULL);
+
2656
+
2657 /* Convection... */
+
2658 ctl->conv_cape
+
2659 = scan_ctl(filename, argc, argv, "CONV_CAPE", -1, "-999", NULL);
+
2660 ctl->conv_cin
+
2661 = scan_ctl(filename, argc, argv, "CONV_CIN", -1, "-999", NULL);
+
2662 ctl->conv_dt = scan_ctl(filename, argc, argv, "CONV_DT", -1, "-999", NULL);
+
2663 ctl->conv_mix
+
2664 = (int) scan_ctl(filename, argc, argv, "CONV_MIX", -1, "1", NULL);
+
2665 ctl->conv_mix_bot
+
2666 = (int) scan_ctl(filename, argc, argv, "CONV_MIX_BOT", -1, "1", NULL);
+
2667 ctl->conv_mix_top
+
2668 = (int) scan_ctl(filename, argc, argv, "CONV_MIX_TOP", -1, "1", NULL);
+
2669
+
2670 /* Boundary conditions... */
+
2671 ctl->bound_mass =
+
2672 scan_ctl(filename, argc, argv, "BOUND_MASS", -1, "-999", NULL);
+
2673 ctl->bound_mass_trend =
+
2674 scan_ctl(filename, argc, argv, "BOUND_MASS_TREND", -1, "0", NULL);
+
2675 ctl->bound_vmr =
+
2676 scan_ctl(filename, argc, argv, "BOUND_VMR", -1, "-999", NULL);
+
2677 ctl->bound_vmr_trend =
+
2678 scan_ctl(filename, argc, argv, "BOUND_VMR_TREND", -1, "0", NULL);
+
2679 ctl->bound_lat0 =
+
2680 scan_ctl(filename, argc, argv, "BOUND_LAT0", -1, "-999", NULL);
+
2681 ctl->bound_lat1 =
+
2682 scan_ctl(filename, argc, argv, "BOUND_LAT1", -1, "-999", NULL);
+
2683 ctl->bound_p0 =
+
2684 scan_ctl(filename, argc, argv, "BOUND_P0", -1, "-999", NULL);
+
2685 ctl->bound_p1 =
+
2686 scan_ctl(filename, argc, argv, "BOUND_P1", -1, "-999", NULL);
+
2687 ctl->bound_dps =
+
2688 scan_ctl(filename, argc, argv, "BOUND_DPS", -1, "-999", NULL);
+
2689 ctl->bound_dzs =
+
2690 scan_ctl(filename, argc, argv, "BOUND_DZS", -1, "-999", NULL);
+
2691 ctl->bound_zetas =
+
2692 scan_ctl(filename, argc, argv, "BOUND_ZETAS", -1, "-999", NULL);
+
2693 ctl->bound_pbl =
+
2694 (int) scan_ctl(filename, argc, argv, "BOUND_PBL", -1, "0", NULL);
+
2695
+
2696 /* Species parameters... */
+
2697 scan_ctl(filename, argc, argv, "SPECIES", -1, "-", ctl->species);
+
2698 if (strcasecmp(ctl->species, "CF2Cl2") == 0) {
+
2699 ctl->molmass = 120.907;
+
2700 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 3e-5;
+
2701 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3500.0;
+
2702 } else if (strcasecmp(ctl->species, "CFCl3") == 0) {
+
2703 ctl->molmass = 137.359;
+
2704 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.1e-4;
+
2705 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3300.0;
+
2706 } else if (strcasecmp(ctl->species, "CH4") == 0) {
+
2707 ctl->molmass = 16.043;
+
2708 ctl->oh_chem_reaction = 2;
+
2709 ctl->oh_chem[0] = 2.45e-12;
+
2710 ctl->oh_chem[1] = 1775;
+
2711 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.4e-5;
+
2712 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1600.0;
+
2713 } else if (strcasecmp(ctl->species, "CO") == 0) {
+
2714 ctl->molmass = 28.01;
+
2715 ctl->oh_chem_reaction = 3;
+
2716 ctl->oh_chem[0] = 6.9e-33;
+
2717 ctl->oh_chem[1] = 2.1;
+
2718 ctl->oh_chem[2] = 1.1e-12;
+
2719 ctl->oh_chem[3] = -1.3;
+
2720 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 9.7e-6;
+
2721 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1300.0;
+
2722 } else if (strcasecmp(ctl->species, "CO2") == 0) {
+
2723 ctl->molmass = 44.009;
+
2724 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 3.3e-4;
+
2725 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2400.0;
+
2726 } else if (strcasecmp(ctl->species, "H2O") == 0) {
+
2727 ctl->molmass = 18.01528;
+
2728 } else if (strcasecmp(ctl->species, "N2O") == 0) {
+
2729 ctl->molmass = 44.013;
+
2730 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.4e-4;
+
2731 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2600.;
+
2732 } else if (strcasecmp(ctl->species, "NH3") == 0) {
+
2733 ctl->molmass = 17.031;
+
2734 ctl->oh_chem_reaction = 2;
+
2735 ctl->oh_chem[0] = 1.7e-12;
+
2736 ctl->oh_chem[1] = 710;
+
2737 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 5.9e-1;
+
2738 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 4200.0;
+
2739 } else if (strcasecmp(ctl->species, "HNO3") == 0) {
+
2740 ctl->molmass = 63.012;
+
2741 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.1e3;
+
2742 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 8700.0;
+
2743 } else if (strcasecmp(ctl->species, "NO") == 0) {
+
2744 ctl->molmass = 30.006;
+
2745 ctl->oh_chem_reaction = 3;
+
2746 ctl->oh_chem[0] = 7.1e-31;
+
2747 ctl->oh_chem[1] = 2.6;
+
2748 ctl->oh_chem[2] = 3.6e-11;
+
2749 ctl->oh_chem[3] = 0.1;
+
2750 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.9e-5;
+
2751 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1600.0;
+
2752 } else if (strcasecmp(ctl->species, "NO2") == 0) {
+
2753 ctl->molmass = 46.005;
+
2754 ctl->oh_chem_reaction = 3;
+
2755 ctl->oh_chem[0] = 1.8e-30;
+
2756 ctl->oh_chem[1] = 3.0;
+
2757 ctl->oh_chem[2] = 2.8e-11;
+
2758 ctl->oh_chem[3] = 0.0;
+
2759 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.2e-4;
+
2760 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2400.0;
+
2761 } else if (strcasecmp(ctl->species, "O3") == 0) {
+
2762 ctl->molmass = 47.997;
+
2763 ctl->oh_chem_reaction = 2;
+
2764 ctl->oh_chem[0] = 1.7e-12;
+
2765 ctl->oh_chem[1] = 940;
+
2766 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1e-4;
+
2767 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2800.0;
+
2768 } else if (strcasecmp(ctl->species, "SF6") == 0) {
+
2769 ctl->molmass = 146.048;
+
2770 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.4e-6;
+
2771 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3100.0;
+
2772 } else if (strcasecmp(ctl->species, "SO2") == 0) {
+
2773 ctl->molmass = 64.066;
+
2774 ctl->oh_chem_reaction = 3;
+
2775 ctl->oh_chem[0] = 2.9e-31;
+
2776 ctl->oh_chem[1] = 4.1;
+
2777 ctl->oh_chem[2] = 1.7e-12;
+
2778 ctl->oh_chem[3] = -0.2;
+
2779 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.3e-2;
+
2780 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2900.0;
+
2781 }
+
2782
+
2783 /* Molar mass... */
+
2784 char defstr[LEN];
+
2785 sprintf(defstr, "%g", ctl->molmass);
+
2786 ctl->molmass = scan_ctl(filename, argc, argv, "MOLMASS", -1, defstr, NULL);
+
2787
+
2788 /* OH chemistry... */
+
2789 sprintf(defstr, "%d", ctl->oh_chem_reaction);
+
2790 ctl->oh_chem_reaction =
+
2791 (int) scan_ctl(filename, argc, argv, "OH_CHEM_REACTION", -1, defstr,
+
2792 NULL);
+
2793 for (int ip = 0; ip < 4; ip++) {
+
2794 sprintf(defstr, "%g", ctl->oh_chem[ip]);
+
2795 ctl->oh_chem[ip] =
+
2796 scan_ctl(filename, argc, argv, "OH_CHEM", ip, defstr, NULL);
+
2797 }
+
2798 ctl->oh_chem_beta =
+
2799 scan_ctl(filename, argc, argv, "OH_CHEM_BETA", -1, "0", NULL);
+
2800
+
2801 /* H2O2 chemistry... */
+
2802 ctl->h2o2_chem_reaction =
+
2803 (int) scan_ctl(filename, argc, argv, "H2O2_CHEM_REACTION", -1, "0", NULL);
+
2804
+
2805 /* KPP chemistry... */
+
2806 ctl->kpp_chem =
+
2807 (int) scan_ctl(filename, argc, argv, "KPP_CHEM", -1, "0", NULL);
+
2808
+
2809 /* First order tracer chemistry... */
+
2810 ctl->tracer_chem =
+
2811 (int) scan_ctl(filename, argc, argv, "TRACER_CHEM", -1, "0", NULL);
+
2812
+
2813 /* Wet deposition... */
+
2814 for (int ip = 0; ip < 3; ip++) {
+
2815 sprintf(defstr, "%g", ctl->wet_depo_ic_h[ip]);
+
2816 ctl->wet_depo_ic_h[ip] =
+
2817 scan_ctl(filename, argc, argv, "WET_DEPO_IC_H", ip, defstr, NULL);
+
2818 }
+
2819 for (int ip = 0; ip < 1; ip++) {
+
2820 sprintf(defstr, "%g", ctl->wet_depo_bc_h[ip]);
+
2821 ctl->wet_depo_bc_h[ip] =
+
2822 scan_ctl(filename, argc, argv, "WET_DEPO_BC_H", ip, defstr, NULL);
+
2823 }
+
2824 ctl->wet_depo_ic_a =
+
2825 scan_ctl(filename, argc, argv, "WET_DEPO_IC_A", -1, "0", NULL);
+
2826 ctl->wet_depo_ic_b =
+
2827 scan_ctl(filename, argc, argv, "WET_DEPO_IC_B", -1, "0", NULL);
+
2828 ctl->wet_depo_bc_a =
+
2829 scan_ctl(filename, argc, argv, "WET_DEPO_BC_A", -1, "0", NULL);
+
2830 ctl->wet_depo_bc_b =
+
2831 scan_ctl(filename, argc, argv, "WET_DEPO_BC_B", -1, "0", NULL);
+
2832 ctl->wet_depo_pre[0] =
+
2833 scan_ctl(filename, argc, argv, "WET_DEPO_PRE", 0, "0.5", NULL);
+
2834 ctl->wet_depo_pre[1] =
+
2835 scan_ctl(filename, argc, argv, "WET_DEPO_PRE", 1, "0.36", NULL);
+ +
2837 scan_ctl(filename, argc, argv, "WET_DEPO_IC_RET_RATIO", -1, "1", NULL);
+ +
2839 scan_ctl(filename, argc, argv, "WET_DEPO_BC_RET_RATIO", -1, "1", NULL);
+
2840
+
2841 /* Dry deposition... */
+
2842 ctl->dry_depo_vdep =
+
2843 scan_ctl(filename, argc, argv, "DRY_DEPO_VDEP", -1, "0", NULL);
+
2844 ctl->dry_depo_dp =
+
2845 scan_ctl(filename, argc, argv, "DRY_DEPO_DP", -1, "30", NULL);
+
2846
+
2847 /* Climatological data... */
+
2848 scan_ctl(filename, argc, argv, "CLIM_PHOTO", -1,
+
2849 "../../data/photolysis_rate.nc", ctl->clim_photo);
+
2850 scan_ctl(filename, argc, argv, "CLIM_HNO3_FILENAME", -1,
+
2851 "../../data/gozcards_HNO3.nc", ctl->clim_hno3_filename);
+
2852 scan_ctl(filename, argc, argv, "CLIM_OH_FILENAME", -1,
+
2853 "../../data/clams_radical_species_vmr.nc", ctl->clim_oh_filename);
+
2854 scan_ctl(filename, argc, argv, "CLIM_H2O2_FILENAME", -1,
+
2855 "../../data/cams_H2O2.nc", ctl->clim_h2o2_filename);
+
2856 scan_ctl(filename, argc, argv, "CLIM_HO2_FILENAME", -1,
+
2857 "../../data/clams_radical_species_vmr.nc", ctl->clim_ho2_filename);
+
2858 scan_ctl(filename, argc, argv, "CLIM_O1D_FILENAME", -1,
+
2859 "../../data/clams_radical_species_vmr.nc", ctl->clim_o1d_filename);
+
2860 scan_ctl(filename, argc, argv, "CLIM_CCL4_TIMESERIES", -1,
+
2861 "../../data/noaa_gml_ccl4.tab", ctl->clim_ccl4_timeseries);
+
2862 scan_ctl(filename, argc, argv, "CLIM_CCL3F_TIMESERIES", -1,
+
2863 "../../data/noaa_gml_cfc11.tab", ctl->clim_ccl3f_timeseries);
+
2864 scan_ctl(filename, argc, argv, "CLIM_CCL2F2_TIMESERIES", -1,
+
2865 "../../data/noaa_gml_cfc12.tab", ctl->clim_ccl2f2_timeseries);
+
2866 scan_ctl(filename, argc, argv, "CLIM_N2O_TIMESERIES", -1,
+
2867 "../../data/noaa_gml_n2o.tab", ctl->clim_n2o_timeseries);
+
2868 scan_ctl(filename, argc, argv, "CLIM_SF6_TIMESERIES", -1,
+
2869 "../../data/noaa_gml_sf6.tab", ctl->clim_sf6_timeseries);
+
2870
+
2871 /* Mixing... */
+
2872 ctl->mixing_dt =
+
2873 scan_ctl(filename, argc, argv, "MIXING_DT", -1, "3600.", NULL);
+
2874 ctl->mixing_trop =
+
2875 scan_ctl(filename, argc, argv, "MIXING_TROP", -1, "-999", NULL);
+
2876 ctl->mixing_strat =
+
2877 scan_ctl(filename, argc, argv, "MIXING_STRAT", -1, "-999", NULL);
+
2878 ctl->mixing_z0 =
+
2879 scan_ctl(filename, argc, argv, "MIXING_Z0", -1, "-5", NULL);
+
2880 ctl->mixing_z1 =
+
2881 scan_ctl(filename, argc, argv, "MIXING_Z1", -1, "85", NULL);
+
2882 ctl->mixing_nz =
+
2883 (int) scan_ctl(filename, argc, argv, "MIXING_NZ", -1, "90", NULL);
+
2884 ctl->mixing_lon0 =
+
2885 scan_ctl(filename, argc, argv, "MIXING_LON0", -1, "-180", NULL);
+
2886 ctl->mixing_lon1 =
+
2887 scan_ctl(filename, argc, argv, "MIXING_LON1", -1, "180", NULL);
+
2888 ctl->mixing_nx =
+
2889 (int) scan_ctl(filename, argc, argv, "MIXING_NX", -1, "360", NULL);
+
2890 ctl->mixing_lat0 =
+
2891 scan_ctl(filename, argc, argv, "MIXING_LAT0", -1, "-90", NULL);
+
2892 ctl->mixing_lat1 =
+
2893 scan_ctl(filename, argc, argv, "MIXING_LAT1", -1, "90", NULL);
+
2894 ctl->mixing_ny =
+
2895 (int) scan_ctl(filename, argc, argv, "MIXING_NY", -1, "180", NULL);
+
2896
+
2897 /* Chemistry grid... */
+
2898 ctl->chemgrid_z0 =
+
2899 scan_ctl(filename, argc, argv, "CHEMGRID_Z0", -1, "-5", NULL);
+
2900 ctl->chemgrid_z1 =
+
2901 scan_ctl(filename, argc, argv, "CHEMGRID_Z1", -1, "85", NULL);
+
2902 ctl->chemgrid_nz =
+
2903 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NZ", -1, "90", NULL);
+
2904 ctl->chemgrid_lon0 =
+
2905 scan_ctl(filename, argc, argv, "CHEMGRID_LON0", -1, "-180", NULL);
+
2906 ctl->chemgrid_lon1 =
+
2907 scan_ctl(filename, argc, argv, "CHEMGRID_LON1", -1, "180", NULL);
+
2908 ctl->chemgrid_nx =
+
2909 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NX", -1, "360", NULL);
+
2910 ctl->chemgrid_lat0 =
+
2911 scan_ctl(filename, argc, argv, "CHEMGRID_LAT0", -1, "-90", NULL);
+
2912 ctl->chemgrid_lat1 =
+
2913 scan_ctl(filename, argc, argv, "CHEMGRID_LAT1", -1, "90", NULL);
+
2914 ctl->chemgrid_ny =
+
2915 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NY", -1, "180", NULL);
+
2916
+
2917 /* Exponential decay... */
+
2918 ctl->tdec_trop = scan_ctl(filename, argc, argv, "TDEC_TROP", -1, "0", NULL);
+
2919 ctl->tdec_strat
+
2920 = scan_ctl(filename, argc, argv, "TDEC_STRAT", -1, "0", NULL);
+
2921
+
2922 /* PSC analysis... */
+
2923 ctl->psc_h2o = scan_ctl(filename, argc, argv, "PSC_H2O", -1, "4e-6", NULL);
+
2924 ctl->psc_hno3 =
+
2925 scan_ctl(filename, argc, argv, "PSC_HNO3", -1, "9e-9", NULL);
+
2926
+
2927 /* Output of atmospheric data... */
+
2928 scan_ctl(filename, argc, argv, "ATM_BASENAME", -1, "-", ctl->atm_basename);
+
2929 scan_ctl(filename, argc, argv, "ATM_GPFILE", -1, "-", ctl->atm_gpfile);
+
2930 ctl->atm_dt_out =
+
2931 scan_ctl(filename, argc, argv, "ATM_DT_OUT", -1, "86400", NULL);
+
2932 ctl->atm_filter =
+
2933 (int) scan_ctl(filename, argc, argv, "ATM_FILTER", -1, "0", NULL);
+
2934 ctl->atm_stride =
+
2935 (int) scan_ctl(filename, argc, argv, "ATM_STRIDE", -1, "1", NULL);
+
2936 ctl->atm_type =
+
2937 (int) scan_ctl(filename, argc, argv, "ATM_TYPE", -1, "0", NULL);
+
2938 ctl->atm_type_out =
+
2939 (int) scan_ctl(filename, argc, argv, "ATM_TYPE_OUT", -1, "-1", NULL);
+
2940 if (ctl->atm_type_out == -1)
+
2941 ctl->atm_type_out = ctl->atm_type;
+
2942
+
2943 /* Output of CSI data... */
+
2944 scan_ctl(filename, argc, argv, "CSI_BASENAME", -1, "-", ctl->csi_basename);
+
2945 scan_ctl(filename, argc, argv, "CSI_KERNEL", -1, "-", ctl->csi_kernel);
+
2946 ctl->csi_dt_out =
+
2947 scan_ctl(filename, argc, argv, "CSI_DT_OUT", -1, "86400", NULL);
+
2948 scan_ctl(filename, argc, argv, "CSI_OBSFILE", -1, "-", ctl->csi_obsfile);
+
2949 ctl->csi_obsmin =
+
2950 scan_ctl(filename, argc, argv, "CSI_OBSMIN", -1, "0", NULL);
+
2951 ctl->csi_modmin =
+
2952 scan_ctl(filename, argc, argv, "CSI_MODMIN", -1, "0", NULL);
+
2953 ctl->csi_z0 = scan_ctl(filename, argc, argv, "CSI_Z0", -1, "-5", NULL);
+
2954 ctl->csi_z1 = scan_ctl(filename, argc, argv, "CSI_Z1", -1, "85", NULL);
+
2955 ctl->csi_nz = (int) scan_ctl(filename, argc, argv, "CSI_NZ", -1, "1", NULL);
+
2956 ctl->csi_lon0 =
+
2957 scan_ctl(filename, argc, argv, "CSI_LON0", -1, "-180", NULL);
+
2958 ctl->csi_lon1 = scan_ctl(filename, argc, argv, "CSI_LON1", -1, "180", NULL);
+
2959 ctl->csi_nx =
+
2960 (int) scan_ctl(filename, argc, argv, "CSI_NX", -1, "360", NULL);
+
2961 ctl->csi_lat0 = scan_ctl(filename, argc, argv, "CSI_LAT0", -1, "-90", NULL);
+
2962 ctl->csi_lat1 = scan_ctl(filename, argc, argv, "CSI_LAT1", -1, "90", NULL);
+
2963 ctl->csi_ny =
+
2964 (int) scan_ctl(filename, argc, argv, "CSI_NY", -1, "180", NULL);
+
2965
+
2966 /* Output of ensemble data... */
+
2967 scan_ctl(filename, argc, argv, "ENS_BASENAME", -1, "-", ctl->ens_basename);
+
2968 ctl->ens_dt_out =
+
2969 scan_ctl(filename, argc, argv, "ENS_DT_OUT", -1, "86400", NULL);
+
2970
+
2971 /* Output of grid data... */
+
2972 scan_ctl(filename, argc, argv, "GRID_BASENAME", -1, "-",
+
2973 ctl->grid_basename);
+
2974 scan_ctl(filename, argc, argv, "GRID_KERNEL", -1, "-", ctl->grid_kernel);
+
2975 scan_ctl(filename, argc, argv, "GRID_GPFILE", -1, "-", ctl->grid_gpfile);
+
2976 ctl->grid_dt_out =
+
2977 scan_ctl(filename, argc, argv, "GRID_DT_OUT", -1, "86400", NULL);
+
2978 ctl->grid_sparse =
+
2979 (int) scan_ctl(filename, argc, argv, "GRID_SPARSE", -1, "0", NULL);
+
2980 ctl->grid_z0 = scan_ctl(filename, argc, argv, "GRID_Z0", -1, "-5", NULL);
+
2981 ctl->grid_z1 = scan_ctl(filename, argc, argv, "GRID_Z1", -1, "85", NULL);
+
2982 ctl->grid_nz =
+
2983 (int) scan_ctl(filename, argc, argv, "GRID_NZ", -1, "1", NULL);
+
2984 ctl->grid_lon0 =
+
2985 scan_ctl(filename, argc, argv, "GRID_LON0", -1, "-180", NULL);
+
2986 ctl->grid_lon1 =
+
2987 scan_ctl(filename, argc, argv, "GRID_LON1", -1, "180", NULL);
+
2988 ctl->grid_nx =
+
2989 (int) scan_ctl(filename, argc, argv, "GRID_NX", -1, "360", NULL);
+
2990 ctl->grid_lat0 =
+
2991 scan_ctl(filename, argc, argv, "GRID_LAT0", -1, "-90", NULL);
+
2992 ctl->grid_lat1 =
+
2993 scan_ctl(filename, argc, argv, "GRID_LAT1", -1, "90", NULL);
+
2994 ctl->grid_ny =
+
2995 (int) scan_ctl(filename, argc, argv, "GRID_NY", -1, "180", NULL);
+
2996 ctl->grid_type =
+
2997 (int) scan_ctl(filename, argc, argv, "GRID_TYPE", -1, "0", NULL);
+
2998
+
2999 /* Output of profile data... */
+
3000 scan_ctl(filename, argc, argv, "PROF_BASENAME", -1, "-",
+
3001 ctl->prof_basename);
+
3002 scan_ctl(filename, argc, argv, "PROF_OBSFILE", -1, "-", ctl->prof_obsfile);
+
3003 ctl->prof_z0 = scan_ctl(filename, argc, argv, "PROF_Z0", -1, "0", NULL);
+
3004 ctl->prof_z1 = scan_ctl(filename, argc, argv, "PROF_Z1", -1, "60", NULL);
+
3005 ctl->prof_nz =
+
3006 (int) scan_ctl(filename, argc, argv, "PROF_NZ", -1, "60", NULL);
+
3007 ctl->prof_lon0 =
+
3008 scan_ctl(filename, argc, argv, "PROF_LON0", -1, "-180", NULL);
+
3009 ctl->prof_lon1 =
+
3010 scan_ctl(filename, argc, argv, "PROF_LON1", -1, "180", NULL);
+
3011 ctl->prof_nx =
+
3012 (int) scan_ctl(filename, argc, argv, "PROF_NX", -1, "360", NULL);
+
3013 ctl->prof_lat0 =
+
3014 scan_ctl(filename, argc, argv, "PROF_LAT0", -1, "-90", NULL);
+
3015 ctl->prof_lat1 =
+
3016 scan_ctl(filename, argc, argv, "PROF_LAT1", -1, "90", NULL);
+
3017 ctl->prof_ny =
+
3018 (int) scan_ctl(filename, argc, argv, "PROF_NY", -1, "180", NULL);
+
3019
+
3020 /* Output of sample data... */
+
3021 scan_ctl(filename, argc, argv, "SAMPLE_BASENAME", -1, "-",
+
3022 ctl->sample_basename);
+
3023 scan_ctl(filename, argc, argv, "SAMPLE_KERNEL", -1, "-",
+
3024 ctl->sample_kernel);
+
3025 scan_ctl(filename, argc, argv, "SAMPLE_OBSFILE", -1, "-",
+
3026 ctl->sample_obsfile);
+
3027 ctl->sample_dx =
+
3028 scan_ctl(filename, argc, argv, "SAMPLE_DX", -1, "50", NULL);
+
3029 ctl->sample_dz =
+
3030 scan_ctl(filename, argc, argv, "SAMPLE_DZ", -1, "-999", NULL);
+
3031
+
3032 /* Output of station data... */
+
3033 scan_ctl(filename, argc, argv, "STAT_BASENAME", -1, "-",
+
3034 ctl->stat_basename);
+
3035 ctl->stat_lon = scan_ctl(filename, argc, argv, "STAT_LON", -1, "0", NULL);
+
3036 ctl->stat_lat = scan_ctl(filename, argc, argv, "STAT_LAT", -1, "0", NULL);
+
3037 ctl->stat_r = scan_ctl(filename, argc, argv, "STAT_R", -1, "50", NULL);
+
3038 ctl->stat_t0 =
+
3039 scan_ctl(filename, argc, argv, "STAT_T0", -1, "-1e100", NULL);
+
3040 ctl->stat_t1 = scan_ctl(filename, argc, argv, "STAT_T1", -1, "1e100", NULL);
+
3041
+
3042 /* Output of VTK data... */
+
3043 scan_ctl(filename, argc, argv, "VTK_BASENAME", -1, "-", ctl->vtk_basename);
+
3044 ctl->vtk_dt_out =
+
3045 scan_ctl(filename, argc, argv, "VTK_DT_OUT", -1, "86400", NULL);
+
3046 ctl->vtk_stride =
+
3047 (int) scan_ctl(filename, argc, argv, "VTK_STRIDE", -1, "1", NULL);
+
3048 ctl->vtk_scale =
+
3049 scan_ctl(filename, argc, argv, "VTK_SCALE", -1, "1.0", NULL);
+
3050 ctl->vtk_offset =
+
3051 scan_ctl(filename, argc, argv, "VTK_OFFSET", -1, "0.0", NULL);
+
3052 ctl->vtk_sphere =
+
3053 (int) scan_ctl(filename, argc, argv, "VTK_SPHERE", -1, "0", NULL);
+
3054}
+
3055
+
3056/*****************************************************************************/
+
3057
+ +
3059 const char *filename,
+
3060 double kz[EP],
+
3061 double kw[EP],
+
3062 int *nk) {
+
3063
+
3064 /* Write info... */
+
3065 LOG(1, "Read kernel function: %s", filename);
+
3066
+
3067 /* Open file... */
+
3068 FILE *in;
+
3069 if (!(in = fopen(filename, "r")))
+
3070 ERRMSG("Cannot open file!");
+
3071
+
3072 /* Read data... */
+
3073 char line[LEN];
+
3074 int n = 0;
+
3075 while (fgets(line, LEN, in))
+
3076 if (sscanf(line, "%lg %lg", &kz[n], &kw[n]) == 2) {
+
3077 if (n > 0 && kz[n] < kz[n - 1])
+
3078 ERRMSG("Height levels must be ascending!");
+
3079 if ((++n) >= EP)
+
3080 ERRMSG("Too many height levels!");
+
3081 }
+
3082
+
3083 /* Close file... */
+
3084 fclose(in);
+
3085
+
3086 /* Check number of data points... */
+
3087 *nk = n;
+
3088 if (n < 2)
+
3089 ERRMSG("Not enough height levels!");
+
3090
+
3091 /* Normalize kernel function... */
+
3092 double kmax = gsl_stats_max(kw, 1, (size_t) n);
+
3093 for (int iz = 0; iz < n; iz++)
+
3094 kw[iz] /= kmax;
+
3095}
+
3096
+
3097/*****************************************************************************/
+
3098
+ +
3100 char *filename,
+
3101 ctl_t * ctl,
+
3102 clim_t * clim,
+
3103 met_t * met) {
+
3104
+
3105 /* Write info... */
+
3106 LOG(1, "Read meteo data: %s", filename);
+
3107
+
3108 /* Read netCDF data... */
+
3109 if (ctl->met_type == 0) {
+
3110
+
3111 int ncid;
+
3112
+
3113 /* Open netCDF file... */
+
3114 if (nc__open(filename, ctl->read_mode, &ctl->chunkszhint, &ncid) !=
+
3115 NC_NOERR) {
+
3116 WARN("Cannot open file!");
+
3117 return 0;
+
3118 }
+
3119
+
3120 /* Read coordinates of meteo data... */
+
3121 read_met_grid(filename, ncid, ctl, met);
+
3122
+
3123 /* Read meteo data on vertical levels... */
+
3124 read_met_levels(ncid, ctl, met);
+
3125
+
3126 /* Extrapolate data for lower boundary... */
+ +
3128
+
3129 /* Read surface data... */
+
3130 read_met_surface(ncid, met, ctl);
+
3131
+
3132 /* Create periodic boundary conditions... */
+
3133 read_met_periodic(met);
+
3134
+
3135 /* Downsampling... */
+
3136 read_met_sample(ctl, met);
+
3137
+
3138 /* Calculate geopotential heights... */
+
3139 read_met_geopot(ctl, met);
+
3140
+
3141 /* Calculate potential vorticity... */
+
3142 read_met_pv(met);
+
3143
+
3144 /* Calculate boundary layer data... */
+
3145 read_met_pbl(met);
+
3146
+
3147 /* Calculate tropopause data... */
+
3148 read_met_tropo(ctl, clim, met);
+
3149
+
3150 /* Calculate cloud properties... */
+
3151 read_met_cloud(ctl, met);
+
3152
+
3153 /* Calculate convective available potential energy... */
+
3154 read_met_cape(clim, met);
+
3155
+
3156 /* Calculate total column ozone... */
+
3157 read_met_ozone(met);
+
3158
+
3159 /* Detrending... */
+
3160 read_met_detrend(ctl, met);
+
3161
+
3162 /* Check meteo data and smooth zeta profiles ... */
+
3163 if (ctl->vert_coord_ap == 1)
+ +
3165
+
3166 /* Close file... */
+
3167 NC(nc_close(ncid));
+
3168 }
+
3169
+
3170 /* Read binary data... */
+
3171 else if (ctl->met_type >= 1 && ctl->met_type <= 4) {
+
3172
+
3173 FILE *in;
+
3174
+
3175 double r;
+
3176
+
3177 int year, mon, day, hour, min, sec;
+
3178
+
3179 /* Set timer... */
+
3180 SELECT_TIMER("READ_MET_BIN", "INPUT", NVTX_READ);
+
3181
+
3182 /* Open file... */
+
3183 if (!(in = fopen(filename, "r"))) {
+
3184 WARN("Cannot open file!");
+
3185 return 0;
+
3186 }
+
3187
+
3188 /* Check type of binary data... */
+
3189 int met_type;
+
3190 FREAD(&met_type, int,
+
3191 1,
+
3192 in);
+
3193 if (met_type != ctl->met_type)
+
3194 ERRMSG("Wrong MET_TYPE of binary data!");
+
3195
+
3196 /* Check version of binary data... */
+
3197 int version;
+
3198 FREAD(&version, int,
+
3199 1,
+
3200 in);
+
3201 if (version != 100 && version != 101)
+
3202 ERRMSG("Wrong version of binary data!");
+
3203
+
3204 /* Read time... */
+
3205 FREAD(&met->time, double,
+
3206 1,
+
3207 in);
+
3208 jsec2time(met->time, &year, &mon, &day, &hour, &min, &sec, &r);
+
3209 LOG(2, "Time: %.2f (%d-%02d-%02d, %02d:%02d UTC)",
+
3210 met->time, year, mon, day, hour, min);
+
3211 if (year < 1900 || year > 2100 || mon < 1 || mon > 12
+
3212 || day < 1 || day > 31 || hour < 0 || hour > 23)
+
3213 ERRMSG("Error while reading time!");
+
3214
+
3215 /* Read dimensions... */
+
3216 FREAD(&met->nx, int,
+
3217 1,
+
3218 in);
+
3219 LOG(2, "Number of longitudes: %d", met->nx);
+
3220 if (met->nx < 2 || met->nx > EX)
+
3221 ERRMSG("Number of longitudes out of range!");
+
3222
+
3223 FREAD(&met->ny, int,
+
3224 1,
+
3225 in);
+
3226 LOG(2, "Number of latitudes: %d", met->ny);
+
3227 if (met->ny < 2 || met->ny > EY)
+
3228 ERRMSG("Number of latitudes out of range!");
+
3229
+
3230 FREAD(&met->np, int,
+
3231 1,
+
3232 in);
+
3233 LOG(2, "Number of levels: %d", met->np);
+
3234 if (met->np < 2 || met->np > EP)
+
3235 ERRMSG("Number of levels out of range!");
+
3236
+
3237 /* Read grid... */
+
3238 FREAD(met->lon, double,
+
3239 (size_t) met->nx,
+
3240 in);
+
3241 LOG(2, "Longitudes: %g, %g ... %g deg",
+
3242 met->lon[0], met->lon[1], met->lon[met->nx - 1]);
+
3243
+
3244 FREAD(met->lat, double,
+
3245 (size_t) met->ny,
+
3246 in);
+
3247 LOG(2, "Latitudes: %g, %g ... %g deg",
+
3248 met->lat[0], met->lat[1], met->lat[met->ny - 1]);
+
3249
+
3250 FREAD(met->p, double,
+
3251 (size_t) met->np,
+
3252 in);
+
3253 LOG(2, "Altitude levels: %g, %g ... %g km",
+
3254 Z(met->p[0]), Z(met->p[1]), Z(met->p[met->np - 1]));
+
3255 LOG(2, "Pressure levels: %g, %g ... %g hPa",
+
3256 met->p[0], met->p[1], met->p[met->np - 1]);
+
3257
+
3258 /* Read surface data... */
+
3259 read_met_bin_2d(in, met, met->ps, "PS");
+
3260 read_met_bin_2d(in, met, met->ts, "TS");
+
3261 read_met_bin_2d(in, met, met->zs, "ZS");
+
3262 read_met_bin_2d(in, met, met->us, "US");
+
3263 read_met_bin_2d(in, met, met->vs, "VS");
+
3264 if (version == 101) {
+
3265 read_met_bin_2d(in, met, met->lsm, "LSM");
+
3266 read_met_bin_2d(in, met, met->sst, "SST");
+
3267 }
+
3268 read_met_bin_2d(in, met, met->pbl, "PBL");
+
3269 read_met_bin_2d(in, met, met->pt, "PT");
+
3270 read_met_bin_2d(in, met, met->tt, "TT");
+
3271 read_met_bin_2d(in, met, met->zt, "ZT");
+
3272 read_met_bin_2d(in, met, met->h2ot, "H2OT");
+
3273 read_met_bin_2d(in, met, met->pct, "PCT");
+
3274 read_met_bin_2d(in, met, met->pcb, "PCB");
+
3275 read_met_bin_2d(in, met, met->cl, "CL");
+
3276 read_met_bin_2d(in, met, met->plcl, "PLCL");
+
3277 read_met_bin_2d(in, met, met->plfc, "PLFC");
+
3278 read_met_bin_2d(in, met, met->pel, "PEL");
+
3279 read_met_bin_2d(in, met, met->cape, "CAPE");
+
3280 read_met_bin_2d(in, met, met->cin, "CIN");
+
3281
+
3282 /* Read level data... */
+
3283 read_met_bin_3d(in, ctl, met, met->z, "Z");
+
3284 read_met_bin_3d(in, ctl, met, met->t, "T");
+
3285 read_met_bin_3d(in, ctl, met, met->u, "U");
+
3286 read_met_bin_3d(in, ctl, met, met->v, "V");
+
3287 read_met_bin_3d(in, ctl, met, met->w, "W");
+
3288 read_met_bin_3d(in, ctl, met, met->pv, "PV");
+
3289 read_met_bin_3d(in, ctl, met, met->h2o, "H2O");
+
3290 read_met_bin_3d(in, ctl, met, met->o3, "O3");
+
3291 read_met_bin_3d(in, ctl, met, met->lwc, "LWC");
+
3292 read_met_bin_3d(in, ctl, met, met->iwc, "IWC");
+
3293 if (version == 101)
+
3294 read_met_bin_3d(in, ctl, met, met->cc, "CC");
+
3295
+
3296 /* Read final flag... */
+
3297 int final;
+
3298 FREAD(&final, int,
+
3299 1,
+
3300 in);
+
3301 if (final != 999)
+
3302 ERRMSG("Error while reading binary data!");
+
3303
+
3304 /* Close file... */
+
3305 fclose(in);
+
3306 }
+
3307
+
3308 /* Not implemented... */
+
3309 else
+
3310 ERRMSG("MET_TYPE not implemented!");
+
3311
+
3312 /* Copy wind data to cache... */
+
3313#ifdef UVW
+
3314#pragma omp parallel for default(shared) collapse(2)
+
3315 for (int ix = 0; ix < met->nx; ix++)
+
3316 for (int iy = 0; iy < met->ny; iy++)
+
3317 for (int ip = 0; ip < met->np; ip++) {
+
3318 met->uvw[ix][iy][ip][0] = met->u[ix][iy][ip];
+
3319 met->uvw[ix][iy][ip][1] = met->v[ix][iy][ip];
+
3320 met->uvw[ix][iy][ip][2] = met->w[ix][iy][ip];
+
3321 }
+
3322#endif
+
3323
+
3324 /* Return success... */
+
3325 return 1;
+
3326}
+
3327
+
3328/*****************************************************************************/
+
3329
+ +
3331 FILE * in,
+
3332 met_t * met,
+
3333 float var[EX][EY],
+
3334 char *varname) {
+
3335
+
3336 float *help;
+
3337
+
3338 /* Allocate... */
+
3339 ALLOC(help, float,
+
3340 EX * EY);
+
3341
+
3342 /* Read uncompressed... */
+
3343 LOG(2, "Read 2-D variable: %s (uncompressed)", varname);
+
3344 FREAD(help, float,
+
3345 (size_t) (met->nx * met->ny),
+
3346 in);
+
3347
+
3348 /* Copy data... */
+
3349 for (int ix = 0; ix < met->nx; ix++)
+
3350 for (int iy = 0; iy < met->ny; iy++)
+
3351 var[ix][iy] = help[ARRAY_2D(ix, iy, met->ny)];
+
3352
+
3353 /* Free... */
+
3354 free(help);
+
3355}
+
3356
+
3357/*****************************************************************************/
+
3358
+ +
3360 FILE * in,
+
3361 ctl_t * ctl,
+
3362 met_t * met,
+
3363 float var[EX][EY][EP],
+
3364 char *varname) {
+
3365
+
3366 float *help;
+
3367
+
3368 /* Allocate... */
+
3369 ALLOC(help, float,
+
3370 EX * EY * EP);
+
3371
+
3372 /* Read uncompressed data... */
+
3373 if (ctl->met_type == 1) {
+
3374 LOG(2, "Read 3-D variable: %s (uncompressed)", varname);
+
3375 FREAD(help, float,
+
3376 (size_t) (met->nx * met->ny * met->np),
+
3377 in);
+
3378 }
+
3379
+
3380 /* Read packed data... */
+
3381 else if (ctl->met_type == 2)
+
3382 compress_pack(varname, help, (size_t) (met->ny * met->nx),
+
3383 (size_t) met->np, 1, in);
+
3384
+
3385 /* Read zfp data... */
+
3386 else if (ctl->met_type == 3) {
+
3387#ifdef ZFP
+
3388 int precision;
+
3389 FREAD(&precision, int,
+
3390 1,
+
3391 in);
+
3392
+
3393 double tolerance;
+
3394 FREAD(&tolerance, double,
+
3395 1,
+
3396 in);
+
3397
+
3398 compress_zfp(varname, help, met->np, met->ny, met->nx, precision,
+
3399 tolerance, 1, in);
+
3400#else
+
3401 ERRMSG("MPTRAC was compiled without zfp compression!");
+
3402#endif
+
3403 }
+
3404
+
3405 /* Read zstd data... */
+
3406 else if (ctl->met_type == 4) {
+
3407#ifdef ZSTD
+
3408 compress_zstd(varname, help, (size_t) (met->np * met->ny * met->nx), 1,
+
3409 in);
+
3410#else
+
3411 ERRMSG("MPTRAC was compiled without zstd compression!");
+
3412#endif
+
3413 }
+
3414
+
3415 /* Copy data... */
+
3416#pragma omp parallel for default(shared) collapse(2)
+
3417 for (int ix = 0; ix < met->nx; ix++)
+
3418 for (int iy = 0; iy < met->ny; iy++)
+
3419 for (int ip = 0; ip < met->np; ip++)
+
3420 var[ix][iy][ip] = help[ARRAY_3D(ix, iy, met->ny, ip, met->np)];
+
3421
+
3422 /* Free... */
+
3423 free(help);
+
3424}
+
3425
+
3426/*****************************************************************************/
+
3427
+ +
3429 clim_t * clim,
+
3430 met_t * met) {
+
3431
+
3432 /* Set timer... */
+
3433 SELECT_TIMER("READ_MET_CAPE", "METPROC", NVTX_READ);
+
3434 LOG(2, "Calculate CAPE...");
+
3435
+
3436 /* Vertical spacing (about 100 m)... */
+
3437 const double pfac = 1.01439, dz0 = RI / MA / G0 * log(pfac);
+
3438
+
3439 /* Loop over columns... */
+
3440#pragma omp parallel for default(shared) collapse(2)
+
3441 for (int ix = 0; ix < met->nx; ix++)
+
3442 for (int iy = 0; iy < met->ny; iy++) {
+
3443
+
3444 /* Get potential temperature and water vapor vmr at lowest 50 hPa... */
+
3445 int n = 0;
+
3446 double h2o = 0, t, theta = 0;
+
3447 double pbot = GSL_MIN(met->ps[ix][iy], met->p[0]);
+
3448 double ptop = pbot - 50.;
+
3449 for (int ip = 0; ip < met->np; ip++) {
+
3450 if (met->p[ip] <= pbot) {
+
3451 theta += THETA(met->p[ip], met->t[ix][iy][ip]);
+
3452 h2o += met->h2o[ix][iy][ip];
+
3453 n++;
+
3454 }
+
3455 if (met->p[ip] < ptop && n > 0)
+
3456 break;
+
3457 }
+
3458 theta /= n;
+
3459 h2o /= n;
+
3460
+
3461 /* Cannot compute anything if water vapor is missing... */
+
3462 met->plcl[ix][iy] = GSL_NAN;
+
3463 met->plfc[ix][iy] = GSL_NAN;
+
3464 met->pel[ix][iy] = GSL_NAN;
+
3465 met->cape[ix][iy] = GSL_NAN;
+
3466 met->cin[ix][iy] = GSL_NAN;
+
3467 if (h2o <= 0)
+
3468 continue;
+
3469
+
3470 /* Find lifted condensation level (LCL)... */
+
3471 ptop = P(20.);
+
3472 pbot = met->ps[ix][iy];
+
3473 do {
+
3474 met->plcl[ix][iy] = (float) (0.5 * (pbot + ptop));
+
3475 t = theta / pow(1000. / met->plcl[ix][iy], 0.286);
+
3476 if (RH(met->plcl[ix][iy], t, h2o) > 100.)
+
3477 ptop = met->plcl[ix][iy];
+
3478 else
+
3479 pbot = met->plcl[ix][iy];
+
3480 } while (pbot - ptop > 0.1);
+
3481
+
3482 /* Calculate CIN up to LCL... */
+ +
3484 double dcape, dz, h2o_env, t_env;
+
3485 double p = met->ps[ix][iy];
+
3486 met->cape[ix][iy] = met->cin[ix][iy] = 0;
+
3487 do {
+
3488 dz = dz0 * TVIRT(t, h2o);
+
3489 p /= pfac;
+
3490 t = theta / pow(1000. / p, 0.286);
+
3491 intpol_met_space_3d(met, met->t, p, met->lon[ix], met->lat[iy],
+
3492 &t_env, ci, cw, 1);
+
3493 intpol_met_space_3d(met, met->h2o, p, met->lon[ix], met->lat[iy],
+
3494 &h2o_env, ci, cw, 0);
+
3495 dcape = 1e3 * G0 * (TVIRT(t, h2o) - TVIRT(t_env, h2o_env)) /
+
3496 TVIRT(t_env, h2o_env) * dz;
+
3497 if (dcape < 0)
+
3498 met->cin[ix][iy] += fabsf((float) dcape);
+
3499 } while (p > met->plcl[ix][iy]);
+
3500
+
3501 /* Calculate level of free convection (LFC), equilibrium level (EL),
+
3502 and convective available potential energy (CAPE)... */
+
3503 dcape = 0;
+
3504 p = met->plcl[ix][iy];
+
3505 t = theta / pow(1000. / p, 0.286);
+
3506 ptop = 0.75 * clim_tropo(clim, met->time, met->lat[iy]);
+
3507 do {
+
3508 dz = dz0 * TVIRT(t, h2o);
+
3509 p /= pfac;
+
3510 t -= lapse_rate(t, h2o) * dz;
+
3511 double psat = PSAT(t);
+
3512 h2o = psat / (p - (1. - EPS) * psat);
+
3513 intpol_met_space_3d(met, met->t, p, met->lon[ix], met->lat[iy],
+
3514 &t_env, ci, cw, 1);
+
3515 intpol_met_space_3d(met, met->h2o, p, met->lon[ix], met->lat[iy],
+
3516 &h2o_env, ci, cw, 0);
+
3517 double dcape_old = dcape;
+
3518 dcape = 1e3 * G0 * (TVIRT(t, h2o) - TVIRT(t_env, h2o_env)) /
+
3519 TVIRT(t_env, h2o_env) * dz;
+
3520 if (dcape > 0) {
+
3521 met->cape[ix][iy] += (float) dcape;
+
3522 if (!isfinite(met->plfc[ix][iy]))
+
3523 met->plfc[ix][iy] = (float) p;
+
3524 } else if (dcape_old > 0)
+
3525 met->pel[ix][iy] = (float) p;
+
3526 if (dcape < 0 && !isfinite(met->plfc[ix][iy]))
+
3527 met->cin[ix][iy] += fabsf((float) dcape);
+
3528 } while (p > ptop);
+
3529
+
3530 /* Check results... */
+
3531 if (!isfinite(met->plfc[ix][iy]))
+
3532 met->cin[ix][iy] = GSL_NAN;
+
3533 }
+
3534}
+
3535
+
3536/*****************************************************************************/
+
3537
+ +
3539 ctl_t * ctl,
+
3540 met_t * met) {
+
3541
+
3542 /* Set timer... */
+
3543 SELECT_TIMER("READ_MET_CLOUD", "METPROC", NVTX_READ);
+
3544 LOG(2, "Calculate cloud data...");
+
3545
+
3546 /* Loop over columns... */
+
3547#pragma omp parallel for default(shared) collapse(2)
+
3548 for (int ix = 0; ix < met->nx; ix++)
+
3549 for (int iy = 0; iy < met->ny; iy++) {
+
3550
+
3551 /* Init... */
+
3552 met->pct[ix][iy] = GSL_NAN;
+
3553 met->pcb[ix][iy] = GSL_NAN;
+
3554 met->cl[ix][iy] = 0;
+
3555
+
3556 /* Loop over pressure levels... */
+
3557 for (int ip = 0; ip < met->np - 1; ip++) {
+
3558
+
3559 /* Check pressure... */
+
3560 if (met->p[ip] > met->ps[ix][iy] || met->p[ip] < P(20.))
+
3561 continue;
+
3562
+
3563 /* Check ice water and liquid water content... */
+
3564 if (met->iwc[ix][iy][ip] > ctl->met_cloud_min
+
3565 || met->lwc[ix][iy][ip] > ctl->met_cloud_min) {
+
3566
+
3567 /* Get cloud top pressure ... */
+
3568 met->pct[ix][iy]
+
3569 = (float) (0.5 * (met->p[ip] + (float) met->p[ip + 1]));
+
3570
+
3571 /* Get cloud bottom pressure ... */
+
3572 if (!isfinite(met->pcb[ix][iy]))
+
3573 met->pcb[ix][iy]
+
3574 = (float) (0.5 * (met->p[ip] + met->p[GSL_MAX(ip - 1, 0)]));
+
3575 }
+
3576
+
3577 /* Get cloud water... */
+
3578 met->cl[ix][iy] += (float)
+
3579 (0.5 * (met->iwc[ix][iy][ip] + met->iwc[ix][iy][ip + 1]
+
3580 + met->lwc[ix][iy][ip] + met->lwc[ix][iy][ip + 1])
+
3581 * 100. * (met->p[ip] - met->p[ip + 1]) / G0);
+
3582 }
+
3583 }
+
3584}
+
3585
+
3586/*****************************************************************************/
+
3587
+ +
3589 ctl_t * ctl,
+
3590 met_t * met) {
+
3591
+
3592 met_t *help;
+
3593
+
3594 /* Check parameters... */
+
3595 if (ctl->met_detrend <= 0)
+
3596 return;
+
3597
+
3598 /* Set timer... */
+
3599 SELECT_TIMER("READ_MET_DETREND", "METPROC", NVTX_READ);
+
3600 LOG(2, "Detrend meteo data...");
+
3601
+
3602 /* Allocate... */
+
3603 ALLOC(help, met_t, 1);
+
3604
+
3605 /* Calculate standard deviation... */
+
3606 double sigma = ctl->met_detrend / 2.355;
+
3607 double tssq = 2. * SQR(sigma);
+
3608
+
3609 /* Calculate box size in latitude... */
+
3610 int sy = (int) (3. * DY2DEG(sigma) / fabs(met->lat[1] - met->lat[0]));
+
3611 sy = GSL_MIN(GSL_MAX(1, sy), met->ny / 2);
+
3612
+
3613 /* Calculate background... */
+
3614#pragma omp parallel for default(shared) collapse(2)
+
3615 for (int ix = 0; ix < met->nx; ix++) {
+
3616 for (int iy = 0; iy < met->ny; iy++) {
+
3617
+
3618 /* Calculate Cartesian coordinates... */
+
3619 double x0[3];
+
3620 geo2cart(0.0, met->lon[ix], met->lat[iy], x0);
+
3621
+
3622 /* Calculate box size in longitude... */
+
3623 int sx =
+
3624 (int) (3. * DX2DEG(sigma, met->lat[iy]) /
+
3625 fabs(met->lon[1] - met->lon[0]));
+
3626 sx = GSL_MIN(GSL_MAX(1, sx), met->nx / 2);
+
3627
+
3628 /* Init... */
+
3629 float wsum = 0;
+
3630 for (int ip = 0; ip < met->np; ip++) {
+
3631 help->t[ix][iy][ip] = 0;
+
3632 help->u[ix][iy][ip] = 0;
+
3633 help->v[ix][iy][ip] = 0;
+
3634 help->w[ix][iy][ip] = 0;
+
3635 }
+
3636
+
3637 /* Loop over neighboring grid points... */
+
3638 for (int ix2 = ix - sx; ix2 <= ix + sx; ix2++) {
+
3639 int ix3 = ix2;
+
3640 if (ix3 < 0)
+
3641 ix3 += met->nx;
+
3642 else if (ix3 >= met->nx)
+
3643 ix3 -= met->nx;
+
3644 for (int iy2 = GSL_MAX(iy - sy, 0);
+
3645 iy2 <= GSL_MIN(iy + sy, met->ny - 1); iy2++) {
+
3646
+
3647 /* Calculate Cartesian coordinates... */
+
3648 double x1[3];
+
3649 geo2cart(0.0, met->lon[ix3], met->lat[iy2], x1);
+
3650
+
3651 /* Calculate weighting factor... */
+
3652 float w = (float) exp(-DIST2(x0, x1) / tssq);
+
3653
+
3654 /* Add data... */
+
3655 wsum += w;
+
3656 for (int ip = 0; ip < met->np; ip++) {
+
3657 help->t[ix][iy][ip] += w * met->t[ix3][iy2][ip];
+
3658 help->u[ix][iy][ip] += w * met->u[ix3][iy2][ip];
+
3659 help->v[ix][iy][ip] += w * met->v[ix3][iy2][ip];
+
3660 help->w[ix][iy][ip] += w * met->w[ix3][iy2][ip];
+
3661 }
+
3662 }
+
3663 }
+
3664
+
3665 /* Normalize... */
+
3666 for (int ip = 0; ip < met->np; ip++) {
+
3667 help->t[ix][iy][ip] /= wsum;
+
3668 help->u[ix][iy][ip] /= wsum;
+
3669 help->v[ix][iy][ip] /= wsum;
+
3670 help->w[ix][iy][ip] /= wsum;
+
3671 }
+
3672 }
+
3673 }
+
3674
+
3675 /* Subtract background... */
+
3676#pragma omp parallel for default(shared) collapse(3)
+
3677 for (int ix = 0; ix < met->nx; ix++)
+
3678 for (int iy = 0; iy < met->ny; iy++)
+
3679 for (int ip = 0; ip < met->np; ip++) {
+
3680 met->t[ix][iy][ip] -= help->t[ix][iy][ip];
+
3681 met->u[ix][iy][ip] -= help->u[ix][iy][ip];
+
3682 met->v[ix][iy][ip] -= help->v[ix][iy][ip];
+
3683 met->w[ix][iy][ip] -= help->w[ix][iy][ip];
+
3684 }
+
3685
+
3686 /* Free... */
+
3687 free(help);
+
3688}
+
3689
+
3690/*****************************************************************************/
+
3691
+ +
3693 met_t * met) {
+
3694
+
3695 /* Set timer... */
+
3696 SELECT_TIMER("READ_MET_EXTRAPOLATE", "METPROC", NVTX_READ);
+
3697 LOG(2, "Extrapolate meteo data...");
+
3698
+
3699 /* Loop over columns... */
+
3700#pragma omp parallel for default(shared) collapse(2)
+
3701 for (int ix = 0; ix < met->nx; ix++)
+
3702 for (int iy = 0; iy < met->ny; iy++) {
+
3703
+
3704 /* Find lowest valid data point... */
+
3705 int ip0;
+
3706 for (ip0 = met->np - 1; ip0 >= 0; ip0--)
+
3707 if (!isfinite(met->t[ix][iy][ip0])
+
3708 || !isfinite(met->u[ix][iy][ip0])
+
3709 || !isfinite(met->v[ix][iy][ip0])
+
3710 || !isfinite(met->w[ix][iy][ip0]))
+
3711 break;
+
3712
+
3713 /* Extrapolate... */
+
3714 for (int ip = ip0; ip >= 0; ip--) {
+
3715 met->t[ix][iy][ip] = met->t[ix][iy][ip + 1];
+
3716 met->u[ix][iy][ip] = met->u[ix][iy][ip + 1];
+
3717 met->v[ix][iy][ip] = met->v[ix][iy][ip + 1];
+
3718 met->w[ix][iy][ip] = met->w[ix][iy][ip + 1];
+
3719 met->h2o[ix][iy][ip] = met->h2o[ix][iy][ip + 1];
+
3720 met->o3[ix][iy][ip] = met->o3[ix][iy][ip + 1];
+
3721 met->lwc[ix][iy][ip] = met->lwc[ix][iy][ip + 1];
+
3722 met->iwc[ix][iy][ip] = met->iwc[ix][iy][ip + 1];
+
3723 met->cc[ix][iy][ip] = met->cc[ix][iy][ip + 1];
+
3724 }
+
3725 }
+
3726}
+
3727
+
3728/*****************************************************************************/
+
3729
+ +
3731 ctl_t * ctl,
+
3732 met_t * met) {
+
3733
+
3734 static float help[EP][EX][EY];
+
3735
+
3736 double logp[EP];
+
3737
+
3738 int dx = ctl->met_geopot_sx, dy = ctl->met_geopot_sy;
+
3739
+
3740 /* Set timer... */
+
3741 SELECT_TIMER("READ_MET_GEOPOT", "METPROC", NVTX_READ);
+
3742 LOG(2, "Calculate geopotential heights...");
+
3743
+
3744 /* Calculate log pressure... */
+
3745#pragma omp parallel for default(shared)
+
3746 for (int ip = 0; ip < met->np; ip++)
+
3747 logp[ip] = log(met->p[ip]);
+
3748
+
3749 /* Apply hydrostatic equation to calculate geopotential heights... */
+
3750#pragma omp parallel for default(shared) collapse(2)
+
3751 for (int ix = 0; ix < met->nx; ix++)
+
3752 for (int iy = 0; iy < met->ny; iy++) {
+
3753
+
3754 /* Get surface height and pressure... */
+
3755 double zs = met->zs[ix][iy];
+
3756 double lnps = log(met->ps[ix][iy]);
+
3757
+
3758 /* Get temperature and water vapor vmr at the surface... */
+
3759 int ip0 = locate_irr(met->p, met->np, met->ps[ix][iy]);
+
3760 double ts = LIN(met->p[ip0], met->t[ix][iy][ip0], met->p[ip0 + 1],
+
3761 met->t[ix][iy][ip0 + 1], met->ps[ix][iy]);
+
3762 double h2os = LIN(met->p[ip0], met->h2o[ix][iy][ip0], met->p[ip0 + 1],
+
3763 met->h2o[ix][iy][ip0 + 1], met->ps[ix][iy]);
+
3764
+
3765 /* Upper part of profile... */
+
3766 met->z[ix][iy][ip0 + 1]
+
3767 = (float) (zs +
+
3768 ZDIFF(lnps, ts, h2os, logp[ip0 + 1],
+
3769 met->t[ix][iy][ip0 + 1], met->h2o[ix][iy][ip0 + 1]));
+
3770 for (int ip = ip0 + 2; ip < met->np; ip++)
+
3771 met->z[ix][iy][ip]
+
3772 = (float) (met->z[ix][iy][ip - 1] +
+
3773 ZDIFF(logp[ip - 1], met->t[ix][iy][ip - 1],
+
3774 met->h2o[ix][iy][ip - 1], logp[ip],
+
3775 met->t[ix][iy][ip], met->h2o[ix][iy][ip]));
+
3776
+
3777 /* Lower part of profile... */
+
3778 met->z[ix][iy][ip0]
+
3779 = (float) (zs +
+
3780 ZDIFF(lnps, ts, h2os, logp[ip0],
+
3781 met->t[ix][iy][ip0], met->h2o[ix][iy][ip0]));
+
3782 for (int ip = ip0 - 1; ip >= 0; ip--)
+
3783 met->z[ix][iy][ip]
+
3784 = (float) (met->z[ix][iy][ip + 1] +
+
3785 ZDIFF(logp[ip + 1], met->t[ix][iy][ip + 1],
+
3786 met->h2o[ix][iy][ip + 1], logp[ip],
+
3787 met->t[ix][iy][ip], met->h2o[ix][iy][ip]));
+
3788 }
+
3789
+
3790 /* Check control parameters... */
+
3791 if (dx == 0 || dy == 0)
+
3792 return;
+
3793
+
3794 /* Default smoothing parameters... */
+
3795 if (dx < 0 || dy < 0) {
+
3796 if (fabs(met->lon[1] - met->lon[0]) < 0.5) {
+
3797 dx = 3;
+
3798 dy = 2;
+
3799 } else {
+
3800 dx = 6;
+
3801 dy = 4;
+
3802 }
+
3803 }
+
3804
+
3805 /* Calculate weights for smoothing... */
+
3806 float ws[dx + 1][dy + 1];
+
3807#pragma omp parallel for default(shared) collapse(2)
+
3808 for (int ix = 0; ix <= dx; ix++)
+
3809 for (int iy = 0; iy < dy; iy++)
+
3810 ws[ix][iy] = (1.0f - (float) ix / (float) dx)
+
3811 * (1.0f - (float) iy / (float) dy);
+
3812
+
3813 /* Copy data... */
+
3814#pragma omp parallel for default(shared) collapse(3)
+
3815 for (int ix = 0; ix < met->nx; ix++)
+
3816 for (int iy = 0; iy < met->ny; iy++)
+
3817 for (int ip = 0; ip < met->np; ip++)
+
3818 help[ip][ix][iy] = met->z[ix][iy][ip];
+
3819
+
3820 /* Horizontal smoothing... */
+
3821#pragma omp parallel for default(shared) collapse(3)
+
3822 for (int ip = 0; ip < met->np; ip++)
+
3823 for (int ix = 0; ix < met->nx; ix++)
+
3824 for (int iy = 0; iy < met->ny; iy++) {
+
3825 float res = 0, wsum = 0;
+
3826 int iy0 = GSL_MAX(iy - dy + 1, 0);
+
3827 int iy1 = GSL_MIN(iy + dy - 1, met->ny - 1);
+
3828 for (int ix2 = ix - dx + 1; ix2 <= ix + dx - 1; ++ix2) {
+
3829 int ix3 = ix2;
+
3830 if (ix3 < 0)
+
3831 ix3 += met->nx;
+
3832 else if (ix3 >= met->nx)
+
3833 ix3 -= met->nx;
+
3834 for (int iy2 = iy0; iy2 <= iy1; ++iy2)
+
3835 if (isfinite(help[ip][ix3][iy2])) {
+
3836 float w = ws[abs(ix - ix2)][abs(iy - iy2)];
+
3837 res += w * help[ip][ix3][iy2];
+
3838 wsum += w;
+
3839 }
+
3840 }
+
3841 if (wsum > 0)
+
3842 met->z[ix][iy][ip] = res / wsum;
+
3843 else
+
3844 met->z[ix][iy][ip] = GSL_NAN;
+
3845 }
+
3846}
+
3847
+
3848/*****************************************************************************/
+
3849
+ +
3851 char *filename,
+
3852 int ncid,
+
3853 ctl_t * ctl,
+
3854 met_t * met) {
+
3855
+
3856 char levname[LEN], tstr[10];
+
3857
+
3858 double rtime, r, r2;
+
3859
+
3860 int varid, year2, mon2, day2, hour2, min2, sec2,
+
3861 year, mon, day, hour, min, sec;
+
3862
+
3863 size_t np;
+
3864
+
3865 /* Set timer... */
+
3866 SELECT_TIMER("READ_MET_GRID", "INPUT", NVTX_READ);
+
3867 LOG(2, "Read meteo grid information...");
+
3868
+
3869 /* MPTRAC meteo files... */
+
3870 if (ctl->clams_met_data == 0) {
+
3871
+
3872 /* Get time from filename... */
+
3873 met->time = time_from_filename(filename, 16);
+
3874
+
3875 /* Check time information from data file... */
+
3876 jsec2time(met->time, &year, &mon, &day, &hour, &min, &sec, &r);
+
3877 if (nc_inq_varid(ncid, "time", &varid) == NC_NOERR) {
+
3878 NC(nc_get_var_double(ncid, varid, &rtime));
+
3879 if (fabs(year * 10000. + mon * 100. + day + hour / 24. - rtime) > 1.0)
+
3880 WARN("Time information in meteo file does not match filename!");
+
3881 } else
+
3882 WARN("Time information in meteo file is missing!");
+
3883 }
+
3884
+
3885 /* CLaMS meteo files... */
+
3886 else {
+
3887
+
3888 /* Read time from file... */
+
3889 NC_GET_DOUBLE("time", &rtime, 0);
+
3890
+
3891 /* Get time from filename (considering the century)... */
+
3892 if (rtime < 0)
+
3893 sprintf(tstr, "19%.2s", &filename[strlen(filename) - 11]);
+
3894 else
+
3895 sprintf(tstr, "20%.2s", &filename[strlen(filename) - 11]);
+
3896 year = atoi(tstr);
+
3897 sprintf(tstr, "%.2s", &filename[strlen(filename) - 9]);
+
3898 mon = atoi(tstr);
+
3899 sprintf(tstr, "%.2s", &filename[strlen(filename) - 7]);
+
3900 day = atoi(tstr);
+
3901 sprintf(tstr, "%.2s", &filename[strlen(filename) - 5]);
+
3902 hour = atoi(tstr);
+
3903 time2jsec(year, mon, day, hour, 0, 0, 0, &met->time);
+
3904 }
+
3905
+
3906 /* Check time... */
+
3907 if (year < 1900 || year > 2100 || mon < 1 || mon > 12
+
3908 || day < 1 || day > 31 || hour < 0 || hour > 23)
+
3909 ERRMSG("Cannot read time from filename!");
+
3910 jsec2time(met->time, &year2, &mon2, &day2, &hour2, &min2, &sec2, &r2);
+
3911 LOG(2, "Time: %.2f (%d-%02d-%02d, %02d:%02d UTC)",
+
3912 met->time, year2, mon2, day2, hour2, min2);
+
3913
+
3914 /* Get grid dimensions... */
+
3915 NC_INQ_DIM("lon", &met->nx, 2, EX);
+
3916 LOG(2, "Number of longitudes: %d", met->nx);
+
3917
+
3918 NC_INQ_DIM("lat", &met->ny, 2, EY);
+
3919 LOG(2, "Number of latitudes: %d", met->ny);
+
3920
+
3921 if (ctl->vert_coord_met == 0) {
+
3922 int dimid;
+
3923 sprintf(levname, "lev");
+
3924 if (nc_inq_dimid(ncid, levname, &dimid) != NC_NOERR)
+
3925 sprintf(levname, "plev");
+
3926 } else {
+
3927 sprintf(levname, "hybrid");
+
3928 NC_GET_DOUBLE(levname, met->hybrid, 1);
+
3929 printf("Meteorological data is in hybrid coordinates.");
+
3930 }
+
3931
+
3932 NC_INQ_DIM(levname, &met->np, 1, EP);
+
3933 if (met->np == 1) {
+
3934 int dimid;
+
3935 sprintf(levname, "lev_2");
+
3936 if (nc_inq_dimid(ncid, levname, &dimid) != NC_NOERR) {
+
3937 sprintf(levname, "plev");
+
3938 NC(nc_inq_dimid(ncid, levname, &dimid));
+
3939 }
+
3940 NC(nc_inq_dimlen(ncid, dimid, &np));
+
3941 met->np = (int) np;
+
3942 }
+
3943 LOG(2, "Number of levels: %d", met->np);
+
3944 if (met->np < 2 || met->np > EP)
+
3945 ERRMSG("Number of levels out of range!");
+
3946
+
3947 /* Read longitudes and latitudes... */
+
3948 NC_GET_DOUBLE("lon", met->lon, 1);
+
3949 LOG(2, "Longitudes: %g, %g ... %g deg",
+
3950 met->lon[0], met->lon[1], met->lon[met->nx - 1]);
+
3951 NC_GET_DOUBLE("lat", met->lat, 1);
+
3952 LOG(2, "Latitudes: %g, %g ... %g deg",
+
3953 met->lat[0], met->lat[1], met->lat[met->ny - 1]);
+
3954
+
3955 /* Read pressure levels... */
+
3956 if (ctl->met_np <= 0) {
+
3957 NC_GET_DOUBLE(levname, met->p, 1);
+
3958 for (int ip = 0; ip < met->np; ip++)
+
3959 met->p[ip] /= 100.;
+
3960 LOG(2, "Altitude levels: %g, %g ... %g km",
+
3961 Z(met->p[0]), Z(met->p[1]), Z(met->p[met->np - 1]));
+
3962 LOG(2, "Pressure levels: %g, %g ... %g hPa",
+
3963 met->p[0], met->p[1], met->p[met->np - 1]);
+
3964 }
+
3965}
+
3966
+
3967/*****************************************************************************/
+
3968
+ +
3970 int ncid,
+
3971 ctl_t * ctl,
+
3972 met_t * met) {
+
3973
+
3974 /* Set timer... */
+
3975 SELECT_TIMER("READ_MET_LEVELS", "INPUT", NVTX_READ);
+
3976 LOG(2, "Read level data...");
+
3977
+
3978 /* MPTRAC meteo data... */
+
3979 if (ctl->clams_met_data == 0) {
+
3980
+
3981 /* Read meteo data... */
+
3982 if (!read_met_nc_3d(ncid, "t", "T", ctl, met, met->t, 1.0, 1))
+
3983 ERRMSG("Cannot read temperature!");
+
3984 if (!read_met_nc_3d(ncid, "u", "U", ctl, met, met->u, 1.0, 1))
+
3985 ERRMSG("Cannot read zonal wind!");
+
3986 if (!read_met_nc_3d(ncid, "v", "V", ctl, met, met->v, 1.0, 1))
+
3987 ERRMSG("Cannot read meridional wind!");
+
3988 if (!read_met_nc_3d(ncid, "w", "W", ctl, met, met->w, 0.01f, 1))
+
3989 WARN("Cannot read vertical velocity!");
+
3990 if (!read_met_nc_3d
+
3991 (ncid, "q", "Q", ctl, met, met->h2o, (float) (MA / MH2O), 1))
+
3992 WARN("Cannot read specific humidity!");
+
3993 if (ctl->met_relhum) {
+
3994 if (!read_met_nc_3d(ncid, "rh", "RH", ctl, met, met->h2o, 0.01f, 1))
+
3995 WARN("Cannot read relative humidity!");
+
3996#pragma omp parallel for default(shared) collapse(2)
+
3997 for (int ix = 0; ix < met->nx; ix++)
+
3998 for (int iy = 0; iy < met->ny; iy++)
+
3999 for (int ip = 0; ip < met->np; ip++) {
+
4000 double pw = met->h2o[ix][iy][ip] * PSAT(met->t[ix][iy][ip]);
+
4001 met->h2o[ix][iy][ip] =
+
4002 (float) (pw / (met->p[ip] - (1.0 - EPS) * pw));
+
4003 }
+
4004 }
+
4005 if (!read_met_nc_3d
+
4006 (ncid, "o3", "O3", ctl, met, met->o3, (float) (MA / MO3), 1))
+
4007 WARN("Cannot read ozone data!");
+
4008 if (ctl->met_cloud == 1 || ctl->met_cloud == 3) {
+
4009 if (!read_met_nc_3d(ncid, "clwc", "CLWC", ctl, met, met->lwc, 1.0, 1))
+
4010 WARN("Cannot read cloud liquid water content!");
+
4011 if (!read_met_nc_3d(ncid, "ciwc", "CIWC", ctl, met, met->iwc, 1.0, 1))
+
4012 WARN("Cannot read cloud ice water content!");
+
4013 }
+
4014 if (ctl->met_cloud == 2 || ctl->met_cloud == 3) {
+
4015 if (!read_met_nc_3d
+
4016 (ncid, "crwc", "CRWC", ctl, met, met->lwc, 1.0,
+
4017 ctl->met_cloud == 2))
+
4018 WARN("Cannot read cloud rain water content!");
+
4019 if (!read_met_nc_3d
+
4020 (ncid, "cswc", "CSWC", ctl, met, met->iwc, 1.0,
+
4021 ctl->met_cloud == 2))
+
4022 WARN("Cannot read cloud snow water content!");
+
4023 }
+
4024 if (!read_met_nc_3d(ncid, "cc", "CC", ctl, met, met->cc, 1.0, 1))
+
4025 WARN("Cannot read cloud cover!");
+
4026
+
4027
+
4028 }
+
4029
+
4030 /* CLaMS meteo data... */
+
4031 else if (ctl->clams_met_data == 1) {
+
4032
+
4033 /* Read meteorological data... */
+
4034 if (!read_met_nc_3d(ncid, "t", "TEMP", ctl, met, met->t, 1.0, 1))
+
4035 ERRMSG("Cannot read temperature!");
+
4036 if (!read_met_nc_3d(ncid, "u", "U", ctl, met, met->u, 1.0, 1))
+
4037 ERRMSG("Cannot read zonal wind!");
+
4038 if (!read_met_nc_3d(ncid, "v", "V", ctl, met, met->v, 1.0, 1))
+
4039 ERRMSG("Cannot read meridional wind!");
+
4040 if (!read_met_nc_3d(ncid, "W", "OMEGA", ctl, met, met->w, 0.01f, 1))
+
4041 WARN("Cannot read vertical velocity!");
+
4042 if (!read_met_nc_3d(ncid, "ZETA", "zeta", ctl, met, met->zeta, 1.0, 1))
+
4043 WARN("Cannot read ZETA in meteo data!");
+
4044 if (ctl->vert_coord_ap == 1) {
+
4045 if (!read_met_nc_3d
+
4046 (ncid, "ZETA_DOT_TOT", "zeta_dot_clr", ctl, met, met->zeta_dot,
+
4047 0.00001157407f, 1)) {
+
4048 if (!read_met_nc_3d
+
4049 (ncid, "ZETA_DOT_TOT", "ZETA_DOT_clr", ctl, met, met->zeta_dot,
+
4050 0.00001157407f, 1)) {
+
4051 WARN("Cannot read vertical velocity!");
+
4052 }
+
4053 }
+
4054 }
+
4055 if (!read_met_nc_3d
+
4056 (ncid, "sh", "SH", ctl, met, met->h2o, (float) (MA / MH2O), 1))
+
4057 WARN("Cannot read specific humidity!");
+
4058 if (!read_met_nc_3d
+
4059 (ncid, "o3", "O3", ctl, met, met->o3, (float) (MA / MO3), 1))
+
4060 WARN("Cannot read ozone data!");
+
4061 if (ctl->met_cloud == 1 || ctl->met_cloud == 3) {
+
4062 if (!read_met_nc_3d(ncid, "clwc", "CLWC", ctl, met, met->lwc, 1.0, 1))
+
4063 WARN("Cannot read cloud liquid water content!");
+
4064 if (!read_met_nc_3d(ncid, "ciwc", "CIWC", ctl, met, met->iwc, 1.0, 1))
+
4065 WARN("Cannot read cloud ice water content!");
+
4066 }
+
4067 if (ctl->met_cloud == 2 || ctl->met_cloud == 3) {
+
4068 if (!read_met_nc_3d
+
4069 (ncid, "crwc", "CRWC", ctl, met, met->lwc, 1.0,
+
4070 ctl->met_cloud == 2))
+
4071 WARN("Cannot read cloud rain water content!");
+
4072 if (!read_met_nc_3d
+
4073 (ncid, "cswc", "CSWC", ctl, met, met->iwc, 1.0,
+
4074 ctl->met_cloud == 2))
+
4075 WARN("Cannot read cloud snow water content!");
+
4076 }
+
4077 if (!read_met_nc_3d(ncid, "cc", "CC", ctl, met, met->cc, 1.0, 1))
+
4078 WARN("Cannot read cloud cover!");
+
4079
+
4080 } else
+
4081 ERRMSG("Meteo data format unknown!");
+
4082
+
4083 if (ctl->vert_coord_ap == 1) {
+
4084 /* Store the velocities on model levels for diabatic advection... */
+
4085 for (int ix = 0; ix < met->nx; ix++)
+
4086 for (int iy = 0; iy < met->ny; iy++)
+
4087 for (int ip = 0; ip < met->np; ip++) {
+
4088 met->ul[ix][iy][ip] = met->u[ix][iy][ip];
+
4089 met->vl[ix][iy][ip] = met->v[ix][iy][ip];
+
4090 met->zetal[ix][iy][ip] = met->zeta[ix][iy][ip];
+
4091 met->zeta_dotl[ix][iy][ip] = met->zeta_dot[ix][iy][ip];
+
4092 }
+
4093 /* Original number of vertical levels... */
+
4094 met->npl = met->np;
+
4095 }
+
4096
+
4097 if (ctl->met_np > 0 || ctl->vert_coord_ap == 1) {
+
4098 /* Read pressure on model levels... */
+
4099 if (!read_met_nc_3d(ncid, "pl", "PL", ctl, met, met->pl, 0.01f, 1))
+
4100 if (!read_met_nc_3d(ncid, "pl", "PRESS", ctl, met, met->pl, 1.0, 1))
+
4101 ERRMSG("Cannot read pressure on model levels!");
+
4102 }
+
4103
+
4104 /* Transfer from model levels to pressure levels... */
+
4105 if (ctl->met_np > 0) {
+
4106
+
4107 /* Vertical interpolation from model to pressure levels... */
+
4108 read_met_ml2pl(ctl, met, met->t);
+
4109 read_met_ml2pl(ctl, met, met->u);
+
4110 read_met_ml2pl(ctl, met, met->v);
+
4111 read_met_ml2pl(ctl, met, met->w);
+
4112 read_met_ml2pl(ctl, met, met->h2o);
+
4113 read_met_ml2pl(ctl, met, met->o3);
+
4114 read_met_ml2pl(ctl, met, met->lwc);
+
4115 read_met_ml2pl(ctl, met, met->iwc);
+
4116 read_met_ml2pl(ctl, met, met->cc);
+
4117
+
4118 /* Set new pressure levels... */
+
4119 met->np = ctl->met_np;
+
4120 for (int ip = 0; ip < met->np; ip++)
+
4121 met->p[ip] = ctl->met_p[ip];
+
4122 }
+
4123
+
4124 /* Check ordering of pressure levels... */
+
4125 for (int ip = 1; ip < met->np; ip++)
+
4126 if (met->p[ip - 1] < met->p[ip])
+
4127 ERRMSG("Pressure levels must be descending!");
+
4128
+
4129}
+
4130
+
4131/*****************************************************************************/
+
4132
+ +
4134 ctl_t * ctl,
+
4135 met_t * met,
+
4136 float var[EX][EY][EP]) {
+
4137
+
4138 double aux[EP], p[EP];
+
4139
+
4140 /* Set timer... */
+
4141 SELECT_TIMER("READ_MET_ML2PL", "METPROC", NVTX_READ);
+
4142 LOG(2, "Interpolate meteo data to pressure levels...");
+
4143
+
4144 /* Loop over columns... */
+
4145#pragma omp parallel for default(shared) private(aux,p) collapse(2)
+
4146 for (int ix = 0; ix < met->nx; ix++)
+
4147 for (int iy = 0; iy < met->ny; iy++) {
+
4148
+
4149 /* Copy pressure profile... */
+
4150 for (int ip = 0; ip < met->np; ip++)
+
4151 p[ip] = met->pl[ix][iy][ip];
+
4152
+
4153 /* Interpolate... */
+
4154 for (int ip = 0; ip < ctl->met_np; ip++) {
+
4155 double pt = ctl->met_p[ip];
+
4156 if ((pt > p[0] && p[0] > p[1]) || (pt < p[0] && p[0] < p[1]))
+
4157 pt = p[0];
+
4158 else if ((pt > p[met->np - 1] && p[1] > p[0])
+
4159 || (pt < p[met->np - 1] && p[1] < p[0]))
+
4160 pt = p[met->np - 1];
+
4161 int ip2 = locate_irr(p, met->np, pt);
+
4162 aux[ip] = LIN(p[ip2], var[ix][iy][ip2],
+
4163 p[ip2 + 1], var[ix][iy][ip2 + 1], pt);
+
4164 }
+
4165
+
4166 /* Copy data... */
+
4167 for (int ip = 0; ip < ctl->met_np; ip++)
+
4168 var[ix][iy][ip] = (float) aux[ip];
+
4169 }
+
4170}
+
4171
+
4172/*****************************************************************************/
+
4173
+ +
4175 met_t * met) {
+
4176
+
4177 /* Create monotone zeta profiles... */
+
4178#pragma omp parallel for default(shared) collapse(2)
+
4179 for (int i = 0; i < met->nx; i++)
+
4180 for (int j = 0; j < met->ny; j++) {
+
4181 int k = 1;
+
4182
+
4183 while (k < met->npl) { /* Check if there is an inversion at level k... */
+
4184 if ((met->zetal[i][j][k - 1] >= met->zetal[i][j][k])) {
+
4185 /* Find the upper level k+l over the inversion... */
+
4186 int l = 0;
+
4187 do {
+
4188 l++;
+
4189 }
+
4190 while ((met->zetal[i][j][k - 1] >=
+
4191 met->zetal[i][j][k + l]) & (k + l < met->npl));
+
4192
+
4193 /* Interpolate linear between the top and bottom
+
4194 of the inversion... */
+
4195 float s =
+
4196 (float) (met->zetal[i][j][k + l] - met->zetal[i][j][k - 1])
+
4197 / (float) (met->hybrid[k + l] - met->hybrid[k - 1]);
+
4198
+
4199 for (int m = k; m < k + l; m++) {
+
4200 float d = (float) (met->hybrid[m] - met->hybrid[k - 1]);
+
4201 met->zetal[i][j][m] = s * d + met->zetal[i][j][k - 1];
+
4202 }
+
4203
+
4204 /* Search for more inversions above the last inversion ... */
+
4205 k = k + l;
+
4206 } else {
+
4207 k++;
+
4208 }
+
4209 }
+
4210 }
+
4211
+
4212 /* Create monotone pressure profiles... */
+
4213#pragma omp parallel for default(shared) collapse(2)
+
4214 for (int i = 0; i < met->nx; i++)
+
4215 for (int j = 0; j < met->ny; j++) {
+
4216 int k = 1;
+
4217
+
4218 while (k < met->npl) { /* Check if there is an inversion at level k... */
+
4219 if ((met->pl[i][j][k - 1] <= met->pl[i][j][k])) {
+
4220 /* Find the upper level k+l over the inversion... */
+
4221 int l = 0;
+
4222 do {
+
4223 l++;
+
4224 }
+
4225 while ((met->pl[i][j][k - 1] <= met->pl[i][j][k + l]) & (k + l <
+
4226 met->npl));
+
4227
+
4228 /* Interpolate linear between the top and bottom
+
4229 of the inversion... */
+
4230 float s = (float) (met->pl[i][j][k + l] - met->pl[i][j][k - 1])
+
4231 / (float) (met->hybrid[k + l] - met->hybrid[k - 1]);
+
4232
+
4233 for (int m = k; m < k + l; m++) {
+
4234 float d = (float) (met->hybrid[m] - met->hybrid[k - 1]);
+
4235 met->pl[i][j][m] = s * d + met->pl[i][j][k - 1];
+
4236 }
+
4237
+
4238 /* Search for more inversions above the last inversion ... */
+
4239 k = k + l;
+
4240 } else {
+
4241 k++;
+
4242 }
+
4243 }
+
4244 }
+
4245}
+
4246
+
4247/*****************************************************************************/
+
4248
+ +
4250 int ncid,
+
4251 char *varname,
+
4252 char *varname2,
+
4253 ctl_t * ctl,
+
4254 met_t * met,
+
4255 float dest[EX][EY],
+
4256 float scl,
+
4257 int init) {
+
4258
+
4259 char varsel[LEN];
+
4260
+
4261 float offset, scalfac;
+
4262
+
4263 int varid;
+
4264
+
4265 /* Check if variable exists... */
+
4266 if (nc_inq_varid(ncid, varname, &varid) != NC_NOERR)
+
4267 if (nc_inq_varid(ncid, varname2, &varid) != NC_NOERR) {
+
4268 WARN("Cannot read 2-D variable: %s or %s", varname, varname2);
+
4269 return 0;
+
4270 } else {
+
4271 sprintf(varsel, "%s", varname2);
+
4272 } else
+
4273 sprintf(varsel, "%s", varname);
+
4274
+
4275 /* Read packed data... */
+
4276 if (ctl->met_nc_scale
+
4277 && nc_get_att_float(ncid, varid, "add_offset", &offset) == NC_NOERR
+
4278 && nc_get_att_float(ncid, varid, "scale_factor",
+
4279 &scalfac) == NC_NOERR) {
+
4280
+
4281 /* Allocate... */
+
4282 short *help;
+
4283 ALLOC(help, short,
+
4284 EX * EY * EP);
+
4285
+
4286 /* Read fill value and missing value... */
+
4287 short fillval, missval;
+
4288 if (nc_get_att_short(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4289 fillval = 0;
+
4290 if (nc_get_att_short(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4291 missval = 0;
+
4292
+
4293 /* Write info... */
+
4294 LOG(2, "Read 2-D variable: %s"
+
4295 " (FILL = %d, MISS = %d, SCALE = %g, OFFSET = %g)",
+
4296 varsel, fillval, missval, scalfac, offset);
+
4297
+
4298 /* Read data... */
+
4299 NC(nc_get_var_short(ncid, varid, help));
+
4300
+
4301 /* Copy and check data... */
+
4302#pragma omp parallel for default(shared) num_threads(12)
+
4303 for (int ix = 0; ix < met->nx; ix++)
+
4304 for (int iy = 0; iy < met->ny; iy++) {
+
4305 if (init)
+
4306 dest[ix][iy] = 0;
+
4307 short aux = help[ARRAY_2D(iy, ix, met->nx)];
+
4308 if ((fillval == 0 || aux != fillval)
+
4309 && (missval == 0 || aux != missval)
+
4310 && fabsf(aux * scalfac + offset) < 1e14f)
+
4311 dest[ix][iy] += scl * (aux * scalfac + offset);
+
4312 else
+
4313 dest[ix][iy] = GSL_NAN;
+
4314 }
+
4315
+
4316 /* Free... */
+
4317 free(help);
+
4318 }
+
4319
+
4320 /* Unpacked data... */
+
4321 else {
+
4322
+
4323 /* Allocate... */
+
4324 float *help;
+
4325 ALLOC(help, float,
+
4326 EX * EY);
+
4327
+
4328 /* Read fill value and missing value... */
+
4329 float fillval, missval;
+
4330 if (nc_get_att_float(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4331 fillval = 0;
+
4332 if (nc_get_att_float(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4333 missval = 0;
+
4334
+
4335 /* Write info... */
+
4336 LOG(2, "Read 2-D variable: %s (FILL = %g, MISS = %g)",
+
4337 varsel, fillval, missval);
+
4338
+
4339 /* Read data... */
+
4340 NC(nc_get_var_float(ncid, varid, help));
+
4341
+
4342 /* Copy and check data... */
+
4343#pragma omp parallel for default(shared) num_threads(12)
+
4344 for (int ix = 0; ix < met->nx; ix++)
+
4345 for (int iy = 0; iy < met->ny; iy++) {
+
4346 if (init)
+
4347 dest[ix][iy] = 0;
+
4348 float aux = help[ARRAY_2D(iy, ix, met->nx)];
+
4349 if ((fillval == 0 || aux != fillval)
+
4350 && (missval == 0 || aux != missval)
+
4351 && fabsf(aux) < 1e14f)
+
4352 dest[ix][iy] += scl * aux;
+
4353 else
+
4354 dest[ix][iy] = GSL_NAN;
+
4355 }
+
4356
+
4357 /* Free... */
+
4358 free(help);
+
4359 }
+
4360
+
4361 /* Return... */
+
4362 return 1;
+
4363}
+
4364
+
4365/*****************************************************************************/
+
4366
+ +
4368 int ncid,
+
4369 char *varname,
+
4370 char *varname2,
+
4371 ctl_t * ctl,
+
4372 met_t * met,
+
4373 float dest[EX][EY][EP],
+
4374 float scl,
+
4375 int init) {
+
4376
+
4377 char varsel[LEN];
+
4378
+
4379 float offset, scalfac;
+
4380
+
4381 int varid;
+
4382
+
4383 /* Check if variable exists... */
+
4384 if (nc_inq_varid(ncid, varname, &varid) != NC_NOERR)
+
4385 if (nc_inq_varid(ncid, varname2, &varid) != NC_NOERR) {
+
4386 WARN("Cannot read 3-D variable: %s or %s", varname, varname2);
+
4387 return 0;
+
4388 } else {
+
4389 sprintf(varsel, "%s", varname2);
+
4390 } else
+
4391 sprintf(varsel, "%s", varname);
+
4392
+
4393 /* Read packed data... */
+
4394 if (ctl->met_nc_scale
+
4395 && nc_get_att_float(ncid, varid, "add_offset", &offset) == NC_NOERR
+
4396 && nc_get_att_float(ncid, varid, "scale_factor",
+
4397 &scalfac) == NC_NOERR) {
+
4398
+
4399 /* Allocate... */
+
4400 short *help;
+
4401 ALLOC(help, short,
+
4402 EX * EY * EP);
+
4403
+
4404 /* Read fill value and missing value... */
+
4405 short fillval, missval;
+
4406 if (nc_get_att_short(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4407 fillval = 0;
+
4408 if (nc_get_att_short(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4409 missval = 0;
+
4410
+
4411 /* Write info... */
+
4412 LOG(2, "Read 3-D variable: %s "
+
4413 "(FILL = %d, MISS = %d, SCALE = %g, OFFSET = %g)",
+
4414 varsel, fillval, missval, scalfac, offset);
+
4415
+
4416 /* Read data... */
+
4417 NC(nc_get_var_short(ncid, varid, help));
+
4418
+
4419 /* Copy and check data... */
+
4420#pragma omp parallel for default(shared) num_threads(12)
+
4421 for (int ix = 0; ix < met->nx; ix++)
+
4422 for (int iy = 0; iy < met->ny; iy++)
+
4423 for (int ip = 0; ip < met->np; ip++) {
+
4424 if (init)
+
4425 dest[ix][iy][ip] = 0;
+
4426 short aux = help[ARRAY_3D(ip, iy, met->ny, ix, met->nx)];
+
4427 if ((fillval == 0 || aux != fillval)
+
4428 && (missval == 0 || aux != missval)
+
4429 && fabsf(aux * scalfac + offset) < 1e14f)
+
4430 dest[ix][iy][ip] += scl * (aux * scalfac + offset);
+
4431 else
+
4432 dest[ix][iy][ip] = GSL_NAN;
+
4433 }
+
4434
+
4435 /* Free... */
+
4436 free(help);
+
4437 }
+
4438
+
4439 /* Unpacked data... */
+
4440 else {
+
4441
+
4442 /* Allocate... */
+
4443 float *help;
+
4444 ALLOC(help, float,
+
4445 EX * EY * EP);
+
4446
+
4447 /* Read fill value and missing value... */
+
4448 float fillval, missval;
+
4449 if (nc_get_att_float(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4450 fillval = 0;
+
4451 if (nc_get_att_float(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4452 missval = 0;
+
4453
+
4454 /* Write info... */
+
4455 LOG(2, "Read 3-D variable: %s (FILL = %g, MISS = %g)",
+
4456 varsel, fillval, missval);
+
4457
+
4458 /* Read data... */
+
4459 NC(nc_get_var_float(ncid, varid, help));
+
4460
+
4461 if (ctl->met_convention == 0) {
+
4462 /* Copy and check data... */
+
4463#pragma omp parallel for default(shared) num_threads(12)
+
4464 for (int ix = 0; ix < met->nx; ix++)
+
4465 for (int iy = 0; iy < met->ny; iy++)
+
4466 for (int ip = 0; ip < met->np; ip++) {
+
4467 if (init)
+
4468 dest[ix][iy][ip] = 0;
+
4469 float aux = help[ARRAY_3D(ip, iy, met->ny, ix, met->nx)];
+
4470 if ((fillval == 0 || aux != fillval)
+
4471 && (missval == 0 || aux != missval)
+
4472 && fabsf(aux) < 1e14f)
+
4473 dest[ix][iy][ip] += scl * aux;
+
4474 else
+
4475 dest[ix][iy][ip] = GSL_NAN;
+
4476 }
+
4477 } else {
+
4478 /* Copy and check data... */
+
4479#pragma omp parallel for default(shared) num_threads(12)
+
4480 for (int ip = 0; ip < met->np; ip++)
+
4481 for (int iy = 0; iy < met->ny; iy++)
+
4482 for (int ix = 0; ix < met->nx; ix++) {
+
4483 if (init)
+
4484 dest[ix][iy][ip] = 0;
+
4485 float aux = help[ARRAY_3D(ix, iy, met->ny, ip, met->np)];
+
4486 if ((fillval == 0 || aux != fillval)
+
4487 && (missval == 0 || aux != missval)
+
4488 && fabsf(aux) < 1e14f)
+
4489 dest[ix][iy][ip] += scl * aux;
+
4490 else
+
4491 dest[ix][iy][ip] = GSL_NAN;
+
4492 }
+
4493 }
+
4494
+
4495 /* Free... */
+
4496 free(help);
+
4497 }
+
4498
+
4499 /* Return... */
+
4500 return 1;
+
4501}
+
4502
+
4503/*****************************************************************************/
+
4504
+ +
4506 met_t * met) {
+
4507
+
4508 /* Set timer... */
+
4509 SELECT_TIMER("READ_MET_PBL", "METPROC", NVTX_READ);
+
4510 LOG(2, "Calculate planetary boundary layer...");
+
4511
+
4512 /* Parameters used to estimate the height of the PBL
+
4513 (e.g., Vogelezang and Holtslag, 1996; Seidel et al., 2012)... */
+
4514 const double rib_crit = 0.25, dz = 0.05, umin = 5.0;
+
4515
+
4516 /* Loop over grid points... */
+
4517#pragma omp parallel for default(shared) collapse(2)
+
4518 for (int ix = 0; ix < met->nx; ix++)
+
4519 for (int iy = 0; iy < met->ny; iy++) {
+
4520
+
4521 /* Set bottom level of PBL... */
+
4522 double pbl_bot = met->ps[ix][iy] + DZ2DP(dz, met->ps[ix][iy]);
+
4523
+
4524 /* Find lowest level near the bottom... */
+
4525 int ip;
+
4526 for (ip = 1; ip < met->np; ip++)
+
4527 if (met->p[ip] < pbl_bot)
+
4528 break;
+
4529
+
4530 /* Get near surface data... */
+
4531 double zs = LIN(met->p[ip - 1], met->z[ix][iy][ip - 1],
+
4532 met->p[ip], met->z[ix][iy][ip], pbl_bot);
+
4533 double ts = LIN(met->p[ip - 1], met->t[ix][iy][ip - 1],
+
4534 met->p[ip], met->t[ix][iy][ip], pbl_bot);
+
4535 double us = LIN(met->p[ip - 1], met->u[ix][iy][ip - 1],
+
4536 met->p[ip], met->u[ix][iy][ip], pbl_bot);
+
4537 double vs = LIN(met->p[ip - 1], met->v[ix][iy][ip - 1],
+
4538 met->p[ip], met->v[ix][iy][ip], pbl_bot);
+
4539 double h2os = LIN(met->p[ip - 1], met->h2o[ix][iy][ip - 1],
+
4540 met->p[ip], met->h2o[ix][iy][ip], pbl_bot);
+
4541 double tvs = THETAVIRT(pbl_bot, ts, h2os);
+
4542
+
4543 /* Init... */
+
4544 double rib_old = 0;
+
4545
+
4546 /* Loop over levels... */
+
4547 for (; ip < met->np; ip++) {
+
4548
+
4549 /* Get squared horizontal wind speed... */
+
4550 double vh2
+
4551 = SQR(met->u[ix][iy][ip] - us) + SQR(met->v[ix][iy][ip] - vs);
+
4552 vh2 = GSL_MAX(vh2, SQR(umin));
+
4553
+
4554 /* Calculate bulk Richardson number... */
+
4555 double rib = G0 * 1e3 * (met->z[ix][iy][ip] - zs) / tvs
+
4556 * (THETAVIRT(met->p[ip], met->t[ix][iy][ip],
+
4557 met->h2o[ix][iy][ip]) - tvs) / vh2;
+
4558
+
4559 /* Check for critical value... */
+
4560 if (rib >= rib_crit) {
+
4561 met->pbl[ix][iy] = (float) (LIN(rib_old, met->p[ip - 1],
+
4562 rib, met->p[ip], rib_crit));
+
4563 if (met->pbl[ix][iy] > pbl_bot)
+
4564 met->pbl[ix][iy] = (float) pbl_bot;
+
4565 break;
+
4566 }
+
4567
+
4568 /* Save Richardson number... */
+
4569 rib_old = rib;
+
4570 }
+
4571 }
+
4572}
+
4573
+
4574/*****************************************************************************/
+
4575
+ +
4577 met_t * met) {
+
4578
+
4579 /* Set timer... */
+
4580 SELECT_TIMER("READ_MET_PERIODIC", "METPROC", NVTX_READ);
+
4581 LOG(2, "Apply periodic boundary conditions...");
+
4582
+
4583 /* Check longitudes... */
+
4584 if (!(fabs(met->lon[met->nx - 1] - met->lon[0]
+
4585 + met->lon[1] - met->lon[0] - 360) < 0.01))
+
4586 return;
+
4587
+
4588 /* Increase longitude counter... */
+
4589 if ((++met->nx) > EX)
+
4590 ERRMSG("Cannot create periodic boundary conditions!");
+
4591
+
4592 /* Set longitude... */
+
4593 met->lon[met->nx - 1] = met->lon[met->nx - 2] + met->lon[1] - met->lon[0];
+
4594
+
4595 /* Loop over latitudes and pressure levels... */
+
4596#pragma omp parallel for default(shared)
+
4597 for (int iy = 0; iy < met->ny; iy++) {
+
4598 met->ps[met->nx - 1][iy] = met->ps[0][iy];
+
4599 met->zs[met->nx - 1][iy] = met->zs[0][iy];
+
4600 met->ts[met->nx - 1][iy] = met->ts[0][iy];
+
4601 met->us[met->nx - 1][iy] = met->us[0][iy];
+
4602 met->vs[met->nx - 1][iy] = met->vs[0][iy];
+
4603 met->lsm[met->nx - 1][iy] = met->lsm[0][iy];
+
4604 met->sst[met->nx - 1][iy] = met->sst[0][iy];
+
4605 for (int ip = 0; ip < met->np; ip++) {
+
4606 met->t[met->nx - 1][iy][ip] = met->t[0][iy][ip];
+
4607 met->u[met->nx - 1][iy][ip] = met->u[0][iy][ip];
+
4608 met->v[met->nx - 1][iy][ip] = met->v[0][iy][ip];
+
4609 met->w[met->nx - 1][iy][ip] = met->w[0][iy][ip];
+
4610 met->h2o[met->nx - 1][iy][ip] = met->h2o[0][iy][ip];
+
4611 met->o3[met->nx - 1][iy][ip] = met->o3[0][iy][ip];
+
4612 met->lwc[met->nx - 1][iy][ip] = met->lwc[0][iy][ip];
+
4613 met->iwc[met->nx - 1][iy][ip] = met->iwc[0][iy][ip];
+
4614 met->cc[met->nx - 1][iy][ip] = met->cc[0][iy][ip];
+
4615 met->patp[met->nx - 1][iy][ip] = met->patp[0][iy][ip];
+
4616 }
+
4617 for (int ip = 0; ip < met->npl; ip++) {
+
4618 met->ul[met->nx - 1][iy][ip] = met->ul[0][iy][ip];
+
4619 met->vl[met->nx - 1][iy][ip] = met->vl[0][iy][ip];
+
4620 met->pl[met->nx - 1][iy][ip] = met->pl[0][iy][ip];
+
4621 met->zetal[met->nx - 1][iy][ip] = met->zetal[0][iy][ip];
+
4622 met->zeta_dotl[met->nx - 1][iy][ip] = met->zeta_dotl[0][iy][ip];
+
4623 }
+
4624 }
+
4625}
+
4626
+
4627/*****************************************************************************/
+
4628
+ +
4630 met_t * met) {
+
4631
+
4632 double pows[EP];
+
4633
+
4634 /* Set timer... */
+
4635 SELECT_TIMER("READ_MET_PV", "METPROC", NVTX_READ);
+
4636 LOG(2, "Calculate potential vorticity...");
+
4637
+
4638 /* Set powers... */
+
4639#pragma omp parallel for default(shared)
+
4640 for (int ip = 0; ip < met->np; ip++)
+
4641 pows[ip] = pow(1000. / met->p[ip], 0.286);
+
4642
+
4643 /* Loop over grid points... */
+
4644#pragma omp parallel for default(shared)
+
4645 for (int ix = 0; ix < met->nx; ix++) {
+
4646
+
4647 /* Set indices... */
+
4648 int ix0 = GSL_MAX(ix - 1, 0);
+
4649 int ix1 = GSL_MIN(ix + 1, met->nx - 1);
+
4650
+
4651 /* Loop over grid points... */
+
4652 for (int iy = 0; iy < met->ny; iy++) {
+
4653
+
4654 /* Set indices... */
+
4655 int iy0 = GSL_MAX(iy - 1, 0);
+
4656 int iy1 = GSL_MIN(iy + 1, met->ny - 1);
+
4657
+
4658 /* Set auxiliary variables... */
+
4659 double latr = 0.5 * (met->lat[iy1] + met->lat[iy0]);
+
4660 double dx = 1000. * DEG2DX(met->lon[ix1] - met->lon[ix0], latr);
+
4661 double dy = 1000. * DEG2DY(met->lat[iy1] - met->lat[iy0]);
+
4662 double c0 = cos(met->lat[iy0] / 180. * M_PI);
+
4663 double c1 = cos(met->lat[iy1] / 180. * M_PI);
+
4664 double cr = cos(latr / 180. * M_PI);
+
4665 double vort = 2 * 7.2921e-5 * sin(latr * M_PI / 180.);
+
4666
+
4667 /* Loop over grid points... */
+
4668 for (int ip = 0; ip < met->np; ip++) {
+
4669
+
4670 /* Get gradients in longitude... */
+
4671 double dtdx
+
4672 = (met->t[ix1][iy][ip] - met->t[ix0][iy][ip]) * pows[ip] / dx;
+
4673 double dvdx = (met->v[ix1][iy][ip] - met->v[ix0][iy][ip]) / dx;
+
4674
+
4675 /* Get gradients in latitude... */
+
4676 double dtdy
+
4677 = (met->t[ix][iy1][ip] - met->t[ix][iy0][ip]) * pows[ip] / dy;
+
4678 double dudy
+
4679 = (met->u[ix][iy1][ip] * c1 - met->u[ix][iy0][ip] * c0) / dy;
+
4680
+
4681 /* Set indices... */
+
4682 int ip0 = GSL_MAX(ip - 1, 0);
+
4683 int ip1 = GSL_MIN(ip + 1, met->np - 1);
+
4684
+
4685 /* Get gradients in pressure... */
+
4686 double dtdp, dudp, dvdp;
+
4687 double dp0 = 100. * (met->p[ip] - met->p[ip0]);
+
4688 double dp1 = 100. * (met->p[ip1] - met->p[ip]);
+
4689 if (ip != ip0 && ip != ip1) {
+
4690 double denom = dp0 * dp1 * (dp0 + dp1);
+
4691 dtdp = (dp0 * dp0 * met->t[ix][iy][ip1] * pows[ip1]
+
4692 - dp1 * dp1 * met->t[ix][iy][ip0] * pows[ip0]
+
4693 + (dp1 * dp1 - dp0 * dp0) * met->t[ix][iy][ip] * pows[ip])
+
4694 / denom;
+
4695 dudp = (dp0 * dp0 * met->u[ix][iy][ip1]
+
4696 - dp1 * dp1 * met->u[ix][iy][ip0]
+
4697 + (dp1 * dp1 - dp0 * dp0) * met->u[ix][iy][ip])
+
4698 / denom;
+
4699 dvdp = (dp0 * dp0 * met->v[ix][iy][ip1]
+
4700 - dp1 * dp1 * met->v[ix][iy][ip0]
+
4701 + (dp1 * dp1 - dp0 * dp0) * met->v[ix][iy][ip])
+
4702 / denom;
+
4703 } else {
+
4704 double denom = dp0 + dp1;
+
4705 dtdp =
+
4706 (met->t[ix][iy][ip1] * pows[ip1] -
+
4707 met->t[ix][iy][ip0] * pows[ip0]) / denom;
+
4708 dudp = (met->u[ix][iy][ip1] - met->u[ix][iy][ip0]) / denom;
+
4709 dvdp = (met->v[ix][iy][ip1] - met->v[ix][iy][ip0]) / denom;
+
4710 }
+
4711
+
4712 /* Calculate PV... */
+
4713 met->pv[ix][iy][ip] = (float)
+
4714 (1e6 * G0 *
+
4715 (-dtdp * (dvdx - dudy / cr + vort) + dvdp * dtdx - dudp * dtdy));
+
4716 }
+
4717 }
+
4718 }
+
4719
+
4720 /* Fix for polar regions... */
+
4721#pragma omp parallel for default(shared)
+
4722 for (int ix = 0; ix < met->nx; ix++)
+
4723 for (int ip = 0; ip < met->np; ip++) {
+
4724 met->pv[ix][0][ip]
+
4725 = met->pv[ix][1][ip]
+
4726 = met->pv[ix][2][ip];
+
4727 met->pv[ix][met->ny - 1][ip]
+
4728 = met->pv[ix][met->ny - 2][ip]
+
4729 = met->pv[ix][met->ny - 3][ip];
+
4730 }
+
4731}
+
4732
+
4733/*****************************************************************************/
+
4734
+ +
4736 met_t * met) {
+
4737
+
4738 /* Set timer... */
+
4739 SELECT_TIMER("READ_MET_OZONE", "METPROC", NVTX_READ);
+
4740 LOG(2, "Calculate total column ozone...");
+
4741
+
4742 /* Loop over columns... */
+
4743#pragma omp parallel for default(shared) collapse(2)
+
4744 for (int ix = 0; ix < met->nx; ix++)
+
4745 for (int iy = 0; iy < met->ny; iy++) {
+
4746
+
4747 /* Integrate... */
+
4748 double cd = 0;
+
4749 for (int ip = 1; ip < met->np; ip++)
+
4750 if (met->p[ip - 1] <= met->ps[ix][iy]) {
+
4751 double vmr = 0.5 * (met->o3[ix][iy][ip - 1] + met->o3[ix][iy][ip]);
+
4752 double dp = met->p[ip - 1] - met->p[ip];
+
4753 cd += vmr * MO3 / MA * dp * 1e2 / G0;
+
4754 }
+
4755
+
4756 /* Convert to Dobson units... */
+
4757 met->o3c[ix][iy] = (float) (cd / 2.1415e-5);
+
4758 }
+
4759}
+
4760
+
4761/*****************************************************************************/
+
4762
+ +
4764 ctl_t * ctl,
+
4765 met_t * met) {
+
4766
+
4767 met_t *help;
+
4768
+
4769 /* Check parameters... */
+
4770 if (ctl->met_dp <= 1 && ctl->met_dx <= 1 && ctl->met_dy <= 1
+
4771 && ctl->met_sp <= 1 && ctl->met_sx <= 1 && ctl->met_sy <= 1)
+
4772 return;
+
4773
+
4774 /* Set timer... */
+
4775 SELECT_TIMER("READ_MET_SAMPLE", "METPROC", NVTX_READ);
+
4776 LOG(2, "Downsampling of meteo data...");
+
4777
+
4778 /* Allocate... */
+
4779 ALLOC(help, met_t, 1);
+
4780
+
4781 /* Copy data... */
+
4782 help->nx = met->nx;
+
4783 help->ny = met->ny;
+
4784 help->np = met->np;
+
4785 memcpy(help->lon, met->lon, sizeof(met->lon));
+
4786 memcpy(help->lat, met->lat, sizeof(met->lat));
+
4787 memcpy(help->p, met->p, sizeof(met->p));
+
4788
+
4789 /* Smoothing... */
+
4790 for (int ix = 0; ix < met->nx; ix += ctl->met_dx) {
+
4791 for (int iy = 0; iy < met->ny; iy += ctl->met_dy) {
+
4792 for (int ip = 0; ip < met->np; ip += ctl->met_dp) {
+
4793 help->ps[ix][iy] = 0;
+
4794 help->zs[ix][iy] = 0;
+
4795 help->ts[ix][iy] = 0;
+
4796 help->us[ix][iy] = 0;
+
4797 help->vs[ix][iy] = 0;
+
4798 help->lsm[ix][iy] = 0;
+
4799 help->sst[ix][iy] = 0;
+
4800 help->t[ix][iy][ip] = 0;
+
4801 help->u[ix][iy][ip] = 0;
+
4802 help->v[ix][iy][ip] = 0;
+
4803 help->w[ix][iy][ip] = 0;
+
4804 help->h2o[ix][iy][ip] = 0;
+
4805 help->o3[ix][iy][ip] = 0;
+
4806 help->lwc[ix][iy][ip] = 0;
+
4807 help->iwc[ix][iy][ip] = 0;
+
4808 help->cc[ix][iy][ip] = 0;
+
4809 float wsum = 0;
+
4810 for (int ix2 = ix - ctl->met_sx + 1; ix2 <= ix + ctl->met_sx - 1;
+
4811 ix2++) {
+
4812 int ix3 = ix2;
+
4813 if (ix3 < 0)
+
4814 ix3 += met->nx;
+
4815 else if (ix3 >= met->nx)
+
4816 ix3 -= met->nx;
+
4817
+
4818 for (int iy2 = GSL_MAX(iy - ctl->met_sy + 1, 0);
+
4819 iy2 <= GSL_MIN(iy + ctl->met_sy - 1, met->ny - 1); iy2++)
+
4820 for (int ip2 = GSL_MAX(ip - ctl->met_sp + 1, 0);
+
4821 ip2 <= GSL_MIN(ip + ctl->met_sp - 1, met->np - 1); ip2++) {
+
4822 float w = (1.0f - (float) abs(ix - ix2) / (float) ctl->met_sx)
+
4823 * (1.0f - (float) abs(iy - iy2) / (float) ctl->met_sy)
+
4824 * (1.0f - (float) abs(ip - ip2) / (float) ctl->met_sp);
+
4825 help->ps[ix][iy] += w * met->ps[ix3][iy2];
+
4826 help->zs[ix][iy] += w * met->zs[ix3][iy2];
+
4827 help->ts[ix][iy] += w * met->ts[ix3][iy2];
+
4828 help->us[ix][iy] += w * met->us[ix3][iy2];
+
4829 help->vs[ix][iy] += w * met->vs[ix3][iy2];
+
4830 help->lsm[ix][iy] += w * met->lsm[ix3][iy2];
+
4831 help->sst[ix][iy] += w * met->sst[ix3][iy2];
+
4832 help->t[ix][iy][ip] += w * met->t[ix3][iy2][ip2];
+
4833 help->u[ix][iy][ip] += w * met->u[ix3][iy2][ip2];
+
4834 help->v[ix][iy][ip] += w * met->v[ix3][iy2][ip2];
+
4835 help->w[ix][iy][ip] += w * met->w[ix3][iy2][ip2];
+
4836 help->h2o[ix][iy][ip] += w * met->h2o[ix3][iy2][ip2];
+
4837 help->o3[ix][iy][ip] += w * met->o3[ix3][iy2][ip2];
+
4838 help->lwc[ix][iy][ip] += w * met->lwc[ix3][iy2][ip2];
+
4839 help->iwc[ix][iy][ip] += w * met->iwc[ix3][iy2][ip2];
+
4840 help->cc[ix][iy][ip] += w * met->cc[ix3][iy2][ip2];
+
4841 wsum += w;
+
4842 }
+
4843 }
+
4844 help->ps[ix][iy] /= wsum;
+
4845 help->zs[ix][iy] /= wsum;
+
4846 help->ts[ix][iy] /= wsum;
+
4847 help->us[ix][iy] /= wsum;
+
4848 help->vs[ix][iy] /= wsum;
+
4849 help->lsm[ix][iy] /= wsum;
+
4850 help->sst[ix][iy] /= wsum;
+
4851 help->t[ix][iy][ip] /= wsum;
+
4852 help->u[ix][iy][ip] /= wsum;
+
4853 help->v[ix][iy][ip] /= wsum;
+
4854 help->w[ix][iy][ip] /= wsum;
+
4855 help->h2o[ix][iy][ip] /= wsum;
+
4856 help->o3[ix][iy][ip] /= wsum;
+
4857 help->lwc[ix][iy][ip] /= wsum;
+
4858 help->iwc[ix][iy][ip] /= wsum;
+
4859 help->cc[ix][iy][ip] /= wsum;
+
4860 }
+
4861 }
+
4862 }
+
4863
+
4864 /* Downsampling... */
+
4865 met->nx = 0;
+
4866 for (int ix = 0; ix < help->nx; ix += ctl->met_dx) {
+
4867 met->lon[met->nx] = help->lon[ix];
+
4868 met->ny = 0;
+
4869 for (int iy = 0; iy < help->ny; iy += ctl->met_dy) {
+
4870 met->lat[met->ny] = help->lat[iy];
+
4871 met->ps[met->nx][met->ny] = help->ps[ix][iy];
+
4872 met->zs[met->nx][met->ny] = help->zs[ix][iy];
+
4873 met->ts[met->nx][met->ny] = help->ts[ix][iy];
+
4874 met->us[met->nx][met->ny] = help->us[ix][iy];
+
4875 met->vs[met->nx][met->ny] = help->vs[ix][iy];
+
4876 met->lsm[met->nx][met->ny] = help->lsm[ix][iy];
+
4877 met->sst[met->nx][met->ny] = help->sst[ix][iy];
+
4878 met->np = 0;
+
4879 for (int ip = 0; ip < help->np; ip += ctl->met_dp) {
+
4880 met->p[met->np] = help->p[ip];
+
4881 met->t[met->nx][met->ny][met->np] = help->t[ix][iy][ip];
+
4882 met->u[met->nx][met->ny][met->np] = help->u[ix][iy][ip];
+
4883 met->v[met->nx][met->ny][met->np] = help->v[ix][iy][ip];
+
4884 met->w[met->nx][met->ny][met->np] = help->w[ix][iy][ip];
+
4885 met->h2o[met->nx][met->ny][met->np] = help->h2o[ix][iy][ip];
+
4886 met->o3[met->nx][met->ny][met->np] = help->o3[ix][iy][ip];
+
4887 met->lwc[met->nx][met->ny][met->np] = help->lwc[ix][iy][ip];
+
4888 met->iwc[met->nx][met->ny][met->np] = help->iwc[ix][iy][ip];
+
4889 met->cc[met->nx][met->ny][met->np] = help->cc[ix][iy][ip];
+
4890 met->np++;
+
4891 }
+
4892 met->ny++;
+
4893 }
+
4894 met->nx++;
+
4895 }
+
4896
+
4897 /* Free... */
+
4898 free(help);
+
4899}
+
4900
+
4901/*****************************************************************************/
+
4902
+ +
4904 int ncid,
+
4905 met_t * met,
+
4906 ctl_t * ctl) {
+
4907
+
4908 /* Set timer... */
+
4909 SELECT_TIMER("READ_MET_SURFACE", "INPUT", NVTX_READ);
+
4910 LOG(2, "Read surface data...");
+
4911
+
4912 /* MPTRAC meteo data... */
+
4913 if (ctl->clams_met_data == 0) {
+
4914
+
4915 /* Read surface pressure... */
+
4916 if (!read_met_nc_2d(ncid, "lnsp", "LNSP", ctl, met, met->ps, 1.0f, 1)) {
+
4917 if (!read_met_nc_2d(ncid, "ps", "PS", ctl, met, met->ps, 0.01f, 1)) {
+
4918 if (!read_met_nc_2d(ncid, "sp", "SP", ctl, met, met->ps, 0.01f, 1)) {
+
4919 WARN("Cannot not read surface pressure data (use lowest level)!");
+
4920 for (int ix = 0; ix < met->nx; ix++)
+
4921 for (int iy = 0; iy < met->ny; iy++)
+
4922 met->ps[ix][iy] = (float) met->p[0];
+
4923 }
+
4924 }
+
4925 } else
+
4926 for (int ix = 0; ix < met->nx; ix++)
+
4927 for (int iy = 0; iy < met->ny; iy++)
+
4928 met->ps[ix][iy] = (float) (exp(met->ps[ix][iy]) / 100.);
+
4929
+
4930 /* Read geopotential height at the surface... */
+
4931 if (!read_met_nc_2d
+
4932 (ncid, "z", "Z", ctl, met, met->zs, (float) (1. / (1000. * G0)), 1))
+
4933 if (!read_met_nc_2d
+
4934 (ncid, "zm", "ZM", ctl, met, met->zs, (float) (1. / 1000.), 1))
+
4935 WARN("Cannot read surface geopotential height!");
+
4936
+
4937 /* Read temperature at the surface... */
+
4938 if (!read_met_nc_2d(ncid, "t2m", "T2M", ctl, met, met->ts, 1.0, 1))
+
4939 WARN("Cannot read surface temperature!");
+
4940
+
4941 /* Read zonal wind at the surface... */
+
4942 if (!read_met_nc_2d(ncid, "u10m", "U10M", ctl, met, met->us, 1.0, 1))
+
4943 WARN("Cannot read surface zonal wind!");
+
4944
+
4945 /* Read meridional wind at the surface... */
+
4946 if (!read_met_nc_2d(ncid, "v10m", "V10M", ctl, met, met->vs, 1.0, 1))
+
4947 WARN("Cannot read surface meridional wind!");
+
4948
+
4949 /* Read land-sea mask... */
+
4950 if (!read_met_nc_2d(ncid, "lsm", "LSM", ctl, met, met->lsm, 1.0, 1))
+
4951 WARN("Cannot read land-sea mask!");
+
4952
+
4953 /* Read sea surface temperature... */
+
4954 if (!read_met_nc_2d(ncid, "sstk", "SSTK", ctl, met, met->sst, 1.0, 1))
+
4955 WARN("Cannot read sea surface temperature!");
+
4956 }
+
4957
+
4958 /* CLaMS meteo data... */
+
4959 else {
+
4960
+
4961 /* Read surface pressure... */
+
4962 if (!read_met_nc_2d(ncid, "ps", "PS", ctl, met, met->ps, 0.01f, 1)) {
+
4963 WARN("Cannot not read surface pressure data (use lowest level)!");
+
4964 for (int ix = 0; ix < met->nx; ix++)
+
4965 for (int iy = 0; iy < met->ny; iy++)
+
4966 met->ps[ix][iy] = (float) met->p[0];
+
4967 }
+
4968
+
4969 /* Read geopotential height at the surface
+
4970 (use lowermost level of 3-D data field)... */
+
4971 float *help;
+
4972 ALLOC(help, float,
+
4973 EX * EY * EP);
+
4974 memcpy(help, met->pl, sizeof(met->pl));
+
4975 if (!read_met_nc_3d
+
4976 (ncid, "gph", "GPH", ctl, met, met->pl, (float) (1e-3 / G0), 1)) {
+
4977 ERRMSG("Cannot read geopotential height!");
+
4978 } else
+
4979 for (int ix = 0; ix < met->nx; ix++)
+
4980 for (int iy = 0; iy < met->ny; iy++)
+
4981 met->zs[ix][iy] = met->pl[ix][iy][0];
+
4982 memcpy(met->pl, help, sizeof(met->pl));
+
4983 free(help);
+
4984
+
4985 /* Read temperature at the surface... */
+
4986 if (!read_met_nc_2d(ncid, "t2", "T2", ctl, met, met->ts, 1.0, 1))
+
4987 WARN("Cannot read surface temperature!");
+
4988
+
4989 /* Read zonal wind at the surface... */
+
4990 if (!read_met_nc_2d(ncid, "u10", "U10", ctl, met, met->us, 1.0, 1))
+
4991 WARN("Cannot read surface zonal wind!");
+
4992
+
4993 /* Read meridional wind at the surface... */
+
4994 if (!read_met_nc_2d(ncid, "v10", "V10", ctl, met, met->vs, 1.0, 1))
+
4995 WARN("Cannot read surface meridional wind!");
+
4996
+
4997 /* Read land-sea mask... */
+
4998 if (!read_met_nc_2d(ncid, "lsm", "LSM", ctl, met, met->lsm, 1.0, 1))
+
4999 WARN("Cannot read land-sea mask!");
+
5000
+
5001 /* Read sea surface temperature... */
+
5002 if (!read_met_nc_2d(ncid, "sstk", "SSTK", ctl, met, met->sst, 1.0, 1))
+
5003 WARN("Cannot read sea surface temperature!");
+
5004 }
+
5005}
+
5006
+
5007/*****************************************************************************/
+
5008
+ +
5010 ctl_t * ctl,
+
5011 clim_t * clim,
+
5012 met_t * met) {
+
5013
+
5014 double p2[200], pv[EP], pv2[200], t[EP], t2[200], th[EP],
+
5015 th2[200], z[EP], z2[200];
+
5016
+
5017 /* Set timer... */
+
5018 SELECT_TIMER("READ_MET_TROPO", "METPROC", NVTX_READ);
+
5019 LOG(2, "Calculate tropopause...");
+
5020
+
5021 /* Get altitude and pressure profiles... */
+
5022#pragma omp parallel for default(shared)
+
5023 for (int iz = 0; iz < met->np; iz++)
+
5024 z[iz] = Z(met->p[iz]);
+
5025#pragma omp parallel for default(shared)
+
5026 for (int iz = 0; iz <= 190; iz++) {
+
5027 z2[iz] = 4.5 + 0.1 * iz;
+
5028 p2[iz] = P(z2[iz]);
+
5029 }
+
5030
+
5031 /* Do not calculate tropopause... */
+
5032 if (ctl->met_tropo == 0)
+
5033#pragma omp parallel for default(shared) collapse(2)
+
5034 for (int ix = 0; ix < met->nx; ix++)
+
5035 for (int iy = 0; iy < met->ny; iy++)
+
5036 met->pt[ix][iy] = GSL_NAN;
+
5037
+
5038 /* Use tropopause climatology... */
+
5039 else if (ctl->met_tropo == 1) {
+
5040#pragma omp parallel for default(shared) collapse(2)
+
5041 for (int ix = 0; ix < met->nx; ix++)
+
5042 for (int iy = 0; iy < met->ny; iy++)
+
5043 met->pt[ix][iy] = (float) clim_tropo(clim, met->time, met->lat[iy]);
+
5044 }
+
5045
+
5046 /* Use cold point... */
+
5047 else if (ctl->met_tropo == 2) {
+
5048
+
5049 /* Loop over grid points... */
+
5050#pragma omp parallel for default(shared) private(t,t2) collapse(2)
+
5051 for (int ix = 0; ix < met->nx; ix++)
+
5052 for (int iy = 0; iy < met->ny; iy++) {
+
5053
+
5054 /* Interpolate temperature profile... */
+
5055 for (int iz = 0; iz < met->np; iz++)
+
5056 t[iz] = met->t[ix][iy][iz];
+
5057 spline(z, t, met->np, z2, t2, 171, ctl->met_tropo_spline);
+
5058
+
5059 /* Find minimum... */
+
5060 int iz = (int) gsl_stats_min_index(t2, 1, 171);
+
5061 if (iz > 0 && iz < 170)
+
5062 met->pt[ix][iy] = (float) p2[iz];
+
5063 else
+
5064 met->pt[ix][iy] = GSL_NAN;
+
5065 }
+
5066 }
+
5067
+
5068 /* Use WMO definition... */
+
5069 else if (ctl->met_tropo == 3 || ctl->met_tropo == 4) {
+
5070
+
5071 /* Loop over grid points... */
+
5072#pragma omp parallel for default(shared) private(t,t2) collapse(2)
+
5073 for (int ix = 0; ix < met->nx; ix++)
+
5074 for (int iy = 0; iy < met->ny; iy++) {
+
5075
+
5076 /* Interpolate temperature profile... */
+
5077 int iz;
+
5078 for (iz = 0; iz < met->np; iz++)
+
5079 t[iz] = met->t[ix][iy][iz];
+
5080 spline(z, t, met->np, z2, t2, 191, ctl->met_tropo_spline);
+
5081
+
5082 /* Find 1st tropopause... */
+
5083 met->pt[ix][iy] = GSL_NAN;
+
5084 for (iz = 0; iz <= 170; iz++) {
+
5085 int found = 1;
+
5086 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev; iz2++)
+
5087 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) >
+
5088 ctl->met_tropo_lapse) {
+
5089 found = 0;
+
5090 break;
+
5091 }
+
5092 if (found) {
+
5093 if (iz > 0 && iz < 170)
+
5094 met->pt[ix][iy] = (float) p2[iz];
+
5095 break;
+
5096 }
+
5097 }
+
5098
+
5099 /* Find 2nd tropopause... */
+
5100 if (ctl->met_tropo == 4) {
+
5101 met->pt[ix][iy] = GSL_NAN;
+
5102 for (; iz <= 170; iz++) {
+
5103 int found = 1;
+
5104 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev_sep; iz2++)
+
5105 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) <
+
5106 ctl->met_tropo_lapse_sep) {
+
5107 found = 0;
+
5108 break;
+
5109 }
+
5110 if (found)
+
5111 break;
+
5112 }
+
5113 for (; iz <= 170; iz++) {
+
5114 int found = 1;
+
5115 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev; iz2++)
+
5116 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) >
+
5117 ctl->met_tropo_lapse) {
+
5118 found = 0;
+
5119 break;
+
5120 }
+
5121 if (found) {
+
5122 if (iz > 0 && iz < 170)
+
5123 met->pt[ix][iy] = (float) p2[iz];
+
5124 break;
+
5125 }
+
5126 }
+
5127 }
+
5128 }
+
5129 }
+
5130
+
5131 /* Use dynamical tropopause... */
+
5132 else if (ctl->met_tropo == 5) {
+
5133
+
5134 /* Loop over grid points... */
+
5135#pragma omp parallel for default(shared) private(pv,pv2,th,th2) collapse(2)
+
5136 for (int ix = 0; ix < met->nx; ix++)
+
5137 for (int iy = 0; iy < met->ny; iy++) {
+
5138
+
5139 /* Interpolate potential vorticity profile... */
+
5140 for (int iz = 0; iz < met->np; iz++)
+
5141 pv[iz] = met->pv[ix][iy][iz];
+
5142 spline(z, pv, met->np, z2, pv2, 171, ctl->met_tropo_spline);
+
5143
+
5144 /* Interpolate potential temperature profile... */
+
5145 for (int iz = 0; iz < met->np; iz++)
+
5146 th[iz] = THETA(met->p[iz], met->t[ix][iy][iz]);
+
5147 spline(z, th, met->np, z2, th2, 171, ctl->met_tropo_spline);
+
5148
+
5149 /* Find dynamical tropopause... */
+
5150 met->pt[ix][iy] = GSL_NAN;
+
5151 for (int iz = 0; iz <= 170; iz++)
+
5152 if (fabs(pv2[iz]) >= ctl->met_tropo_pv
+
5153 || th2[iz] >= ctl->met_tropo_theta) {
+
5154 if (iz > 0 && iz < 170)
+
5155 met->pt[ix][iy] = (float) p2[iz];
+
5156 break;
+
5157 }
+
5158 }
+
5159 }
+
5160
+
5161 else
+
5162 ERRMSG("Cannot calculate tropopause!");
+
5163
+
5164 /* Interpolate temperature, geopotential height, and water vapor vmr... */
+
5165#pragma omp parallel for default(shared) collapse(2)
+
5166 for (int ix = 0; ix < met->nx; ix++)
+
5167 for (int iy = 0; iy < met->ny; iy++) {
+
5168 double h2ot, tt, zt;
+ +
5170 intpol_met_space_3d(met, met->t, met->pt[ix][iy], met->lon[ix],
+
5171 met->lat[iy], &tt, ci, cw, 1);
+
5172 intpol_met_space_3d(met, met->z, met->pt[ix][iy], met->lon[ix],
+
5173 met->lat[iy], &zt, ci, cw, 0);
+
5174 intpol_met_space_3d(met, met->h2o, met->pt[ix][iy], met->lon[ix],
+
5175 met->lat[iy], &h2ot, ci, cw, 0);
+
5176 met->tt[ix][iy] = (float) tt;
+
5177 met->zt[ix][iy] = (float) zt;
+
5178 met->h2ot[ix][iy] = (float) h2ot;
+
5179 }
+
5180}
+
5181
+
5182/*****************************************************************************/
+
5183
+ +
5185 char *filename,
+
5186 double *rt,
+
5187 double *rz,
+
5188 double *rlon,
+
5189 double *rlat,
+
5190 double *robs,
+
5191 int *nobs) {
+
5192
+
5193 /* Open observation data file... */
+
5194 FILE *in;
+
5195 LOG(1, "Read observation data: %s", filename);
+
5196 if (!(in = fopen(filename, "r")))
+
5197 ERRMSG("Cannot open file!");
+
5198
+
5199 /* Read observations... */
+
5200 char line[LEN];
+
5201 while (fgets(line, LEN, in))
+
5202 if (sscanf(line, "%lg %lg %lg %lg %lg", &rt[*nobs], &rz[*nobs],
+
5203 &rlon[*nobs], &rlat[*nobs], &robs[*nobs]) == 5)
+
5204 if ((++(*nobs)) >= NOBS)
+
5205 ERRMSG("Too many observations!");
+
5206
+
5207 /* Close observation data file... */
+
5208 fclose(in);
+
5209
+
5210 /* Check time... */
+
5211 for (int i = 1; i < *nobs; i++)
+
5212 if (rt[i] < rt[i - 1])
+
5213 ERRMSG("Time must be ascending!");
+
5214
+
5215 /* Write info... */
+
5216 int n = *nobs;
+
5217 double mini, maxi;
+
5218 LOG(2, "Number of observations: %d", *nobs);
+
5219 gsl_stats_minmax(&mini, &maxi, rt, 1, (size_t) n);
+
5220 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
5221 gsl_stats_minmax(&mini, &maxi, rz, 1, (size_t) n);
+
5222 LOG(2, "Altitude range: %g ... %g km", mini, maxi);
+
5223 gsl_stats_minmax(&mini, &maxi, rlon, 1, (size_t) n);
+
5224 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
5225 gsl_stats_minmax(&mini, &maxi, rlat, 1, (size_t) n);
+
5226 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
5227 gsl_stats_minmax(&mini, &maxi, robs, 1, (size_t) n);
+
5228 LOG(2, "Observation range: %g ... %g", mini, maxi);
+
5229}
+
5230
+
5231/*****************************************************************************/
+
5232
+ +
5234 const char *filename,
+
5235 int argc,
+
5236 char *argv[],
+
5237 const char *varname,
+
5238 int arridx,
+
5239 const char *defvalue,
+
5240 char *value) {
+
5241
+
5242 FILE *in = NULL;
+
5243
+
5244 char fullname1[LEN], fullname2[LEN], rval[LEN];
+
5245
+
5246 int contain = 0, i;
+
5247
+
5248 /* Open file... */
+
5249 if (filename[strlen(filename) - 1] != '-')
+
5250 if (!(in = fopen(filename, "r")))
+
5251 ERRMSG("Cannot open file!");
+
5252
+
5253 /* Set full variable name... */
+
5254 if (arridx >= 0) {
+
5255 sprintf(fullname1, "%s[%d]", varname, arridx);
+
5256 sprintf(fullname2, "%s[*]", varname);
+
5257 } else {
+
5258 sprintf(fullname1, "%s", varname);
+
5259 sprintf(fullname2, "%s", varname);
+
5260 }
+
5261
+
5262 /* Read data... */
+
5263 if (in != NULL) {
+
5264 char dummy[LEN], line[LEN], rvarname[LEN];
+
5265 while (fgets(line, LEN, in)) {
+
5266 if (sscanf(line, "%4999s %4999s %4999s", rvarname, dummy, rval) == 3)
+
5267 if (strcasecmp(rvarname, fullname1) == 0 ||
+
5268 strcasecmp(rvarname, fullname2) == 0) {
+
5269 contain = 1;
+
5270 break;
+
5271 }
+
5272 }
+
5273 }
+
5274 for (i = 1; i < argc - 1; i++)
+
5275 if (strcasecmp(argv[i], fullname1) == 0 ||
+
5276 strcasecmp(argv[i], fullname2) == 0) {
+
5277 sprintf(rval, "%s", argv[i + 1]);
+
5278 contain = 1;
+
5279 break;
+
5280 }
+
5281
+
5282 /* Close file... */
+
5283 if (in != NULL)
+
5284 fclose(in);
+
5285
+
5286 /* Check for missing variables... */
+
5287 if (!contain) {
+
5288 if (strlen(defvalue) > 0)
+
5289 sprintf(rval, "%s", defvalue);
+
5290 else
+
5291 ERRMSG("Missing variable %s!\n", fullname1);
+
5292 }
+
5293
+
5294 /* Write info... */
+
5295 LOG(1, "%s = %s", fullname1, rval);
+
5296
+
5297 /* Return values... */
+
5298 if (value != NULL)
+
5299 sprintf(value, "%s", rval);
+
5300 return atof(rval);
+
5301}
+
5302
+
5303/*****************************************************************************/
+
5304
+
5305double sedi(
+
5306 const double p,
+
5307 const double T,
+
5308 const double rp,
+
5309 const double rhop) {
+
5310
+
5311 /* Convert particle radius from microns to m... */
+
5312 double rp_help = rp * 1e-6;
+
5313
+
5314 /* Density of dry air [kg / m^3]... */
+
5315 double rho = RHO(p, T);
+
5316
+
5317 /* Dynamic viscosity of air [kg / (m s)]... */
+
5318 double eta = 1.8325e-5 * (416.16 / (T + 120.)) * pow(T / 296.16, 1.5);
+
5319
+
5320 /* Thermal velocity of an air molecule [m / s]... */
+
5321 double v = sqrt(8. * KB * T / (M_PI * 4.8096e-26));
+
5322
+
5323 /* Mean free path of an air molecule [m]... */
+
5324 double lambda = 2. * eta / (rho * v);
+
5325
+
5326 /* Knudsen number for air (dimensionless)... */
+
5327 double K = lambda / rp_help;
+
5328
+
5329 /* Cunningham slip-flow correction (dimensionless)... */
+
5330 double G = 1. + K * (1.249 + 0.42 * exp(-0.87 / K));
+
5331
+
5332 /* Sedimentation velocity [m / s]... */
+
5333 return 2. * SQR(rp_help) * (rhop - rho) * G0 / (9. * eta) * G;
+
5334}
+
5335
+
5336/*****************************************************************************/
+
5337
+ +
5339 const double *x,
+
5340 const double *y,
+
5341 const int n,
+
5342 const double *x2,
+
5343 double *y2,
+
5344 const int n2,
+
5345 const int method) {
+
5346
+
5347 /* Cubic spline interpolation... */
+
5348 if (method == 1) {
+
5349
+
5350 /* Allocate... */
+
5351 gsl_interp_accel *acc;
+
5352 gsl_spline *s;
+
5353 acc = gsl_interp_accel_alloc();
+
5354 s = gsl_spline_alloc(gsl_interp_cspline, (size_t) n);
+
5355
+
5356 /* Interpolate profile... */
+
5357 gsl_spline_init(s, x, y, (size_t) n);
+
5358 for (int i = 0; i < n2; i++)
+
5359 if (x2[i] <= x[0])
+
5360 y2[i] = y[0];
+
5361 else if (x2[i] >= x[n - 1])
+
5362 y2[i] = y[n - 1];
+
5363 else
+
5364 y2[i] = gsl_spline_eval(s, x2[i], acc);
+
5365
+
5366 /* Free... */
+
5367 gsl_spline_free(s);
+
5368 gsl_interp_accel_free(acc);
+
5369 }
+
5370
+
5371 /* Linear interpolation... */
+
5372 else {
+
5373 for (int i = 0; i < n2; i++)
+
5374 if (x2[i] <= x[0])
+
5375 y2[i] = y[0];
+
5376 else if (x2[i] >= x[n - 1])
+
5377 y2[i] = y[n - 1];
+
5378 else {
+
5379 int idx = locate_irr(x, n, x2[i]);
+
5380 y2[i] = LIN(x[idx], y[idx], x[idx + 1], y[idx + 1], x2[i]);
+
5381 }
+
5382 }
+
5383}
+
5384
+
5385/*****************************************************************************/
+
5386
+ +
5388 const float *data,
+
5389 const int n) {
+
5390
+
5391 if (n <= 0)
+
5392 return 0;
+
5393
+
5394 float mean = 0, var = 0;
+
5395
+
5396 for (int i = 0; i < n; ++i) {
+
5397 mean += data[i];
+
5398 var += SQR(data[i]);
+
5399 }
+
5400
+
5401 var = var / (float) n - SQR(mean / (float) n);
+
5402
+
5403 return (var > 0 ? sqrtf(var) : 0);
+
5404}
+
5405
+
5406/*****************************************************************************/
+
5407
+ +
5409 const double sec,
+
5410 const double lon,
+
5411 const double lat) {
+
5412
+
5413 /* Number of days and fraction with respect to 2000-01-01T12:00Z... */
+
5414 const double D = sec / 86400 - 0.5;
+
5415
+
5416 /* Geocentric apparent ecliptic longitude [rad]... */
+
5417 const double g = (357.529 + 0.98560028 * D) * M_PI / 180;
+
5418 const double q = 280.459 + 0.98564736 * D;
+
5419 const double L = (q + 1.915 * sin(g) + 0.020 * sin(2 * g)) * M_PI / 180;
+
5420
+
5421 /* Mean obliquity of the ecliptic [rad]... */
+
5422 const double e = (23.439 - 0.00000036 * D) * M_PI / 180;
+
5423
+
5424 /* Declination [rad]... */
+
5425 const double sindec = sin(e) * sin(L);
+
5426
+
5427 /* Right ascension [rad]... */
+
5428 const double ra = atan2(cos(e) * sin(L), cos(L));
+
5429
+
5430 /* Greenwich Mean Sidereal Time [h]... */
+
5431 const double GMST = 18.697374558 + 24.06570982441908 * D;
+
5432
+
5433 /* Local Sidereal Time [h]... */
+
5434 const double LST = GMST + lon / 15;
+
5435
+
5436 /* Hour angle [rad]... */
+
5437 const double h = LST / 12 * M_PI - ra;
+
5438
+
5439 /* Convert latitude... */
+
5440 const double lat_help = lat * M_PI / 180;
+
5441
+
5442 /* Return solar zenith angle [rad]... */
+
5443 return acos(sin(lat_help) * sindec +
+
5444 cos(lat_help) * sqrt(1 - SQR(sindec)) * cos(h));
+
5445}
+
5446
+
5447/*****************************************************************************/
+
5448
+ +
5450 const int year,
+
5451 const int mon,
+
5452 const int day,
+
5453 const int hour,
+
5454 const int min,
+
5455 const int sec,
+
5456 const double remain,
+
5457 double *jsec) {
+
5458
+
5459 struct tm t0, t1;
+
5460
+
5461 t0.tm_year = 100;
+
5462 t0.tm_mon = 0;
+
5463 t0.tm_mday = 1;
+
5464 t0.tm_hour = 0;
+
5465 t0.tm_min = 0;
+
5466 t0.tm_sec = 0;
+
5467
+
5468 t1.tm_year = year - 1900;
+
5469 t1.tm_mon = mon - 1;
+
5470 t1.tm_mday = day;
+
5471 t1.tm_hour = hour;
+
5472 t1.tm_min = min;
+
5473 t1.tm_sec = sec;
+
5474
+
5475 *jsec = (double) timegm(&t1) - (double) timegm(&t0) + remain;
+
5476}
+
5477
+
5478/*****************************************************************************/
+
5479
+ +
5481 const char *name,
+
5482 const char *group,
+
5483 int output) {
+
5484
+
5485 static char names[NTIMER][100], groups[NTIMER][100];
+
5486
+
5487 static double rt_name[NTIMER], rt_group[NTIMER],
+
5488 rt_min[NTIMER], rt_max[NTIMER], dt, t0, t1;
+
5489
+
5490 static int iname = -1, igroup = -1, nname, ngroup, ct_name[NTIMER];
+
5491
+
5492 /* Get time... */
+
5493 t1 = omp_get_wtime();
+
5494 dt = t1 - t0;
+
5495
+
5496 /* Add elapsed time to current timers... */
+
5497 if (iname >= 0) {
+
5498 rt_name[iname] += dt;
+
5499 rt_min[iname] = (ct_name[iname] <= 0 ? dt : GSL_MIN(rt_min[iname], dt));
+
5500 rt_max[iname] = (ct_name[iname] <= 0 ? dt : GSL_MAX(rt_max[iname], dt));
+
5501 ct_name[iname]++;
+
5502 }
+
5503 if (igroup >= 0)
+
5504 rt_group[igroup] += t1 - t0;
+
5505
+
5506 /* Report timers... */
+
5507 if (output) {
+
5508 for (int i = 0; i < nname; i++)
+
5509 LOG(1, "TIMER_%s = %.3f s (min= %g s, mean= %g s,"
+
5510 " max= %g s, n= %d)", names[i], rt_name[i], rt_min[i],
+
5511 rt_name[i] / ct_name[i], rt_max[i], ct_name[i]);
+
5512 for (int i = 0; i < ngroup; i++)
+
5513 LOG(1, "TIMER_GROUP_%s = %.3f s", groups[i], rt_group[i]);
+
5514 double total = 0.0;
+
5515 for (int i = 0; i < nname; i++)
+
5516 total += rt_name[i];
+
5517 LOG(1, "TIMER_TOTAL = %.3f s", total);
+
5518 }
+
5519
+
5520 /* Identify IDs of next timer... */
+
5521 for (iname = 0; iname < nname; iname++)
+
5522 if (strcasecmp(name, names[iname]) == 0)
+
5523 break;
+
5524 for (igroup = 0; igroup < ngroup; igroup++)
+
5525 if (strcasecmp(group, groups[igroup]) == 0)
+
5526 break;
+
5527
+
5528 /* Check whether this is a new timer... */
+
5529 if (iname >= nname) {
+
5530 sprintf(names[iname], "%s", name);
+
5531 if ((++nname) > NTIMER)
+
5532 ERRMSG("Too many timers!");
+
5533 }
+
5534
+
5535 /* Check whether this is a new group... */
+
5536 if (igroup >= ngroup) {
+
5537 sprintf(groups[igroup], "%s", group);
+
5538 if ((++ngroup) > NTIMER)
+
5539 ERRMSG("Too many groups!");
+
5540 }
+
5541
+
5542 /* Save starting time... */
+
5543 t0 = t1;
+
5544}
+
5545
+
5546/*****************************************************************************/
+
5547
+ +
5549 const char *filename,
+
5550 int offset) {
+
5551
+
5552 char tstr[10];
+
5553
+
5554 double t;
+
5555
+
5556 /* Get time from filename... */
+
5557 int len = (int) strlen(filename);
+
5558 sprintf(tstr, "%.4s", &filename[len - offset]);
+
5559 int year = atoi(tstr);
+
5560 sprintf(tstr, "%.2s", &filename[len - offset + 5]);
+
5561 int mon = atoi(tstr);
+
5562 sprintf(tstr, "%.2s", &filename[len - offset + 8]);
+
5563 int day = atoi(tstr);
+
5564 sprintf(tstr, "%.2s", &filename[len - offset + 11]);
+
5565 int hour = atoi(tstr);
+
5566 sprintf(tstr, "%.2s", &filename[len - offset + 14]);
+
5567 int min = atoi(tstr);
+
5568
+
5569 /* Check time... */
+
5570 if (year < 1900 || year > 2100 || mon < 1 || mon > 12 || day < 1
+
5571 || day > 31 || hour < 0 || hour > 23 || min < 0 || min > 59)
+
5572 ERRMSG("Cannot read time from filename!");
+
5573
+
5574 /* Convert time to Julian seconds... */
+
5575 time2jsec(year, mon, day, hour, min, 0, 0.0, &t);
+
5576
+
5577 /* Return time... */
+
5578 return t;
+
5579}
+
5580
+
5581/*****************************************************************************/
+
5582
+ +
5584 const clim_t * clim,
+
5585 const double t,
+
5586 const double lat,
+
5587 const double p) {
+
5588
+
5589 /* Get tropopause pressure... */
+
5590 double pt = clim_tropo(clim, t, lat);
+
5591
+
5592 /* Get pressure range... */
+
5593 double p1 = pt * 0.866877899;
+
5594 double p0 = pt / 0.866877899;
+
5595
+
5596 /* Get weighting factor... */
+
5597 if (p > p0)
+
5598 return 1;
+
5599 else if (p < p1)
+
5600 return 0;
+
5601 else
+
5602 return LIN(p0, 1.0, p1, 0.0, p);
+
5603}
+
5604
+
5605/*****************************************************************************/
+
5606
+ +
5608 const char *filename,
+
5609 ctl_t * ctl,
+
5610 atm_t * atm,
+
5611 double t) {
+
5612
+
5613 /* Set timer... */
+
5614 SELECT_TIMER("WRITE_ATM", "OUTPUT", NVTX_WRITE);
+
5615
+
5616 /* Write info... */
+
5617 LOG(1, "Write atmospheric data: %s", filename);
+
5618
+
5619 /* Write ASCII data... */
+
5620 if (ctl->atm_type_out == 0)
+
5621 write_atm_asc(filename, ctl, atm, t);
+
5622
+
5623 /* Write binary data... */
+
5624 else if (ctl->atm_type_out == 1)
+
5625 write_atm_bin(filename, ctl, atm);
+
5626
+
5627 /* Write netCDF data... */
+
5628 else if (ctl->atm_type_out == 2)
+
5629 write_atm_nc(filename, ctl, atm);
+
5630
+
5631 /* Write CLaMS trajectory data... */
+
5632 else if (ctl->atm_type_out == 3)
+
5633 write_atm_clams_traj(filename, ctl, atm, t);
+
5634
+
5635 /* Write CLaMS pos data... */
+
5636 else if (ctl->atm_type_out == 4)
+
5637 write_atm_clams(filename, ctl, atm);
+
5638
+
5639 /* Error... */
+
5640 else
+
5641 ERRMSG("Atmospheric data type not supported!");
+
5642
+
5643 /* Write info... */
+
5644 double mini, maxi;
+
5645 LOG(2, "Number of particles: %d", atm->np);
+
5646 gsl_stats_minmax(&mini, &maxi, atm->time, 1, (size_t) atm->np);
+
5647 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
5648 gsl_stats_minmax(&mini, &maxi, atm->p, 1, (size_t) atm->np);
+
5649 LOG(2, "Altitude range: %g ... %g km", Z(maxi), Z(mini));
+
5650 LOG(2, "Pressure range: %g ... %g hPa", maxi, mini);
+
5651 gsl_stats_minmax(&mini, &maxi, atm->lon, 1, (size_t) atm->np);
+
5652 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
5653 gsl_stats_minmax(&mini, &maxi, atm->lat, 1, (size_t) atm->np);
+
5654 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
5655 for (int iq = 0; iq < ctl->nq; iq++) {
+
5656 char msg[LEN];
+
5657 sprintf(msg, "Quantity %s range: %s ... %s %s",
+
5658 ctl->qnt_name[iq], ctl->qnt_format[iq],
+
5659 ctl->qnt_format[iq], ctl->qnt_unit[iq]);
+
5660 gsl_stats_minmax(&mini, &maxi, atm->q[iq], 1, (size_t) atm->np);
+
5661 LOG(2, msg, mini, maxi);
+
5662 }
+
5663}
+
5664
+
5665/*****************************************************************************/
+
5666
+ +
5668 const char *filename,
+
5669 ctl_t * ctl,
+
5670 atm_t * atm,
+
5671 double t) {
+
5672
+
5673 FILE *out;
+
5674
+
5675 /* Set time interval for output... */
+
5676 double t0 = t - 0.5 * ctl->dt_mod;
+
5677 double t1 = t + 0.5 * ctl->dt_mod;
+
5678
+
5679 /* Check if gnuplot output is requested... */
+
5680 if (ctl->atm_gpfile[0] != '-') {
+
5681
+
5682 /* Create gnuplot pipe... */
+
5683 if (!(out = popen("gnuplot", "w")))
+
5684 ERRMSG("Cannot create pipe to gnuplot!");
+
5685
+
5686 /* Set plot filename... */
+
5687 fprintf(out, "set out \"%s.png\"\n", filename);
+
5688
+
5689 /* Set time string... */
+
5690 double r;
+
5691 int year, mon, day, hour, min, sec;
+
5692 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
5693 fprintf(out, "timestr=\"%d-%02d-%02d, %02d:%02d UTC\"\n",
+
5694 year, mon, day, hour, min);
+
5695
+
5696 /* Dump gnuplot file to pipe... */
+
5697 FILE *in;
+
5698 if (!(in = fopen(ctl->atm_gpfile, "r")))
+
5699 ERRMSG("Cannot open file!");
+
5700 char line[LEN];
+
5701 while (fgets(line, LEN, in))
+
5702 fprintf(out, "%s", line);
+
5703 fclose(in);
+
5704 }
+
5705
+
5706 else {
+
5707
+
5708 /* Create file... */
+
5709 if (!(out = fopen(filename, "w")))
+
5710 ERRMSG("Cannot create file!");
+
5711 }
+
5712
+
5713 /* Write header... */
+
5714 fprintf(out,
+
5715 "# $1 = time [s]\n"
+
5716 "# $2 = altitude [km]\n"
+
5717 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
5718 for (int iq = 0; iq < ctl->nq; iq++)
+
5719 fprintf(out, "# $%i = %s [%s]\n", iq + 5, ctl->qnt_name[iq],
+
5720 ctl->qnt_unit[iq]);
+
5721 fprintf(out, "\n");
+
5722
+
5723 /* Write data... */
+
5724 for (int ip = 0; ip < atm->np; ip += ctl->atm_stride) {
+
5725
+
5726 /* Check time... */
+
5727 if (ctl->atm_filter == 2 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
5728 continue;
+
5729
+
5730 /* Write output... */
+
5731 fprintf(out, "%.2f %g %g %g", atm->time[ip], Z(atm->p[ip]),
+
5732 atm->lon[ip], atm->lat[ip]);
+
5733 for (int iq = 0; iq < ctl->nq; iq++) {
+
5734 fprintf(out, " ");
+
5735 if (ctl->atm_filter == 1 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
5736 fprintf(out, ctl->qnt_format[iq], GSL_NAN);
+
5737 else
+
5738 fprintf(out, ctl->qnt_format[iq], atm->q[iq][ip]);
+
5739 }
+
5740 fprintf(out, "\n");
+
5741 }
+
5742
+
5743 /* Close file... */
+
5744 fclose(out);
+
5745}
+
5746
+
5747/*****************************************************************************/
+
5748
+ +
5750 const char *filename,
+
5751 ctl_t * ctl,
+
5752 atm_t * atm) {
+
5753
+
5754 FILE *out;
+
5755
+
5756 /* Create file... */
+
5757 if (!(out = fopen(filename, "w")))
+
5758 ERRMSG("Cannot create file!");
+
5759
+
5760 /* Write version of binary data... */
+
5761 int version = 100;
+
5762 FWRITE(&version, int,
+
5763 1,
+
5764 out);
+
5765
+
5766 /* Write data... */
+
5767 FWRITE(&atm->np, int,
+
5768 1,
+
5769 out);
+
5770 FWRITE(atm->time, double,
+
5771 (size_t) atm->np,
+
5772 out);
+
5773 FWRITE(atm->p, double,
+
5774 (size_t) atm->np,
+
5775 out);
+
5776 FWRITE(atm->lon, double,
+
5777 (size_t) atm->np,
+
5778 out);
+
5779 FWRITE(atm->lat, double,
+
5780 (size_t) atm->np,
+
5781 out);
+
5782 for (int iq = 0; iq < ctl->nq; iq++)
+
5783 FWRITE(atm->q[iq], double,
+
5784 (size_t) atm->np,
+
5785 out);
+
5786
+
5787 /* Write final flag... */
+
5788 int final = 999;
+
5789 FWRITE(&final, int,
+
5790 1,
+
5791 out);
+
5792
+
5793 /* Close file... */
+
5794 fclose(out);
+
5795}
+
5796
+
5797/*****************************************************************************/
+
5798
+ +
5800 const char *dirname,
+
5801 ctl_t * ctl,
+
5802 atm_t * atm,
+
5803 double t) {
+
5804
+
5805 /* Global Counter... */
+
5806 static size_t out_cnt = 0;
+
5807
+
5808 double r, r_start, r_stop;
+
5809 int year, mon, day, hour, min, sec;
+
5810 int year_start, mon_start, day_start, hour_start, min_start, sec_start;
+
5811 int year_stop, mon_stop, day_stop, hour_stop, min_stop, sec_stop;
+
5812 char filename_out[2 * LEN] = "traj_fix_3d_YYYYMMDDHH_YYYYMMDDHH.nc";
+
5813
+
5814 int ncid, varid, tid, pid, cid;
+
5815 int dim_ids[2];
+
5816
+
5817 /* time, nparc */
+
5818 size_t start[2];
+
5819 size_t count[2];
+
5820
+
5821 /* Determine start and stop times of calculation... */
+
5822 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
5823 jsec2time(ctl->t_start, &year_start, &mon_start, &day_start, &hour_start,
+
5824 &min_start, &sec_start, &r_start);
+
5825 jsec2time(ctl->t_stop, &year_stop, &mon_stop, &day_stop, &hour_stop,
+
5826 &min_stop, &sec_stop, &r_stop);
+
5827
+
5828 sprintf(filename_out, "%s/traj_fix_3d_%02d%02d%02d%02d_%02d%02d%02d%02d.nc",
+
5829 dirname,
+
5830 year_start % 100, mon_start, day_start, hour_start,
+
5831 year_stop % 100, mon_stop, day_stop, hour_stop);
+
5832 LOG(1, "Write traj file: %s", filename_out);
+
5833
+
5834 /* Define hyperslap for the traj_file... */
+
5835 start[0] = out_cnt;
+
5836 start[1] = 0;
+
5837 count[0] = 1;
+
5838 count[1] = (size_t) atm->np;
+
5839
+
5840 /* Create the file at the first timestep... */
+
5841 if (out_cnt == 0) {
+
5842
+
5843 /* Create file... */
+
5844 nc_create(filename_out, NC_CLOBBER, &ncid);
+
5845
+
5846 /* Define dimensions... */
+
5847 NC(nc_def_dim(ncid, "time", NC_UNLIMITED, &tid));
+
5848 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5849 NC(nc_def_dim(ncid, "TMDT", 7, &cid));
+
5850 dim_ids[0] = tid;
+
5851 dim_ids[1] = pid;
+
5852
+
5853 /* Define variables and their attributes... */
+
5854 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5855 "seconds since 2000-01-01 00:00:00 UTC");
+
5856 NC_DEF_VAR("LAT", NC_DOUBLE, 2, dim_ids, "Latitude", "deg");
+
5857 NC_DEF_VAR("LON", NC_DOUBLE, 2, dim_ids, "Longitude", "deg");
+
5858 NC_DEF_VAR("PRESS", NC_DOUBLE, 2, dim_ids, "Pressure", "hPa");
+
5859 NC_DEF_VAR("ZETA", NC_DOUBLE, 2, dim_ids, "Zeta", "K");
+
5860 for (int iq = 0; iq < ctl->nq; iq++)
+
5861 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5862 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5863
+
5864 /* Define global attributes... */
+
5865 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5866 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5867
+
5868 /* End definitions... */
+
5869 NC(nc_enddef(ncid));
+
5870 NC(nc_close(ncid));
+
5871 }
+
5872
+
5873 /* Increment global counter to change hyperslap... */
+
5874 out_cnt++;
+
5875
+
5876 /* Open file... */
+
5877 NC(nc_open(filename_out, NC_WRITE, &ncid));
+
5878
+
5879 /* Write data... */
+
5880 NC_PUT_DOUBLE("time", atm->time, 1);
+
5881 NC_PUT_DOUBLE("LAT", atm->lat, 1);
+
5882 NC_PUT_DOUBLE("LON", atm->lon, 1);
+
5883 NC_PUT_DOUBLE("PRESS", atm->p, 1);
+
5884 if (ctl->vert_coord_ap == 1) {
+
5885 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta], 1);
+
5886 } else if (ctl->qnt_zeta >= 0) {
+
5887 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 1);
+
5888 }
+
5889 for (int iq = 0; iq < ctl->nq; iq++)
+
5890 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 1);
+
5891
+
5892 /* Close file... */
+
5893 NC(nc_close(ncid));
+
5894
+
5895 /* At the last time step create the init_fix_YYYYMMDDHH file... */
+
5896 if ((year == year_stop) && (mon == mon_stop)
+
5897 && (day == day_stop) && (hour == hour_stop)) {
+
5898
+
5899 /* Set filename... */
+
5900 char filename_init[2 * LEN] = "./init_fix_YYYYMMDDHH.nc";
+
5901 sprintf(filename_init, "%s/init_fix_%02d%02d%02d%02d.nc",
+
5902 dirname, year_stop % 100, mon_stop, day_stop, hour_stop);
+
5903 LOG(1, "Write init file: %s", filename_init);
+
5904
+
5905 /* Create file... */
+
5906 nc_create(filename_init, NC_CLOBBER, &ncid);
+
5907
+
5908 /* Define dimensions... */
+
5909 NC(nc_def_dim(ncid, "time", 1, &tid));
+
5910 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5911 dim_ids[0] = tid;
+
5912 dim_ids[1] = pid;
+
5913
+
5914 /* Define variables and their attributes... */
+
5915 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5916 "seconds since 2000-01-01 00:00:00 UTC");
+
5917 NC_DEF_VAR("LAT", NC_DOUBLE, 1, &pid, "Latitude", "deg");
+
5918 NC_DEF_VAR("LON", NC_DOUBLE, 1, &pid, "Longitude", "deg");
+
5919 NC_DEF_VAR("PRESS", NC_DOUBLE, 1, &pid, "Pressure", "hPa");
+
5920 NC_DEF_VAR("ZETA", NC_DOUBLE, 1, &pid, "Zeta", "K");
+
5921 //NC_DEF_VAR("ZETA_GRID", NC_DOUBLE, 1, &zid, "levels", "K");
+
5922 //NC_DEF_VAR("ZETA_DELTA", NC_DOUBLE, 1, &zid, "Width of zeta levels", "K");
+
5923 for (int iq = 0; iq < ctl->nq; iq++)
+
5924 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5925 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5926
+
5927 /* Define global attributes... */
+
5928 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5929 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5930
+
5931 /* End definitions... */
+
5932 NC(nc_enddef(ncid));
+
5933
+
5934 /* Write data... */
+
5935 NC_PUT_DOUBLE("time", atm->time, 0);
+
5936 NC_PUT_DOUBLE("LAT", atm->lat, 0);
+
5937 NC_PUT_DOUBLE("LON", atm->lon, 0);
+
5938 NC_PUT_DOUBLE("PRESS", atm->p, 0);
+
5939 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 0);
+
5940 for (int iq = 0; iq < ctl->nq; iq++)
+
5941 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
5942
+
5943 /* Close file... */
+
5944 NC(nc_close(ncid));
+
5945 }
+
5946}
+
5947
+
5948/*****************************************************************************/
+
5949
+ +
5951 const char *filename,
+
5952 ctl_t * ctl,
+
5953 atm_t * atm) {
+
5954
+
5955 int tid, pid, ncid, varid;
+
5956 size_t start[2], count[2];
+
5957
+
5958 /* Create file... */
+
5959 nc_create(filename, NC_CLOBBER, &ncid);
+
5960
+
5961 /* Define dimensions... */
+
5962 NC(nc_def_dim(ncid, "time", 1, &tid));
+
5963 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5964
+
5965 int dim_ids[2] = { tid, pid };
+
5966
+
5967 /* Define variables and their attributes... */
+
5968 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5969 "seconds since 2000-01-01 00:00:00 UTC");
+
5970 NC_DEF_VAR("LAT", NC_DOUBLE, 1, &pid, "Latitude", "deg");
+
5971 NC_DEF_VAR("LON", NC_DOUBLE, 1, &pid, "Longitude", "deg");
+
5972 NC_DEF_VAR("PRESS", NC_DOUBLE, 1, &pid, "Pressure", "hPa");
+
5973 NC_DEF_VAR("ZETA", NC_DOUBLE, 1, &pid, "Zeta", "K");
+
5974 //NC_DEF_VAR("ZETA_GRID", NC_DOUBLE, 1, &zid, "levels", "K");
+
5975 //NC_DEF_VAR("ZETA_DELTA", NC_DOUBLE, 1, &zid, "Width of zeta levels", "K");
+
5976 for (int iq = 0; iq < ctl->nq; iq++)
+
5977 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5978 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5979
+
5980 /* Define global attributes... */
+
5981 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5982 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5983
+
5984 /* End definitions... */
+
5985 NC(nc_enddef(ncid));
+
5986
+
5987 /* Write data... */
+
5988 NC_PUT_DOUBLE("time", atm->time, 0);
+
5989 NC_PUT_DOUBLE("LAT", atm->lat, 0);
+
5990 NC_PUT_DOUBLE("LON", atm->lon, 0);
+
5991 NC_PUT_DOUBLE("PRESS", atm->p, 0);
+
5992 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 0);
+
5993 for (int iq = 0; iq < ctl->nq; iq++)
+
5994 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
5995
+
5996 /* Close file... */
+
5997 NC(nc_close(ncid));
+
5998
+
5999}
+
6000
+
6001
+
6002/*****************************************************************************/
+
6003
+ +
6005 const char *filename,
+
6006 ctl_t * ctl,
+
6007 atm_t * atm) {
+
6008
+
6009 int ncid, obsid, varid;
+
6010
+
6011 size_t start[2], count[2];
+
6012
+
6013 /* Create file... */
+
6014 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
6015
+
6016 /* Define dimensions... */
+
6017 NC(nc_def_dim(ncid, "obs", (size_t) atm->np, &obsid));
+
6018
+
6019 /* Define variables and their attributes... */
+
6020 NC_DEF_VAR("time", NC_DOUBLE, 1, &obsid, "time",
+
6021 "seconds since 2000-01-01 00:00:00 UTC");
+
6022 NC_DEF_VAR("press", NC_DOUBLE, 1, &obsid, "pressure", "hPa");
+
6023 NC_DEF_VAR("lon", NC_DOUBLE, 1, &obsid, "longitude", "degrees_east");
+
6024 NC_DEF_VAR("lat", NC_DOUBLE, 1, &obsid, "latitude", "degrees_north");
+
6025 for (int iq = 0; iq < ctl->nq; iq++)
+
6026 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 1, &obsid,
+
6027 ctl->qnt_longname[iq], ctl->qnt_unit[iq]);
+
6028
+
6029 /* Define global attributes... */
+
6030 NC_PUT_ATT_GLOBAL("featureType", "point");
+
6031
+
6032 /* End definitions... */
+
6033 NC(nc_enddef(ncid));
+
6034
+
6035 /* Write data... */
+
6036 NC_PUT_DOUBLE("time", atm->time, 0);
+
6037 NC_PUT_DOUBLE("press", atm->p, 0);
+
6038 NC_PUT_DOUBLE("lon", atm->lon, 0);
+
6039 NC_PUT_DOUBLE("lat", atm->lat, 0);
+
6040 for (int iq = 0; iq < ctl->nq; iq++)
+
6041 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
6042
+
6043 /* Close file... */
+
6044 NC(nc_close(ncid));
+
6045}
+
6046
+
6047/*****************************************************************************/
+
6048
+ +
6050 const char *filename,
+
6051 ctl_t * ctl,
+
6052 atm_t * atm,
+
6053 double t) {
+
6054
+
6055 static FILE *out;
+
6056
+
6057 static double *modmean, *obsmean, *rt, *rz, *rlon, *rlat, *robs, *area,
+
6058 dlon, dlat, dz, x[NCSI], y[NCSI], kz[EP], kw[EP];
+
6059
+
6060 static int *obscount, ct, cx, cy, cz, ip, ix, iy, iz, n, nobs, nk;
+
6061
+
6062 /* Set timer... */
+
6063 SELECT_TIMER("WRITE_CSI", "OUTPUT", NVTX_WRITE);
+
6064
+
6065 /* Init... */
+
6066 if (t == ctl->t_start) {
+
6067
+
6068 /* Check quantity index for mass... */
+
6069 if (ctl->qnt_m < 0)
+
6070 ERRMSG("Need quantity mass!");
+
6071
+
6072 /* Allocate... */
+
6073 ALLOC(area, double,
+
6074 ctl->csi_ny);
+
6075 ALLOC(rt, double,
+
6076 NOBS);
+
6077 ALLOC(rz, double,
+
6078 NOBS);
+
6079 ALLOC(rlon, double,
+
6080 NOBS);
+
6081 ALLOC(rlat, double,
+
6082 NOBS);
+
6083 ALLOC(robs, double,
+
6084 NOBS);
+
6085
+
6086 /* Read observation data... */
+
6087 read_obs(ctl->csi_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
6088
+
6089 /* Read kernel data... */
+
6090 if (ctl->csi_kernel[0] != '-')
+
6091 read_kernel(ctl->csi_kernel, kz, kw, &nk);
+
6092
+
6093 /* Create new file... */
+
6094 LOG(1, "Write CSI data: %s", filename);
+
6095 if (!(out = fopen(filename, "w")))
+
6096 ERRMSG("Cannot create file!");
+
6097
+
6098 /* Write header... */
+
6099 fprintf(out,
+
6100 "# $1 = time [s]\n"
+
6101 "# $2 = number of hits (cx)\n"
+
6102 "# $3 = number of misses (cy)\n"
+
6103 "# $4 = number of false alarms (cz)\n"
+
6104 "# $5 = number of observations (cx + cy)\n"
+
6105 "# $6 = number of forecasts (cx + cz)\n"
+
6106 "# $7 = bias (ratio of forecasts and observations) [%%]\n"
+
6107 "# $8 = probability of detection (POD) [%%]\n"
+
6108 "# $9 = false alarm rate (FAR) [%%]\n"
+
6109 "# $10 = critical success index (CSI) [%%]\n");
+
6110 fprintf(out,
+
6111 "# $11 = hits associated with random chance\n"
+
6112 "# $12 = equitable threat score (ETS) [%%]\n"
+
6113 "# $13 = Pearson linear correlation coefficient\n"
+
6114 "# $14 = Spearman rank-order correlation coefficient\n"
+
6115 "# $15 = column density mean error (F - O) [kg/m^2]\n"
+
6116 "# $16 = column density root mean square error (RMSE) [kg/m^2]\n"
+
6117 "# $17 = column density mean absolute error [kg/m^2]\n"
+
6118 "# $18 = number of data points\n\n");
+
6119
+
6120 /* Set grid box size... */
+
6121 dz = (ctl->csi_z1 - ctl->csi_z0) / ctl->csi_nz;
+
6122 dlon = (ctl->csi_lon1 - ctl->csi_lon0) / ctl->csi_nx;
+
6123 dlat = (ctl->csi_lat1 - ctl->csi_lat0) / ctl->csi_ny;
+
6124
+
6125 /* Set horizontal coordinates... */
+
6126 for (iy = 0; iy < ctl->csi_ny; iy++) {
+
6127 double lat = ctl->csi_lat0 + dlat * (iy + 0.5);
+
6128 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.) * cos(lat * M_PI / 180.);
+
6129 }
+
6130 }
+
6131
+
6132 /* Set time interval... */
+
6133 double t0 = t - 0.5 * ctl->dt_mod;
+
6134 double t1 = t + 0.5 * ctl->dt_mod;
+
6135
+
6136 /* Allocate... */
+
6137 ALLOC(modmean, double,
+
6138 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6139 ALLOC(obsmean, double,
+
6140 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6141 ALLOC(obscount, int,
+
6142 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6143
+
6144 /* Loop over observations... */
+
6145 for (int i = 0; i < nobs; i++) {
+
6146
+
6147 /* Check time... */
+
6148 if (rt[i] < t0)
+
6149 continue;
+
6150 else if (rt[i] >= t1)
+
6151 break;
+
6152
+
6153 /* Check observation data... */
+
6154 if (!isfinite(robs[i]))
+
6155 continue;
+
6156
+
6157 /* Calculate indices... */
+
6158 ix = (int) ((rlon[i] - ctl->csi_lon0) / dlon);
+
6159 iy = (int) ((rlat[i] - ctl->csi_lat0) / dlat);
+
6160 iz = (int) ((rz[i] - ctl->csi_z0) / dz);
+
6161
+
6162 /* Check indices... */
+
6163 if (ix < 0 || ix >= ctl->csi_nx ||
+
6164 iy < 0 || iy >= ctl->csi_ny || iz < 0 || iz >= ctl->csi_nz)
+
6165 continue;
+
6166
+
6167 /* Get mean observation index... */
+
6168 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6169 obsmean[idx] += robs[i];
+
6170 obscount[idx]++;
+
6171 }
+
6172
+
6173 /* Analyze model data... */
+
6174 for (ip = 0; ip < atm->np; ip++) {
+
6175
+
6176 /* Check time... */
+
6177 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
6178 continue;
+
6179
+
6180 /* Get indices... */
+
6181 ix = (int) ((atm->lon[ip] - ctl->csi_lon0) / dlon);
+
6182 iy = (int) ((atm->lat[ip] - ctl->csi_lat0) / dlat);
+
6183 iz = (int) ((Z(atm->p[ip]) - ctl->csi_z0) / dz);
+
6184
+
6185 /* Check indices... */
+
6186 if (ix < 0 || ix >= ctl->csi_nx ||
+
6187 iy < 0 || iy >= ctl->csi_ny || iz < 0 || iz >= ctl->csi_nz)
+
6188 continue;
+
6189
+
6190 /* Get total mass in grid cell... */
+
6191 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6192 modmean[idx] += kernel_weight(kz, kw, nk, atm->p[ip])
+
6193 * atm->q[ctl->qnt_m][ip];
+
6194 }
+
6195
+
6196 /* Analyze all grid cells... */
+
6197 for (ix = 0; ix < ctl->csi_nx; ix++)
+
6198 for (iy = 0; iy < ctl->csi_ny; iy++)
+
6199 for (iz = 0; iz < ctl->csi_nz; iz++) {
+
6200
+
6201 /* Calculate mean observation index... */
+
6202 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6203 if (obscount[idx] > 0)
+
6204 obsmean[idx] /= obscount[idx];
+
6205
+
6206 /* Calculate column density... */
+
6207 if (modmean[idx] > 0)
+
6208 modmean[idx] /= (1e6 * area[iy]);
+
6209
+
6210 /* Calculate CSI... */
+
6211 if (obscount[idx] > 0) {
+
6212 ct++;
+
6213 if (obsmean[idx] >= ctl->csi_obsmin &&
+
6214 modmean[idx] >= ctl->csi_modmin)
+
6215 cx++;
+
6216 else if (obsmean[idx] >= ctl->csi_obsmin &&
+
6217 modmean[idx] < ctl->csi_modmin)
+
6218 cy++;
+
6219 else if (obsmean[idx] < ctl->csi_obsmin &&
+
6220 modmean[idx] >= ctl->csi_modmin)
+
6221 cz++;
+
6222 }
+
6223
+
6224 /* Save data for other verification statistics... */
+
6225 if (obscount[idx] > 0
+
6226 && (obsmean[idx] >= ctl->csi_obsmin
+
6227 || modmean[idx] >= ctl->csi_modmin)) {
+
6228 x[n] = modmean[idx];
+
6229 y[n] = obsmean[idx];
+
6230 if ((++n) > NCSI)
+
6231 ERRMSG("Too many data points to calculate statistics!");
+
6232 }
+
6233 }
+
6234
+
6235 /* Write output... */
+
6236 if (fmod(t, ctl->csi_dt_out) == 0) {
+
6237
+
6238 /* Calculate verification statistics
+
6239 (https://www.cawcr.gov.au/projects/verification/) ... */
+
6240 static double work[2 * NCSI];
+
6241 int n_obs = cx + cy;
+
6242 int n_for = cx + cz;
+
6243 double bias = (n_obs > 0) ? 100. * n_for / n_obs : GSL_NAN;
+
6244 double pod = (n_obs > 0) ? (100. * cx) / n_obs : GSL_NAN;
+
6245 double far = (n_for > 0) ? (100. * cz) / n_for : GSL_NAN;
+
6246 double csi = (cx + cy + cz > 0) ? (100. * cx) / (cx + cy + cz) : GSL_NAN;
+
6247 double cx_rd = (ct > 0) ? (1. * n_obs * n_for) / ct : GSL_NAN;
+
6248 double ets = (cx + cy + cz - cx_rd > 0) ?
+
6249 (100. * (cx - cx_rd)) / (cx + cy + cz - cx_rd) : GSL_NAN;
+
6250 double rho_p =
+
6251 (n > 0) ? gsl_stats_correlation(x, 1, y, 1, (size_t) n) : GSL_NAN;
+
6252 double rho_s =
+
6253 (n > 0) ? gsl_stats_spearman(x, 1, y, 1, (size_t) n, work) : GSL_NAN;
+
6254 for (int i = 0; i < n; i++)
+
6255 work[i] = x[i] - y[i];
+
6256 double mean = (n > 0) ? gsl_stats_mean(work, 1, (size_t) n) : GSL_NAN;
+
6257 double rmse = (n > 0) ? gsl_stats_sd_with_fixed_mean(work, 1, (size_t) n,
+
6258 0.0) : GSL_NAN;
+
6259 double absdev =
+
6260 (n > 0) ? gsl_stats_absdev_m(work, 1, (size_t) n, 0.0) : GSL_NAN;
+
6261
+
6262 /* Write... */
+
6263 fprintf(out, "%.2f %d %d %d %d %d %g %g %g %g %g %g %g %g %g %g %g %d\n",
+
6264 t, cx, cy, cz, n_obs, n_for, bias, pod, far, csi, cx_rd, ets,
+
6265 rho_p, rho_s, mean, rmse, absdev, n);
+
6266
+
6267 /* Set counters to zero... */
+
6268 n = ct = cx = cy = cz = 0;
+
6269 }
+
6270
+
6271 /* Free... */
+
6272 free(modmean);
+
6273 free(obsmean);
+
6274 free(obscount);
+
6275
+
6276 /* Finalize... */
+
6277 if (t == ctl->t_stop) {
+
6278
+
6279 /* Close output file... */
+
6280 fclose(out);
+
6281
+
6282 /* Free... */
+
6283 free(area);
+
6284 free(rt);
+
6285 free(rz);
+
6286 free(rlon);
+
6287 free(rlat);
+
6288 free(robs);
+
6289 }
+
6290}
+
6291
+
6292/*****************************************************************************/
+
6293
+ +
6295 const char *filename,
+
6296 ctl_t * ctl,
+
6297 atm_t * atm,
+
6298 double t) {
+
6299
+
6300 static FILE *out;
+
6301
+
6302 static double dummy, lat, lon, qm[NQ][NENS], qs[NQ][NENS], xm[NENS][3],
+
6303 x[3], zm[NENS];
+
6304
+
6305 static int n[NENS];
+
6306
+
6307 /* Set timer... */
+
6308 SELECT_TIMER("WRITE_ENS", "OUTPUT", NVTX_WRITE);
+
6309
+
6310 /* Check quantities... */
+
6311 if (ctl->qnt_ens < 0)
+
6312 ERRMSG("Missing ensemble IDs!");
+
6313
+
6314 /* Set time interval... */
+
6315 double t0 = t - 0.5 * ctl->dt_mod;
+
6316 double t1 = t + 0.5 * ctl->dt_mod;
+
6317
+
6318 /* Init... */
+
6319 for (int i = 0; i < NENS; i++) {
+
6320 for (int iq = 0; iq < ctl->nq; iq++)
+
6321 qm[iq][i] = qs[iq][i] = 0;
+
6322 xm[i][0] = xm[i][1] = xm[i][2] = zm[i] = 0;
+
6323 n[i] = 0;
+
6324 }
+
6325
+
6326 /* Loop over air parcels... */
+
6327 for (int ip = 0; ip < atm->np; ip++) {
+
6328
+
6329 /* Check time... */
+
6330 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
6331 continue;
+
6332
+
6333 /* Check ensemble ID... */
+
6334 if (atm->q[ctl->qnt_ens][ip] < 0 || atm->q[ctl->qnt_ens][ip] >= NENS)
+
6335 ERRMSG("Ensemble ID is out of range!");
+
6336
+
6337 /* Get means... */
+
6338 geo2cart(0, atm->lon[ip], atm->lat[ip], x);
+
6339 for (int iq = 0; iq < ctl->nq; iq++) {
+
6340 qm[iq][ctl->qnt_ens] += atm->q[iq][ip];
+
6341 qs[iq][ctl->qnt_ens] += SQR(atm->q[iq][ip]);
+
6342 }
+
6343 xm[ctl->qnt_ens][0] += x[0];
+
6344 xm[ctl->qnt_ens][1] += x[1];
+
6345 xm[ctl->qnt_ens][2] += x[2];
+
6346 zm[ctl->qnt_ens] += Z(atm->p[ip]);
+
6347 n[ctl->qnt_ens]++;
+
6348 }
+
6349
+
6350 /* Create file... */
+
6351 LOG(1, "Write ensemble data: %s", filename);
+
6352 if (!(out = fopen(filename, "w")))
+
6353 ERRMSG("Cannot create file!");
+
6354
+
6355 /* Write header... */
+
6356 fprintf(out,
+
6357 "# $1 = time [s]\n"
+
6358 "# $2 = altitude [km]\n"
+
6359 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
6360 for (int iq = 0; iq < ctl->nq; iq++)
+
6361 fprintf(out, "# $%d = %s (mean) [%s]\n", 5 + iq,
+
6362 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
6363 for (int iq = 0; iq < ctl->nq; iq++)
+
6364 fprintf(out, "# $%d = %s (sigma) [%s]\n", 5 + ctl->nq + iq,
+
6365 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
6366 fprintf(out, "# $%d = number of members\n\n", 5 + 2 * ctl->nq);
+
6367
+
6368 /* Write data... */
+
6369 for (int i = 0; i < NENS; i++)
+
6370 if (n[i] > 0) {
+
6371 cart2geo(xm[i], &dummy, &lon, &lat);
+
6372 fprintf(out, "%.2f %g %g %g", t, zm[i] / n[i], lon, lat);
+
6373 for (int iq = 0; iq < ctl->nq; iq++) {
+
6374 fprintf(out, " ");
+
6375 fprintf(out, ctl->qnt_format[iq], qm[iq][i] / n[i]);
+
6376 }
+
6377 for (int iq = 0; iq < ctl->nq; iq++) {
+
6378 fprintf(out, " ");
+
6379 double var = qs[iq][i] / n[i] - SQR(qm[iq][i] / n[i]);
+
6380 fprintf(out, ctl->qnt_format[iq], (var > 0 ? sqrt(var) : 0));
+
6381 }
+
6382 fprintf(out, " %d\n", n[i]);
+
6383 }
+
6384
+
6385 /* Close file... */
+
6386 fclose(out);
+
6387}
+
6388
+
6389/*****************************************************************************/
+
6390
+ +
6392 const char *filename,
+
6393 ctl_t * ctl,
+
6394 met_t * met0,
+
6395 met_t * met1,
+
6396 atm_t * atm,
+
6397 double t) {
+
6398
+
6399 static double kz[EP], kw[EP];
+
6400
+
6401 static int nk;
+
6402
+
6403 double *cd, *mean[NQ], *vmr_impl, *z, *lon, *lat, *area, *press;
+
6404
+
6405 int *ixs, *iys, *izs, *np;
+
6406
+
6407 /* Set timer... */
+
6408 SELECT_TIMER("WRITE_GRID", "OUTPUT", NVTX_WRITE);
+
6409
+
6410 /* Write info... */
+
6411 LOG(1, "Write grid data: %s", filename);
+
6412
+
6413 /* Init... */
+
6414 if (t == ctl->t_start) {
+
6415
+
6416 /* Read kernel data... */
+
6417 if (ctl->grid_kernel[0] != '-')
+
6418 read_kernel(ctl->grid_kernel, kz, kw, &nk);
+
6419 }
+
6420
+
6421 /* Allocate... */
+
6422 ALLOC(cd, double,
+
6423 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6424 for (int iq = 0; iq < ctl->nq; iq++) {
+
6425 ALLOC(mean[iq], double,
+
6426 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6427 }
+
6428 ALLOC(vmr_impl, double,
+
6429 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6430 ALLOC(z, double,
+
6431 ctl->grid_nz);
+
6432 ALLOC(lon, double,
+
6433 ctl->grid_nx);
+
6434 ALLOC(lat, double,
+
6435 ctl->grid_ny);
+
6436 ALLOC(area, double,
+
6437 ctl->grid_ny);
+
6438 ALLOC(press, double,
+
6439 ctl->grid_nz);
+
6440 ALLOC(np, int,
+
6441 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6442 ALLOC(ixs, int,
+
6443 atm->np);
+
6444 ALLOC(iys, int,
+
6445 atm->np);
+
6446 ALLOC(izs, int,
+
6447 atm->np);
+
6448
+
6449 /* Set grid box size... */
+
6450 double dz = (ctl->grid_z1 - ctl->grid_z0) / ctl->grid_nz;
+
6451 double dlon = (ctl->grid_lon1 - ctl->grid_lon0) / ctl->grid_nx;
+
6452 double dlat = (ctl->grid_lat1 - ctl->grid_lat0) / ctl->grid_ny;
+
6453
+
6454 /* Set vertical coordinates... */
+
6455#pragma omp parallel for default(shared)
+
6456 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6457 z[iz] = ctl->grid_z0 + dz * (iz + 0.5);
+
6458 press[iz] = P(z[iz]);
+
6459 }
+
6460
+
6461 /* Set horizontal coordinates... */
+
6462 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6463 lon[ix] = ctl->grid_lon0 + dlon * (ix + 0.5);
+
6464#pragma omp parallel for default(shared)
+
6465 for (int iy = 0; iy < ctl->grid_ny; iy++) {
+
6466 lat[iy] = ctl->grid_lat0 + dlat * (iy + 0.5);
+
6467 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
6468 * cos(lat[iy] * M_PI / 180.);
+
6469 }
+
6470
+
6471 /* Set time interval for output... */
+
6472 double t0 = t - 0.5 * ctl->dt_mod;
+
6473 double t1 = t + 0.5 * ctl->dt_mod;
+
6474
+
6475 /* Get grid box indices... */
+
6476#pragma omp parallel for default(shared)
+
6477 for (int ip = 0; ip < atm->np; ip++) {
+
6478 ixs[ip] = (int) ((atm->lon[ip] - ctl->grid_lon0) / dlon);
+
6479 iys[ip] = (int) ((atm->lat[ip] - ctl->grid_lat0) / dlat);
+
6480 izs[ip] = (int) ((Z(atm->p[ip]) - ctl->grid_z0) / dz);
+
6481 if (atm->time[ip] < t0 || atm->time[ip] > t1
+
6482 || ixs[ip] < 0 || ixs[ip] >= ctl->grid_nx
+
6483 || iys[ip] < 0 || iys[ip] >= ctl->grid_ny
+
6484 || izs[ip] < 0 || izs[ip] >= ctl->grid_nz)
+
6485 izs[ip] = -1;
+
6486 }
+
6487
+
6488 /* Average data... */
+
6489 for (int ip = 0; ip < atm->np; ip++)
+
6490 if (izs[ip] >= 0) {
+
6491 int idx =
+
6492 ARRAY_3D(ixs[ip], iys[ip], ctl->grid_ny, izs[ip], ctl->grid_nz);
+
6493 double kernel = kernel_weight(kz, kw, nk, atm->p[ip]);
+
6494 np[idx]++;
+
6495 for (int iq = 0; iq < ctl->nq; iq++)
+
6496 mean[iq][idx] += kernel * atm->q[iq][ip];
+
6497 }
+
6498
+
6499 /* Calculate column density and vmr... */
+
6500#pragma omp parallel for default(shared)
+
6501 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6502 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6503 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6504
+
6505 /* Get grid index... */
+
6506 int idx = ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz);
+
6507
+
6508 /* Calculate column density... */
+
6509 cd[idx] = GSL_NAN;
+
6510 if (ctl->qnt_m >= 0)
+
6511 cd[idx] = mean[ctl->qnt_m][idx] / (1e6 * area[iy]);
+
6512
+
6513 /* Calculate volume mixing ratio (implicit)... */
+
6514 vmr_impl[idx] = GSL_NAN;
+
6515 if (ctl->qnt_m >= 0 && ctl->molmass > 0) {
+
6516 vmr_impl[idx] = 0;
+
6517 if (mean[ctl->qnt_m][idx] > 0) {
+
6518
+
6519 /* Get temperature... */
+
6520 double temp;
+ +
6522 intpol_met_time_3d(met0, met0->t, met1, met1->t, t, press[iz],
+
6523 lon[ix], lat[iy], &temp, ci, cw, 1);
+
6524
+
6525 /* Calculate volume mixing ratio... */
+
6526 vmr_impl[idx] = MA / ctl->molmass * mean[ctl->qnt_m][idx]
+
6527 / (RHO(press[iz], temp) * 1e6 * area[iy] * 1e3 * dz);
+
6528 }
+
6529 }
+
6530
+
6531 /* Calculate mean... */
+
6532 if (np[idx] > 0)
+
6533 for (int iq = 0; iq < ctl->nq; iq++)
+
6534 mean[iq][idx] /= np[idx];
+
6535 else
+
6536 for (int iq = 0; iq < ctl->nq; iq++)
+
6537 mean[iq][idx] = GSL_NAN;
+
6538
+
6539 }
+
6540
+
6541 /* Write ASCII data... */
+
6542 if (ctl->grid_type == 0)
+
6543 write_grid_asc(filename, ctl, cd, mean, vmr_impl, t, z, lon, lat, area,
+
6544 dz, np);
+
6545
+
6546 /* Write netCDF data... */
+
6547 else if (ctl->grid_type == 1)
+
6548 write_grid_nc(filename, ctl, cd, mean, vmr_impl, t, z, lon, lat, area, dz,
+
6549 np);
+
6550
+
6551 /* Error message... */
+
6552 else
+
6553 ERRMSG("Grid data format GRID_TYPE unknown!");
+
6554
+
6555 /* Free... */
+
6556 free(cd);
+
6557 for (int iq = 0; iq < ctl->nq; iq++)
+
6558 free(mean[iq]);
+
6559 free(vmr_impl);
+
6560 free(z);
+
6561 free(lon);
+
6562 free(lat);
+
6563 free(area);
+
6564 free(press);
+
6565 free(np);
+
6566 free(ixs);
+
6567 free(iys);
+
6568 free(izs);
+
6569}
+
6570
+
6571/*****************************************************************************/
+
6572
+ +
6574 const char *filename,
+
6575 ctl_t * ctl,
+
6576 double *cd,
+
6577 double *mean[NQ],
+
6578 double *vmr_impl,
+
6579 double t,
+
6580 double *z,
+
6581 double *lon,
+
6582 double *lat,
+
6583 double *area,
+
6584 double dz,
+
6585 int *np) {
+
6586
+
6587 FILE *in, *out;
+
6588
+
6589 char line[LEN];
+
6590
+
6591 /* Check if gnuplot output is requested... */
+
6592 if (ctl->grid_gpfile[0] != '-') {
+
6593
+
6594 /* Create gnuplot pipe... */
+
6595 if (!(out = popen("gnuplot", "w")))
+
6596 ERRMSG("Cannot create pipe to gnuplot!");
+
6597
+
6598 /* Set plot filename... */
+
6599 fprintf(out, "set out \"%s.png\"\n", filename);
+
6600
+
6601 /* Set time string... */
+
6602 double r;
+
6603 int year, mon, day, hour, min, sec;
+
6604 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
6605 fprintf(out, "timestr=\"%d-%02d-%02d, %02d:%02d UTC\"\n",
+
6606 year, mon, day, hour, min);
+
6607
+
6608 /* Dump gnuplot file to pipe... */
+
6609 if (!(in = fopen(ctl->grid_gpfile, "r")))
+
6610 ERRMSG("Cannot open file!");
+
6611 while (fgets(line, LEN, in))
+
6612 fprintf(out, "%s", line);
+
6613 fclose(in);
+
6614 }
+
6615
+
6616 else {
+
6617
+
6618 /* Create file... */
+
6619 if (!(out = fopen(filename, "w")))
+
6620 ERRMSG("Cannot create file!");
+
6621 }
+
6622
+
6623 /* Write header... */
+
6624 fprintf(out,
+
6625 "# $1 = time [s]\n"
+
6626 "# $2 = altitude [km]\n"
+
6627 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
6628 for (int iq = 0; iq < ctl->nq; iq++)
+
6629 fprintf(out, "# $%i = %s (mean) [%s]\n", 5 + iq, ctl->qnt_name[iq],
+
6630 ctl->qnt_unit[iq]);
+
6631 fprintf(out, "# $%d = number of particles [1]\n", 5 + ctl->nq);
+
6632 fprintf(out, "# $%d = surface area [km^2]\n", 6 + ctl->nq);
+
6633 fprintf(out, "# $%d = layer depth [km]\n", 7 + ctl->nq);
+
6634 fprintf(out, "# $%d = column density (implicit) [kg/m^2]\n", 8 + ctl->nq);
+
6635 fprintf(out, "# $%d = volume mixing ratio (implicit) [ppv]\n", 9 + ctl->nq);
+
6636 fprintf(out, "\n");
+
6637
+
6638 /* Write data... */
+
6639 for (int ix = 0; ix < ctl->grid_nx; ix++) {
+
6640 if (ix > 0 && ctl->grid_ny > 1 && !ctl->grid_sparse)
+
6641 fprintf(out, "\n");
+
6642 for (int iy = 0; iy < ctl->grid_ny; iy++) {
+
6643 if (iy > 0 && ctl->grid_nz > 1 && !ctl->grid_sparse)
+
6644 fprintf(out, "\n");
+
6645 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6646 int idx = ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz);
+
6647 if (!ctl->grid_sparse || vmr_impl[idx] > 0) {
+
6648 fprintf(out, "%.2f %g %g %g", t, z[iz], lon[ix], lat[iy]);
+
6649 for (int iq = 0; iq < ctl->nq; iq++) {
+
6650 fprintf(out, " ");
+
6651 fprintf(out, ctl->qnt_format[iq], mean[iq][idx]);
+
6652 }
+
6653 fprintf(out, " %d %g %g %g %g\n", np[idx], area[iy], dz, cd[idx],
+
6654 vmr_impl[idx]);
+
6655 }
+
6656 }
+
6657 }
+
6658 }
+
6659
+
6660 /* Close file... */
+
6661 fclose(out);
+
6662}
+
6663
+
6664/*****************************************************************************/
+
6665
+ +
6667 const char *filename,
+
6668 ctl_t * ctl,
+
6669 double *cd,
+
6670 double *mean[NQ],
+
6671 double *vmr_impl,
+
6672 double t,
+
6673 double *z,
+
6674 double *lon,
+
6675 double *lat,
+
6676 double *area,
+
6677 double dz,
+
6678 int *np) {
+
6679
+
6680 double *help;
+
6681
+
6682 int *help2, ncid, dimid[10], varid;
+
6683
+
6684 size_t start[2], count[2];
+
6685
+
6686 /* Allocate... */
+
6687 ALLOC(help, double,
+
6688 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6689 ALLOC(help2, int,
+
6690 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6691
+
6692 /* Create file... */
+
6693 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
6694
+
6695 /* Define dimensions... */
+
6696 NC(nc_def_dim(ncid, "time", 1, &dimid[0]));
+
6697 NC(nc_def_dim(ncid, "z", (size_t) ctl->grid_nz, &dimid[1]));
+
6698 NC(nc_def_dim(ncid, "lat", (size_t) ctl->grid_ny, &dimid[2]));
+
6699 NC(nc_def_dim(ncid, "lon", (size_t) ctl->grid_nx, &dimid[3]));
+
6700 NC(nc_def_dim(ncid, "dz", 1, &dimid[4]));
+
6701
+
6702 /* Define variables and their attributes... */
+
6703 NC_DEF_VAR("time", NC_DOUBLE, 1, &dimid[0], "time",
+
6704 "seconds since 2000-01-01 00:00:00 UTC");
+
6705 NC_DEF_VAR("z", NC_DOUBLE, 1, &dimid[1], "altitude", "km");
+
6706 NC_DEF_VAR("lat", NC_DOUBLE, 1, &dimid[2], "latitude", "degrees_north");
+
6707 NC_DEF_VAR("lon", NC_DOUBLE, 1, &dimid[3], "longitude", "degrees_east");
+
6708 NC_DEF_VAR("dz", NC_DOUBLE, 1, &dimid[1], "layer depth", "km");
+
6709 NC_DEF_VAR("area", NC_DOUBLE, 1, &dimid[2], "surface area", "km**2");
+
6710 NC_DEF_VAR("cd", NC_FLOAT, 4, dimid, "column density", "kg m**-2");
+
6711 NC_DEF_VAR("vmr_impl", NC_FLOAT, 4, dimid,
+
6712 "volume mixing ratio (implicit)", "ppv");
+
6713 NC_DEF_VAR("np", NC_INT, 4, dimid, "number of particles", "1");
+
6714 for (int iq = 0; iq < ctl->nq; iq++)
+
6715 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 4, dimid,
+
6716 ctl->qnt_longname[iq], ctl->qnt_unit[iq]);
+
6717
+
6718 /* End definitions... */
+
6719 NC(nc_enddef(ncid));
+
6720
+
6721 /* Write data... */
+
6722 NC_PUT_DOUBLE("time", &t, 0);
+
6723 NC_PUT_DOUBLE("lon", lon, 0);
+
6724 NC_PUT_DOUBLE("lat", lat, 0);
+
6725 NC_PUT_DOUBLE("z", z, 0);
+
6726 NC_PUT_DOUBLE("area", area, 0);
+
6727 NC_PUT_DOUBLE("dz", &dz, 0);
+
6728
+
6729 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6730 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6731 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6732 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6733 cd[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6734 NC_PUT_DOUBLE("cd", help, 0);
+
6735
+
6736 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6737 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6738 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6739 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6740 vmr_impl[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6741 NC_PUT_DOUBLE("vmr_impl", help, 0);
+
6742
+
6743 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6744 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6745 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6746 help2[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6747 np[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6748 NC_PUT_INT("np", help2, 0);
+
6749
+
6750 for (int iq = 0; iq < ctl->nq; iq++) {
+
6751 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6752 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6753 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6754 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6755 mean[iq][ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6756 NC_PUT_DOUBLE(ctl->qnt_name[iq], help, 0);
+
6757 }
+
6758
+
6759 /* Close file... */
+
6760 NC(nc_close(ncid));
+
6761
+
6762 /* Free... */
+
6763 free(help);
+
6764 free(help2);
+
6765}
+
6766
+
6767/*****************************************************************************/
+
6768
+ +
6770 char *filename,
+
6771 ctl_t * ctl,
+
6772 met_t * met) {
+
6773
+
6774 /* Set timer... */
+
6775 SELECT_TIMER("WRITE_MET", "OUTPUT", NVTX_WRITE);
+
6776
+
6777 /* Write info... */
+
6778 LOG(1, "Write meteo data: %s", filename);
+
6779
+
6780 /* Check compression flags... */
+
6781#ifndef ZFP
+
6782 if (ctl->met_type == 3)
+
6783 ERRMSG("MPTRAC was compiled without zfp compression!");
+
6784#endif
+
6785#ifndef ZSTD
+
6786 if (ctl->met_type == 4)
+
6787 ERRMSG("MPTRAC was compiled without zstd compression!");
+
6788#endif
+
6789
+
6790 /* Write binary data... */
+
6791 if (ctl->met_type >= 1 && ctl->met_type <= 4) {
+
6792
+
6793 /* Create file... */
+
6794 FILE *out;
+
6795 if (!(out = fopen(filename, "w")))
+
6796 ERRMSG("Cannot create file!");
+
6797
+
6798 /* Write type of binary data... */
+
6799 FWRITE(&ctl->met_type, int,
+
6800 1,
+
6801 out);
+
6802
+
6803 /* Write version of binary data... */
+
6804 int version = 101;
+
6805 FWRITE(&version, int,
+
6806 1,
+
6807 out);
+
6808
+
6809 /* Write grid data... */
+
6810 FWRITE(&met->time, double,
+
6811 1,
+
6812 out);
+
6813 FWRITE(&met->nx, int,
+
6814 1,
+
6815 out);
+
6816 FWRITE(&met->ny, int,
+
6817 1,
+
6818 out);
+
6819 FWRITE(&met->np, int,
+
6820 1,
+
6821 out);
+
6822 FWRITE(met->lon, double,
+
6823 (size_t) met->nx,
+
6824 out);
+
6825 FWRITE(met->lat, double,
+
6826 (size_t) met->ny,
+
6827 out);
+
6828 FWRITE(met->p, double,
+
6829 (size_t) met->np,
+
6830 out);
+
6831
+
6832 /* Write surface data... */
+
6833 write_met_bin_2d(out, met, met->ps, "PS");
+
6834 write_met_bin_2d(out, met, met->ts, "TS");
+
6835 write_met_bin_2d(out, met, met->zs, "ZS");
+
6836 write_met_bin_2d(out, met, met->us, "US");
+
6837 write_met_bin_2d(out, met, met->vs, "VS");
+
6838 write_met_bin_2d(out, met, met->lsm, "LSM");
+
6839 write_met_bin_2d(out, met, met->sst, "SST");
+
6840 write_met_bin_2d(out, met, met->pbl, "PBL");
+
6841 write_met_bin_2d(out, met, met->pt, "PT");
+
6842 write_met_bin_2d(out, met, met->tt, "TT");
+
6843 write_met_bin_2d(out, met, met->zt, "ZT");
+
6844 write_met_bin_2d(out, met, met->h2ot, "H2OT");
+
6845 write_met_bin_2d(out, met, met->pct, "PCT");
+
6846 write_met_bin_2d(out, met, met->pcb, "PCB");
+
6847 write_met_bin_2d(out, met, met->cl, "CL");
+
6848 write_met_bin_2d(out, met, met->plcl, "PLCL");
+
6849 write_met_bin_2d(out, met, met->plfc, "PLFC");
+
6850 write_met_bin_2d(out, met, met->pel, "PEL");
+
6851 write_met_bin_2d(out, met, met->cape, "CAPE");
+
6852 write_met_bin_2d(out, met, met->cin, "CIN");
+
6853
+
6854 /* Write level data... */
+
6855 write_met_bin_3d(out, ctl, met, met->z, "Z", 0, ctl->met_zfp_tol_z);
+
6856 write_met_bin_3d(out, ctl, met, met->t, "T", 0, ctl->met_zfp_tol_t);
+
6857 write_met_bin_3d(out, ctl, met, met->u, "U", ctl->met_zfp_prec, 0);
+
6858 write_met_bin_3d(out, ctl, met, met->v, "V", ctl->met_zfp_prec, 0);
+
6859 write_met_bin_3d(out, ctl, met, met->w, "W", ctl->met_zfp_prec, 0);
+
6860 write_met_bin_3d(out, ctl, met, met->pv, "PV", ctl->met_zfp_prec, 0);
+
6861 write_met_bin_3d(out, ctl, met, met->h2o, "H2O", ctl->met_zfp_prec, 0);
+
6862 write_met_bin_3d(out, ctl, met, met->o3, "O3", ctl->met_zfp_prec, 0);
+
6863 write_met_bin_3d(out, ctl, met, met->lwc, "LWC", ctl->met_zfp_prec, 0);
+
6864 write_met_bin_3d(out, ctl, met, met->iwc, "IWC", ctl->met_zfp_prec, 0);
+
6865 write_met_bin_3d(out, ctl, met, met->cc, "CC", ctl->met_zfp_prec, 0);
+
6866
+
6867 /* Write final flag... */
+
6868 int final = 999;
+
6869 FWRITE(&final, int,
+
6870 1,
+
6871 out);
+
6872
+
6873 /* Close file... */
+
6874 fclose(out);
+
6875 }
+
6876
+
6877 return 0;
+
6878}
+
6879
+
6880/*****************************************************************************/
+
6881
+ +
6883 FILE * out,
+
6884 met_t * met,
+
6885 float var[EX][EY],
+
6886 char *varname) {
+
6887
+
6888 float *help;
+
6889
+
6890 /* Allocate... */
+
6891 ALLOC(help, float,
+
6892 EX * EY);
+
6893
+
6894 /* Copy data... */
+
6895 for (int ix = 0; ix < met->nx; ix++)
+
6896 for (int iy = 0; iy < met->ny; iy++)
+
6897 help[ARRAY_2D(ix, iy, met->ny)] = var[ix][iy];
+
6898
+
6899 /* Write uncompressed data... */
+
6900 LOG(2, "Write 2-D variable: %s (uncompressed)", varname);
+
6901 FWRITE(help, float,
+
6902 (size_t) (met->nx * met->ny),
+
6903 out);
+
6904
+
6905 /* Free... */
+
6906 free(help);
+
6907}
+
6908
+
6909/*****************************************************************************/
+
6910
+ +
6912 FILE * out,
+
6913 ctl_t * ctl,
+
6914 met_t * met,
+
6915 float var[EX][EY][EP],
+
6916 char *varname,
+
6917 int precision,
+
6918 double tolerance) {
+
6919
+
6920 float *help;
+
6921
+
6922 /* Allocate... */
+
6923 ALLOC(help, float,
+
6924 EX * EY * EP);
+
6925
+
6926 /* Copy data... */
+
6927#pragma omp parallel for default(shared) collapse(2)
+
6928 for (int ix = 0; ix < met->nx; ix++)
+
6929 for (int iy = 0; iy < met->ny; iy++)
+
6930 for (int ip = 0; ip < met->np; ip++)
+
6931 help[ARRAY_3D(ix, iy, met->ny, ip, met->np)] = var[ix][iy][ip];
+
6932
+
6933 /* Write uncompressed data... */
+
6934 if (ctl->met_type == 1) {
+
6935 LOG(2, "Write 3-D variable: %s (uncompressed)", varname);
+
6936 FWRITE(help, float,
+
6937 (size_t) (met->nx * met->ny * met->np),
+
6938 out);
+
6939 }
+
6940
+
6941 /* Write packed data... */
+
6942 else if (ctl->met_type == 2)
+
6943 compress_pack(varname, help, (size_t) (met->ny * met->nx),
+
6944 (size_t) met->np, 0, out);
+
6945
+
6946 /* Write zfp data... */
+
6947#ifdef ZFP
+
6948 else if (ctl->met_type == 3) {
+
6949 FWRITE(&precision, int,
+
6950 1,
+
6951 out);
+
6952 FWRITE(&tolerance, double,
+
6953 1,
+
6954 out);
+
6955 compress_zfp(varname, help, met->np, met->ny, met->nx, precision,
+
6956 tolerance, 0, out);
+
6957 }
+
6958#endif
+
6959
+
6960 /* Write zstd data... */
+
6961#ifdef ZSTD
+
6962 else if (ctl->met_type == 4)
+
6963 compress_zstd(varname, help, (size_t) (met->np * met->ny * met->nx), 0,
+
6964 out);
+
6965#endif
+
6966
+
6967 /* Unknown method... */
+
6968 else {
+
6969 ERRMSG("MET_TYPE not supported!");
+
6970 LOG(3, "%d %g", precision, tolerance);
+
6971 }
+
6972
+
6973 /* Free... */
+
6974 free(help);
+
6975}
+
6976
+
6977/*****************************************************************************/
+
6978
+ +
6980 const char *filename,
+
6981 ctl_t * ctl,
+
6982 met_t * met0,
+
6983 met_t * met1,
+
6984 atm_t * atm,
+
6985 double t) {
+
6986
+
6987 static FILE *out;
+
6988
+
6989 static double *mass, *obsmean, *rt, *rz, *rlon, *rlat, *robs, *area,
+
6990 dz, dlon, dlat, *lon, *lat, *z, *press, temp, vmr, h2o, o3;
+
6991
+
6992 static int nobs, *obscount, ip, okay;
+
6993
+
6994 /* Set timer... */
+
6995 SELECT_TIMER("WRITE_PROF", "OUTPUT", NVTX_WRITE);
+
6996
+
6997 /* Init... */
+
6998 if (t == ctl->t_start) {
+
6999
+
7000 /* Check quantity index for mass... */
+
7001 if (ctl->qnt_m < 0)
+
7002 ERRMSG("Need quantity mass!");
+
7003
+
7004 /* Check molar mass... */
+
7005 if (ctl->molmass <= 0)
+
7006 ERRMSG("Specify molar mass!");
+
7007
+
7008 /* Allocate... */
+
7009 ALLOC(lon, double,
+
7010 ctl->prof_nx);
+
7011 ALLOC(lat, double,
+
7012 ctl->prof_ny);
+
7013 ALLOC(area, double,
+
7014 ctl->prof_ny);
+
7015 ALLOC(z, double,
+
7016 ctl->prof_nz);
+
7017 ALLOC(press, double,
+
7018 ctl->prof_nz);
+
7019 ALLOC(rt, double,
+
7020 NOBS);
+
7021 ALLOC(rz, double,
+
7022 NOBS);
+
7023 ALLOC(rlon, double,
+
7024 NOBS);
+
7025 ALLOC(rlat, double,
+
7026 NOBS);
+
7027 ALLOC(robs, double,
+
7028 NOBS);
+
7029
+
7030 /* Read observation data... */
+
7031 read_obs(ctl->prof_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
7032
+
7033 /* Create new output file... */
+
7034 LOG(1, "Write profile data: %s", filename);
+
7035 if (!(out = fopen(filename, "w")))
+
7036 ERRMSG("Cannot create file!");
+
7037
+
7038 /* Write header... */
+
7039 fprintf(out,
+
7040 "# $1 = time [s]\n"
+
7041 "# $2 = altitude [km]\n"
+
7042 "# $3 = longitude [deg]\n"
+
7043 "# $4 = latitude [deg]\n"
+
7044 "# $5 = pressure [hPa]\n"
+
7045 "# $6 = temperature [K]\n"
+
7046 "# $7 = volume mixing ratio [ppv]\n"
+
7047 "# $8 = H2O volume mixing ratio [ppv]\n"
+
7048 "# $9 = O3 volume mixing ratio [ppv]\n"
+
7049 "# $10 = observed BT index [K]\n"
+
7050 "# $11 = number of observations\n");
+
7051
+
7052 /* Set grid box size... */
+
7053 dz = (ctl->prof_z1 - ctl->prof_z0) / ctl->prof_nz;
+
7054 dlon = (ctl->prof_lon1 - ctl->prof_lon0) / ctl->prof_nx;
+
7055 dlat = (ctl->prof_lat1 - ctl->prof_lat0) / ctl->prof_ny;
+
7056
+
7057 /* Set vertical coordinates... */
+
7058 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7059 z[iz] = ctl->prof_z0 + dz * (iz + 0.5);
+
7060 press[iz] = P(z[iz]);
+
7061 }
+
7062
+
7063 /* Set horizontal coordinates... */
+
7064 for (int ix = 0; ix < ctl->prof_nx; ix++)
+
7065 lon[ix] = ctl->prof_lon0 + dlon * (ix + 0.5);
+
7066 for (int iy = 0; iy < ctl->prof_ny; iy++) {
+
7067 lat[iy] = ctl->prof_lat0 + dlat * (iy + 0.5);
+
7068 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
7069 * cos(lat[iy] * M_PI / 180.);
+
7070 }
+
7071 }
+
7072
+
7073 /* Set time interval... */
+
7074 double t0 = t - 0.5 * ctl->dt_mod;
+
7075 double t1 = t + 0.5 * ctl->dt_mod;
+
7076
+
7077 /* Allocate... */
+
7078 ALLOC(mass, double,
+
7079 ctl->prof_nx * ctl->prof_ny * ctl->prof_nz);
+
7080 ALLOC(obsmean, double,
+
7081 ctl->prof_nx * ctl->prof_ny);
+
7082 ALLOC(obscount, int,
+
7083 ctl->prof_nx * ctl->prof_ny);
+
7084
+
7085 /* Loop over observations... */
+
7086 for (int i = 0; i < nobs; i++) {
+
7087
+
7088 /* Check time... */
+
7089 if (rt[i] < t0)
+
7090 continue;
+
7091 else if (rt[i] >= t1)
+
7092 break;
+
7093
+
7094 /* Check observation data... */
+
7095 if (!isfinite(robs[i]))
+
7096 continue;
+
7097
+
7098 /* Calculate indices... */
+
7099 int ix = (int) ((rlon[i] - ctl->prof_lon0) / dlon);
+
7100 int iy = (int) ((rlat[i] - ctl->prof_lat0) / dlat);
+
7101
+
7102 /* Check indices... */
+
7103 if (ix < 0 || ix >= ctl->prof_nx || iy < 0 || iy >= ctl->prof_ny)
+
7104 continue;
+
7105
+
7106 /* Get mean observation index... */
+
7107 int idx = ARRAY_2D(ix, iy, ctl->prof_ny);
+
7108 obsmean[idx] += robs[i];
+
7109 obscount[idx]++;
+
7110 }
+
7111
+
7112 /* Analyze model data... */
+
7113 for (ip = 0; ip < atm->np; ip++) {
+
7114
+
7115 /* Check time... */
+
7116 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7117 continue;
+
7118
+
7119 /* Get indices... */
+
7120 int ix = (int) ((atm->lon[ip] - ctl->prof_lon0) / dlon);
+
7121 int iy = (int) ((atm->lat[ip] - ctl->prof_lat0) / dlat);
+
7122 int iz = (int) ((Z(atm->p[ip]) - ctl->prof_z0) / dz);
+
7123
+
7124 /* Check indices... */
+
7125 if (ix < 0 || ix >= ctl->prof_nx ||
+
7126 iy < 0 || iy >= ctl->prof_ny || iz < 0 || iz >= ctl->prof_nz)
+
7127 continue;
+
7128
+
7129 /* Get total mass in grid cell... */
+
7130 int idx = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7131 mass[idx] += atm->q[ctl->qnt_m][ip];
+
7132 }
+
7133
+
7134 /* Extract profiles... */
+
7135 for (int ix = 0; ix < ctl->prof_nx; ix++)
+
7136 for (int iy = 0; iy < ctl->prof_ny; iy++) {
+
7137 int idx2 = ARRAY_2D(ix, iy, ctl->prof_ny);
+
7138 if (obscount[idx2] > 0) {
+
7139
+
7140 /* Check profile... */
+
7141 okay = 0;
+
7142 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7143 int idx3 = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7144 if (mass[idx3] > 0) {
+
7145 okay = 1;
+
7146 break;
+
7147 }
+
7148 }
+
7149 if (!okay)
+
7150 continue;
+
7151
+
7152 /* Write output... */
+
7153 fprintf(out, "\n");
+
7154
+
7155 /* Loop over altitudes... */
+
7156 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7157
+
7158 /* Get temperature, water vapor, and ozone... */
+ +
7160 intpol_met_time_3d(met0, met0->t, met1, met1->t, t, press[iz],
+
7161 lon[ix], lat[iy], &temp, ci, cw, 1);
+
7162 intpol_met_time_3d(met0, met0->h2o, met1, met1->h2o, t, press[iz],
+
7163 lon[ix], lat[iy], &h2o, ci, cw, 0);
+
7164 intpol_met_time_3d(met0, met0->o3, met1, met1->o3, t, press[iz],
+
7165 lon[ix], lat[iy], &o3, ci, cw, 0);
+
7166
+
7167 /* Calculate volume mixing ratio... */
+
7168 int idx3 = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7169 vmr = MA / ctl->molmass * mass[idx3]
+
7170 / (RHO(press[iz], temp) * area[iy] * dz * 1e9);
+
7171
+
7172 /* Write output... */
+
7173 fprintf(out, "%.2f %g %g %g %g %g %g %g %g %g %d\n",
+
7174 t, z[iz], lon[ix], lat[iy], press[iz], temp, vmr, h2o, o3,
+
7175 obsmean[idx2] / obscount[idx2], obscount[idx2]);
+
7176 }
+
7177 }
+
7178 }
+
7179
+
7180 /* Free... */
+
7181 free(mass);
+
7182 free(obsmean);
+
7183 free(obscount);
+
7184
+
7185 /* Finalize... */
+
7186 if (t == ctl->t_stop) {
+
7187
+
7188 /* Close output file... */
+
7189 fclose(out);
+
7190
+
7191 /* Free... */
+
7192 free(lon);
+
7193 free(lat);
+
7194 free(area);
+
7195 free(z);
+
7196 free(press);
+
7197 free(rt);
+
7198 free(rz);
+
7199 free(rlon);
+
7200 free(rlat);
+
7201 free(robs);
+
7202 }
+
7203}
+
7204
+
7205/*****************************************************************************/
+
7206
+ +
7208 const char *filename,
+
7209 ctl_t * ctl,
+
7210 met_t * met0,
+
7211 met_t * met1,
+
7212 atm_t * atm,
+
7213 double t) {
+
7214
+
7215 static FILE *out;
+
7216
+
7217 static double area, dlat, rmax2, *rt, *rz, *rlon, *rlat, *robs, kz[EP],
+
7218 kw[EP];
+
7219
+
7220 static int nobs, nk;
+
7221
+
7222 /* Set timer... */
+
7223 SELECT_TIMER("WRITE_SAMPLE", "OUTPUT", NVTX_WRITE);
+
7224
+
7225 /* Init... */
+
7226 if (t == ctl->t_start) {
+
7227
+
7228 /* Allocate... */
+
7229 ALLOC(rt, double,
+
7230 NOBS);
+
7231 ALLOC(rz, double,
+
7232 NOBS);
+
7233 ALLOC(rlon, double,
+
7234 NOBS);
+
7235 ALLOC(rlat, double,
+
7236 NOBS);
+
7237 ALLOC(robs, double,
+
7238 NOBS);
+
7239
+
7240 /* Read observation data... */
+
7241 read_obs(ctl->sample_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
7242
+
7243 /* Read kernel data... */
+
7244 if (ctl->sample_kernel[0] != '-')
+
7245 read_kernel(ctl->sample_kernel, kz, kw, &nk);
+
7246
+
7247 /* Create output file... */
+
7248 LOG(1, "Write sample data: %s", filename);
+
7249 if (!(out = fopen(filename, "w")))
+
7250 ERRMSG("Cannot create file!");
+
7251
+
7252 /* Write header... */
+
7253 fprintf(out,
+
7254 "# $1 = time [s]\n"
+
7255 "# $2 = altitude [km]\n"
+
7256 "# $3 = longitude [deg]\n"
+
7257 "# $4 = latitude [deg]\n"
+
7258 "# $5 = surface area [km^2]\n"
+
7259 "# $6 = layer depth [km]\n"
+
7260 "# $7 = number of particles [1]\n"
+
7261 "# $8 = column density [kg/m^2]\n"
+
7262 "# $9 = volume mixing ratio [ppv]\n"
+
7263 "# $10 = observed BT index [K]\n\n");
+
7264
+
7265 /* Set latitude range, squared radius, and area... */
+
7266 dlat = DY2DEG(ctl->sample_dx);
+
7267 rmax2 = SQR(ctl->sample_dx);
+
7268 area = M_PI * rmax2;
+
7269 }
+
7270
+
7271 /* Set time interval for output... */
+
7272 double t0 = t - 0.5 * ctl->dt_mod;
+
7273 double t1 = t + 0.5 * ctl->dt_mod;
+
7274
+
7275 /* Loop over observations... */
+
7276 for (int i = 0; i < nobs; i++) {
+
7277
+
7278 /* Check time... */
+
7279 if (rt[i] < t0)
+
7280 continue;
+
7281 else if (rt[i] >= t1)
+
7282 break;
+
7283
+
7284 /* Calculate Cartesian coordinates... */
+
7285 double x0[3];
+
7286 geo2cart(0, rlon[i], rlat[i], x0);
+
7287
+
7288 /* Set pressure range... */
+
7289 double rp = P(rz[i]);
+
7290 double ptop = P(rz[i] + ctl->sample_dz);
+
7291 double pbot = P(rz[i] - ctl->sample_dz);
+
7292
+
7293 /* Init... */
+
7294 double mass = 0;
+
7295 int np = 0;
+
7296
+
7297 /* Loop over air parcels... */
+
7298#pragma omp parallel for default(shared) reduction(+:mass,np)
+
7299 for (int ip = 0; ip < atm->np; ip++) {
+
7300
+
7301 /* Check time... */
+
7302 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7303 continue;
+
7304
+
7305 /* Check latitude... */
+
7306 if (fabs(rlat[i] - atm->lat[ip]) > dlat)
+
7307 continue;
+
7308
+
7309 /* Check horizontal distance... */
+
7310 double x1[3];
+
7311 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
7312 if (DIST2(x0, x1) > rmax2)
+
7313 continue;
+
7314
+
7315 /* Check pressure... */
+
7316 if (ctl->sample_dz > 0)
+
7317 if (atm->p[ip] > pbot || atm->p[ip] < ptop)
+
7318 continue;
+
7319
+
7320 /* Add mass... */
+
7321 if (ctl->qnt_m >= 0)
+
7322 mass +=
+
7323 kernel_weight(kz, kw, nk, atm->p[ip]) * atm->q[ctl->qnt_m][ip];
+
7324 np++;
+
7325 }
+
7326
+
7327 /* Calculate column density... */
+
7328 double cd = mass / (1e6 * area);
+
7329
+
7330 /* Calculate volume mixing ratio... */
+
7331 double vmr = 0;
+
7332 if (ctl->molmass > 0 && ctl->sample_dz > 0) {
+
7333 if (mass > 0) {
+
7334
+
7335 /* Get temperature... */
+
7336 double temp;
+ +
7338 intpol_met_time_3d(met0, met0->t, met1, met1->t, rt[i], rp,
+
7339 rlon[i], rlat[i], &temp, ci, cw, 1);
+
7340
+
7341 /* Calculate volume mixing ratio... */
+
7342 vmr = MA / ctl->molmass * mass
+
7343 / (RHO(rp, temp) * 1e6 * area * 1e3 * ctl->sample_dz);
+
7344 }
+
7345 } else
+
7346 vmr = GSL_NAN;
+
7347
+
7348 /* Write output... */
+
7349 fprintf(out, "%.2f %g %g %g %g %g %d %g %g %g\n", rt[i], rz[i],
+
7350 rlon[i], rlat[i], area, ctl->sample_dz, np, cd, vmr, robs[i]);
+
7351 }
+
7352
+
7353 /* Finalize...... */
+
7354 if (t == ctl->t_stop) {
+
7355
+
7356 /* Close output file... */
+
7357 fclose(out);
+
7358
+
7359 /* Free... */
+
7360 free(rt);
+
7361 free(rz);
+
7362 free(rlon);
+
7363 free(rlat);
+
7364 free(robs);
+
7365 }
+
7366}
+
7367
+
7368/*****************************************************************************/
+
7369
+ +
7371 const char *filename,
+
7372 ctl_t * ctl,
+
7373 atm_t * atm,
+
7374 double t) {
+
7375
+
7376 static FILE *out;
+
7377
+
7378 static double rmax2, x0[3], x1[3];
+
7379
+
7380 /* Set timer... */
+
7381 SELECT_TIMER("WRITE_STATION", "OUTPUT", NVTX_WRITE);
+
7382
+
7383 /* Init... */
+
7384 if (t == ctl->t_start) {
+
7385
+
7386 /* Write info... */
+
7387 LOG(1, "Write station data: %s", filename);
+
7388
+
7389 /* Create new file... */
+
7390 if (!(out = fopen(filename, "w")))
+
7391 ERRMSG("Cannot create file!");
+
7392
+
7393 /* Write header... */
+
7394 fprintf(out,
+
7395 "# $1 = time [s]\n"
+
7396 "# $2 = altitude [km]\n"
+
7397 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
7398 for (int iq = 0; iq < ctl->nq; iq++)
+
7399 fprintf(out, "# $%i = %s [%s]\n", (iq + 5),
+
7400 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
7401 fprintf(out, "\n");
+
7402
+
7403 /* Set geolocation and search radius... */
+
7404 geo2cart(0, ctl->stat_lon, ctl->stat_lat, x0);
+
7405 rmax2 = SQR(ctl->stat_r);
+
7406 }
+
7407
+
7408 /* Set time interval for output... */
+
7409 double t0 = t - 0.5 * ctl->dt_mod;
+
7410 double t1 = t + 0.5 * ctl->dt_mod;
+
7411
+
7412 /* Loop over air parcels... */
+
7413 for (int ip = 0; ip < atm->np; ip++) {
+
7414
+
7415 /* Check time... */
+
7416 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7417 continue;
+
7418
+
7419 /* Check time range for station output... */
+
7420 if (atm->time[ip] < ctl->stat_t0 || atm->time[ip] > ctl->stat_t1)
+
7421 continue;
+
7422
+
7423 /* Check station flag... */
+
7424 if (ctl->qnt_stat >= 0)
+
7425 if (atm->q[ctl->qnt_stat][ip])
+
7426 continue;
+
7427
+
7428 /* Get Cartesian coordinates... */
+
7429 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
7430
+
7431 /* Check horizontal distance... */
+
7432 if (DIST2(x0, x1) > rmax2)
+
7433 continue;
+
7434
+
7435 /* Set station flag... */
+
7436 if (ctl->qnt_stat >= 0)
+
7437 atm->q[ctl->qnt_stat][ip] = 1;
+
7438
+
7439 /* Write data... */
+
7440 fprintf(out, "%.2f %g %g %g",
+
7441 atm->time[ip], Z(atm->p[ip]), atm->lon[ip], atm->lat[ip]);
+
7442 for (int iq = 0; iq < ctl->nq; iq++) {
+
7443 fprintf(out, " ");
+
7444 fprintf(out, ctl->qnt_format[iq], atm->q[iq][ip]);
+
7445 }
+
7446 fprintf(out, "\n");
+
7447 }
+
7448
+
7449 /* Close file... */
+
7450 if (t == ctl->t_stop)
+
7451 fclose(out);
+
7452}
+
7453
+
7454/*****************************************************************************/
+
7455
+ +
7457 const char *filename,
+
7458 ctl_t * ctl,
+
7459 atm_t * atm,
+
7460 double t) {
+
7461
+
7462 FILE *out;
+
7463
+
7464 /* Set timer... */
+
7465 SELECT_TIMER("WRITE_VTK", "OUTPUT", NVTX_WRITE);
+
7466
+
7467 /* Write info... */
+
7468 LOG(1, "Write VTK data: %s", filename);
+
7469
+
7470 /* Set time interval for output... */
+
7471 double t0 = t - 0.5 * ctl->dt_mod;
+
7472 double t1 = t + 0.5 * ctl->dt_mod;
+
7473
+
7474 /* Create file... */
+
7475 if (!(out = fopen(filename, "w")))
+
7476 ERRMSG("Cannot create file!");
+
7477
+
7478 /* Count data points... */
+
7479 int np = 0;
+
7480 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7481 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7482 continue;
+
7483 np++;
+
7484 }
+
7485
+
7486 /* Write header... */
+
7487 fprintf(out,
+
7488 "# vtk DataFile Version 3.0\n"
+
7489 "vtk output\n" "ASCII\n" "DATASET POLYDATA\n");
+
7490
+
7491 /* Write point coordinates... */
+
7492 fprintf(out, "POINTS %d float\n", np);
+
7493 if (ctl->vtk_sphere) {
+
7494 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7495 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7496 continue;
+
7497 double radius = (RE + Z(atm->p[ip]) * ctl->vtk_scale
+
7498 + ctl->vtk_offset) / RE;
+
7499 double x = radius * cos(atm->lat[ip] / 180. * M_PI)
+
7500 * cos(atm->lon[ip] / 180. * M_PI);
+
7501 double y = radius * cos(atm->lat[ip] / 180. * M_PI)
+
7502 * sin(atm->lon[ip] / 180. * M_PI);
+
7503 double z = radius * sin(atm->lat[ip] / 180. * M_PI);
+
7504 fprintf(out, "%g %g %g\n", x, y, z);
+
7505 }
+
7506 } else
+
7507 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7508 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7509 continue;
+
7510 fprintf(out, "%g %g %g\n", atm->lon[ip], atm->lat[ip],
+
7511 Z(atm->p[ip]) * ctl->vtk_scale + ctl->vtk_offset);
+
7512 }
+
7513
+
7514 /* Write point data... */
+
7515 fprintf(out, "POINT_DATA %d\n", np);
+
7516 for (int iq = 0; iq < ctl->nq; iq++) {
+
7517 fprintf(out, "SCALARS %s float 1\n" "LOOKUP_TABLE default\n",
+
7518 ctl->qnt_name[iq]);
+
7519 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7520 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7521 continue;
+
7522 fprintf(out, "%g\n", atm->q[iq][ip]);
+
7523 }
+
7524 }
+
7525
+
7526 /* Close file... */
+
7527 fclose(out);
+
7528}
+
void read_met_bin_2d(FILE *in, met_t *met, float var[EX][EY], char *varname)
Read 2-D meteo variable.
Definition: libtrac.c:3330
+
void intpol_met_time_2d(met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init)
Temporal interpolation of meteo data.
Definition: libtrac.c:1366
+
int write_met(char *filename, ctl_t *ctl, met_t *met)
Read meteo data file.
Definition: libtrac.c:6769
+
void day2doy(const int year, const int mon, const int day, int *doy)
Compress or decompress array with zfp.
Definition: libtrac.c:654
+
void read_met_extrapolate(met_t *met)
Extrapolate meteo data at lower boundary.
Definition: libtrac.c:3692
+
int read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in netCDF format.
Definition: libtrac.c:1984
+
void read_clim_zm(char *filename, char *varname, clim_zm_t *zm)
Read climatological zonal means.
Definition: libtrac.c:2202
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void read_met_levels(int ncid, ctl_t *ctl, met_t *met)
Read meteo data on vertical levels.
Definition: libtrac.c:3969
+
void timer(const char *name, const char *group, int output)
Measure wall-clock time.
Definition: libtrac.c:5480
+
double sedi(const double p, const double T, const double rp, const double rhop)
Calculate sedimentation velocity.
Definition: libtrac.c:5305
+
void read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname)
Read 3-D meteo variable.
Definition: libtrac.c:3359
+
int read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init)
Read and convert 3D variable from meteo data file.
Definition: libtrac.c:4367
+
void write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance)
Write 3-D meteo variable.
Definition: libtrac.c:6911
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
void write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write VTK data.
Definition: libtrac.c:7456
+
void quicksort(double arr[], int brr[], const int low, const int high)
Parallel quicksort.
Definition: libtrac.c:1715
+
int read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in ASCII format.
Definition: libtrac.c:1830
+
void write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in ASCII format.
Definition: libtrac.c:5667
+
void read_met_periodic(met_t *met)
Create meteo data with periodic boundary conditions.
Definition: libtrac.c:4576
+
void read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP])
Convert meteo data from model levels to pressure levels.
Definition: libtrac.c:4133
+
void clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim)
Initialization function for OH climatology.
Definition: libtrac.c:82
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double clim_tropo(const clim_t *clim, const double t, const double lat)
Climatology of tropopause pressure.
Definition: libtrac.c:163
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
void write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname)
Write 2-D meteo variable.
Definition: libtrac.c:6882
+
int read_clim_ts(char *filename, clim_ts_t *ts)
Read climatological time series.
Definition: libtrac.c:2148
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
void level_definitions(ctl_t *ctl)
Get predefined pressure levels.
Definition: libtrac.c:1559
+
void write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in CLaMS position file and trajectory format.
Definition: libtrac.c:5799
+
void time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
Convert date to seconds.
Definition: libtrac.c:5449
+
void write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write gridded data.
Definition: libtrac.c:6391
+
void read_met_pbl(met_t *met)
Calculate pressure of the boundary layer.
Definition: libtrac.c:4505
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
void spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
Spline interpolation.
Definition: libtrac.c:5338
+
void read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met)
Calculate tropopause data.
Definition: libtrac.c:5009
+
int read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in CLaMS format.
Definition: libtrac.c:1928
+
void write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write sample data.
Definition: libtrac.c:7207
+
int read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in binary format.
Definition: libtrac.c:1872
+
void read_met_sample(ctl_t *ctl, met_t *met)
Downsampling of meteo data.
Definition: libtrac.c:4763
+
void write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write station data.
Definition: libtrac.c:7370
+
void read_met_monotonize(met_t *met)
Smooth vertical zeta and pressure profiles.
Definition: libtrac.c:4174
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write CSI data.
Definition: libtrac.c:6049
+
void read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk)
Read kernel data file.
Definition: libtrac.c:3058
+
void get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
Get meteo data for given time step.
Definition: libtrac.c:717
+
void read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs)
Read observation data.
Definition: libtrac.c:5184
+
float stddev(const float *data, const int n)
Calculate standard deviation.
Definition: libtrac.c:5387
+
void read_clim_photo(char *filename, clim_photo_t *photo)
Read climatological photolysis rates.
Definition: libtrac.c:2077
+
void write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in ASCII format.
Definition: libtrac.c:6573
+
void intpol_met_4d_coord(met_t *met0, float heights0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float heights1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatiotemporal interpolation of meteo data.
Definition: libtrac.c:942
+
void read_met_detrend(ctl_t *ctl, met_t *met)
Apply detrending method to temperature and winds.
Definition: libtrac.c:3588
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_met_cloud(ctl_t *ctl, met_t *met)
Calculate cloud properties.
Definition: libtrac.c:3538
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void read_met_ozone(met_t *met)
Calculate total column ozone.
Definition: libtrac.c:4735
+
void write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in CLaMS position file format.
Definition: libtrac.c:5950
+
void clim_tropo_init(clim_t *clim)
Initialize tropopause climatology.
Definition: libtrac.c:191
+
void cart2geo(const double *x, double *z, double *lon, double *lat)
Convert Cartesian coordinates to geolocation.
Definition: libtrac.c:44
+
double sza_calc(const double sec, const double lon, const double lat)
Calculate solar zenith angle.
Definition: libtrac.c:5408
+
void read_met_surface(int ncid, met_t *met, ctl_t *ctl)
Read surface data.
Definition: libtrac.c:4903
+
void doy2day(const int year, const int doy, int *mon, int *day)
Get date from day of year.
Definition: libtrac.c:673
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
int locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x)
locate the index in a column of a three dimensional array.
Definition: libtrac.c:1463
+
void compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout)
Pack or unpack array.
Definition: libtrac.c:413
+
int read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init)
Read and convert 2D variable from meteo data file.
Definition: libtrac.c:4249
+
void read_met_pv(met_t *met)
Calculate potential vorticity.
Definition: libtrac.c:4629
+
void get_met_replace(char *orig, char *search, char *repl)
Replace template strings in filename.
Definition: libtrac.c:918
+
void write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in binary format.
Definition: libtrac.c:5749
+
int quicksort_partition(double arr[], int brr[], const int low, const int high)
Partition function for quicksort.
Definition: libtrac.c:1736
+
double clim_ts(const clim_ts_t *ts, const double t)
Interpolate time series.
Definition: libtrac.c:346
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
void write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in netCDF format.
Definition: libtrac.c:6666
+
void read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met)
Read coordinates of meteo data.
Definition: libtrac.c:3850
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in netCDF format.
Definition: libtrac.c:6004
+
void locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double height_ap, int *ind)
Locate the four vertical indizes of a box for a given height value.
Definition: libtrac.c:1497
+
void get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename)
Get meteo data for time step.
Definition: libtrac.c:855
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
void intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1177
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
double kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p)
Get weighting factor from kernel function.
Definition: libtrac.c:1515
+
double buoyancy_frequency(const double p0, const double t0, const double p1, const double t1)
Calculate buoyancy frequency.
Definition: libtrac.c:29
+
void read_met_cape(clim_t *clim, met_t *met)
Calculate convective available potential energy.
Definition: libtrac.c:3428
+
double tropo_weight(const clim_t *clim, const double t, const double lat, const double p)
Get weighting factor based on tropopause distance.
Definition: libtrac.c:5583
+
void read_met_geopot(ctl_t *ctl, met_t *met)
Calculate geopotential heights.
Definition: libtrac.c:3730
+
void write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write profile data.
Definition: libtrac.c:6979
+
void write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write ensemble data.
Definition: libtrac.c:6294
+
double lapse_rate(const double t, const double h2o)
Calculate moist adiabatic lapse rate.
Definition: libtrac.c:1541
+
double clim_photo(double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c)
Interpolate photolysis rate data.
Definition: libtrac.c:112
+
MPTRAC library declarations.
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define RE
Mean radius of Earth [km].
Definition: libtrac.h:143
+
#define TVIRT(t, h2o)
Compute virtual temperature.
Definition: libtrac.h:654
+
#define ARRAY_3D(ix, iy, ny, iz, nz)
Get 3-D array index.
Definition: libtrac.h:262
+
#define MA
Molar mass of dry air [g/mol].
Definition: libtrac.h:118
+
#define KB
Boltzmann constant [kg m^2/(K s^2)].
Definition: libtrac.h:113
+
#define MH2O
Molar mass of water vapor [g/mol].
Definition: libtrac.h:123
+
#define NENS
Maximum number of data points for ensemble analysis.
Definition: libtrac.h:197
+
#define FWRITE(ptr, type, size, out)
Write binary data.
Definition: libtrac.h:317
+
#define NC_PUT_ATT_GLOBAL(attname, text)
Set netCDF global attribute.
Definition: libtrac.h:549
+
#define LAPSE(p1, t1, p2, t2)
Calculate lapse rate between pressure levels.
Definition: libtrac.h:416
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define RA
Specific gas constant of dry air [J/(kg K)].
Definition: libtrac.h:138
+
#define INTPOL_INIT
Initialize cache variables for interpolation.
Definition: libtrac.h:323
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define NC_PUT_INT(varname, ptr, hyperslab)
Write netCDF integer array.
Definition: libtrac.h:533
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define SH(h2o)
Compute specific humidity from water vapor volume mixing ratio.
Definition: libtrac.h:617
+
#define NOBS
Maximum number of observation data points.
Definition: libtrac.h:202
+
#define ARRAY_2D(ix, iy, ny)
Get 2-D array index.
Definition: libtrac.h:258
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define LV
Latent heat of vaporization of water [J/kg].
Definition: libtrac.h:108
+
#define G0
Standard gravity [m/s^2].
Definition: libtrac.h:98
+
#define CP
Maximum number of pressure levels for climatological data.
Definition: libtrac.h:222
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
#define FREAD(ptr, type, size, in)
Read binary data.
Definition: libtrac.h:311
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define DEG2DY(dlat)
Convert degrees to meridional distance.
Definition: libtrac.h:274
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define EPS
Ratio of the specific gas constant of dry air and water vapor [1].
Definition: libtrac.h:93
+
#define THETA(p, t)
Compute potential temperature.
Definition: libtrac.h:639
+
#define RI
Ideal gas constant [J/(mol K)].
Definition: libtrac.h:148
+
#define NORM(a)
Compute norm of a vector.
Definition: libtrac.h:567
+
#define SET_QNT(qnt, name, longname, unit)
Set atmospheric quantity index.
Definition: libtrac.h:609
+
#define TOK(line, tok, format, var)
Get string tokens.
Definition: libtrac.h:647
+
#define ZDIFF(lnp0, t0, h2o0, lnp1, t1, h2o1)
Calculate geopotential height difference.
Definition: libtrac.h:662
+
#define THETAVIRT(p, t, h2o)
Compute virtual potential temperature.
Definition: libtrac.h:643
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
#define WARN(...)
Print warning message.
Definition: libtrac.h:692
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define MO3
Molar mass of ozone [g/mol].
Definition: libtrac.h:128
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define NTIMER
Maximum number of timers.
Definition: libtrac.h:714
+
#define SELECT_TIMER(id, group, color)
Select timer.
Definition: libtrac.h:721
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define CY
Maximum number of latitudes for climatological data.
Definition: libtrac.h:212
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define NCSI
Maximum number of data points for CSI calculation.
Definition: libtrac.h:177
+
#define NC_GET_DOUBLE(varname, ptr, force)
Read netCDF double array.
Definition: libtrac.h:500
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define PSAT(t)
Compute saturation pressure over water (WMO, 2018).
Definition: libtrac.h:575
+
#define SWAP(x, y, type)
Swap macro.
Definition: libtrac.h:625
+
#define RHO(p, t)
Compute density of air.
Definition: libtrac.h:596
+
#define CO3
Maximum number of total column ozone data for climatological data.
Definition: libtrac.h:217
+
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
Write netCDF double array.
Definition: libtrac.h:523
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
#define DIST2(a, b)
Compute squared distance between two vectors.
Definition: libtrac.h:299
+
#define DEG2DX(dlon, lat)
Convert degrees to zonal distance.
Definition: libtrac.h:270
+
#define CPD
Specific heat of dry air at constant pressure [J/(kg K)].
Definition: libtrac.h:88
+
#define CSZA
Maximum number of solar zenith angles for climatological data.
Definition: libtrac.h:227
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
#define FMOD(x, y)
Compute floating point modulo.
Definition: libtrac.h:307
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Climatological data in form of photolysis rates.
Definition: libtrac.h:1703
+
int nsza
Number of solar zenith angles.
Definition: libtrac.h:1709
+
double sza[CSZA]
Solar zenith angle [rad].
Definition: libtrac.h:1718
+
double p[CP]
Pressure [hPa].
Definition: libtrac.h:1715
+
double ccl2f2[CP][CSZA][CO3]
CCl2F2 photolysis rate [1/s].
Definition: libtrac.h:1733
+
double ccl3f[CP][CSZA][CO3]
CCl3F photolysis rate [1/s].
Definition: libtrac.h:1730
+
double n2o[CP][CSZA][CO3]
N2O photolysis rate [1/s].
Definition: libtrac.h:1724
+
double ccl4[CP][CSZA][CO3]
CCl4 photolysis rate [1/s].
Definition: libtrac.h:1727
+
double o3c[CO3]
Total column ozone [DU].
Definition: libtrac.h:1721
+
int np
Number of pressure levels.
Definition: libtrac.h:1706
+
int no3c
Number of total ozone columns.
Definition: libtrac.h:1712
+
Climatological data.
Definition: libtrac.h:1778
+
clim_ts_t ccl2f2
CFC-12 time series.
Definition: libtrac.h:1820
+
clim_photo_t photo
Photolysis rates.
Definition: libtrac.h:1796
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
int tropo_ntime
Number of tropopause timesteps.
Definition: libtrac.h:1781
+
clim_ts_t sf6
SF6 time series.
Definition: libtrac.h:1826
+
clim_ts_t ccl4
CFC-10 time series.
Definition: libtrac.h:1814
+
clim_ts_t ccl3f
CFC-11 time series.
Definition: libtrac.h:1817
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
double tropo_lat[73]
Tropopause latitudes [deg].
Definition: libtrac.h:1790
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
int tropo_nlat
Number of tropopause latitudes.
Definition: libtrac.h:1784
+
clim_zm_t oh
OH zonal means.
Definition: libtrac.h:1802
+
double tropo[12][73]
Tropopause pressure values [hPa].
Definition: libtrac.h:1793
+
double tropo_time[12]
Tropopause time steps [s].
Definition: libtrac.h:1787
+
clim_ts_t n2o
N2O time series.
Definition: libtrac.h:1823
+
Climatological data in form of time series.
Definition: libtrac.h:1738
+
double vmr[CTS]
Volume mixing ratio [ppv].
Definition: libtrac.h:1747
+
double time[CTS]
Time [s].
Definition: libtrac.h:1744
+
int ntime
Number of timesteps.
Definition: libtrac.h:1741
+
Climatological data in form of zonal means.
Definition: libtrac.h:1752
+
double time[CT]
Time [s].
Definition: libtrac.h:1764
+
int np
Number of pressure levels.
Definition: libtrac.h:1761
+
double p[CP]
Pressure [hPa].
Definition: libtrac.h:1770
+
double vmr[CT][CP][CY]
Volume mixing ratio [ppv].
Definition: libtrac.h:1773
+
int ntime
Number of timesteps.
Definition: libtrac.h:1755
+
int nlat
Number of latitudes.
Definition: libtrac.h:1758
+
double lat[CY]
Latitude [deg].
Definition: libtrac.h:1767
+
Control parameters.
Definition: libtrac.h:799
+
double grid_z0
Lower altitude of gridded data [km].
Definition: libtrac.h:1547
+
int qnt_o3
Quantity array index for ozone vmr.
Definition: libtrac.h:923
+
double csi_lat1
Upper latitude of gridded CSI data [deg].
Definition: libtrac.h:1520
+
char csi_obsfile[LEN]
Observation data file for CSI analysis.
Definition: libtrac.h:1487
+
int qnt_Coh
Quantity array index for OH concentration.
Definition: libtrac.h:1058
+
int vert_coord_ap
Vertical coordinate of air parcels (0=pressure, 1=zeta).
Definition: libtrac.h:812
+
double wet_depo_ic_a
Coefficient A for wet deposition in cloud (exponential form).
Definition: libtrac.h:1429
+
int met_nc_scale
Check netCDF scaling factors (0=no, 1=yes).
Definition: libtrac.h:1118
+
int qnt_pel
Quantity array index for pressure at equilibrium level (EL).
Definition: libtrac.h:950
+
int csi_nz
Number of altitudes of gridded CSI data.
Definition: libtrac.h:1496
+
double molmass
Molar mass [g/mol].
Definition: libtrac.h:1294
+
int qnt_p
Quantity array index for pressure.
Definition: libtrac.h:902
+
int qnt_Cccl2f2
Quantity array index for CFC-12 concentration.
Definition: libtrac.h:1082
+
char atm_gpfile[LEN]
Gnuplot file for atmospheric data.
Definition: libtrac.h:1462
+
int mixing_nx
Number of longitudes of mixing grid.
Definition: libtrac.h:1357
+
double chemgrid_z1
Upper altitude of chemistry grid [km].
Definition: libtrac.h:1381
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
int qnt_rhop
Quantity array index for particle density.
Definition: libtrac.h:860
+
double csi_obsmin
Minimum observation index to trigger detection.
Definition: libtrac.h:1490
+
int qnt_pcb
Quantity array index for cloud bottom pressure.
Definition: libtrac.h:938
+
char clim_n2o_timeseries[LEN]
Filename of N2O time series.
Definition: libtrac.h:1333
+
double bound_dzs
Boundary conditions surface layer depth [km].
Definition: libtrac.h:1282
+
double csi_lon1
Upper longitude of gridded CSI data [deg].
Definition: libtrac.h:1511
+
int qnt_u
Quantity array index for zonal wind.
Definition: libtrac.h:911
+
double stat_lon
Longitude of station [deg].
Definition: libtrac.h:1625
+
int clams_met_data
Read MPTRAC or CLaMS meteo data (0=MPTRAC, 1=CLaMS).
Definition: libtrac.h:818
+
double mixing_trop
Interparcel exchange parameter for mixing in the troposphere.
Definition: libtrac.h:1342
+
double sort_dt
Time step for sorting of particle data [s].
Definition: libtrac.h:1203
+
double mixing_z1
Upper altitude of mixing grid [km].
Definition: libtrac.h:1354
+
double stat_r
Search radius around station [km].
Definition: libtrac.h:1631
+
double wet_depo_bc_a
Coefficient A for wet deposition below cloud (exponential form).
Definition: libtrac.h:1423
+
int csi_ny
Number of latitudes of gridded CSI data.
Definition: libtrac.h:1514
+
int vtk_sphere
Spherical projection for VTK data (0=no, 1=yes).
Definition: libtrac.h:1655
+
double chemgrid_z0
Lower altitude of chemistry grid [km].
Definition: libtrac.h:1378
+
int qnt_iwc
Quantity array index for cloud ice water content.
Definition: libtrac.h:929
+
double chemgrid_lat0
Lower latitude of chemistry grid [deg].
Definition: libtrac.h:1396
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
int qnt_Co1d
Quantity array index for O(1D) concentration.
Definition: libtrac.h:1070
+
int qnt_pw
Quantity array index for partial water vapor pressure.
Definition: libtrac.h:998
+
char prof_basename[LEN]
Basename for profile output file.
Definition: libtrac.h:1574
+
double grid_z1
Upper altitude of gridded data [km].
Definition: libtrac.h:1550
+
int direction
Direction flag (1=forward calculation, -1=backward calculation).
Definition: libtrac.h:1094
+
char balloon[LEN]
Balloon position filename.
Definition: libtrac.h:1210
+
int qnt_Cccl4
Quantity array index for CFC-10 concentration.
Definition: libtrac.h:1076
+
int met_dp
Stride for pressure levels.
Definition: libtrac.h:1136
+
double met_dt_out
Time step for sampling of meteo data along trajectories [s].
Definition: libtrac.h:1197
+
int qnt_h2o2
Quantity array index for hydrogen peroxide number concentrations.
Definition: libtrac.h:968
+
int qnt_vh
Quantity array index for horizontal wind.
Definition: libtrac.h:1025
+
char species[LEN]
Species.
Definition: libtrac.h:1291
+
int csi_nx
Number of longitudes of gridded CSI data.
Definition: libtrac.h:1505
+
double csi_lat0
Lower latitude of gridded CSI data [deg].
Definition: libtrac.h:1517
+
double turb_dz_trop
Vertical turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1225
+
int qnt_lwc
Quantity array index for cloud liquid water content.
Definition: libtrac.h:926
+
double turb_mesoz
Vertical scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1234
+
int vert_coord_met
Vertical coordinate of input meteo data (0=automatic, 1=eta).
Definition: libtrac.h:815
+
int grid_nx
Number of longitudes of gridded data.
Definition: libtrac.h:1553
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
double bound_mass
Boundary conditions mass per particle [kg].
Definition: libtrac.h:1255
+
double grid_lat0
Lower latitude of gridded data [deg].
Definition: libtrac.h:1565
+
int qnt_ts
Quantity array index for surface temperature.
Definition: libtrac.h:866
+
int qnt_plfc
Quantity array index for pressure at level of free convection (LCF).
Definition: libtrac.h:947
+
double grid_lon0
Lower longitude of gridded data [deg].
Definition: libtrac.h:1556
+
int qnt_o1d
Quantity array index for atomic oxygen number concentrations.
Definition: libtrac.h:974
+
int met_tropo_spline
Tropopause interpolation method (0=linear, 1=spline).
Definition: libtrac.h:1188
+
char sample_kernel[LEN]
Kernel data file for sample output.
Definition: libtrac.h:1610
+
int qnt_tvirt
Quantity array index for virtual temperature.
Definition: libtrac.h:1019
+
double dt_met
Time step of meteo data [s].
Definition: libtrac.h:1109
+
char clim_ho2_filename[LEN]
Filename of HO2 climatology.
Definition: libtrac.h:1315
+
double chemgrid_lat1
Upper latitude of chemistry grid [deg].
Definition: libtrac.h:1399
+
int met_geopot_sy
Latitudinal smoothing of geopotential heights.
Definition: libtrac.h:1160
+
char grid_gpfile[LEN]
Gnuplot file for gridded data.
Definition: libtrac.h:1535
+
double turb_dx_strat
Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1222
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
int qnt_lsm
Quantity array index for land-sea mask.
Definition: libtrac.h:878
+
int qnt_theta
Quantity array index for potential temperature.
Definition: libtrac.h:1010
+
int met_tropo_nlev_sep
WMO tropopause separation layer depth (number of levels).
Definition: libtrac.h:1179
+
double bound_lat1
Boundary conditions maximum longitude [deg].
Definition: libtrac.h:1270
+
double stat_t1
Stop time for station output [s].
Definition: libtrac.h:1637
+
char csi_kernel[LEN]
Kernel data file for CSI output.
Definition: libtrac.h:1481
+
double turb_dx_trop
Horizontal turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1219
+
int grid_type
Type of grid data files (0=ASCII, 1=netCDF).
Definition: libtrac.h:1571
+
double csi_lon0
Lower longitude of gridded CSI data [deg].
Definition: libtrac.h:1508
+
int qnt_pbl
Quantity array index for boundary layer pressure.
Definition: libtrac.h:884
+
double oh_chem[4]
Coefficients for OH reaction rate (A, E/R or k0, n, kinf, m).
Definition: libtrac.h:1405
+
int qnt_psice
Quantity array index for saturation pressure over ice.
Definition: libtrac.h:995
+
double chemgrid_lon0
Lower longitude of chemistry grid [deg].
Definition: libtrac.h:1387
+
int bound_pbl
Boundary conditions planetary boundary layer (0=no, 1=yes).
Definition: libtrac.h:1288
+
int qnt_mloss_wet
Quantity array index for total mass loss due to wet deposition.
Definition: libtrac.h:983
+
int met_geopot_sx
Longitudinal smoothing of geopotential heights.
Definition: libtrac.h:1157
+
int met_sy
Smoothing for latitudes.
Definition: libtrac.h:1142
+
int qnt_ps
Quantity array index for surface pressure.
Definition: libtrac.h:863
+
char prof_obsfile[LEN]
Observation data file for profile output.
Definition: libtrac.h:1577
+
int isosurf
Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon).
Definition: libtrac.h:1207
+
double bound_p1
Boundary conditions top pressure [hPa].
Definition: libtrac.h:1276
+
int qnt_zs
Quantity array index for surface geopotential height.
Definition: libtrac.h:869
+
int prof_nz
Number of altitudes of gridded profile data.
Definition: libtrac.h:1580
+
double csi_dt_out
Time step for CSI output [s].
Definition: libtrac.h:1484
+
double csi_modmin
Minimum column density to trigger detection [kg/m^2].
Definition: libtrac.h:1493
+
int met_sx
Smoothing for longitudes.
Definition: libtrac.h:1139
+
double chemgrid_lon1
Upper longitude of chemistry grid [deg].
Definition: libtrac.h:1390
+
double turb_mesox
Horizontal scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1231
+
int conv_mix_bot
Lower level for mixing (0=particle pressure, 1=surface).
Definition: libtrac.h:1249
+
char grid_kernel[LEN]
Kernel data file for grid output.
Definition: libtrac.h:1532
+
int met_zfp_prec
ZFP compression precision (for all variables, except z and T).
Definition: libtrac.h:1121
+
double prof_z0
Lower altitude of gridded profile data [km].
Definition: libtrac.h:1583
+
int qnt_w
Quantity array index for vertical velocity.
Definition: libtrac.h:917
+
double bound_vmr
Boundary conditions volume mixing ratio [ppv].
Definition: libtrac.h:1261
+
double met_tropo_pv
Dyanmical tropopause potential vorticity threshold [PVU].
Definition: libtrac.h:1182
+
int prof_nx
Number of longitudes of gridded profile data.
Definition: libtrac.h:1589
+
int qnt_stat
Quantity array index for station flag.
Definition: libtrac.h:848
+
int met_tropo
Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical).
Definition: libtrac.h:1167
+
int qnt_rp
Quantity array index for particle radius.
Definition: libtrac.h:857
+
double mixing_strat
Interparcel exchange parameter for mixing in the stratosphere.
Definition: libtrac.h:1345
+
int qnt_vz
Quantity array index for vertical velocity.
Definition: libtrac.h:1028
+
int qnt_ho2
Quantity array index for hydroperoxyl radical number concentrations.
Definition: libtrac.h:971
+
double csi_z1
Upper altitude of gridded CSI data [km].
Definition: libtrac.h:1502
+
double stat_t0
Start time for station output [s].
Definition: libtrac.h:1634
+
double oh_chem_beta
Beta parameter for diurnal variablity of OH.
Definition: libtrac.h:1408
+
char clim_o1d_filename[LEN]
Filename of O(1D) climatology.
Definition: libtrac.h:1318
+
char clim_photo[LEN]
Filename of photolysis rates climatology.
Definition: libtrac.h:1303
+
double mixing_z0
Lower altitude of mixing grid [km].
Definition: libtrac.h:1351
+
int qnt_mloss_decay
Quantity array index for total mass loss due to exponential decay.
Definition: libtrac.h:989
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
char csi_basename[LEN]
Basename of CSI data files.
Definition: libtrac.h:1478
+
double dry_depo_dp
Dry deposition surface layer [hPa].
Definition: libtrac.h:1447
+
int qnt_vs
Quantity array index for surface meridional wind.
Definition: libtrac.h:875
+
int qnt_Cco
Quantity array index for CO concentration.
Definition: libtrac.h:1055
+
double vtk_dt_out
Time step for VTK data output [s].
Definition: libtrac.h:1643
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
double conv_dt
Time interval for convection module [s].
Definition: libtrac.h:1243
+
char sample_obsfile[LEN]
Observation data file for sample output.
Definition: libtrac.h:1613
+
int qnt_hno3
Quantity array index for nitric acid vmr.
Definition: libtrac.h:962
+
char grid_basename[LEN]
Basename of grid data files.
Definition: libtrac.h:1529
+
int qnt_h2ot
Quantity array index for tropopause water vapor vmr.
Definition: libtrac.h:896
+
int qnt_rh
Quantity array index for relative humidity over water.
Definition: libtrac.h:1004
+
double bound_lat0
Boundary conditions minimum longitude [deg].
Definition: libtrac.h:1267
+
int met_dx
Stride for longitudes.
Definition: libtrac.h:1130
+
int mixing_ny
Number of latitudes of mixing grid.
Definition: libtrac.h:1366
+
int met_convention
Convention of the data layout.
Definition: libtrac.h:1112
+
int qnt_zeta_d
Quantity array index for diagnosed zeta vertical coordinate.
Definition: libtrac.h:1016
+
int cpl_zeta_and_press_modules
Coupled use of pressure based modules and diabatic advection.
Definition: libtrac.h:806
+
char clim_h2o2_filename[LEN]
Filename of H2O2 climatology.
Definition: libtrac.h:1312
+
int tracer_chem
Switch for first order tracer chemistry module (0=off, 1=on).
Definition: libtrac.h:1417
+
double dt_mod
Time step of simulation [s].
Definition: libtrac.h:1103
+
int qnt_tnat
Quantity array index for T_NAT.
Definition: libtrac.h:1043
+
int qnt_tice
Quantity array index for T_ice.
Definition: libtrac.h:1037
+
int qnt_zg
Quantity array index for geopotential height.
Definition: libtrac.h:899
+
double vtk_offset
Vertical offset for VTK data [km].
Definition: libtrac.h:1652
+
int qnt_v
Quantity array index for meridional wind.
Definition: libtrac.h:914
+
int qnt_mloss_dry
Quantity array index for total mass loss due to dry deposition.
Definition: libtrac.h:986
+
int read_mode
Read mode for nc__open.
Definition: libtrac.h:824
+
double bound_vmr_trend
Boundary conditions volume mixing ratio trend [ppv/s].
Definition: libtrac.h:1264
+
int met_cache
Preload meteo data into disk cache (0=no, 1=yes).
Definition: libtrac.h:1200
+
int met_cloud
Cloud data (0=none, 1=LWC+IWC, 2=RWC+SWC, 3=all).
Definition: libtrac.h:1191
+
int qnt_oh
Quantity array index for hydroxyl number concentrations.
Definition: libtrac.h:965
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
int qnt_Ch
Quantity array index for H concentration.
Definition: libtrac.h:1061
+
int oh_chem_reaction
Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular).
Definition: libtrac.h:1402
+
int qnt_h2o
Quantity array index for water vapor vmr.
Definition: libtrac.h:920
+
int prof_ny
Number of latitudes of gridded profile data.
Definition: libtrac.h:1598
+
int qnt_rhice
Quantity array index for relative humidity over ice.
Definition: libtrac.h:1007
+
int qnt_rho
Quantity array index for density of air.
Definition: libtrac.h:908
+
double sample_dz
Layer depth for sample output [km].
Definition: libtrac.h:1619
+
double wet_depo_ic_h[3]
Coefficients for wet deposition in cloud (Henry's law: Hb, Cb, pH).
Definition: libtrac.h:1435
+
double tdec_strat
Life time of particles in the stratosphere [s].
Definition: libtrac.h:1300
+
int qnt_us
Quantity array index for surface zonal wind.
Definition: libtrac.h:872
+
double grid_lon1
Upper longitude of gridded data [deg].
Definition: libtrac.h:1559
+
int conv_mix_top
Upper level for mixing (0=particle pressure, 1=EL).
Definition: libtrac.h:1252
+
int qnt_Cn2o
Quantity array index for N2O concentration.
Definition: libtrac.h:1085
+
int qnt_Cccl3f
Quantity array index for CFC-11 concentration.
Definition: libtrac.h:1079
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
char atm_basename[LEN]
Basename of atmospheric data files.
Definition: libtrac.h:1459
+
double met_cloud_min
Minimum cloud ice water content [kg/kg].
Definition: libtrac.h:1194
+
double mixing_lat0
Lower latitude of mixing grid [deg].
Definition: libtrac.h:1369
+
int qnt_pt
Quantity array index for tropopause pressure.
Definition: libtrac.h:887
+
int qnt_cl
Quantity array index for total column cloud water.
Definition: libtrac.h:941
+
int advect
Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta).
Definition: libtrac.h:1213
+
double prof_z1
Upper altitude of gridded profile data [km].
Definition: libtrac.h:1586
+
int reflect
Reflection of particles at top and bottom boundary (0=no, 1=yes).
Definition: libtrac.h:1216
+
int qnt_t
Quantity array index for temperature.
Definition: libtrac.h:905
+
int atm_filter
Time filter for atmospheric data output (0=none, 1=missval, 2=remove).
Definition: libtrac.h:1468
+
int kpp_chem
Switch for KPP chemistry module (0=off, 1=on).
Definition: libtrac.h:1414
+
int qnt_zeta
Quantity array index for zeta vertical coordinate.
Definition: libtrac.h:1013
+
double met_tropo_lapse
WMO tropopause lapse rate [K/km].
Definition: libtrac.h:1170
+
char ens_basename[LEN]
Basename of ensemble data file.
Definition: libtrac.h:1523
+
double wet_depo_pre[2]
Coefficients for precipitation calculation.
Definition: libtrac.h:1420
+
double csi_z0
Lower altitude of gridded CSI data [km].
Definition: libtrac.h:1499
+
int qnt_lapse
Quantity array index for lapse rate.
Definition: libtrac.h:1022
+
double stat_lat
Latitude of station [deg].
Definition: libtrac.h:1628
+
int qnt_Cho2
Quantity array index for HO2 concentration.
Definition: libtrac.h:1064
+
double wet_depo_bc_h[2]
Coefficients for wet deposition below cloud (Henry's law: Hb, Cb).
Definition: libtrac.h:1438
+
int grid_ny
Number of latitudes of gridded data.
Definition: libtrac.h:1562
+
int qnt_Csf6
Quantity array index for SF6 concentration.
Definition: libtrac.h:1088
+
int qnt_Ch2o
Quantity array index for H2O concentration.
Definition: libtrac.h:1049
+
double met_detrend
FWHM of horizontal Gaussian used for detrending [km].
Definition: libtrac.h:1148
+
int press_level_def
Use predefined pressure levels or not.
Definition: libtrac.h:809
+
char metbase[LEN]
Basename for meteo data.
Definition: libtrac.h:1106
+
double bound_dps
Boundary conditions surface layer depth [hPa].
Definition: libtrac.h:1279
+
int chemgrid_nz
Number of altitudes of chemistry grid.
Definition: libtrac.h:1375
+
int qnt_cape
Quantity array index for convective available potential energy (CAPE).
Definition: libtrac.h:953
+
double bound_mass_trend
Boundary conditions mass per particle trend [kg/s].
Definition: libtrac.h:1258
+
int mixing_nz
Number of altitudes of mixing grid.
Definition: libtrac.h:1348
+
int qnt_o3c
Quantity array index for total column ozone.
Definition: libtrac.h:959
+
double bound_p0
Boundary conditions bottom pressure [hPa].
Definition: libtrac.h:1273
+
double mixing_lon0
Lower longitude of mixing grid [deg].
Definition: libtrac.h:1360
+
char clim_ccl4_timeseries[LEN]
Filename of CFC-10 time series.
Definition: libtrac.h:1324
+
int qnt_Co3
Quantity array index for O3 concentration.
Definition: libtrac.h:1052
+
int qnt_tsts
Quantity array index for T_STS.
Definition: libtrac.h:1040
+
int grid_nz
Number of altitudes of gridded data.
Definition: libtrac.h:1544
+
char clim_oh_filename[LEN]
Filename of OH climatology.
Definition: libtrac.h:1309
+
double ens_dt_out
Time step for ensemble output [s].
Definition: libtrac.h:1526
+
char sample_basename[LEN]
Basename of sample data file.
Definition: libtrac.h:1607
+
int atm_stride
Particle index stride for atmospheric data files.
Definition: libtrac.h:1471
+
int met_relhum
Try to read relative humidity (0=no, 1=yes).
Definition: libtrac.h:1163
+
double mixing_lat1
Upper latitude of mixing grid [deg].
Definition: libtrac.h:1372
+
double atm_dt_out
Time step for atmospheric data output [s].
Definition: libtrac.h:1465
+
char clim_sf6_timeseries[LEN]
Filename of SF6 time series.
Definition: libtrac.h:1336
+
double prof_lat1
Upper latitude of gridded profile data [deg].
Definition: libtrac.h:1604
+
double psc_h2o
H2O volume mixing ratio for PSC analysis.
Definition: libtrac.h:1453
+
int met_sp
Smoothing for pressure levels.
Definition: libtrac.h:1145
+
double prof_lon0
Lower longitude of gridded profile data [deg].
Definition: libtrac.h:1592
+
double met_tropo_lapse_sep
WMO tropopause separation layer lapse rate [K/km].
Definition: libtrac.h:1176
+
int chemgrid_nx
Number of longitudes of chemistry grid.
Definition: libtrac.h:1384
+
int qnt_pct
Quantity array index for cloud top pressure.
Definition: libtrac.h:935
+
int qnt_psat
Quantity array index for saturation pressure over water.
Definition: libtrac.h:992
+
double prof_lat0
Lower latitude of gridded profile data [deg].
Definition: libtrac.h:1601
+
int qnt_cin
Quantity array index for convective inhibition (CIN).
Definition: libtrac.h:956
+
size_t chunkszhint
Chunk size hint for nc__open.
Definition: libtrac.h:821
+
double psc_hno3
HNO3 volume mixing ratio for PSC analysis.
Definition: libtrac.h:1456
+
double prof_lon1
Upper longitude of gridded profile data [deg].
Definition: libtrac.h:1595
+
int h2o2_chem_reaction
Reaction type for H2O2 chemistry (0=none, 1=SO2).
Definition: libtrac.h:1411
+
int qnt_Co3p
Quantity array index for O(3P) concentration.
Definition: libtrac.h:1073
+
double wet_depo_bc_ret_ratio
Coefficients for wet deposition below cloud: retention ratio.
Definition: libtrac.h:1444
+
int chemgrid_ny
Number of latitudes of chemistry grid.
Definition: libtrac.h:1393
+
char clim_ccl3f_timeseries[LEN]
Filename of CFC-11 time series.
Definition: libtrac.h:1327
+
int grid_sparse
Sparse output in grid data files (0=no, 1=yes).
Definition: libtrac.h:1541
+
char vtk_basename[LEN]
Basename of VTK data files.
Definition: libtrac.h:1640
+
double dry_depo_vdep
Dry deposition velocity [m/s].
Definition: libtrac.h:1450
+
int qnt_tt
Quantity array index for tropopause temperature.
Definition: libtrac.h:890
+
int met_np
Number of target pressure levels.
Definition: libtrac.h:1151
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
double met_zfp_tol_t
ZFP compression tolerance (for temperature).
Definition: libtrac.h:1124
+
double mixing_dt
Time interval for mixing [s].
Definition: libtrac.h:1339
+
int qnt_mloss_h2o2
Quantity array index for total mass loss due to H2O2 chemistry.
Definition: libtrac.h:980
+
double met_zfp_tol_z
ZFP compression tolerance (for geopotential height).
Definition: libtrac.h:1127
+
double vtk_scale
Vertical scaling factor for VTK data.
Definition: libtrac.h:1649
+
char clim_ccl2f2_timeseries[LEN]
Filename of CFC-12 time series.
Definition: libtrac.h:1330
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
int qnt_pv
Quantity array index for potential vorticity.
Definition: libtrac.h:1031
+
int qnt_mloss_oh
Quantity array index for total mass loss due to OH chemistry.
Definition: libtrac.h:977
+
int qnt_Ch2o2
Quantity array index for H2O2 concentration.
Definition: libtrac.h:1067
+
int qnt_sst
Quantity array index for sea surface temperature.
Definition: libtrac.h:881
+
double mixing_lon1
Upper longitude of mixing grid [deg].
Definition: libtrac.h:1363
+
char clim_hno3_filename[LEN]
Filename of HNO3 climatology.
Definition: libtrac.h:1306
+
double wet_depo_ic_ret_ratio
Coefficients for wet deposition in cloud: retention ratio.
Definition: libtrac.h:1441
+
int qnt_sh
Quantity array index for specific humidity.
Definition: libtrac.h:1001
+
double wet_depo_ic_b
Coefficient B for wet deposition in cloud (exponential form).
Definition: libtrac.h:1432
+
double wet_depo_bc_b
Coefficient B for wet deposition below cloud (exponential form).
Definition: libtrac.h:1426
+
int met_dy
Stride for latitudes.
Definition: libtrac.h:1133
+
int qnt_Cx
Quantity array index for trace species x concentration.
Definition: libtrac.h:1046
+
double turb_dz_strat
Vertical turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1228
+
double bound_zetas
Boundary conditions surface layer zeta [K].
Definition: libtrac.h:1285
+
int met_tropo_nlev
WMO tropopause layer depth (number of levels).
Definition: libtrac.h:1173
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
double met_tropo_theta
Dynamical tropopause potential temperature threshold [K].
Definition: libtrac.h:1185
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
char qnt_longname[NQ][LEN]
Quantity long names.
Definition: libtrac.h:833
+
double met_p[EP]
Target pressure levels [hPa].
Definition: libtrac.h:1154
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
double tdec_trop
Life time of particles in the troposphere [s].
Definition: libtrac.h:1297
+
double sample_dx
Horizontal radius for sample output [km].
Definition: libtrac.h:1616
+
int vtk_stride
Particle index stride for VTK data.
Definition: libtrac.h:1646
+
char stat_basename[LEN]
Basename of station data file.
Definition: libtrac.h:1622
+
double grid_lat1
Upper latitude of gridded data [deg].
Definition: libtrac.h:1568
+
int qnt_zt
Quantity array index for tropopause geopotential height.
Definition: libtrac.h:893
+
int conv_mix
Type of vertical mixing (0=pressure, 1=density).
Definition: libtrac.h:1246
+
int met_type
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:1115
+
int qnt_cc
Quantity array index for cloud cover.
Definition: libtrac.h:932
+
int qnt_plcl
Quantity array index for pressure at lifted condensation level (LCL).
Definition: libtrac.h:944
+
double grid_dt_out
Time step for gridded data output [s].
Definition: libtrac.h:1538
+
int qnt_tdew
Quantity array index for dew point temperature.
Definition: libtrac.h:1034
+
Meteo data.
Definition: libtrac.h:1831
+
float zt[EX][EY]
Tropopause geopotential height [km].
Definition: libtrac.h:1888
+
float sst[EX][EY]
Sea surface temperature [K].
Definition: libtrac.h:1876
+
float o3c[EX][EY]
Total column ozone [DU].
Definition: libtrac.h:1918
+
float zeta_dotl[EX][EY][EP]
Vertical velocity on model levels [K/s].
Definition: libtrac.h:1975
+
float h2o[EX][EY][EP]
Water vapor volume mixing ratio [1].
Definition: libtrac.h:1945
+
float cape[EX][EY]
Convective available potential energy [J/kg].
Definition: libtrac.h:1912
+
float w[EX][EY][EP]
Vertical velocity [hPa/s].
Definition: libtrac.h:1939
+
float pct[EX][EY]
Cloud top pressure [hPa].
Definition: libtrac.h:1894
+
double hybrid[EP]
Hybrid model levels.
Definition: libtrac.h:1978
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
float lwc[EX][EY][EP]
Cloud liquid water content [kg/kg].
Definition: libtrac.h:1951
+
float us[EX][EY]
Surface zonal wind [m/s].
Definition: libtrac.h:1867
+
float vl[EX][EY][EP]
Meridional wind on model levels [m/s].
Definition: libtrac.h:1936
+
float patp[EX][EY][EP]
Pressure field in pressure levels [hPa].
Definition: libtrac.h:1963
+
float zs[EX][EY]
Surface geopotential height [km].
Definition: libtrac.h:1864
+
float o3[EX][EY][EP]
Ozone volume mixing ratio [1].
Definition: libtrac.h:1948
+
float cc[EX][EY][EP]
Cloud cover [1].
Definition: libtrac.h:1957
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
float ts[EX][EY]
Surface temperature [K].
Definition: libtrac.h:1861
+
float u[EX][EY][EP]
Zonal wind [m/s].
Definition: libtrac.h:1927
+
float ul[EX][EY][EP]
Zonal wind on model levels [m/s].
Definition: libtrac.h:1930
+
float pcb[EX][EY]
Cloud bottom pressure [hPa].
Definition: libtrac.h:1897
+
float pel[EX][EY]
Pressure at equilibrium level [hPa].
Definition: libtrac.h:1909
+
float cin[EX][EY]
Convective inhibition [J/kg].
Definition: libtrac.h:1915
+
float plcl[EX][EY]
Pressure at lifted condensation level (LCL) [hPa].
Definition: libtrac.h:1903
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
float pt[EX][EY]
Tropopause pressure [hPa].
Definition: libtrac.h:1882
+
float tt[EX][EY]
Tropopause temperature [K].
Definition: libtrac.h:1885
+
float pbl[EX][EY]
Boundary layer pressure [hPa].
Definition: libtrac.h:1879
+
float vs[EX][EY]
Surface meridional wind [m/s].
Definition: libtrac.h:1870
+
float z[EX][EY][EP]
Geopotential height [km].
Definition: libtrac.h:1921
+
float zeta_dot[EX][EY][EP]
Vertical velocity [K/s].
Definition: libtrac.h:1969
+
float v[EX][EY][EP]
Meridional wind [m/s].
Definition: libtrac.h:1933
+
int npl
Number of model levels.
Definition: libtrac.h:1846
+
float lsm[EX][EY]
Land-sea mask [1].
Definition: libtrac.h:1873
+
float iwc[EX][EY][EP]
Cloud ice water content [kg/kg].
Definition: libtrac.h:1954
+
float h2ot[EX][EY]
Tropopause water vapor vmr [ppv].
Definition: libtrac.h:1891
+
float pv[EX][EY][EP]
Potential vorticity [PVU].
Definition: libtrac.h:1942
+
double time
Time [s].
Definition: libtrac.h:1834
+
float cl[EX][EY]
Total column cloud water [kg/m^2].
Definition: libtrac.h:1900
+
float pl[EX][EY][EP]
Pressure on model levels [hPa].
Definition: libtrac.h:1960
+
float zeta[EX][EY][EP]
Zeta [K].
Definition: libtrac.h:1966
+
float plfc[EX][EY]
Pressure at level of free convection (LFC) [hPa].
Definition: libtrac.h:1906
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
float zetal[EX][EY][EP]
Zeta on model levels [K].
Definition: libtrac.h:1972
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+
+ + + + diff --git a/doxygen/libtrac_8h.html b/doxygen/libtrac_8h.html new file mode 100644 index 0000000000..195174c21f --- /dev/null +++ b/doxygen/libtrac_8h.html @@ -0,0 +1,15569 @@ + + + + + + + +MPTRAC: libtrac.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
libtrac.h File Reference
+
+
+ +

MPTRAC library declarations. +More...

+
#include <ctype.h>
+#include <gsl/gsl_fft_complex.h>
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_randist.h>
+#include <gsl/gsl_rng.h>
+#include <gsl/gsl_spline.h>
+#include <gsl/gsl_statistics.h>
+#include <math.h>
+#include <netcdf.h>
+#include <omp.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <sys/time.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  ctl_t
 Control parameters. More...
 
struct  atm_t
 Atmospheric data. More...
 
struct  cache_t
 Cache data. More...
 
struct  clim_photo_t
 Climatological data in form of photolysis rates. More...
 
struct  clim_ts_t
 Climatological data in form of time series. More...
 
struct  clim_zm_t
 Climatological data in form of zonal means. More...
 
struct  clim_t
 Climatological data. More...
 
struct  met_t
 Meteo data. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define AVO   6.02214076e23
 Avogadro constant [1/mol]. More...
 
#define CPD   1003.5
 Specific heat of dry air at constant pressure [J/(kg K)]. More...
 
#define EPS   (MH2O / MA)
 Ratio of the specific gas constant of dry air and water vapor [1]. More...
 
#define G0   9.80665
 Standard gravity [m/s^2]. More...
 
#define H0   7.0
 Scale height [km]. More...
 
#define LV   2501000.
 Latent heat of vaporization of water [J/kg]. More...
 
#define KB   1.3806504e-23
 Boltzmann constant [kg m^2/(K s^2)]. More...
 
#define MA   28.9644
 Molar mass of dry air [g/mol]. More...
 
#define MH2O   18.01528
 Molar mass of water vapor [g/mol]. More...
 
#define MO3   48.00
 Molar mass of ozone [g/mol]. More...
 
#define P0   1013.25
 Standard pressure [hPa]. More...
 
#define RA   (1e3 * RI / MA)
 Specific gas constant of dry air [J/(kg K)]. More...
 
#define RE   6367.421
 Mean radius of Earth [km]. More...
 
#define RI   8.3144598
 Ideal gas constant [J/(mol K)]. More...
 
#define T0   273.15
 Standard temperature [K]. More...
 
#define LEN   5000
 Maximum length of ASCII data lines. More...
 
#define NP   10000000
 Maximum number of atmospheric data points. More...
 
#define NQ   15
 Maximum number of quantities per data point. More...
 
#define NCSI   1000000
 Maximum number of data points for CSI calculation. More...
 
#define EP   140
 Maximum number of pressure levels for meteo data. More...
 
#define EX   1201
 Maximum number of longitudes for meteo data. More...
 
#define EY   601
 Maximum number of latitudes for meteo data. More...
 
#define NENS   2000
 Maximum number of data points for ensemble analysis. More...
 
#define NOBS   10000000
 Maximum number of observation data points. More...
 
#define NTHREADS   512
 Maximum number of OpenMP threads. More...
 
#define CY   250
 Maximum number of latitudes for climatological data. More...
 
#define CO3   30
 Maximum number of total column ozone data for climatological data. More...
 
#define CP   60
 Maximum number of pressure levels for climatological data. More...
 
#define CSZA   50
 Maximum number of solar zenith angles for climatological data. More...
 
#define CT   12
 Maximum number of time steps for climatological data. More...
 
#define CTS   1000
 Maximum number of data points of climatological time series. More...
 
#define ALLOC(ptr, type, n)
 Allocate and clear memory. More...
 
#define ARRAY_2D(ix, iy, ny)    ((ix) * (ny) + (iy))
 Get 2-D array index. More...
 
#define ARRAY_3D(ix, iy, ny, iz, nz)    (((ix)*(ny) + (iy)) * (nz) + (iz))
 Get 3-D array index. More...
 
#define ARRHENIUS(a, b, t)    ((a) * exp( -(b) / (t)))
 Arrhenius equation for temperature dependence of reaction rates. More...
 
#define DEG2DX(dlon, lat)    ((dlon) * M_PI * RE / 180. * cos((lat) / 180. * M_PI))
 Convert degrees to zonal distance. More...
 
#define DEG2DY(dlat)    ((dlat) * M_PI * RE / 180.)
 Convert degrees to meridional distance. More...
 
#define DP2DZ(dp, p)    (- (dp) * H0 / (p))
 Convert pressure change to vertical distance. More...
 
#define DX2DEG(dx, lat)
 Convert zonal distance to degrees. More...
 
#define DY2DEG(dy)    ((dy) * 180. / (M_PI * RE))
 Convert meridional distance to degrees. More...
 
#define DZ2DP(dz, p)    (-(dz) * (p) / H0)
 Convert vertical distance to pressure change. More...
 
#define DIST(a, b)    sqrt(DIST2(a, b))
 Compute Cartesian distance between two vectors. More...
 
#define DIST2(a, b)    ((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])+(a[2]-b[2])*(a[2]-b[2]))
 Compute squared distance between two vectors. More...
 
#define DOTP(a, b)    (a[0]*b[0]+a[1]*b[1]+a[2]*b[2])
 Compute dot product of two vectors. More...
 
#define FMOD(x, y)    ((x) - (int) ((x) / (y)) * (y))
 Compute floating point modulo. More...
 
#define FREAD(ptr, type, size, in)
 Read binary data. More...
 
#define FWRITE(ptr, type, size, out)
 Write binary data. More...
 
#define INTPOL_INIT    double cw[3] = {0.0, 0.0, 0.0}; int ci[3] = {0, 0, 0};
 Initialize cache variables for interpolation. More...
 
#define INTPOL_INIT_DIA    int ci[3] = {0, 0, 0}; double cw[4] = {0.0, 0.0, 0.0, 0.0};
 Initialize cache variables for interpolation in diabatic scheme. More...
 
#define INTPOL_2D(var, init)
 2-D interpolation of a meteo variable. More...
 
#define INTPOL_3D(var, init)
 3-D interpolation of a meteo variable. More...
 
#define INTPOL_SPACE_ALL(p, lon, lat)
 Spatial interpolation of all meteo data. More...
 
#define INTPOL_TIME_ALL(time, p, lon, lat)
 Temporal interpolation of all meteo data. More...
 
#define LAPSE(p1, t1, p2, t2)
 Calculate lapse rate between pressure levels. More...
 
#define LIN(x0, y0, x1, y1, x)    ((y0)+((y1)-(y0))/((x1)-(x0))*((x)-(x0)))
 Compute linear interpolation. More...
 
#define MET_HEADER
 Write header for meteo data files. More...
 
#define MOLEC_DENS(p, t)    (AVO * 1e-6 * ((p) * 100) / (RI * (t)))
 Calculate molecular density of an ideal gas. More...
 
#define NC(cmd)
 Execute netCDF library command and check result. More...
 
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
 Define netCDF variable. More...
 
#define NC_GET_DOUBLE(varname, ptr, force)
 Read netCDF double array. More...
 
#define NC_INQ_DIM(dimname, ptr, min, max)
 Read netCDF dimension. More...
 
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
 Write netCDF double array. More...
 
#define NC_PUT_INT(varname, ptr, hyperslab)
 Write netCDF integer array. More...
 
#define NC_PUT_ATT(varname, attname, text)
 Set netCDF attribute. More...
 
#define NC_PUT_ATT_GLOBAL(attname, text)    NC(nc_put_att_text(ncid, NC_GLOBAL, attname, strlen(text), text));
 Set netCDF global attribute. More...
 
#define NC_PUT_FLOAT(varname, ptr, hyperslab)
 Write netCDF float array. More...
 
#define NN(x0, y0, x1, y1, x)    (fabs((x) - (x0)) <= fabs((x) - (x1)) ? (y0) : (y1))
 Compute nearest neighbor interpolation. More...
 
#define NORM(a)    sqrt(DOTP(a, a))
 Compute norm of a vector. More...
 
#define P(z)    (P0 * exp(-(z) / H0))
 Convert altitude to pressure. More...
 
#define PSAT(t)    (6.112 * exp(17.62 * ((t) - T0) / (243.12 + (t) - T0)))
 Compute saturation pressure over water (WMO, 2018). More...
 
#define PSICE(t)    (6.112 * exp(22.46 * ((t) - T0) / (272.62 + (t) - T0)))
 Compute saturation pressure over ice (WMO, 2018). More...
 
#define PW(p, h2o)
 Calculate partial water vapor pressure. More...
 
#define RH(p, t, h2o)    (PW(p, h2o) / PSAT(t) * 100.)
 Compute relative humidity over water. More...
 
#define RHICE(p, t, h2o)    (PW(p, h2o) / PSICE(t) * 100.)
 Compute relative humidity over ice. More...
 
#define RHO(p, t)    (100. * (p) / (RA * (t)))
 Compute density of air. More...
 
#define ROETH_PHOTOL(a, b, c, sza)    ((c)*(sza) < M_PI/2. ? (a) * exp((b) * (1 - 1/cos((c) * (sza)))) : 0)
 Roeth approximation formula for photolysis reactions. More...
 
#define SET_ATM(qnt, val)
 Set atmospheric quantity value. More...
 
#define SET_QNT(qnt, name, longname, unit)
 Set atmospheric quantity index. More...
 
#define SH(h2o)    (EPS * GSL_MAX((h2o), 0.1e-6))
 Compute specific humidity from water vapor volume mixing ratio. More...
 
#define SQR(x)    ((x)*(x))
 Compute square of x. More...
 
#define SWAP(x, y, type)    do {type tmp = x; x = y; y = tmp;} while(0);
 Swap macro. More...
 
#define TDEW(p, h2o)
 Calculate dew point temperature (WMO, 2018). More...
 
#define TICE(p, h2o)
 Calculate frost point temperature (WMO, 2018). More...
 
#define THETA(p, t)    ((t) * pow(1000. / (p), 0.286))
 Compute potential temperature. More...
 
#define THETAVIRT(p, t, h2o)    (TVIRT(THETA((p), (t)), GSL_MAX((h2o), 0.1e-6)))
 Compute virtual potential temperature. More...
 
#define TOK(line, tok, format, var)
 Get string tokens. More...
 
#define TVIRT(t, h2o)    ((t) * (1. + (1. - EPS) * GSL_MAX((h2o), 0.1e-6)))
 Compute virtual temperature. More...
 
#define Z(p)    (H0 * log(P0 / (p)))
 Convert pressure to altitude. More...
 
#define ZDIFF(lnp0, t0, h2o0, lnp1, t1, h2o1)
 Calculate geopotential height difference. More...
 
#define ZETA(ps, p, t)
 Calculate zeta vertical coordinate. More...
 
#define LOGLEV   2
 Level of log messages (0=none, 1=basic, 2=detailed, 3=debug). More...
 
#define LOG(level, ...)
 Print log message. More...
 
#define WARN(...)
 Print warning message. More...
 
#define ERRMSG(...)
 Print error message and quit program. More...
 
#define PRINT(format, var)
 Print macro for debugging. More...
 
#define NTIMER   100
 Maximum number of timers. More...
 
#define PRINT_TIMERS    timer("END", "END", 1);
 Print timers. More...
 
#define SELECT_TIMER(id, group, color)
 Select timer. More...
 
#define START_TIMERS    NVTX_PUSH("START", NVTX_CPU);
 Start timers. More...
 
#define STOP_TIMERS    NVTX_POP;
 Stop timers. More...
 
#define NVTX_PUSH(range_title, range_color)   {}
 
#define NVTX_POP   {}
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void thrustSortWrapper (double *__restrict__ c, int n, int *__restrict__ index)
 Wrapper to Thrust sorting function. More...
 
double buoyancy_frequency (const double p0, const double t0, const double p1, const double t1)
 Calculate buoyancy frequency. More...
 
void cart2geo (const double *x, double *z, double *lon, double *lat)
 Convert Cartesian coordinates to geolocation. More...
 
int check_finite (const double x)
 Check if x is finite. More...
 
double clim_oh (const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
 Climatology of OH number concentrations. More...
 
void clim_oh_diurnal_correction (ctl_t *ctl, clim_t *clim)
 Initialization function for OH climatology. More...
 
double clim_photo (double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c)
 Interpolate photolysis rate data. More...
 
double clim_tropo (const clim_t *clim, const double t, const double lat)
 Climatology of tropopause pressure. More...
 
void clim_tropo_init (clim_t *clim)
 Initialize tropopause climatology. More...
 
double clim_ts (const clim_ts_t *ts, const double t)
 Interpolate time series. More...
 
double clim_zm (const clim_zm_t *zm, const double t, const double lat, const double p)
 Interpolate zonal mean climatology. More...
 
void compress_pack (char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout)
 Pack or unpack array. More...
 
void day2doy (const int year, const int mon, const int day, int *doy)
 Compress or decompress array with zfp. More...
 
void doy2day (const int year, const int doy, int *mon, int *day)
 Get date from day of year. More...
 
void geo2cart (const double z, const double lon, const double lat, double *x)
 Convert geolocation to Cartesian coordinates. More...
 
void get_met (ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
 Get meteo data for given time step. More...
 
void get_met_help (ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename)
 Get meteo data for time step. More...
 
void get_met_replace (char *orig, char *search, char *repl)
 Replace template strings in filename. More...
 
void intpol_met_4d_coord (met_t *met0, float height0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float height1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatiotemporal interpolation of meteo data. More...
 
void intpol_met_space_3d (met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatial interpolation of meteo data. More...
 
void intpol_met_space_2d (met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatial interpolation of meteo data. More...
 
void intpol_met_time_3d (met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
 Spatial interpolation of meteo data. More...
 
void intpol_met_time_2d (met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init)
 Temporal interpolation of meteo data. More...
 
void jsec2time (const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
 Temporal interpolation of meteo data. More...
 
double kernel_weight (const double kz[EP], const double kw[EP], const int nk, const double p)
 Get weighting factor from kernel function. More...
 
double lapse_rate (const double t, const double h2o)
 Calculate moist adiabatic lapse rate. More...
 
void level_definitions (ctl_t *ctl)
 Get predefined pressure levels. More...
 
int locate_irr (const double *xx, const int n, const double x)
 Find array index for irregular grid. More...
 
int locate_reg (const double *xx, const int n, const double x)
 Find array index for regular grid. More...
 
void locate_vert (float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double alt_ap, int *ind)
 Locate the four vertical indizes of a box for a given height value. More...
 
int locate_irr_3d (float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x)
 locate the index in a column of a three dimensional array. More...
 
double nat_temperature (const double p, const double h2o, const double hno3)
 Calculate NAT existence temperature. More...
 
void quicksort (double arr[], int brr[], const int low, const int high)
 Parallel quicksort. More...
 
int quicksort_partition (double arr[], int brr[], const int low, const int high)
 Partition function for quicksort. More...
 
int read_atm (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data. More...
 
int read_atm_asc (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in ASCII format. More...
 
int read_atm_bin (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in binary format. More...
 
int read_atm_clams (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in CLaMS format. More...
 
int read_atm_nc (const char *filename, ctl_t *ctl, atm_t *atm)
 Read atmospheric data in netCDF format. More...
 
void read_clim (ctl_t *ctl, clim_t *clim)
 Read climatological data. More...
 
int read_clim_ts (char *filename, clim_ts_t *ts)
 Read climatological time series. More...
 
void read_clim_zm (char *filename, char *varname, clim_zm_t *zm)
 Read climatological zonal means. More...
 
void read_clim_photo (char *filename, clim_photo_t *photo)
 Read climatological photolysis rates. More...
 
void read_ctl (const char *filename, int argc, char *argv[], ctl_t *ctl)
 Read control parameters. More...
 
void read_kernel (const char *filename, double kz[EP], double kw[EP], int *nk)
 Read kernel data file. More...
 
int read_met (char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
 Read meteo data file. More...
 
void read_met_bin_2d (FILE *out, met_t *met, float var[EX][EY], char *varname)
 Read 2-D meteo variable. More...
 
void read_met_bin_3d (FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname)
 Read 3-D meteo variable. More...
 
void read_met_cape (clim_t *clim, met_t *met)
 Calculate convective available potential energy. More...
 
void read_met_cloud (ctl_t *ctl, met_t *met)
 Calculate cloud properties. More...
 
void read_met_detrend (ctl_t *ctl, met_t *met)
 Apply detrending method to temperature and winds. More...
 
void read_met_extrapolate (met_t *met)
 Extrapolate meteo data at lower boundary. More...
 
void read_met_geopot (ctl_t *ctl, met_t *met)
 Calculate geopotential heights. More...
 
void read_met_grid (char *filename, int ncid, ctl_t *ctl, met_t *met)
 Read coordinates of meteo data. More...
 
void read_met_levels (int ncid, ctl_t *ctl, met_t *met)
 Read meteo data on vertical levels. More...
 
void read_met_monotonize (met_t *met)
 Smooth vertical zeta and pressure profiles. More...
 
void read_met_ml2pl (ctl_t *ctl, met_t *met, float var[EX][EY][EP])
 Convert meteo data from model levels to pressure levels. More...
 
int read_met_nc_2d (int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init)
 Read and convert 2D variable from meteo data file. More...
 
int read_met_nc_3d (int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init)
 Read and convert 3D variable from meteo data file. More...
 
void read_met_pbl (met_t *met)
 Calculate pressure of the boundary layer. More...
 
void read_met_periodic (met_t *met)
 Create meteo data with periodic boundary conditions. More...
 
void read_met_pv (met_t *met)
 Calculate potential vorticity. More...
 
void read_met_ozone (met_t *met)
 Calculate total column ozone. More...
 
void read_met_sample (ctl_t *ctl, met_t *met)
 Downsampling of meteo data. More...
 
void read_met_surface (int ncid, met_t *met, ctl_t *ctl)
 Read surface data. More...
 
void read_met_tropo (ctl_t *ctl, clim_t *clim, met_t *met)
 Calculate tropopause data. More...
 
void read_obs (char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs)
 Read observation data. More...
 
double scan_ctl (const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
 Read a control parameter from file or command line. More...
 
double sedi (const double p, const double T, const double rp, const double rhop)
 Calculate sedimentation velocity. More...
 
void spline (const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
 Spline interpolation. More...
 
float stddev (const float *data, const int n)
 Calculate standard deviation. More...
 
double sza_calc (const double sec, const double lon, const double lat)
 Calculate solar zenith angle. More...
 
void time2jsec (const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
 Convert date to seconds. More...
 
void timer (const char *name, const char *group, int output)
 Measure wall-clock time. More...
 
double time_from_filename (const char *filename, int offset)
 Extract time information from filename. More...
 
double tropo_weight (const clim_t *clim, const double t, const double lat, const double p)
 Get weighting factor based on tropopause distance. More...
 
void write_atm (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write atmospheric data. More...
 
void write_atm_asc (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write atmospheric data in ASCII format. More...
 
void write_atm_bin (const char *filename, ctl_t *ctl, atm_t *atm)
 Write atmospheric data in binary format. More...
 
void write_atm_clams (const char *filename, ctl_t *ctl, atm_t *atm)
 Write atmospheric data in CLaMS position file format. More...
 
void write_atm_clams_traj (const char *dirname, ctl_t *ctl, atm_t *atm, double t)
 Write atmospheric data in CLaMS position file and trajectory format. More...
 
void write_atm_nc (const char *filename, ctl_t *ctl, atm_t *atm)
 Write atmospheric data in netCDF format. More...
 
void write_csi (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write CSI data. More...
 
void write_ens (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write ensemble data. More...
 
void write_grid (const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
 Write gridded data. More...
 
void write_grid_asc (const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
 Write gridded data in ASCII format. More...
 
void write_grid_nc (const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
 Write gridded data in netCDF format. More...
 
int write_met (char *filename, ctl_t *ctl, met_t *met)
 Read meteo data file. More...
 
void write_met_bin_2d (FILE *out, met_t *met, float var[EX][EY], char *varname)
 Write 2-D meteo variable. More...
 
void write_met_bin_3d (FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance)
 Write 3-D meteo variable. More...
 
void write_prof (const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
 Write profile data. More...
 
void write_sample (const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
 Write sample data. More...
 
void write_station (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write station data. More...
 
void write_vtk (const char *filename, ctl_t *ctl, atm_t *atm, double t)
 Write VTK data. More...
 
+

Detailed Description

+

MPTRAC library declarations.

+ +

Definition in file libtrac.h.

+

Macro Definition Documentation

+ +

◆ AVO

+ +
+
+ + + + +
#define AVO   6.02214076e23
+
+ +

Avogadro constant [1/mol].

+ +

Definition at line 83 of file libtrac.h.

+ +
+
+ +

◆ CPD

+ +
+
+ + + + +
#define CPD   1003.5
+
+ +

Specific heat of dry air at constant pressure [J/(kg K)].

+ +

Definition at line 88 of file libtrac.h.

+ +
+
+ +

◆ EPS

+ +
+
+ + + + +
#define EPS   (MH2O / MA)
+
+ +

Ratio of the specific gas constant of dry air and water vapor [1].

+ +

Definition at line 93 of file libtrac.h.

+ +
+
+ +

◆ G0

+ +
+
+ + + + +
#define G0   9.80665
+
+ +

Standard gravity [m/s^2].

+ +

Definition at line 98 of file libtrac.h.

+ +
+
+ +

◆ H0

+ +
+
+ + + + +
#define H0   7.0
+
+ +

Scale height [km].

+ +

Definition at line 103 of file libtrac.h.

+ +
+
+ +

◆ LV

+ +
+
+ + + + +
#define LV   2501000.
+
+ +

Latent heat of vaporization of water [J/kg].

+ +

Definition at line 108 of file libtrac.h.

+ +
+
+ +

◆ KB

+ +
+
+ + + + +
#define KB   1.3806504e-23
+
+ +

Boltzmann constant [kg m^2/(K s^2)].

+ +

Definition at line 113 of file libtrac.h.

+ +
+
+ +

◆ MA

+ +
+
+ + + + +
#define MA   28.9644
+
+ +

Molar mass of dry air [g/mol].

+ +

Definition at line 118 of file libtrac.h.

+ +
+
+ +

◆ MH2O

+ +
+
+ + + + +
#define MH2O   18.01528
+
+ +

Molar mass of water vapor [g/mol].

+ +

Definition at line 123 of file libtrac.h.

+ +
+
+ +

◆ MO3

+ +
+
+ + + + +
#define MO3   48.00
+
+ +

Molar mass of ozone [g/mol].

+ +

Definition at line 128 of file libtrac.h.

+ +
+
+ +

◆ P0

+ +
+
+ + + + +
#define P0   1013.25
+
+ +

Standard pressure [hPa].

+ +

Definition at line 133 of file libtrac.h.

+ +
+
+ +

◆ RA

+ +
+
+ + + + +
#define RA   (1e3 * RI / MA)
+
+ +

Specific gas constant of dry air [J/(kg K)].

+ +

Definition at line 138 of file libtrac.h.

+ +
+
+ +

◆ RE

+ +
+
+ + + + +
#define RE   6367.421
+
+ +

Mean radius of Earth [km].

+ +

Definition at line 143 of file libtrac.h.

+ +
+
+ +

◆ RI

+ +
+
+ + + + +
#define RI   8.3144598
+
+ +

Ideal gas constant [J/(mol K)].

+ +

Definition at line 148 of file libtrac.h.

+ +
+
+ +

◆ T0

+ +
+
+ + + + +
#define T0   273.15
+
+ +

Standard temperature [K].

+ +

Definition at line 153 of file libtrac.h.

+ +
+
+ +

◆ LEN

+ +
+
+ + + + +
#define LEN   5000
+
+ +

Maximum length of ASCII data lines.

+ +

Definition at line 162 of file libtrac.h.

+ +
+
+ +

◆ NP

+ +
+
+ + + + +
#define NP   10000000
+
+ +

Maximum number of atmospheric data points.

+ +

Definition at line 167 of file libtrac.h.

+ +
+
+ +

◆ NQ

+ +
+
+ + + + +
#define NQ   15
+
+ +

Maximum number of quantities per data point.

+ +

Definition at line 172 of file libtrac.h.

+ +
+
+ +

◆ NCSI

+ +
+
+ + + + +
#define NCSI   1000000
+
+ +

Maximum number of data points for CSI calculation.

+ +

Definition at line 177 of file libtrac.h.

+ +
+
+ +

◆ EP

+ +
+
+ + + + +
#define EP   140
+
+ +

Maximum number of pressure levels for meteo data.

+ +

Definition at line 182 of file libtrac.h.

+ +
+
+ +

◆ EX

+ +
+
+ + + + +
#define EX   1201
+
+ +

Maximum number of longitudes for meteo data.

+ +

Definition at line 187 of file libtrac.h.

+ +
+
+ +

◆ EY

+ +
+
+ + + + +
#define EY   601
+
+ +

Maximum number of latitudes for meteo data.

+ +

Definition at line 192 of file libtrac.h.

+ +
+
+ +

◆ NENS

+ +
+
+ + + + +
#define NENS   2000
+
+ +

Maximum number of data points for ensemble analysis.

+ +

Definition at line 197 of file libtrac.h.

+ +
+
+ +

◆ NOBS

+ +
+
+ + + + +
#define NOBS   10000000
+
+ +

Maximum number of observation data points.

+ +

Definition at line 202 of file libtrac.h.

+ +
+
+ +

◆ NTHREADS

+ +
+
+ + + + +
#define NTHREADS   512
+
+ +

Maximum number of OpenMP threads.

+ +

Definition at line 207 of file libtrac.h.

+ +
+
+ +

◆ CY

+ +
+
+ + + + +
#define CY   250
+
+ +

Maximum number of latitudes for climatological data.

+ +

Definition at line 212 of file libtrac.h.

+ +
+
+ +

◆ CO3

+ +
+
+ + + + +
#define CO3   30
+
+ +

Maximum number of total column ozone data for climatological data.

+ +

Definition at line 217 of file libtrac.h.

+ +
+
+ +

◆ CP

+ +
+
+ + + + +
#define CP   60
+
+ +

Maximum number of pressure levels for climatological data.

+ +

Definition at line 222 of file libtrac.h.

+ +
+
+ +

◆ CSZA

+ +
+
+ + + + +
#define CSZA   50
+
+ +

Maximum number of solar zenith angles for climatological data.

+ +

Definition at line 227 of file libtrac.h.

+ +
+
+ +

◆ CT

+ +
+
+ + + + +
#define CT   12
+
+ +

Maximum number of time steps for climatological data.

+ +

Definition at line 232 of file libtrac.h.

+ +
+
+ +

◆ CTS

+ +
+
+ + + + +
#define CTS   1000
+
+ +

Maximum number of data points of climatological time series.

+ +

Definition at line 237 of file libtrac.h.

+ +
+
+ +

◆ ALLOC

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define ALLOC( ptr,
 type,
 
)
+
+Value:
if((ptr=calloc((size_t)(n), sizeof(type)))==NULL) \
+
ERRMSG("Out of memory!");
+
+

Allocate and clear memory.

+ +

Definition at line 252 of file libtrac.h.

+ +
+
+ +

◆ ARRAY_2D

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define ARRAY_2D( ix,
 iy,
 ny 
)    ((ix) * (ny) + (iy))
+
+ +

Get 2-D array index.

+ +

Definition at line 258 of file libtrac.h.

+ +
+
+ +

◆ ARRAY_3D

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ARRAY_3D( ix,
 iy,
 ny,
 iz,
 nz 
)    (((ix)*(ny) + (iy)) * (nz) + (iz))
+
+ +

Get 3-D array index.

+ +

Definition at line 262 of file libtrac.h.

+ +
+
+ +

◆ ARRHENIUS

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define ARRHENIUS( a,
 b,
 
)    ((a) * exp( -(b) / (t)))
+
+ +

Arrhenius equation for temperature dependence of reaction rates.

+ +

Definition at line 266 of file libtrac.h.

+ +
+
+ +

◆ DEG2DX

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DEG2DX( dlon,
 lat 
)    ((dlon) * M_PI * RE / 180. * cos((lat) / 180. * M_PI))
+
+ +

Convert degrees to zonal distance.

+ +

Definition at line 270 of file libtrac.h.

+ +
+
+ +

◆ DEG2DY

+ +
+
+ + + + + + + + +
#define DEG2DY( dlat)    ((dlat) * M_PI * RE / 180.)
+
+ +

Convert degrees to meridional distance.

+ +

Definition at line 274 of file libtrac.h.

+ +
+
+ +

◆ DP2DZ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DP2DZ( dp,
 
)    (- (dp) * H0 / (p))
+
+ +

Convert pressure change to vertical distance.

+ +

Definition at line 278 of file libtrac.h.

+ +
+
+ +

◆ DX2DEG

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DX2DEG( dx,
 lat 
)
+
+Value:
(((lat) < -89.999 || (lat) > 89.999) ? 0 \
+
: (dx) * 180. / (M_PI * RE * cos((lat) / 180. * M_PI)))
+
#define RE
Mean radius of Earth [km].
Definition: libtrac.h:143
+
+

Convert zonal distance to degrees.

+ +

Definition at line 282 of file libtrac.h.

+ +
+
+ +

◆ DY2DEG

+ +
+
+ + + + + + + + +
#define DY2DEG( dy)    ((dy) * 180. / (M_PI * RE))
+
+ +

Convert meridional distance to degrees.

+ +

Definition at line 287 of file libtrac.h.

+ +
+
+ +

◆ DZ2DP

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DZ2DP( dz,
 
)    (-(dz) * (p) / H0)
+
+ +

Convert vertical distance to pressure change.

+ +

Definition at line 291 of file libtrac.h.

+ +
+
+ +

◆ DIST

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DIST( a,
 
)    sqrt(DIST2(a, b))
+
+ +

Compute Cartesian distance between two vectors.

+ +

Definition at line 295 of file libtrac.h.

+ +
+
+ +

◆ DIST2

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DIST2( a,
 
)    ((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])+(a[2]-b[2])*(a[2]-b[2]))
+
+ +

Compute squared distance between two vectors.

+ +

Definition at line 299 of file libtrac.h.

+ +
+
+ +

◆ DOTP

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DOTP( a,
 
)    (a[0]*b[0]+a[1]*b[1]+a[2]*b[2])
+
+ +

Compute dot product of two vectors.

+ +

Definition at line 303 of file libtrac.h.

+ +
+
+ +

◆ FMOD

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define FMOD( x,
 
)    ((x) - (int) ((x) / (y)) * (y))
+
+ +

Compute floating point modulo.

+ +

Definition at line 307 of file libtrac.h.

+ +
+
+ +

◆ FREAD

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define FREAD( ptr,
 type,
 size,
 in 
)
+
+Value:
{ \
+
if(fread(ptr, sizeof(type), size, in)!=size) \
+
ERRMSG("Error while reading!"); \
+
}
+
+

Read binary data.

+ +

Definition at line 311 of file libtrac.h.

+ +
+
+ +

◆ FWRITE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define FWRITE( ptr,
 type,
 size,
 out 
)
+
+Value:
{ \
+
if(fwrite(ptr, sizeof(type), size, out)!=size) \
+
ERRMSG("Error while writing!"); \
+
}
+
+

Write binary data.

+ +

Definition at line 317 of file libtrac.h.

+ +
+
+ +

◆ INTPOL_INIT

+ +
+
+ + + + +
#define INTPOL_INIT    double cw[3] = {0.0, 0.0, 0.0}; int ci[3] = {0, 0, 0};
+
+ +

Initialize cache variables for interpolation.

+ +

Definition at line 323 of file libtrac.h.

+ +
+
+ +

◆ INTPOL_INIT_DIA

+ +
+
+ + + + +
#define INTPOL_INIT_DIA    int ci[3] = {0, 0, 0}; double cw[4] = {0.0, 0.0, 0.0, 0.0};
+
+ +

Initialize cache variables for interpolation in diabatic scheme.

+ +

Definition at line 327 of file libtrac.h.

+ +
+
+ +

◆ INTPOL_2D

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define INTPOL_2D( var,
 init 
)
+
+Value:
intpol_met_time_2d(met0, met0->var, met1, met1->var, \
+
atm->time[ip], atm->lon[ip], atm->lat[ip], \
+
&var, ci, cw, init);
+
void intpol_met_time_2d(met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init)
Temporal interpolation of meteo data.
Definition: libtrac.c:1366
+
+

2-D interpolation of a meteo variable.

+ +

Definition at line 331 of file libtrac.h.

+ +
+
+ +

◆ INTPOL_3D

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define INTPOL_3D( var,
 init 
)
+
+Value:
intpol_met_time_3d(met0, met0->var, met1, met1->var, \
+
atm->time[ip], atm->p[ip], \
+
atm->lon[ip], atm->lat[ip], \
+
&var, ci, cw, init);
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
+

3-D interpolation of a meteo variable.

+ +

Definition at line 337 of file libtrac.h.

+ +
+
+ +

◆ INTPOL_SPACE_ALL

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define INTPOL_SPACE_ALL( p,
 lon,
 lat 
)
+
+ +

Spatial interpolation of all meteo data.

+ +

Definition at line 344 of file libtrac.h.

+ +
+
+ +

◆ INTPOL_TIME_ALL

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define INTPOL_TIME_ALL( time,
 p,
 lon,
 lat 
)
+
+ +

Temporal interpolation of all meteo data.

+ +

Definition at line 380 of file libtrac.h.

+ +
+
+ +

◆ LAPSE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define LAPSE( p1,
 t1,
 p2,
 t2 
)
+
+Value:
(1e3 * G0 / RA * ((t2) - (t1)) / ((t2) + (t1)) \
+
* ((p2) + (p1)) / ((p2) - (p1)))
+
#define RA
Specific gas constant of dry air [J/(kg K)].
Definition: libtrac.h:138
+
#define G0
Standard gravity [m/s^2].
Definition: libtrac.h:98
+
+

Calculate lapse rate between pressure levels.

+ +

Definition at line 416 of file libtrac.h.

+ +
+
+ +

◆ LIN

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define LIN( x0,
 y0,
 x1,
 y1,
 
)    ((y0)+((y1)-(y0))/((x1)-(x0))*((x)-(x0)))
+
+ +

Compute linear interpolation.

+ +

Definition at line 421 of file libtrac.h.

+ +
+
+ +

◆ MET_HEADER

+ +
+
+ + + + +
#define MET_HEADER
+
+ +

Write header for meteo data files.

+ +

Definition at line 425 of file libtrac.h.

+ +
+
+ +

◆ MOLEC_DENS

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define MOLEC_DENS( p,
 
)    (AVO * 1e-6 * ((p) * 100) / (RI * (t)))
+
+ +

Calculate molecular density of an ideal gas.

+ +

Definition at line 482 of file libtrac.h.

+ +
+
+ +

◆ NC

+ +
+
+ + + + + + + + +
#define NC( cmd)
+
+Value:
{ \
+
int nc_result=(cmd); \
+
if(nc_result!=NC_NOERR) \
+
ERRMSG("%s", nc_strerror(nc_result)); \
+
}
+
+

Execute netCDF library command and check result.

+ +

Definition at line 486 of file libtrac.h.

+ +
+
+ +

◆ NC_DEF_VAR

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define NC_DEF_VAR( varname,
 type,
 ndims,
 dims,
 long_name,
 units 
)
+
+Value:
{ \
+
NC(nc_def_var(ncid, varname, type, ndims, dims, &varid)); \
+
NC(nc_put_att_text(ncid, varid, "long_name", strlen(long_name), long_name)); \
+
NC(nc_put_att_text(ncid, varid, "units", strlen(units), units)); \
+
}
+
+

Define netCDF variable.

+ +

Definition at line 493 of file libtrac.h.

+ +
+
+ +

◆ NC_GET_DOUBLE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define NC_GET_DOUBLE( varname,
 ptr,
 force 
)
+
+Value:
{ \
+
if(force) { \
+
NC(nc_inq_varid(ncid, varname, &varid)); \
+
NC(nc_get_var_double(ncid, varid, ptr)); \
+
} else { \
+
if(nc_inq_varid(ncid, varname, &varid) == NC_NOERR) { \
+
NC(nc_get_var_double(ncid, varid, ptr)); \
+ +
WARN("netCDF variable %s is missing!", varname); \
+
} \
+
}
+
#define WARN(...)
Print warning message.
Definition: libtrac.h:692
+
+

Read netCDF double array.

+ +

Definition at line 500 of file libtrac.h.

+ +
+
+ +

◆ NC_INQ_DIM

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define NC_INQ_DIM( dimname,
 ptr,
 min,
 max 
)
+
+Value:
{ \
+
int dimid; size_t naux; \
+
NC(nc_inq_dimid(ncid, dimname, &dimid)); \
+
NC(nc_inq_dimlen(ncid, dimid, &naux)); \
+
*ptr = (int)naux; \
+
if ((*ptr) < (min) || (*ptr) > (max)) \
+
ERRMSG("Dimension %s is out of range!", dimname); \
+
}
+
+

Read netCDF dimension.

+ +

Definition at line 513 of file libtrac.h.

+ +
+
+ +

◆ NC_PUT_DOUBLE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define NC_PUT_DOUBLE( varname,
 ptr,
 hyperslab 
)
+
+Value:
{ \
+
NC(nc_inq_varid(ncid, varname, &varid)); \
+
if(hyperslab) { \
+
NC(nc_put_vara_double(ncid, varid, start, count, ptr)); \
+
} else { \
+
NC(nc_put_var_double(ncid, varid, ptr)); \
+
} \
+
}
+
+

Write netCDF double array.

+ +

Definition at line 523 of file libtrac.h.

+ +
+
+ +

◆ NC_PUT_INT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define NC_PUT_INT( varname,
 ptr,
 hyperslab 
)
+
+Value:
{ \
+
NC(nc_inq_varid(ncid, varname, &varid)); \
+
if(hyperslab) { \
+
NC(nc_put_vara_int(ncid, varid, start, count, ptr)); \
+
} else { \
+
NC(nc_put_var_int(ncid, varid, ptr)); \
+
} \
+
}
+
+

Write netCDF integer array.

+ +

Definition at line 533 of file libtrac.h.

+ +
+
+ +

◆ NC_PUT_ATT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define NC_PUT_ATT( varname,
 attname,
 text 
)
+
+Value:
{ \
+
NC(nc_inq_varid(ncid, varname, &varid)); \
+
NC(nc_put_att_text(ncid, varid, attname, strlen(text), text)); \
+
}
+
+

Set netCDF attribute.

+ +

Definition at line 543 of file libtrac.h.

+ +
+
+ +

◆ NC_PUT_ATT_GLOBAL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define NC_PUT_ATT_GLOBAL( attname,
 text 
)    NC(nc_put_att_text(ncid, NC_GLOBAL, attname, strlen(text), text));
+
+ +

Set netCDF global attribute.

+ +

Definition at line 549 of file libtrac.h.

+ +
+
+ +

◆ NC_PUT_FLOAT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define NC_PUT_FLOAT( varname,
 ptr,
 hyperslab 
)
+
+Value:
{ \
+
NC(nc_inq_varid(ncid, varname, &varid)); \
+
if(hyperslab) { \
+
NC(nc_put_vara_float(ncid, varid, start, count, ptr)); \
+
} else { \
+
NC(nc_put_var_float(ncid, varid, ptr)); \
+
} \
+
}
+
+

Write netCDF float array.

+ +

Definition at line 553 of file libtrac.h.

+ +
+
+ +

◆ NN

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define NN( x0,
 y0,
 x1,
 y1,
 
)    (fabs((x) - (x0)) <= fabs((x) - (x1)) ? (y0) : (y1))
+
+ +

Compute nearest neighbor interpolation.

+ +

Definition at line 563 of file libtrac.h.

+ +
+
+ +

◆ NORM

+ +
+
+ + + + + + + + +
#define NORM( a)    sqrt(DOTP(a, a))
+
+ +

Compute norm of a vector.

+ +

Definition at line 567 of file libtrac.h.

+ +
+
+ +

◆ P

+ +
+
+ + + + + + + + +
#define P( z)    (P0 * exp(-(z) / H0))
+
+ +

Convert altitude to pressure.

+ +

Definition at line 571 of file libtrac.h.

+ +
+
+ +

◆ PSAT

+ +
+
+ + + + + + + + +
#define PSAT( t)    (6.112 * exp(17.62 * ((t) - T0) / (243.12 + (t) - T0)))
+
+ +

Compute saturation pressure over water (WMO, 2018).

+ +

Definition at line 575 of file libtrac.h.

+ +
+
+ +

◆ PSICE

+ +
+
+ + + + + + + + +
#define PSICE( t)    (6.112 * exp(22.46 * ((t) - T0) / (272.62 + (t) - T0)))
+
+ +

Compute saturation pressure over ice (WMO, 2018).

+ +

Definition at line 579 of file libtrac.h.

+ +
+
+ +

◆ PW

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PW( p,
 h2o 
)
+
+Value:
((p) * GSL_MAX((h2o), 0.1e-6) \
+
/ (1. + (1. - EPS) * GSL_MAX((h2o), 0.1e-6)))
+
#define EPS
Ratio of the specific gas constant of dry air and water vapor [1].
Definition: libtrac.h:93
+
+

Calculate partial water vapor pressure.

+ +

Definition at line 583 of file libtrac.h.

+ +
+
+ +

◆ RH

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define RH( p,
 t,
 h2o 
)    (PW(p, h2o) / PSAT(t) * 100.)
+
+ +

Compute relative humidity over water.

+ +

Definition at line 588 of file libtrac.h.

+ +
+
+ +

◆ RHICE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define RHICE( p,
 t,
 h2o 
)    (PW(p, h2o) / PSICE(t) * 100.)
+
+ +

Compute relative humidity over ice.

+ +

Definition at line 592 of file libtrac.h.

+ +
+
+ +

◆ RHO

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define RHO( p,
 
)    (100. * (p) / (RA * (t)))
+
+ +

Compute density of air.

+ +

Definition at line 596 of file libtrac.h.

+ +
+
+ +

◆ ROETH_PHOTOL

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ROETH_PHOTOL( a,
 b,
 c,
 sza 
)    ((c)*(sza) < M_PI/2. ? (a) * exp((b) * (1 - 1/cos((c) * (sza)))) : 0)
+
+ +

Roeth approximation formula for photolysis reactions.

+ +

Definition at line 600 of file libtrac.h.

+ +
+
+ +

◆ SET_ATM

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define SET_ATM( qnt,
 val 
)
+
+Value:
if (ctl->qnt >= 0) \
+
atm->q[ctl->qnt][ip] = val;
+
+

Set atmospheric quantity value.

+ +

Definition at line 604 of file libtrac.h.

+ +
+
+ +

◆ SET_QNT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define SET_QNT( qnt,
 name,
 longname,
 unit 
)
+
+Value:
if (strcasecmp(ctl->qnt_name[iq], name) == 0) { \
+
ctl->qnt = iq; \
+
sprintf(ctl->qnt_longname[iq], longname); \
+
sprintf(ctl->qnt_unit[iq], unit); \
+
} else
+
+

Set atmospheric quantity index.

+ +

Definition at line 609 of file libtrac.h.

+ +
+
+ +

◆ SH

+ +
+
+ + + + + + + + +
#define SH( h2o)    (EPS * GSL_MAX((h2o), 0.1e-6))
+
+ +

Compute specific humidity from water vapor volume mixing ratio.

+ +

Definition at line 617 of file libtrac.h.

+ +
+
+ +

◆ SQR

+ +
+
+ + + + + + + + +
#define SQR( x)    ((x)*(x))
+
+ +

Compute square of x.

+ +

Definition at line 621 of file libtrac.h.

+ +
+
+ +

◆ SWAP

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define SWAP( x,
 y,
 type 
)    do {type tmp = x; x = y; y = tmp;} while(0);
+
+ +

Swap macro.

+ +

Definition at line 625 of file libtrac.h.

+ +
+
+ +

◆ TDEW

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define TDEW( p,
 h2o 
)
+
+Value:
(T0 + 243.12 * log(PW((p), (h2o)) / 6.112) \
+
/ (17.62 - log(PW((p), (h2o)) / 6.112)))
+
#define PW(p, h2o)
Calculate partial water vapor pressure.
Definition: libtrac.h:583
+
#define T0
Standard temperature [K].
Definition: libtrac.h:153
+
+

Calculate dew point temperature (WMO, 2018).

+ +

Definition at line 629 of file libtrac.h.

+ +
+
+ +

◆ TICE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define TICE( p,
 h2o 
)
+
+Value:
(T0 + 272.62 * log(PW((p), (h2o)) / 6.112) \
+
/ (22.46 - log(PW((p), (h2o)) / 6.112)))
+
+

Calculate frost point temperature (WMO, 2018).

+ +

Definition at line 634 of file libtrac.h.

+ +
+
+ +

◆ THETA

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define THETA( p,
 
)    ((t) * pow(1000. / (p), 0.286))
+
+ +

Compute potential temperature.

+ +

Definition at line 639 of file libtrac.h.

+ +
+
+ +

◆ THETAVIRT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define THETAVIRT( p,
 t,
 h2o 
)    (TVIRT(THETA((p), (t)), GSL_MAX((h2o), 0.1e-6)))
+
+ +

Compute virtual potential temperature.

+ +

Definition at line 643 of file libtrac.h.

+ +
+
+ +

◆ TOK

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define TOK( line,
 tok,
 format,
 var 
)
+
+Value:
{ \
+
if(((tok)=strtok((line), " \t"))) { \
+
if(sscanf(tok, format, &(var))!=1) continue; \
+
} else ERRMSG("Error while reading!"); \
+
}
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+

Get string tokens.

+ +

Definition at line 647 of file libtrac.h.

+ +
+
+ +

◆ TVIRT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define TVIRT( t,
 h2o 
)    ((t) * (1. + (1. - EPS) * GSL_MAX((h2o), 0.1e-6)))
+
+ +

Compute virtual temperature.

+ +

Definition at line 654 of file libtrac.h.

+ +
+
+ +

◆ Z

+ +
+
+ + + + + + + + +
#define Z( p)    (H0 * log(P0 / (p)))
+
+ +

Convert pressure to altitude.

+ +

Definition at line 658 of file libtrac.h.

+ +
+
+ +

◆ ZDIFF

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ZDIFF( lnp0,
 t0,
 h2o0,
 lnp1,
 t1,
 h2o1 
)
+
+Value:
(RI / MA / G0 * 0.5 * (TVIRT((t0), (h2o0)) + TVIRT((t1), (h2o1))) \
+
* ((lnp0) - (lnp1)))
+
#define TVIRT(t, h2o)
Compute virtual temperature.
Definition: libtrac.h:654
+
#define MA
Molar mass of dry air [g/mol].
Definition: libtrac.h:118
+
#define RI
Ideal gas constant [J/(mol K)].
Definition: libtrac.h:148
+
+

Calculate geopotential height difference.

+ +

Definition at line 662 of file libtrac.h.

+ +
+
+ +

◆ ZETA

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define ZETA( ps,
 p,
 
)
+
+Value:
(((p) / (ps) <= 0.3 ? 1. : \
+
sin(M_PI / 2. * (1. - (p) / (ps)) / (1. - 0.3))) \
+
* THETA((p), (t)))
+
#define THETA(p, t)
Compute potential temperature.
Definition: libtrac.h:639
+
+

Calculate zeta vertical coordinate.

+ +

Definition at line 667 of file libtrac.h.

+ +
+
+ +

◆ LOGLEV

+ +
+
+ + + + +
#define LOGLEV   2
+
+ +

Level of log messages (0=none, 1=basic, 2=detailed, 3=debug).

+ +

Definition at line 678 of file libtrac.h.

+ +
+
+ +

◆ LOG

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define LOG( level,
 ... 
)
+
+Value:
{ \
+
if(level >= 2) \
+
printf(" "); \
+
if(level <= LOGLEV) { \
+
printf(__VA_ARGS__); \
+
printf("\n"); \
+
} \
+
}
+
#define LOGLEV
Level of log messages (0=none, 1=basic, 2=detailed, 3=debug).
Definition: libtrac.h:678
+
+

Print log message.

+ +

Definition at line 682 of file libtrac.h.

+ +
+
+ +

◆ WARN

+ +
+
+ + + + + + + + +
#define WARN( ...)
+
+Value:
{ \
+
printf("\nWarning (%s, %s, l%d): ", __FILE__, __func__, __LINE__); \
+
LOG(0, __VA_ARGS__); \
+
}
+
+

Print warning message.

+ +

Definition at line 692 of file libtrac.h.

+ +
+
+ +

◆ ERRMSG

+ +
+
+ + + + + + + + +
#define ERRMSG( ...)
+
+Value:
{ \
+
printf("\nError (%s, %s, l%d): ", __FILE__, __func__, __LINE__); \
+
LOG(0, __VA_ARGS__); \
+
exit(EXIT_FAILURE); \
+
}
+
+

Print error message and quit program.

+ +

Definition at line 698 of file libtrac.h.

+ +
+
+ +

◆ PRINT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PRINT( format,
 var 
)
+
+Value:
printf("Print (%s, %s, l%d): %s= "format"\n", \
+
__FILE__, __func__, __LINE__, #var, var);
+
+

Print macro for debugging.

+ +

Definition at line 705 of file libtrac.h.

+ +
+
+ +

◆ NTIMER

+ +
+
+ + + + +
#define NTIMER   100
+
+ +

Maximum number of timers.

+ +

Definition at line 714 of file libtrac.h.

+ +
+
+ +

◆ PRINT_TIMERS

+ +
+
+ + + + +
#define PRINT_TIMERS    timer("END", "END", 1);
+
+ +

Print timers.

+ +

Definition at line 717 of file libtrac.h.

+ +
+
+ +

◆ SELECT_TIMER

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define SELECT_TIMER( id,
 group,
 color 
)
+
+Value:
{ \
+
NVTX_POP; \
+
NVTX_PUSH(id, color); \
+
timer(id, group, 0); \
+
}
+
+

Select timer.

+ +

Definition at line 721 of file libtrac.h.

+ +
+
+ +

◆ START_TIMERS

+ +
+
+ + + + +
#define START_TIMERS    NVTX_PUSH("START", NVTX_CPU);
+
+ +

Start timers.

+ +

Definition at line 728 of file libtrac.h.

+ +
+
+ +

◆ STOP_TIMERS

+ +
+
+ + + + +
#define STOP_TIMERS    NVTX_POP;
+
+ +

Stop timers.

+ +

Definition at line 732 of file libtrac.h.

+ +
+
+ +

◆ NVTX_PUSH

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define NVTX_PUSH( range_title,
 range_color 
)   {}
+
+ +

Definition at line 779 of file libtrac.h.

+ +
+
+ +

◆ NVTX_POP

+ +
+
+ + + + +
#define NVTX_POP   {}
+
+ +

Definition at line 780 of file libtrac.h.

+ +
+
+

Function Documentation

+ +

◆ thrustSortWrapper()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void thrustSortWrapper (double *__restrict__ c,
int n,
int *__restrict__ index 
)
+
+ +

Wrapper to Thrust sorting function.

+ +
+
+ +

◆ buoyancy_frequency()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double buoyancy_frequency (const double p0,
const double t0,
const double p1,
const double t1 
)
+
+ +

Calculate buoyancy frequency.

+ +

Definition at line 29 of file libtrac.c.

+
33 {
+
34
+
35 double theta0 = THETA(p0, t0);
+
36 double theta1 = THETA(p1, t1);
+
37 double dz = RI / MA / G0 * 0.5 * (t0 + t1) * (log(p0) - log(p1));
+
38
+
39 return sqrt(2. * G0 / (theta0 + theta1) * (theta1 - theta0) / dz);
+
40}
+
+
+
+ +

◆ cart2geo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void cart2geo (const double * x,
double * z,
double * lon,
double * lat 
)
+
+ +

Convert Cartesian coordinates to geolocation.

+ +

Definition at line 44 of file libtrac.c.

+
48 {
+
49
+
50 double radius = NORM(x);
+
51 *lat = asin(x[2] / radius) * 180. / M_PI;
+
52 *lon = atan2(x[1], x[0]) * 180. / M_PI;
+
53 *z = radius - RE;
+
54}
+
#define NORM(a)
Compute norm of a vector.
Definition: libtrac.h:567
+
+
+
+ +

◆ check_finite()

+ +
+
+ + + + + + + + +
int check_finite (const double x)
+
+ +

Check if x is finite.

+ +
+
+ +

◆ clim_oh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double clim_oh (const ctl_tctl,
const clim_tclim,
const double t,
const double lon,
const double lat,
const double p 
)
+
+ +

Climatology of OH number concentrations.

+ +

Definition at line 58 of file libtrac.c.

+
64 {
+
65
+
66 /* Get OH data from climatology... */
+
67 double oh = clim_zm(&clim->oh, t, lat, p);
+
68
+
69 /* Apply diurnal correction... */
+
70 if (ctl->oh_chem_beta > 0) {
+
71 double sza = sza_calc(t, lon, lat);
+
72 if (sza <= M_PI / 2. * 85. / 90.)
+
73 return oh * exp(-ctl->oh_chem_beta / cos(sza));
+
74 else
+
75 return oh * exp(-ctl->oh_chem_beta / cos(M_PI / 2. * 85. / 90.));
+
76 } else
+
77 return oh;
+
78}
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double sza_calc(const double sec, const double lon, const double lat)
Calculate solar zenith angle.
Definition: libtrac.c:5408
+
clim_zm_t oh
OH zonal means.
Definition: libtrac.h:1802
+
double oh_chem_beta
Beta parameter for diurnal variablity of OH.
Definition: libtrac.h:1408
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ clim_oh_diurnal_correction()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void clim_oh_diurnal_correction (ctl_tctl,
clim_tclim 
)
+
+ +

Initialization function for OH climatology.

+ +

Definition at line 82 of file libtrac.c.

+
84 {
+
85
+
86 /* Loop over climatology data points... */
+
87 for (int it = 0; it < clim->oh.ntime; it++)
+
88 for (int iz = 0; iz < clim->oh.np; iz++)
+
89 for (int iy = 0; iy < clim->oh.nlat; iy++) {
+
90
+
91 /* Init... */
+
92 int n = 0;
+
93 double sum = 0;
+
94
+
95 /* Integrate day/night correction factor over longitude... */
+
96 for (double lon = -180; lon < 180; lon += 1.0) {
+
97 double sza = sza_calc(clim->oh.time[it], lon, clim->oh.lat[iy]);
+
98 if (sza <= M_PI / 2. * 85. / 90.)
+
99 sum += exp(-ctl->oh_chem_beta / cos(sza));
+
100 else
+
101 sum += exp(-ctl->oh_chem_beta / cos(M_PI / 2. * 85. / 90.));
+
102 n++;
+
103 }
+
104
+
105 /* Apply scaling factor to OH data... */
+
106 clim->oh.vmr[it][iz][iy] /= (sum / (double) n);
+
107 }
+
108}
+
double time[CT]
Time [s].
Definition: libtrac.h:1764
+
int np
Number of pressure levels.
Definition: libtrac.h:1761
+
double vmr[CT][CP][CY]
Volume mixing ratio [ppv].
Definition: libtrac.h:1773
+
int ntime
Number of timesteps.
Definition: libtrac.h:1755
+
int nlat
Number of latitudes.
Definition: libtrac.h:1758
+
double lat[CY]
Latitude [deg].
Definition: libtrac.h:1767
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ clim_photo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double clim_photo (double rate[CP][CSZA][CO3],
clim_photo_tphoto,
double p,
double sza,
double o3c 
)
+
+ +

Interpolate photolysis rate data.

+ +

Definition at line 112 of file libtrac.c.

+
117 {
+
118
+
119 /* Check pressure range... */
+
120 double p_help = p;
+
121 if (p < photo->p[photo->np - 1])
+
122 p_help = photo->p[photo->np - 1];
+
123 else if (p > photo->p[0])
+
124 p_help = photo->p[0];
+
125
+
126 /* Check sza range... */
+
127 double sza_help = sza;
+
128 if (sza < photo->sza[0])
+
129 sza_help = photo->sza[0];
+
130 else if (sza > photo->sza[photo->nsza - 1])
+
131 sza_help = photo->sza[photo->nsza - 1];
+
132
+
133 /* Check ozone column range... */
+
134 double o3c_help = o3c;
+
135 if (o3c < photo->o3c[0])
+
136 o3c_help = photo->o3c[0];
+
137 else if (o3c > photo->o3c[photo->no3c - 1])
+
138 o3c_help = photo->o3c[photo->no3c - 1];
+
139
+
140 /* Get indices... */
+
141 int ip = locate_irr(photo->p, photo->np, p_help);
+
142 int isza = locate_reg(photo->sza, photo->nsza, sza_help);
+
143 int io3c = locate_reg(photo->o3c, photo->no3c, o3c_help);
+
144
+
145 /* Interpolate photolysis rate... */
+
146 double aux00 = LIN(photo->p[ip], rate[ip][isza][io3c],
+
147 photo->p[ip + 1], rate[ip + 1][isza][io3c], p_help);
+
148 double aux01 = LIN(photo->p[ip], rate[ip][isza][io3c + 1],
+
149 photo->p[ip + 1], rate[ip + 1][isza][io3c + 1], p_help);
+
150 double aux10 = LIN(photo->p[ip], rate[ip][isza + 1][io3c],
+
151 photo->p[ip + 1], rate[ip + 1][isza + 1][io3c], p_help);
+
152 double aux11 = LIN(photo->p[ip], rate[ip][isza + 1][io3c + 1],
+
153 photo->p[ip + 1], rate[ip + 1][isza + 1][io3c + 1],
+
154 p_help);
+
155 aux00 = LIN(photo->o3c[io3c], aux00, photo->o3c[io3c + 1], aux01, o3c_help);
+
156 aux11 = LIN(photo->o3c[io3c], aux10, photo->o3c[io3c + 1], aux11, o3c_help);
+
157 aux00 = LIN(photo->sza[isza], aux00, photo->sza[isza + 1], aux11, sza_help);
+
158 return GSL_MAX(aux00, 0.0);
+
159}
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
int nsza
Number of solar zenith angles.
Definition: libtrac.h:1709
+
double sza[CSZA]
Solar zenith angle [rad].
Definition: libtrac.h:1718
+
double p[CP]
Pressure [hPa].
Definition: libtrac.h:1715
+
double o3c[CO3]
Total column ozone [DU].
Definition: libtrac.h:1721
+
int np
Number of pressure levels.
Definition: libtrac.h:1706
+
int no3c
Number of total ozone columns.
Definition: libtrac.h:1712
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ clim_tropo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double clim_tropo (const clim_tclim,
const double t,
const double lat 
)
+
+ +

Climatology of tropopause pressure.

+ +

Definition at line 163 of file libtrac.c.

+
166 {
+
167
+
168 /* Get seconds since begin of year... */
+
169 double sec = FMOD(t, 365.25 * 86400.);
+
170 while (sec < 0)
+
171 sec += 365.25 * 86400.;
+
172
+
173 /* Get indices... */
+
174 int isec = locate_irr(clim->tropo_time, clim->tropo_ntime, sec);
+
175 int ilat = locate_reg(clim->tropo_lat, clim->tropo_nlat, lat);
+
176
+
177 /* Interpolate tropopause pressure... */
+
178 double p0 = LIN(clim->tropo_lat[ilat],
+
179 clim->tropo[isec][ilat],
+
180 clim->tropo_lat[ilat + 1],
+
181 clim->tropo[isec][ilat + 1], lat);
+
182 double p1 = LIN(clim->tropo_lat[ilat],
+
183 clim->tropo[isec + 1][ilat],
+
184 clim->tropo_lat[ilat + 1],
+
185 clim->tropo[isec + 1][ilat + 1], lat);
+
186 return LIN(clim->tropo_time[isec], p0, clim->tropo_time[isec + 1], p1, sec);
+
187}
+
#define FMOD(x, y)
Compute floating point modulo.
Definition: libtrac.h:307
+
int tropo_ntime
Number of tropopause timesteps.
Definition: libtrac.h:1781
+
double tropo_lat[73]
Tropopause latitudes [deg].
Definition: libtrac.h:1790
+
int tropo_nlat
Number of tropopause latitudes.
Definition: libtrac.h:1784
+
double tropo[12][73]
Tropopause pressure values [hPa].
Definition: libtrac.h:1793
+
double tropo_time[12]
Tropopause time steps [s].
Definition: libtrac.h:1787
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ clim_tropo_init()

+ +
+
+ + + + + + + + +
void clim_tropo_init (clim_tclim)
+
+ +

Initialize tropopause climatology.

+ +

Definition at line 191 of file libtrac.c.

+
192 {
+
193
+
194 /* Write info... */
+
195 LOG(1, "Initialize tropopause data...");
+
196
+
197 /* Set time [s]... */
+
198 clim->tropo_ntime = 12;
+
199 double tropo_time[12] = {
+
200 1209600.00, 3888000.00, 6393600.00,
+
201 9072000.00, 11664000.00, 14342400.00,
+
202 16934400.00, 19612800.00, 22291200.00,
+
203 24883200.00, 27561600.00, 30153600.00
+
204 };
+
205 memcpy(clim->tropo_time, tropo_time, sizeof(clim->tropo_time));
+
206
+
207 /* Set latitudes [deg]... */
+
208 clim->tropo_nlat = 73;
+
209 double tropo_lat[73] = {
+
210 -90, -87.5, -85, -82.5, -80, -77.5, -75, -72.5, -70, -67.5,
+
211 -65, -62.5, -60, -57.5, -55, -52.5, -50, -47.5, -45, -42.5,
+
212 -40, -37.5, -35, -32.5, -30, -27.5, -25, -22.5, -20, -17.5,
+
213 -15, -12.5, -10, -7.5, -5, -2.5, 0, 2.5, 5, 7.5, 10, 12.5,
+
214 15, 17.5, 20, 22.5, 25, 27.5, 30, 32.5, 35, 37.5, 40, 42.5,
+
215 45, 47.5, 50, 52.5, 55, 57.5, 60, 62.5, 65, 67.5, 70, 72.5,
+
216 75, 77.5, 80, 82.5, 85, 87.5, 90
+
217 };
+
218 memcpy(clim->tropo_lat, tropo_lat, sizeof(clim->tropo_lat));
+
219
+
220 /* Set tropopause pressure [hPa] (NCEP/NCAR Reanalysis 1)... */
+
221 double tropo[12][73] = {
+
222 {324.1, 325.6, 325, 324.3, 322.5, 319.7, 314, 307.2, 301.8, 299.6,
+
223 297.1, 292.2, 285.6, 276.1, 264, 248.9, 231.9, 213.5, 194.4,
+
224 175.3, 157, 140.4, 126.7, 116.3, 109.5, 105.4, 103, 101.4, 100.4,
+
225 99.69, 99.19, 98.84, 98.56, 98.39, 98.39, 98.42, 98.44, 98.54,
+
226 98.68, 98.81, 98.89, 98.96, 99.12, 99.65, 101.4, 105.4, 113.5, 128,
+
227 152.1, 184.7, 214, 234.1, 247.3, 255.8, 262.6, 267.7, 271.7, 275,
+
228 277.2, 279, 280.1, 280.4, 280.6, 280.1, 279.3, 278.3, 276.8, 275.8,
+
229 275.3, 275.6, 275.4, 274.1, 273.5},
+
230 {337.3, 338.7, 337.8, 336.4, 333, 328.8, 321.1, 312.6, 306.6, 303.7,
+
231 300.2, 293.8, 285.4, 273.8, 259.6, 242.7, 224.4, 205.2, 186, 167.5,
+
232 150.3, 135, 122.8, 113.9, 108.2, 104.7, 102.5, 101.1, 100.2, 99.42,
+
233 98.88, 98.52, 98.25, 98.09, 98.07, 98.1, 98.12, 98.2, 98.25, 98.27,
+
234 98.26, 98.27, 98.36, 98.79, 100.2, 104.2, 113.7, 131.2, 159.5, 193,
+
235 220.4, 238.1, 250.2, 258.1, 264.7, 269.7, 273.7, 277.3, 280.2, 282.8,
+
236 284.9, 286.5, 288.1, 288.8, 289, 288.5, 287.2, 286.3, 286.1, 287.2,
+
237 287.5, 286.2, 285.8},
+
238 {335, 336, 335.7, 335.1, 332.3, 328.1, 320.6, 311.8, 305.1, 301.9,
+
239 297.6, 290, 280.4, 268.3, 254.6, 239.6, 223.9, 207.9, 192.2, 176.9,
+
240 161.7, 146.4, 132.2, 120.6, 112.3, 107.2, 104.3, 102.4, 101.3,
+
241 100.4, 99.86, 99.47, 99.16, 98.97, 98.94, 98.97, 99, 99.09, 99.2,
+
242 99.31, 99.35, 99.41, 99.51, 99.86, 101.1, 104.9, 114.3, 131, 156.8,
+
243 186.3, 209.3, 224.6, 236.8, 246.3, 254.9, 262.3, 268.8, 274.8,
+
244 279.9, 284.6, 288.6, 291.6, 294.9, 297.5, 299.8, 301.8, 303.1,
+
245 304.3, 304.9, 306, 306.6, 306.2, 306},
+
246 {306.2, 306.7, 305.7, 307.1, 307.3, 306.4, 301.8, 296.2, 292.4,
+
247 290.3, 287.1, 280.9, 273.4, 264.3, 254.1, 242.8, 231, 219, 207.2,
+
248 195.5, 183.3, 169.7, 154.7, 138.7, 124.1, 113.6, 107.8, 104.7,
+
249 102.8, 101.7, 100.9, 100.4, 100, 99.79, 99.7, 99.66, 99.68, 99.79,
+
250 99.94, 100.2, 100.5, 100.9, 101.4, 102.1, 103.4, 107, 115.2, 129.1,
+
251 148.7, 171, 190.8, 205.6, 218.4, 229.4, 239.6, 248.6, 256.5,
+
252 263.7, 270.3, 276.6, 282.6, 288.1, 294.5, 300.4, 306.3, 311.4,
+
253 315.1, 318.3, 320.3, 322.2, 322.8, 321.5, 321.1},
+
254 {266.5, 264.9, 260.8, 261, 262, 263, 261.3, 259.7, 259.2, 259.8,
+
255 260.1, 258.6, 256.7, 253.6, 249.5, 243.9, 237.4, 230, 222.1, 213.9,
+
256 205, 194.4, 180.4, 161.8, 140.7, 122.9, 112.1, 106.7, 104.1, 102.7,
+
257 101.8, 101.4, 101.1, 101, 101, 101, 101.1, 101.2, 101.5, 101.9,
+
258 102.4, 103, 103.8, 104.9, 106.8, 110.1, 115.6, 124, 135.2, 148.9,
+
259 165.2, 181.3, 198, 211.8, 223.5, 233.8, 242.9, 251.5, 259, 266.2,
+
260 273.1, 279.2, 286.2, 292.8, 299.6, 306, 311.1, 315.5, 318.8, 322.6,
+
261 325.3, 325.8, 325.8},
+
262 {220.1, 218.1, 210.8, 207.2, 207.6, 210.5, 211.4, 213.5, 217.3,
+
263 222.4, 227.9, 232.8, 237.4, 240.8, 242.8, 243, 241.5, 238.6, 234.2,
+
264 228.5, 221, 210.7, 195.1, 172.9, 147.8, 127.6, 115.6, 109.9, 107.1,
+
265 105.7, 105, 104.8, 104.8, 104.9, 105, 105.1, 105.3, 105.5, 105.8,
+
266 106.4, 107, 107.6, 108.1, 108.8, 110, 111.8, 114.2, 117.4, 121.6,
+
267 127.9, 137.3, 151.2, 169.5, 189, 205.8, 218.9, 229.1, 237.8, 245,
+
268 251.5, 257.1, 262.3, 268.2, 274, 280.4, 286.7, 292.4, 297.9, 302.9,
+
269 308.5, 312.2, 313.1, 313.3},
+
270 {187.4, 184.5, 173.3, 166.1, 165.4, 167.8, 169.6, 173.6, 179.6,
+
271 187.9, 198.9, 210, 220.5, 229.2, 235.7, 239.9, 241.8, 241.6, 239.6,
+
272 235.8, 229.4, 218.6, 200.9, 175.9, 149.4, 129.4, 118.3, 113.1,
+
273 110.8, 109.7, 109.3, 109.4, 109.7, 110, 110.2, 110.4, 110.5, 110.7,
+
274 111, 111.4, 111.8, 112.1, 112.3, 112.7, 113.2, 113.9, 115, 116.4,
+
275 117.9, 120.4, 124.1, 130.9, 142.2, 159.6, 179.6, 198.5, 212.9,
+
276 224.2, 232.7, 239.1, 243.8, 247.7, 252.4, 257.3, 263.2, 269.5,
+
277 275.4, 281.1, 286.3, 292, 296.3, 298.2, 298.8},
+
278 {166, 166.4, 155.7, 148.3, 147.1, 149, 152.1, 157, 163.6, 172.4,
+
279 185.3, 199.2, 212.6, 224, 233.2, 239.6, 243.3, 244.6, 243.6, 240.3,
+
280 233.9, 222.6, 203.7, 177, 149.5, 129.7, 119, 114, 111.7, 110.7,
+
281 110.3, 110.3, 110.6, 110.9, 111.1, 111.3, 111.5, 111.6, 111.9,
+
282 112.2, 112.5, 112.6, 112.8, 113, 113.4, 114, 115.1, 116.5, 118.3,
+
283 120.9, 124.4, 130.2, 139.4, 154.6, 173.8, 193.1, 208.1, 220.4,
+
284 230.1, 238.2, 244.7, 249.5, 254.5, 259.3, 264.5, 269.4, 273.7,
+
285 278.2, 282.6, 287.4, 290.9, 292.5, 293},
+
286 {171.9, 172.8, 166.2, 162.3, 161.4, 162.5, 165.2, 169.6, 175.3,
+
287 183.1, 193.8, 205.9, 218.3, 229.6, 238.5, 244.3, 246.9, 246.7,
+
288 243.8, 238.4, 230.2, 217.9, 199.6, 174.9, 148.9, 129.8, 119.5,
+
289 114.8, 112.3, 110.9, 110.3, 110.1, 110.2, 110.3, 110.4, 110.5,
+
290 110.6, 110.8, 111, 111.4, 111.8, 112, 112.2, 112.4, 112.9, 113.6,
+
291 114.7, 116.3, 118.4, 121.9, 127.1, 136.1, 149.8, 168.4, 186.9,
+
292 203.3, 217, 229.1, 238.7, 247, 254, 259.3, 264.3, 268.3, 272.5,
+
293 276.6, 280.4, 284.4, 288.4, 293.3, 297.2, 298.7, 299.1},
+
294 {191.6, 192.2, 189, 188.1, 190.2, 193.7, 197.8, 202.9, 208.5,
+
295 215.6, 224.2, 233.1, 241.2, 247.3, 250.8, 251.3, 248.9, 244.2,
+
296 237.3, 228.4, 217.2, 202.9, 184.5, 162.5, 140.7, 124.8, 116.2,
+
297 111.8, 109.4, 107.9, 107, 106.7, 106.6, 106.6, 106.7, 106.7,
+
298 106.8, 107, 107.4, 108, 108.7, 109.3, 109.8, 110.4, 111.2,
+
299 112.4, 114.2, 116.9, 121.1, 127.9, 139.3, 155.2, 173.6, 190.7,
+
300 206.1, 220.1, 232.3, 243, 251.8, 259.2, 265.7, 270.6, 275.3,
+
301 279.3, 283.3, 286.9, 289.7, 292.8, 296.1, 300.5, 303.9, 304.8,
+
302 305.1},
+
303 {241.5, 239.6, 236.8, 237.4, 239.4, 242.3, 244.2, 246.4, 249.2,
+
304 253.6, 258.6, 262.7, 264.8, 264.2, 260.6, 254.1, 245.5, 235.3,
+
305 223.9, 211.7, 198.3, 183.1, 165.6, 147.1, 130.5, 118.7, 111.9,
+
306 108.1, 105.8, 104.3, 103.4, 102.8, 102.5, 102.4, 102.5, 102.5,
+
307 102.5, 102.7, 103.1, 103.8, 104.6, 105.4, 106.1, 107, 108.2,
+
308 109.9, 112.8, 117.5, 126, 140.4, 161, 181.9, 201.2, 216.8, 230.4,
+
309 241.8, 251.4, 259.9, 266.9, 272.8, 277.4, 280.4, 282.9, 284.6,
+
310 286.1, 287.4, 288.3, 289.5, 290.9, 294.2, 296.9, 297.5, 297.6},
+
311 {301.2, 300.3, 296.6, 295.4, 295, 294.3, 291.2, 287.4, 284.9, 284.7,
+
312 284.1, 281.5, 277.1, 270.4, 261.7, 250.6, 237.6, 223.1, 207.9, 192,
+
313 175.8, 158.8, 142.1, 127.6, 116.8, 109.9, 106, 103.6, 102.1, 101.1,
+
314 100.4, 99.96, 99.6, 99.37, 99.32, 99.32, 99.31, 99.46, 99.77, 100.2,
+
315 100.7, 101.3, 101.8, 102.7, 104.1, 106.8, 111.9, 121, 136.7, 160,
+
316 186.9, 209.9, 228.1, 241.2, 251.5, 259.5, 265.7, 270.9, 274.8, 278,
+
317 280.3, 281.8, 283, 283.3, 283.7, 283.8, 283, 282.2, 281.2, 281.4,
+
318 281.7, 281.1, 281.2}
+
319 };
+
320 memcpy(clim->tropo, tropo, sizeof(clim->tropo));
+
321
+
322 /* Get range... */
+
323 double tropomin = 1e99, tropomax = -1e99;
+
324 for (int it = 0; it < clim->tropo_ntime; it++)
+
325 for (int iy = 0; iy < clim->tropo_nlat; iy++) {
+
326 tropomin = GSL_MIN(tropomin, clim->tropo[it][iy]);
+
327 tropomax = GSL_MAX(tropomax, clim->tropo[it][iy]);
+
328 }
+
329
+
330 /* Write info... */
+
331 LOG(2, "Number of time steps: %d", clim->tropo_ntime);
+
332 LOG(2, "Time steps: %.2f, %.2f ... %.2f s",
+
333 clim->tropo_time[0], clim->tropo_time[1],
+
334 clim->tropo_time[clim->tropo_ntime - 1]);
+
335 LOG(2, "Number of latitudes: %d", clim->tropo_nlat);
+
336 LOG(2, "Latitudes: %g, %g ... %g deg",
+
337 clim->tropo_lat[0], clim->tropo_lat[1],
+
338 clim->tropo_lat[clim->tropo_nlat - 1]);
+
339 LOG(2, "Tropopause altitude range: %g ... %g hPa", Z(tropomax),
+
340 Z(tropomin));
+
341 LOG(2, "Tropopause pressure range: %g ... %g hPa", tropomin, tropomax);
+
342}
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
+
+
+ +

◆ clim_ts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
double clim_ts (const clim_ts_tts,
const double t 
)
+
+ +

Interpolate time series.

+ +

Definition at line 346 of file libtrac.c.

+
348 {
+
349
+
350 /* Interpolate... */
+
351 if (t <= ts->time[0])
+
352 return ts->vmr[0];
+
353 else if (t >= ts->time[ts->ntime - 1])
+
354 return ts->vmr[ts->ntime - 1];
+
355 else {
+
356 int idx = locate_irr(ts->time, ts->ntime, t);
+
357 return LIN(ts->time[idx], ts->vmr[idx],
+
358 ts->time[idx + 1], ts->vmr[idx + 1], t);
+
359 }
+
360}
+
double vmr[CTS]
Volume mixing ratio [ppv].
Definition: libtrac.h:1747
+
double time[CTS]
Time [s].
Definition: libtrac.h:1744
+
int ntime
Number of timesteps.
Definition: libtrac.h:1741
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ clim_zm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double clim_zm (const clim_zm_tzm,
const double t,
const double lat,
const double p 
)
+
+ +

Interpolate zonal mean climatology.

+ +

Definition at line 364 of file libtrac.c.

+
368 {
+
369
+
370 /* Get seconds since begin of year... */
+
371 double sec = FMOD(t, 365.25 * 86400.);
+
372 while (sec < 0)
+
373 sec += 365.25 * 86400.;
+
374
+
375 /* Check pressure range... */
+
376 double p_help = p;
+
377 if (p < zm->p[zm->np - 1])
+
378 p_help = zm->p[zm->np - 1];
+
379 else if (p > zm->p[0])
+
380 p_help = zm->p[0];
+
381
+
382 /* Check latitude range... */
+
383 double lat_help = lat;
+
384 if (lat < zm->lat[0])
+
385 lat_help = zm->lat[0];
+
386 else if (lat > zm->lat[zm->nlat - 1])
+
387 lat_help = zm->lat[zm->nlat - 1];
+
388
+
389 /* Get indices... */
+
390 int isec = locate_irr(zm->time, zm->ntime, sec);
+
391 int ilat = locate_reg(zm->lat, zm->nlat, lat_help);
+
392 int ip = locate_irr(zm->p, zm->np, p_help);
+
393
+
394 /* Interpolate climatology data... */
+
395 double aux00 = LIN(zm->p[ip], zm->vmr[isec][ip][ilat],
+
396 zm->p[ip + 1], zm->vmr[isec][ip + 1][ilat], p_help);
+
397 double aux01 = LIN(zm->p[ip], zm->vmr[isec][ip][ilat + 1],
+
398 zm->p[ip + 1], zm->vmr[isec][ip + 1][ilat + 1], p_help);
+
399 double aux10 = LIN(zm->p[ip], zm->vmr[isec + 1][ip][ilat],
+
400 zm->p[ip + 1], zm->vmr[isec + 1][ip + 1][ilat], p_help);
+
401 double aux11 = LIN(zm->p[ip], zm->vmr[isec + 1][ip][ilat + 1],
+
402 zm->p[ip + 1], zm->vmr[isec + 1][ip + 1][ilat + 1],
+
403 p_help);
+
404 aux00 = LIN(zm->lat[ilat], aux00, zm->lat[ilat + 1], aux01, lat_help);
+
405 aux11 = LIN(zm->lat[ilat], aux10, zm->lat[ilat + 1], aux11, lat_help);
+
406 aux00 = LIN(zm->time[isec], aux00, zm->time[isec + 1], aux11, sec);
+
407
+
408 return GSL_MAX(aux00, 0.0);
+
409}
+
double p[CP]
Pressure [hPa].
Definition: libtrac.h:1770
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ compress_pack()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void compress_pack (char * varname,
float * array,
size_t nxy,
size_t nz,
int decompress,
FILE * inout 
)
+
+ +

Pack or unpack array.

+ +

Definition at line 413 of file libtrac.c.

+
419 {
+
420
+
421 double min[EP], max[EP], off[EP], scl[EP];
+
422
+
423 unsigned short *sarray;
+
424
+
425 /* Allocate... */
+
426 ALLOC(sarray, unsigned short,
+
427 nxy * nz);
+
428
+
429 /* Read compressed stream and decompress array... */
+
430 if (decompress) {
+
431
+
432 /* Write info... */
+
433 LOG(2, "Read 3-D variable: %s (pack, RATIO= %g %%)",
+
434 varname, 100. * sizeof(unsigned short) / sizeof(float));
+
435
+
436 /* Read data... */
+
437 FREAD(&scl, double,
+
438 nz,
+
439 inout);
+
440 FREAD(&off, double,
+
441 nz,
+
442 inout);
+
443 FREAD(sarray, unsigned short,
+
444 nxy * nz,
+
445 inout);
+
446
+
447 /* Convert to float... */
+
448#pragma omp parallel for default(shared)
+
449 for (size_t ixy = 0; ixy < nxy; ixy++)
+
450 for (size_t iz = 0; iz < nz; iz++)
+
451 array[ixy * nz + iz]
+
452 = (float) (sarray[ixy * nz + iz] * scl[iz] + off[iz]);
+
453 }
+
454
+
455 /* Compress array and output compressed stream... */
+
456 else {
+
457
+
458 /* Write info... */
+
459 LOG(2, "Write 3-D variable: %s (pack, RATIO= %g %%)",
+
460 varname, 100. * sizeof(unsigned short) / sizeof(float));
+
461
+
462 /* Get range... */
+
463 for (size_t iz = 0; iz < nz; iz++) {
+
464 min[iz] = array[iz];
+
465 max[iz] = array[iz];
+
466 }
+
467 for (size_t ixy = 1; ixy < nxy; ixy++)
+
468 for (size_t iz = 0; iz < nz; iz++) {
+
469 if (array[ixy * nz + iz] < min[iz])
+
470 min[iz] = array[ixy * nz + iz];
+
471 if (array[ixy * nz + iz] > max[iz])
+
472 max[iz] = array[ixy * nz + iz];
+
473 }
+
474
+
475 /* Get offset and scaling factor... */
+
476 for (size_t iz = 0; iz < nz; iz++) {
+
477 scl[iz] = (max[iz] - min[iz]) / 65533.;
+
478 off[iz] = min[iz];
+
479 }
+
480
+
481 /* Convert to short... */
+
482#pragma omp parallel for default(shared)
+
483 for (size_t ixy = 0; ixy < nxy; ixy++)
+
484 for (size_t iz = 0; iz < nz; iz++)
+
485 if (scl[iz] != 0)
+
486 sarray[ixy * nz + iz] = (unsigned short)
+
487 ((array[ixy * nz + iz] - off[iz]) / scl[iz] + .5);
+
488 else
+
489 sarray[ixy * nz + iz] = 0;
+
490
+
491 /* Write data... */
+
492 FWRITE(&scl, double,
+
493 nz,
+
494 inout);
+
495 FWRITE(&off, double,
+
496 nz,
+
497 inout);
+
498 FWRITE(sarray, unsigned short,
+
499 nxy * nz,
+
500 inout);
+
501 }
+
502
+
503 /* Free... */
+
504 free(sarray);
+
505}
+
#define FWRITE(ptr, type, size, out)
Write binary data.
Definition: libtrac.h:317
+
#define FREAD(ptr, type, size, in)
Read binary data.
Definition: libtrac.h:311
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
+
+
+ +

◆ day2doy()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void day2doy (const int year,
const int mon,
const int day,
int * doy 
)
+
+ +

Compress or decompress array with zfp.

+

Compress or decompress array with zstd.

+

Get day of year from date.

+ +

Definition at line 654 of file libtrac.c.

+
658 {
+
659
+
660 const int
+
661 d0[12] = { 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },
+
662 d0l[12] = { 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 };
+
663
+
664 /* Get day of year... */
+
665 if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
+
666 *doy = d0l[mon - 1] + day - 1;
+
667 else
+
668 *doy = d0[mon - 1] + day - 1;
+
669}
+
+
+
+ +

◆ doy2day()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void doy2day (const int year,
const int doy,
int * mon,
int * day 
)
+
+ +

Get date from day of year.

+ +

Definition at line 673 of file libtrac.c.

+
677 {
+
678
+
679 const int
+
680 d0[12] = { 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },
+
681 d0l[12] = { 1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336 };
+
682
+
683 int i;
+
684
+
685 /* Get month and day... */
+
686 if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
+
687 for (i = 11; i > 0; i--)
+
688 if (d0l[i] <= doy)
+
689 break;
+
690 *mon = i + 1;
+
691 *day = doy - d0l[i] + 1;
+
692 } else {
+
693 for (i = 11; i > 0; i--)
+
694 if (d0[i] <= doy)
+
695 break;
+
696 *mon = i + 1;
+
697 *day = doy - d0[i] + 1;
+
698 }
+
699}
+
+
+
+ +

◆ geo2cart()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void geo2cart (const double z,
const double lon,
const double lat,
double * x 
)
+
+ +

Convert geolocation to Cartesian coordinates.

+ +

Definition at line 703 of file libtrac.c.

+
707 {
+
708
+
709 double radius = z + RE;
+
710 x[0] = radius * cos(lat / 180. * M_PI) * cos(lon / 180. * M_PI);
+
711 x[1] = radius * cos(lat / 180. * M_PI) * sin(lon / 180. * M_PI);
+
712 x[2] = radius * sin(lat / 180. * M_PI);
+
713}
+
+
+
+ +

◆ get_met()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void get_met (ctl_tctl,
clim_tclim,
double t,
met_t ** met0,
met_t ** met1 
)
+
+ +

Get meteo data for given time step.

+ +

Definition at line 717 of file libtrac.c.

+
722 {
+
723
+
724 static int init;
+
725
+
726 met_t *mets;
+
727
+
728 char cachefile[LEN], cmd[2 * LEN], filename[LEN];
+
729
+
730 /* Set timer... */
+
731 SELECT_TIMER("GET_MET", "INPUT", NVTX_READ);
+
732
+
733 /* Init... */
+
734 if (t == ctl->t_start || !init) {
+
735 init = 1;
+
736
+
737 /* Read meteo data... */
+
738 get_met_help(ctl, t + (ctl->direction == -1 ? -1 : 0), -1,
+
739 ctl->metbase, ctl->dt_met, filename);
+
740 if (!read_met(filename, ctl, clim, *met0))
+
741 ERRMSG("Cannot open file!");
+
742
+
743 get_met_help(ctl, t + (ctl->direction == 1 ? 1 : 0), 1,
+
744 ctl->metbase, ctl->dt_met, filename);
+
745 if (!read_met(filename, ctl, clim, *met1))
+
746 ERRMSG("Cannot open file!");
+
747
+
748 /* Update GPU... */
+
749#ifdef _OPENACC
+
750 met_t *met0up = *met0;
+
751 met_t *met1up = *met1;
+
752#ifdef ASYNCIO
+
753#pragma acc update device(met0up[:1],met1up[:1]) async(5)
+
754#else
+
755#pragma acc update device(met0up[:1],met1up[:1])
+
756#endif
+
757#endif
+
758
+
759 /* Caching... */
+
760 if (ctl->met_cache && t != ctl->t_stop) {
+
761 get_met_help(ctl, t + 1.1 * ctl->dt_met * ctl->direction,
+
762 ctl->direction, ctl->metbase, ctl->dt_met, cachefile);
+
763 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
764 LOG(1, "Caching: %s", cachefile);
+
765 if (system(cmd) != 0)
+
766 WARN("Caching command failed!");
+
767 }
+
768 }
+
769
+
770 /* Read new data for forward trajectories... */
+
771 if (t > (*met1)->time) {
+
772
+
773 /* Pointer swap... */
+
774 mets = *met1;
+
775 *met1 = *met0;
+
776 *met0 = mets;
+
777
+
778 /* Read new meteo data... */
+
779 get_met_help(ctl, t, 1, ctl->metbase, ctl->dt_met, filename);
+
780 if (!read_met(filename, ctl, clim, *met1))
+
781 ERRMSG("Cannot open file!");
+
782
+
783 /* Update GPU... */
+
784#ifdef _OPENACC
+
785 met_t *met1up = *met1;
+
786#ifdef ASYNCIO
+
787#pragma acc update device(met1up[:1]) async(5)
+
788#else
+
789#pragma acc update device(met1up[:1])
+
790#endif
+
791#endif
+
792
+
793 /* Caching... */
+
794 if (ctl->met_cache && t != ctl->t_stop) {
+
795 get_met_help(ctl, t + ctl->dt_met, 1, ctl->metbase, ctl->dt_met,
+
796 cachefile);
+
797 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
798 LOG(1, "Caching: %s", cachefile);
+
799 if (system(cmd) != 0)
+
800 WARN("Caching command failed!");
+
801 }
+
802 }
+
803 /* Read new data for backward trajectories... */
+
804 if (t < (*met0)->time) {
+
805
+
806 /* Pointer swap... */
+
807 mets = *met1;
+
808 *met1 = *met0;
+
809 *met0 = mets;
+
810
+
811 /* Read new meteo data... */
+
812 get_met_help(ctl, t, -1, ctl->metbase, ctl->dt_met, filename);
+
813 if (!read_met(filename, ctl, clim, *met0))
+
814 ERRMSG("Cannot open file!");
+
815
+
816 /* Update GPU... */
+
817#ifdef _OPENACC
+
818 met_t *met0up = *met0;
+
819#ifdef ASYNCIO
+
820#pragma acc update device(met0up[:1]) async(5)
+
821#else
+
822#pragma acc update device(met0up[:1])
+
823#endif
+
824#endif
+
825
+
826 /* Caching... */
+
827 if (ctl->met_cache && t != ctl->t_stop) {
+
828 get_met_help(ctl, t - ctl->dt_met, -1, ctl->metbase, ctl->dt_met,
+
829 cachefile);
+
830 sprintf(cmd, "cat %s > /dev/null &", cachefile);
+
831 LOG(1, "Caching: %s", cachefile);
+
832 if (system(cmd) != 0)
+
833 WARN("Caching command failed!");
+
834 }
+
835 }
+
836 /* Check that grids are consistent... */
+
837 if ((*met0)->nx != 0 && (*met1)->nx != 0) {
+
838 if ((*met0)->nx != (*met1)->nx
+
839 || (*met0)->ny != (*met1)->ny || (*met0)->np != (*met1)->np)
+
840 ERRMSG("Meteo grid dimensions do not match!");
+
841 for (int ix = 0; ix < (*met0)->nx; ix++)
+
842 if (fabs((*met0)->lon[ix] - (*met1)->lon[ix]) > 0.001)
+
843 ERRMSG("Meteo grid longitudes do not match!");
+
844 for (int iy = 0; iy < (*met0)->ny; iy++)
+
845 if (fabs((*met0)->lat[iy] - (*met1)->lat[iy]) > 0.001)
+
846 ERRMSG("Meteo grid latitudes do not match!");
+
847 for (int ip = 0; ip < (*met0)->np; ip++)
+
848 if (fabs((*met0)->p[ip] - (*met1)->p[ip]) > 0.001)
+
849 ERRMSG("Meteo grid pressure levels do not match!");
+
850 }
+
851}
+
void get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename)
Get meteo data for time step.
Definition: libtrac.c:855
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define SELECT_TIMER(id, group, color)
Select timer.
Definition: libtrac.h:721
+
int direction
Direction flag (1=forward calculation, -1=backward calculation).
Definition: libtrac.h:1094
+
double dt_met
Time step of meteo data [s].
Definition: libtrac.h:1109
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
int met_cache
Preload meteo data into disk cache (0=no, 1=yes).
Definition: libtrac.h:1200
+
char metbase[LEN]
Basename for meteo data.
Definition: libtrac.h:1106
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
Meteo data.
Definition: libtrac.h:1831
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +

◆ get_met_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void get_met_help (ctl_tctl,
double t,
int direct,
char * metbase,
double dt_met,
char * filename 
)
+
+ +

Get meteo data for time step.

+ +

Definition at line 855 of file libtrac.c.

+
861 {
+
862
+
863 char repl[LEN];
+
864
+
865 double t6, r;
+
866
+
867 int year, mon, day, hour, min, sec;
+
868
+
869 /* Round time to fixed intervals... */
+
870 if (direct == -1)
+
871 t6 = floor(t / dt_met) * dt_met;
+
872 else
+
873 t6 = ceil(t / dt_met) * dt_met;
+
874
+
875 /* Decode time... */
+
876 jsec2time(t6, &year, &mon, &day, &hour, &min, &sec, &r);
+
877
+
878 /* Set filename of MPTRAC meteo files... */
+
879 if (ctl->clams_met_data == 0) {
+
880 if (ctl->met_type == 0)
+
881 sprintf(filename, "%s_YYYY_MM_DD_HH.nc", metbase);
+
882 else if (ctl->met_type == 1)
+
883 sprintf(filename, "%s_YYYY_MM_DD_HH.bin", metbase);
+
884 else if (ctl->met_type == 2)
+
885 sprintf(filename, "%s_YYYY_MM_DD_HH.pck", metbase);
+
886 else if (ctl->met_type == 3)
+
887 sprintf(filename, "%s_YYYY_MM_DD_HH.zfp", metbase);
+
888 else if (ctl->met_type == 4)
+
889 sprintf(filename, "%s_YYYY_MM_DD_HH.zstd", metbase);
+
890 sprintf(repl, "%d", year);
+
891 get_met_replace(filename, "YYYY", repl);
+
892 sprintf(repl, "%02d", mon);
+
893 get_met_replace(filename, "MM", repl);
+
894 sprintf(repl, "%02d", day);
+
895 get_met_replace(filename, "DD", repl);
+
896 sprintf(repl, "%02d", hour);
+
897 get_met_replace(filename, "HH", repl);
+
898 }
+
899
+
900 /* Set filename of CLaMS meteo files... */
+
901 else {
+
902 sprintf(filename, "%s_YYMMDDHH.nc", metbase);
+
903 sprintf(repl, "%d", year);
+
904 get_met_replace(filename, "YYYY", repl);
+
905 sprintf(repl, "%02d", year % 100);
+
906 get_met_replace(filename, "YY", repl);
+
907 sprintf(repl, "%02d", mon);
+
908 get_met_replace(filename, "MM", repl);
+
909 sprintf(repl, "%02d", day);
+
910 get_met_replace(filename, "DD", repl);
+
911 sprintf(repl, "%02d", hour);
+
912 get_met_replace(filename, "HH", repl);
+
913 }
+
914}
+
void get_met_replace(char *orig, char *search, char *repl)
Replace template strings in filename.
Definition: libtrac.c:918
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
int clams_met_data
Read MPTRAC or CLaMS meteo data (0=MPTRAC, 1=CLaMS).
Definition: libtrac.h:818
+
int met_type
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:1115
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ get_met_replace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void get_met_replace (char * orig,
char * search,
char * repl 
)
+
+ +

Replace template strings in filename.

+ +

Definition at line 918 of file libtrac.c.

+
921 {
+
922
+
923 char buffer[LEN];
+
924
+
925 /* Iterate... */
+
926 for (int i = 0; i < 3; i++) {
+
927
+
928 /* Replace sub-string... */
+
929 char *ch;
+
930 if (!(ch = strstr(orig, search)))
+
931 return;
+
932 strncpy(buffer, orig, (size_t) (ch - orig));
+
933 buffer[ch - orig] = 0;
+
934 sprintf(buffer + (ch - orig), "%s%s", repl, ch + strlen(search));
+
935 orig[0] = 0;
+
936 strcpy(orig, buffer);
+
937 }
+
938}
+
+
+
+ +

◆ intpol_met_4d_coord()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_4d_coord (met_tmet0,
float height0[EX][EY][EP],
float array0[EX][EY][EP],
met_tmet1,
float height1[EX][EY][EP],
float array1[EX][EY][EP],
double ts,
double height,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatiotemporal interpolation of meteo data.

+

!

+ +

Definition at line 942 of file libtrac.c.

+
956 {
+
957
+
958 if (init) {
+
959
+
960 /* Restrict positions to coordinate range... */
+
961 lon = FMOD(lon, 360.);
+
962 if (met0->lon[met0->nx - 1] > 180 && lon < 0)
+
963 lon += 360;
+
964
+
965 /* Get horizontal indizes... */
+
966 ci[0] = locate_irr(met0->lon, met0->nx, lon);
+
967 ci[1] = locate_irr(met0->lat, met0->ny, lat);
+
968
+
969 /* Locate the vertical indizes for each edge of the column... */
+
970 int ind[2][4];
+
971 locate_vert(heights0, met0->npl, ci[0], ci[1], height, ind[0]);
+
972 locate_vert(heights1, met1->npl, ci[0], ci[1], height, ind[1]);
+
973
+
974 /* Find minimum and maximum indizes... */
+
975 ci[2] = ind[0][0];
+
976 int k_max = ind[0][0];
+
977 for (int i = 0; i < 2; i++)
+
978 for (int j = 0; j < 4; j++) {
+
979 if (ci[2] > ind[i][j])
+
980 ci[2] = ind[i][j];
+
981 if (k_max < ind[i][j])
+
982 k_max = ind[i][j];
+
983 }
+
984
+
985 /* Get weighting factors for time, longitude and latitude... */
+
986 cw[3] = (ts - met0->time) / (met1->time - met0->time);
+
987 cw[0] = (lon - met0->lon[ci[0]]) /
+
988 (met0->lon[ci[0] + 1] - met0->lon[ci[0]]);
+
989 cw[1] = (lat - met0->lat[ci[1]]) /
+
990 (met0->lat[ci[1] + 1] - met0->lat[ci[1]]);
+
991
+
992 /* Start determiniation of the altitude weighting factor... */
+
993 double height_top, height_bot;
+
994 double height00, height01, height10, height11, height0, height1;
+
995
+
996 /* Interpolate in time at the lowest level... */
+
997 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2]]
+
998 - heights0[ci[0]][ci[1]][ci[2]])
+
999 + heights0[ci[0]][ci[1]][ci[2]];
+
1000 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2]]
+
1001 - heights0[ci[0]][ci[1] + 1][ci[2]])
+
1002 + heights0[ci[0]][ci[1] + 1][ci[2]];
+
1003 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2]]
+
1004 - heights0[ci[0] + 1][ci[1]][ci[2]])
+
1005 + heights0[ci[0] + 1][ci[1]][ci[2]];
+
1006 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2]]
+
1007 - heights0[ci[0] + 1][ci[1] + 1][ci[2]])
+
1008 + heights0[ci[0] + 1][ci[1] + 1][ci[2]];
+
1009
+
1010 /* Interpolate in latitude direction... */
+
1011 height0 = cw[1] * (height01 - height00) + height00;
+
1012 height1 = cw[1] * (height11 - height10) + height10;
+
1013
+
1014 /* Interpolate in longitude direction... */
+
1015 height_bot = cw[0] * (height1 - height0) + height0;
+
1016
+
1017 /* Interpolate in time at the upper level... */
+
1018 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2] + 1]
+
1019 - heights0[ci[0]][ci[1]][ci[2] + 1])
+
1020 + heights0[ci[0]][ci[1]][ci[2] + 1];
+
1021 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1022 - heights0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1023 + heights0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1024 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1025 - heights0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1026 + heights0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1027 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1028 - heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1029 + heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1030
+
1031 /* Interpolate in latitude direction... */
+
1032 height0 = cw[1] * (height01 - height00) + height00;
+
1033 height1 = cw[1] * (height11 - height10) + height10;
+
1034
+
1035 /* Interpolate in longitude direction... */
+
1036 height_top = cw[0] * (height1 - height0) + height0;
+
1037
+
1038 /* Search at higher levels if height is not in box... */
+
1039 while (((heights0[0][0][0] > heights0[0][0][1]) &&
+
1040 ((height_bot <= height) || (height_top > height))
+
1041 && (height_bot >= height) && (ci[2] < k_max))
+
1042 ||
+
1043 ((heights0[0][0][0] < heights0[0][0][1]) &&
+
1044 ((height_bot >= height) || (height_top < height))
+
1045 && (height_bot <= height) && (ci[2] < k_max))
+
1046 ) {
+
1047
+
1048 ci[2]++;
+
1049 height_bot = height_top;
+
1050
+
1051 /* Interpolate in time at the next level... */
+
1052 height00 = cw[3] * (heights1[ci[0]][ci[1]][ci[2] + 1]
+
1053 - heights0[ci[0]][ci[1]][ci[2] + 1])
+
1054 + heights0[ci[0]][ci[1]][ci[2] + 1];
+
1055 height01 = cw[3] * (heights1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1056 - heights0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1057 + heights0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1058 height10 = cw[3] * (heights1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1059 - heights0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1060 + heights0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1061 height11 = cw[3] * (heights1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1062 - heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1063 + heights0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1064
+
1065 /* Interpolate in latitude direction... */
+
1066 height0 = cw[1] * (height01 - height00) + height00;
+
1067 height1 = cw[1] * (height11 - height10) + height10;
+
1068
+
1069 /* Interpolate in longitude direction... */
+
1070 height_top = cw[0] * (height1 - height0) + height0;
+
1071 }
+
1072
+
1073 /* Get vertical weighting factors... */
+
1074 cw[2] = (height - height_bot)
+
1075 / (height_top - height_bot);
+
1076
+
1077 }
+
1078
+
1079 /* Calculate the needed array values... */
+
1080 double array000 = cw[3] * (array1[ci[0]][ci[1]][ci[2]]
+
1081 - array0[ci[0]][ci[1]][ci[2]])
+
1082 + array0[ci[0]][ci[1]][ci[2]];
+
1083 double array100 = cw[3] * (array1[ci[0] + 1][ci[1]][ci[2]]
+
1084 - array0[ci[0] + 1][ci[1]][ci[2]])
+
1085 + array0[ci[0] + 1][ci[1]][ci[2]];
+
1086 double array010 = cw[3] * (array1[ci[0]][ci[1] + 1][ci[2]]
+
1087 - array0[ci[0]][ci[1] + 1][ci[2]])
+
1088 + array0[ci[0]][ci[1] + 1][ci[2]];
+
1089 double array110 = cw[3] * (array1[ci[0] + 1][ci[1] + 1][ci[2]]
+
1090 - array0[ci[0] + 1][ci[1] + 1][ci[2]])
+
1091 + array0[ci[0] + 1][ci[1] + 1][ci[2]];
+
1092 double array001 = cw[3] * (array1[ci[0]][ci[1]][ci[2] + 1]
+
1093 - array0[ci[0]][ci[1]][ci[2] + 1])
+
1094 + array0[ci[0]][ci[1]][ci[2] + 1];
+
1095 double array101 = cw[3] * (array1[ci[0] + 1][ci[1]][ci[2] + 1]
+
1096 - array0[ci[0] + 1][ci[1]][ci[2] + 1])
+
1097 + array0[ci[0] + 1][ci[1]][ci[2] + 1];
+
1098 double array011 = cw[3] * (array1[ci[0]][ci[1] + 1][ci[2] + 1]
+
1099 - array0[ci[0]][ci[1] + 1][ci[2] + 1])
+
1100 + array0[ci[0]][ci[1] + 1][ci[2] + 1];
+
1101 double array111 = cw[3] * (array1[ci[0] + 1][ci[1] + 1][ci[2] + 1]
+
1102 - array0[ci[0] + 1][ci[1] + 1][ci[2] + 1])
+
1103 + array0[ci[0] + 1][ci[1] + 1][ci[2] + 1];
+
1104
+
1105 double array00 = cw[0] * (array100 - array000) + array000;
+
1106 double array10 = cw[0] * (array110 - array010) + array010;
+
1107 double array01 = cw[0] * (array101 - array001) + array001;
+
1108 double array11 = cw[0] * (array111 - array011) + array011;
+
1109
+
1110 double aux0 = cw[1] * (array10 - array00) + array00;
+
1111 double aux1 = cw[1] * (array11 - array01) + array01;
+
1112
+
1113 /* Interpolate vertically... */
+
1114 *var = cw[2] * (aux1 - aux0) + aux0;
+
1115
+
1116}
+
void locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double height_ap, int *ind)
Locate the four vertical indizes of a box for a given height value.
Definition: libtrac.c:1497
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
int npl
Number of model levels.
Definition: libtrac.h:1846
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ intpol_met_space_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_space_3d (met_tmet,
float array[EX][EY][EP],
double p,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatial interpolation of meteo data.

+ +

Definition at line 1120 of file libtrac.c.

+
1129 {
+
1130
+
1131 /* Initialize interpolation... */
+
1132 if (init) {
+
1133
+
1134 /* Check longitude... */
+
1135 if (met->lon[met->nx - 1] > 180 && lon < 0)
+
1136 lon += 360;
+
1137
+
1138 /* Get interpolation indices... */
+
1139 ci[0] = locate_irr(met->p, met->np, p);
+
1140 ci[1] = locate_reg(met->lon, met->nx, lon);
+
1141 ci[2] = locate_reg(met->lat, met->ny, lat);
+
1142
+
1143 /* Get interpolation weights... */
+
1144 cw[0] = (met->p[ci[0] + 1] - p)
+
1145 / (met->p[ci[0] + 1] - met->p[ci[0]]);
+
1146 cw[1] = (met->lon[ci[1] + 1] - lon)
+
1147 / (met->lon[ci[1] + 1] - met->lon[ci[1]]);
+
1148 cw[2] = (met->lat[ci[2] + 1] - lat)
+
1149 / (met->lat[ci[2] + 1] - met->lat[ci[2]]);
+
1150 }
+
1151
+
1152 /* Interpolate vertically... */
+
1153 double aux00 =
+
1154 cw[0] * (array[ci[1]][ci[2]][ci[0]] - array[ci[1]][ci[2]][ci[0] + 1])
+
1155 + array[ci[1]][ci[2]][ci[0] + 1];
+
1156 double aux01 =
+
1157 cw[0] * (array[ci[1]][ci[2] + 1][ci[0]] -
+
1158 array[ci[1]][ci[2] + 1][ci[0] + 1])
+
1159 + array[ci[1]][ci[2] + 1][ci[0] + 1];
+
1160 double aux10 =
+
1161 cw[0] * (array[ci[1] + 1][ci[2]][ci[0]] -
+
1162 array[ci[1] + 1][ci[2]][ci[0] + 1])
+
1163 + array[ci[1] + 1][ci[2]][ci[0] + 1];
+
1164 double aux11 =
+
1165 cw[0] * (array[ci[1] + 1][ci[2] + 1][ci[0]] -
+
1166 array[ci[1] + 1][ci[2] + 1][ci[0] + 1])
+
1167 + array[ci[1] + 1][ci[2] + 1][ci[0] + 1];
+
1168
+
1169 /* Interpolate horizontally... */
+
1170 aux00 = cw[2] * (aux00 - aux01) + aux01;
+
1171 aux11 = cw[2] * (aux10 - aux11) + aux11;
+
1172 *var = cw[1] * (aux00 - aux11) + aux11;
+
1173}
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ intpol_met_space_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_space_2d (met_tmet,
float array[EX][EY],
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatial interpolation of meteo data.

+ +

Definition at line 1177 of file libtrac.c.

+
1185 {
+
1186
+
1187 /* Initialize interpolation... */
+
1188 if (init) {
+
1189
+
1190 /* Check longitude... */
+
1191 if (met->lon[met->nx - 1] > 180 && lon < 0)
+
1192 lon += 360;
+
1193
+
1194 /* Get interpolation indices... */
+
1195 ci[1] = locate_reg(met->lon, met->nx, lon);
+
1196 ci[2] = locate_reg(met->lat, met->ny, lat);
+
1197
+
1198 /* Get interpolation weights... */
+
1199 cw[1] = (met->lon[ci[1] + 1] - lon)
+
1200 / (met->lon[ci[1] + 1] - met->lon[ci[1]]);
+
1201 cw[2] = (met->lat[ci[2] + 1] - lat)
+
1202 / (met->lat[ci[2] + 1] - met->lat[ci[2]]);
+
1203 }
+
1204
+
1205 /* Set variables... */
+
1206 double aux00 = array[ci[1]][ci[2]];
+
1207 double aux01 = array[ci[1]][ci[2] + 1];
+
1208 double aux10 = array[ci[1] + 1][ci[2]];
+
1209 double aux11 = array[ci[1] + 1][ci[2] + 1];
+
1210
+
1211 /* Interpolate horizontally... */
+
1212 if (isfinite(aux00) && isfinite(aux01)
+
1213 && isfinite(aux10) && isfinite(aux11)) {
+
1214 aux00 = cw[2] * (aux00 - aux01) + aux01;
+
1215 aux11 = cw[2] * (aux10 - aux11) + aux11;
+
1216 *var = cw[1] * (aux00 - aux11) + aux11;
+
1217 } else {
+
1218 if (cw[2] < 0.5) {
+
1219 if (cw[1] < 0.5)
+
1220 *var = aux11;
+
1221 else
+
1222 *var = aux01;
+
1223 } else {
+
1224 if (cw[1] < 0.5)
+
1225 *var = aux10;
+
1226 else
+
1227 *var = aux00;
+
1228 }
+
1229 }
+
1230}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ intpol_met_time_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_time_3d (met_tmet0,
float array0[EX][EY][EP],
met_tmet1,
float array1[EX][EY][EP],
double ts,
double p,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Spatial interpolation of meteo data.

+

Temporal interpolation of meteo data.

+ +

Definition at line 1337 of file libtrac.c.

+
1349 {
+
1350
+
1351 double var0, var1, wt;
+
1352
+
1353 /* Spatial interpolation... */
+
1354 intpol_met_space_3d(met0, array0, p, lon, lat, &var0, ci, cw, init);
+
1355 intpol_met_space_3d(met1, array1, p, lon, lat, &var1, ci, cw, 0);
+
1356
+
1357 /* Get weighting factor... */
+
1358 wt = (met1->time - ts) / (met1->time - met0->time);
+
1359
+
1360 /* Interpolate... */
+
1361 *var = wt * (var0 - var1) + var1;
+
1362}
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ intpol_met_time_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_met_time_2d (met_tmet0,
float array0[EX][EY],
met_tmet1,
float array1[EX][EY],
double ts,
double lon,
double lat,
double * var,
int * ci,
double * cw,
int init 
)
+
+ +

Temporal interpolation of meteo data.

+ +

Definition at line 1366 of file libtrac.c.

+
1377 {
+
1378
+
1379 double var0, var1, wt;
+
1380
+
1381 /* Spatial interpolation... */
+
1382 intpol_met_space_2d(met0, array0, lon, lat, &var0, ci, cw, init);
+
1383 intpol_met_space_2d(met1, array1, lon, lat, &var1, ci, cw, 0);
+
1384
+
1385 /* Get weighting factor... */
+
1386 wt = (met1->time - ts) / (met1->time - met0->time);
+
1387
+
1388 /* Interpolate... */
+
1389 if (isfinite(var0) && isfinite(var1))
+
1390 *var = wt * (var0 - var1) + var1;
+
1391 else if (wt < 0.5)
+
1392 *var = var1;
+
1393 else
+
1394 *var = var0;
+
1395}
+
void intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1177
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ jsec2time()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void jsec2time (const double jsec,
int * year,
int * mon,
int * day,
int * hour,
int * min,
int * sec,
double * remain 
)
+
+ +

Temporal interpolation of meteo data.

+

Convert seconds to date.

+ +

Definition at line 1430 of file libtrac.c.

+
1438 {
+
1439
+
1440 struct tm t0, *t1;
+
1441
+
1442 t0.tm_year = 100;
+
1443 t0.tm_mon = 0;
+
1444 t0.tm_mday = 1;
+
1445 t0.tm_hour = 0;
+
1446 t0.tm_min = 0;
+
1447 t0.tm_sec = 0;
+
1448
+
1449 time_t jsec0 = (time_t) jsec + timegm(&t0);
+
1450 t1 = gmtime(&jsec0);
+
1451
+
1452 *year = t1->tm_year + 1900;
+
1453 *mon = t1->tm_mon + 1;
+
1454 *day = t1->tm_mday;
+
1455 *hour = t1->tm_hour;
+
1456 *min = t1->tm_min;
+
1457 *sec = t1->tm_sec;
+
1458 *remain = jsec - floor(jsec);
+
1459}
+
+
+
+ +

◆ kernel_weight()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double kernel_weight (const double kz[EP],
const double kw[EP],
const int nk,
const double p 
)
+
+ +

Get weighting factor from kernel function.

+ +

Definition at line 1515 of file libtrac.c.

+
1519 {
+
1520
+
1521 /* Check number of data points... */
+
1522 if (nk < 2)
+
1523 return 1.0;
+
1524
+
1525 /* Get altitude... */
+
1526 double z = Z(p);
+
1527
+
1528 /* Get weighting factor... */
+
1529 if (z < kz[0])
+
1530 return kw[0];
+
1531 else if (z > kz[nk - 1])
+
1532 return kw[nk - 1];
+
1533 else {
+
1534 int idx = locate_irr(kz, nk, z);
+
1535 return LIN(kz[idx], kw[idx], kz[idx + 1], kw[idx + 1], z);
+
1536 }
+
1537}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ lapse_rate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
double lapse_rate (const double t,
const double h2o 
)
+
+ +

Calculate moist adiabatic lapse rate.

+ +

Definition at line 1541 of file libtrac.c.

+
1543 {
+
1544
+
1545 /*
+
1546 Calculate moist adiabatic lapse rate [K/km] from temperature [K]
+
1547 and water vapor volume mixing ratio [1].
+
1548
+
1549 Reference: https://en.wikipedia.org/wiki/Lapse_rate
+
1550 */
+
1551
+
1552 const double a = RA * SQR(t), r = SH(h2o) / (1. - SH(h2o));
+
1553
+
1554 return 1e3 * G0 * (a + LV * r * t) / (CPD * a + SQR(LV) * r * EPS);
+
1555}
+
#define SH(h2o)
Compute specific humidity from water vapor volume mixing ratio.
Definition: libtrac.h:617
+
#define LV
Latent heat of vaporization of water [J/kg].
Definition: libtrac.h:108
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define CPD
Specific heat of dry air at constant pressure [J/(kg K)].
Definition: libtrac.h:88
+
+
+
+ +

◆ level_definitions()

+ +
+
+ + + + + + + + +
void level_definitions (ctl_tctl)
+
+ +

Get predefined pressure levels.

+ +

Definition at line 1559 of file libtrac.c.

+
1560 {
+
1561
+
1562 if (0 == ctl->press_level_def) {
+
1563
+
1564 ctl->met_np = 138;
+
1565
+
1566 double press[138] = {
+
1567 0.0200, 0.0310, 0.0467, 0.0683, 0.0975, 0.1361, 0.1861, 0.2499,
+
1568 0.3299, 0.4288, 0.5496, 0.6952, 0.8690, 1.0742, 1.3143, 1.5928, 1.9134,
+
1569 2.2797, 2.6954, 3.1642, 3.6898, 4.2759, 4.9262, 5.6441, 6.4334, 7.2974,
+
1570 8.2397, 9.2634, 10.3720, 11.5685, 12.8561, 14.2377, 15.7162, 17.2945,
+
1571 18.9752, 20.7610, 22.6543, 24.6577, 26.7735, 29.0039, 31.3512, 33.8174,
+
1572 36.4047, 39.1149, 41.9493, 44.9082, 47.9915, 51.1990, 54.5299, 57.9834,
+
1573 61.5607, 65.2695, 69.1187, 73.1187, 77.2810, 81.6182, 86.1450, 90.8774,
+
1574 95.8280, 101.0047, 106.4153, 112.0681, 117.9714, 124.1337, 130.5637,
+
1575 137.2703, 144.2624, 151.5493, 159.1403, 167.0450, 175.2731, 183.8344,
+
1576 192.7389, 201.9969, 211.6186, 221.6146, 231.9954, 242.7719, 253.9549,
+
1577 265.5556, 277.5852, 290.0548, 302.9762, 316.3607, 330.2202, 344.5663,
+
1578 359.4111, 374.7666, 390.6450, 407.0583, 424.0190, 441.5395, 459.6321,
+
1579 478.3096, 497.5845, 517.4198, 537.7195, 558.3430, 579.1926, 600.1668,
+
1580 621.1624, 642.0764, 662.8084, 683.2620, 703.3467, 722.9795, 742.0855,
+
1581 760.5996, 778.4661, 795.6396, 812.0847, 827.7756, 842.6959, 856.8376,
+
1582 870.2004, 882.7910, 894.6222, 905.7116, 916.0815, 925.7571, 934.7666,
+
1583 943.1399, 950.9082, 958.1037, 964.7584, 970.9046, 976.5737, 981.7968,
+
1584 986.6036, 991.0230, 995.0824, 998.8081, 1002.2250, 1005.3562, 1008.2239,
+
1585 1010.8487, 1013.2500, 1044.45
+
1586 };
+
1587
+
1588 for (int ip = 0; ip < ctl->met_np; ip++)
+
1589 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1590
+
1591 } else if (1 == ctl->press_level_def) {
+
1592
+
1593 ctl->met_np = 92;
+
1594
+
1595 double press[92] = {
+
1596 0.0200, 0.0398, 0.0739, 0.1291, 0.2141, 0.3395, 0.5175, 0.7617,
+
1597 1.0872, 1.5099, 2.0464, 2.7136, 3.5282, 4.5069, 5.6652, 7.0181,
+
1598 8.5795, 10.3617, 12.3759, 14.6316, 17.1371, 19.8987, 22.9216, 26.2090,
+
1599 29.7630, 33.5843, 37.6720, 42.0242, 46.6378, 51.5086, 56.6316, 61.9984,
+
1600 67.5973, 73.4150, 79.4434, 85.7016, 92.2162, 99.0182, 106.1445,
+
1601 113.6382,
+
1602 121.5502, 129.9403, 138.8558, 148.3260, 158.3816, 169.0545, 180.3786,
+
1603 192.3889, 205.1222, 218.6172, 232.9140, 248.0547, 264.0833, 281.0456,
+
1604 298.9895, 317.9651, 338.0245, 359.2221, 381.6144, 405.2606, 430.2069,
+
1605 456.4813, 483.8505, 512.0662, 540.8577, 569.9401, 599.0310, 627.9668,
+
1606 656.6129, 684.8491, 712.5573, 739.5739, 765.7697, 791.0376, 815.2774,
+
1607 838.3507, 860.1516, 880.6080, 899.6602, 917.2205, 933.2247, 947.6584,
+
1608 960.5245, 971.8169, 981.5301, 989.7322, 996.8732, 1002.8013,
+
1609 1007.4431, 1010.8487, 1013.2500, 1044.45
+
1610 };
+
1611
+
1612 for (int ip = 0; ip < ctl->met_np; ip++)
+
1613 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1614
+
1615 } else if (2 == ctl->press_level_def) {
+
1616
+
1617 ctl->met_np = 60;
+
1618
+
1619 double press[60] = {
+
1620 0.01, 0.1361, 0.2499, 0.4288, 0.6952, 1.0742,
+
1621 2.2797, 3.1642, 4.2759, 7.2974, 9.2634, 11.5685, 14.2377, 20.761,
+
1622 24.6577, 33.8174, 39.1149, 51.199, 57.9834, 73.1187, 81.6182,
+
1623 90.8774, 101.005, 112.068, 124.134, 137.27, 151.549, 167.045, 183.834,
+
1624 201.997, 221.615, 242.772, 265.556, 290.055, 316.361, 344.566, 374.767,
+
1625 407.058, 441.539, 478.31, 517.42, 558.343, 600.167, 683.262, 722.979,
+
1626 760.6, 795.64, 827.776, 856.838, 882.791, 905.712, 925.757, 943.14,
+
1627 958.104, 972.495, 986.886, 1001.28, 1015.67, 1030.06, 1044.45
+
1628 };
+
1629
+
1630 for (int ip = 0; ip < ctl->met_np; ip++)
+
1631 ctl->met_p[ctl->met_np - ip - 1] = press[ip];
+
1632
+
1633 } else {
+
1634 ERRMSG
+
1635 ("Definition does not exist, use 0 for l137, 1 for l91 or 2 for l60")
+
1636 }
+
1637
+
1638}
+
int press_level_def
Use predefined pressure levels or not.
Definition: libtrac.h:809
+
int met_np
Number of target pressure levels.
Definition: libtrac.h:1151
+
double met_p[EP]
Target pressure levels [hPa].
Definition: libtrac.h:1154
+
+
+
+ +

◆ locate_irr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int locate_irr (const double * xx,
const int n,
const double x 
)
+
+ +

Find array index for irregular grid.

+ +

Definition at line 1642 of file libtrac.c.

+
1645 {
+
1646
+
1647 int ilo = 0;
+
1648 int ihi = n - 1;
+
1649 int i = (ihi + ilo) >> 1;
+
1650
+
1651 if (xx[i] < xx[i + 1])
+
1652 while (ihi > ilo + 1) {
+
1653 i = (ihi + ilo) >> 1;
+
1654 if (xx[i] > x)
+
1655 ihi = i;
+
1656 else
+
1657 ilo = i;
+
1658 } else
+
1659 while (ihi > ilo + 1) {
+
1660 i = (ihi + ilo) >> 1;
+
1661 if (xx[i] <= x)
+
1662 ihi = i;
+
1663 else
+
1664 ilo = i;
+
1665 }
+
1666
+
1667 return ilo;
+
1668}
+
+
+
+ +

◆ locate_reg()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int locate_reg (const double * xx,
const int n,
const double x 
)
+
+ +

Find array index for regular grid.

+ +

Definition at line 1672 of file libtrac.c.

+
1675 {
+
1676
+
1677 /* Calculate index... */
+
1678 int i = (int) ((x - xx[0]) / (xx[1] - xx[0]));
+
1679
+
1680 /* Check range... */
+
1681 if (i < 0)
+
1682 return 0;
+
1683 else if (i > n - 2)
+
1684 return n - 2;
+
1685 else
+
1686 return i;
+
1687}
+
+
+
+ +

◆ locate_vert()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void locate_vert (float profiles[EX][EY][EP],
int np,
int lon_ap_ind,
int lat_ap_ind,
double alt_ap,
int * ind 
)
+
+ +

Locate the four vertical indizes of a box for a given height value.

+ +

Definition at line 1497 of file libtrac.c.

+
1503 {
+
1504
+
1505 ind[0] = locate_irr_3d(profiles, np, lon_ap_ind, lat_ap_ind, height_ap);
+
1506 ind[1] = locate_irr_3d(profiles, np, lon_ap_ind + 1, lat_ap_ind, height_ap);
+
1507 ind[2] = locate_irr_3d(profiles, np, lon_ap_ind, lat_ap_ind + 1, height_ap);
+
1508 ind[3] =
+
1509 locate_irr_3d(profiles, np, lon_ap_ind + 1, lat_ap_ind + 1, height_ap);
+
1510
+
1511}
+
int locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x)
locate the index in a column of a three dimensional array.
Definition: libtrac.c:1463
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ locate_irr_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int locate_irr_3d (float profiles[EX][EY][EP],
int np,
int ind_lon,
int ind_lat,
double x 
)
+
+ +

locate the index in a column of a three dimensional array.

+ +

Definition at line 1463 of file libtrac.c.

+
1468 {
+
1469
+
1470 int ilo = 0;
+
1471 int ihi = np - 1;
+
1472 int i = (ihi + ilo) >> 1;
+
1473
+
1474 if (profiles[ind_lon][ind_lat][i] < profiles[ind_lon][ind_lat][i + 1])
+
1475 while (ihi > ilo + 1) {
+
1476 i = (ihi + ilo) >> 1;
+
1477 if (profiles[ind_lon][ind_lat][i] > x) {
+
1478 ihi = i;
+
1479 } else {
+
1480 ilo = i;
+
1481 }
+
1482 } else
+
1483 while (ihi > ilo + 1) {
+
1484 i = (ihi + ilo) >> 1;
+
1485 if (profiles[ind_lon][ind_lat][i] <= x) {
+
1486 ihi = i;
+
1487 } else {
+
1488 ilo = i;
+
1489 }
+
1490 }
+
1491
+
1492 return ilo;
+
1493}
+
+
+
+ +

◆ nat_temperature()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double nat_temperature (const double p,
const double h2o,
const double hno3 
)
+
+ +

Calculate NAT existence temperature.

+ +

Definition at line 1691 of file libtrac.c.

+
1694 {
+
1695
+
1696 /* Check water vapor vmr... */
+
1697 double h2o_help = GSL_MAX(h2o, 0.1e-6);
+
1698
+
1699 /* Calculate T_NAT... */
+
1700 double p_hno3 = hno3 * p / 1.333224;
+
1701 double p_h2o = h2o_help * p / 1.333224;
+
1702 double a = 0.009179 - 0.00088 * log10(p_h2o);
+
1703 double b = (38.9855 - log10(p_hno3) - 2.7836 * log10(p_h2o)) / a;
+
1704 double c = -11397.0 / a;
+
1705 double tnat = (-b + sqrt(b * b - 4. * c)) / 2.;
+
1706 double x2 = (-b - sqrt(b * b - 4. * c)) / 2.;
+
1707 if (x2 > 0)
+
1708 tnat = x2;
+
1709
+
1710 return tnat;
+
1711}
+
+
+
+ +

◆ quicksort()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void quicksort (double arr[],
int brr[],
const int low,
const int high 
)
+
+ +

Parallel quicksort.

+ +

Definition at line 1715 of file libtrac.c.

+
1719 {
+
1720
+
1721 if (low < high) {
+
1722 int pi = quicksort_partition(arr, brr, low, high);
+
1723
+
1724#pragma omp task firstprivate(arr,brr,low,pi)
+
1725 {
+
1726 quicksort(arr, brr, low, pi - 1);
+
1727 }
+
1728 {
+
1729 quicksort(arr, brr, pi + 1, high);
+
1730 }
+
1731 }
+
1732}
+
void quicksort(double arr[], int brr[], const int low, const int high)
Parallel quicksort.
Definition: libtrac.c:1715
+
int quicksort_partition(double arr[], int brr[], const int low, const int high)
Partition function for quicksort.
Definition: libtrac.c:1736
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ quicksort_partition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int quicksort_partition (double arr[],
int brr[],
const int low,
const int high 
)
+
+ +

Partition function for quicksort.

+ +

Definition at line 1736 of file libtrac.c.

+
1740 {
+
1741
+
1742 double pivot = arr[high];
+
1743 int i = (low - 1);
+
1744
+
1745 for (int j = low; j <= high - 1; j++)
+
1746 if (arr[j] <= pivot) {
+
1747 i++;
+
1748 SWAP(arr[i], arr[j], double);
+
1749 SWAP(brr[i], brr[j], int);
+
1750 }
+
1751 SWAP(arr[high], arr[i + 1], double);
+
1752 SWAP(brr[high], brr[i + 1], int);
+
1753
+
1754 return (i + 1);
+
1755}
+
#define SWAP(x, y, type)
Swap macro.
Definition: libtrac.h:625
+
+
+
+ +

◆ read_atm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data.

+ +

Definition at line 1759 of file libtrac.c.

+
1762 {
+
1763
+
1764 int result;
+
1765
+
1766 /* Set timer... */
+
1767 SELECT_TIMER("READ_ATM", "INPUT", NVTX_READ);
+
1768
+
1769 /* Init... */
+
1770 atm->np = 0;
+
1771
+
1772 /* Write info... */
+
1773 LOG(1, "Read atmospheric data: %s", filename);
+
1774
+
1775 /* Read ASCII data... */
+
1776 if (ctl->atm_type == 0)
+
1777 result = read_atm_asc(filename, ctl, atm);
+
1778
+
1779 /* Read binary data... */
+
1780 else if (ctl->atm_type == 1)
+
1781 result = read_atm_bin(filename, ctl, atm);
+
1782
+
1783 /* Read netCDF data... */
+
1784 else if (ctl->atm_type == 2)
+
1785 result = read_atm_nc(filename, ctl, atm);
+
1786
+
1787 /* Read CLaMS data... */
+
1788 else if (ctl->atm_type == 3 || ctl->atm_type == 4)
+
1789 result = read_atm_clams(filename, ctl, atm);
+
1790
+
1791 /* Error... */
+
1792 else
+
1793 ERRMSG("Atmospheric data type not supported!");
+
1794
+
1795 /* Check result... */
+
1796 if (result != 1)
+
1797 return 0;
+
1798
+
1799 /* Check number of air parcels... */
+
1800 if (atm->np < 1)
+
1801 ERRMSG("Can not read any data!");
+
1802
+
1803 /* Write info... */
+
1804 double mini, maxi;
+
1805 LOG(2, "Number of particles: %d", atm->np);
+
1806 gsl_stats_minmax(&mini, &maxi, atm->time, 1, (size_t) atm->np);
+
1807 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
1808 gsl_stats_minmax(&mini, &maxi, atm->p, 1, (size_t) atm->np);
+
1809 LOG(2, "Altitude range: %g ... %g km", Z(maxi), Z(mini));
+
1810 LOG(2, "Pressure range: %g ... %g hPa", maxi, mini);
+
1811 gsl_stats_minmax(&mini, &maxi, atm->lon, 1, (size_t) atm->np);
+
1812 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
1813 gsl_stats_minmax(&mini, &maxi, atm->lat, 1, (size_t) atm->np);
+
1814 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
1815 for (int iq = 0; iq < ctl->nq; iq++) {
+
1816 char msg[LEN];
+
1817 sprintf(msg, "Quantity %s range: %s ... %s %s",
+
1818 ctl->qnt_name[iq], ctl->qnt_format[iq],
+
1819 ctl->qnt_format[iq], ctl->qnt_unit[iq]);
+
1820 gsl_stats_minmax(&mini, &maxi, atm->q[iq], 1, (size_t) atm->np);
+
1821 LOG(2, msg, mini, maxi);
+
1822 }
+
1823
+
1824 /* Return success... */
+
1825 return 1;
+
1826}
+
int read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in netCDF format.
Definition: libtrac.c:1984
+
int read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in ASCII format.
Definition: libtrac.c:1830
+
int read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in CLaMS format.
Definition: libtrac.c:1928
+
int read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in binary format.
Definition: libtrac.c:1872
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ read_atm_asc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_asc (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in ASCII format.

+ +

Definition at line 1830 of file libtrac.c.

+
1833 {
+
1834
+
1835 /* Open file... */
+
1836 FILE *in;
+
1837 if (!(in = fopen(filename, "r"))) {
+
1838 WARN("Cannot open file!");
+
1839 return 0;
+
1840 }
+
1841
+
1842 /* Read line... */
+
1843 char line[LEN];
+
1844 while (fgets(line, LEN, in)) {
+
1845
+
1846 /* Read data... */
+
1847 char *tok;
+
1848 TOK(line, tok, "%lg", atm->time[atm->np]);
+
1849 TOK(NULL, tok, "%lg", atm->p[atm->np]);
+
1850 TOK(NULL, tok, "%lg", atm->lon[atm->np]);
+
1851 TOK(NULL, tok, "%lg", atm->lat[atm->np]);
+
1852 for (int iq = 0; iq < ctl->nq; iq++)
+
1853 TOK(NULL, tok, "%lg", atm->q[iq][atm->np]);
+
1854
+
1855 /* Convert altitude to pressure... */
+
1856 atm->p[atm->np] = P(atm->p[atm->np]);
+
1857
+
1858 /* Increment data point counter... */
+
1859 if ((++atm->np) > NP)
+
1860 ERRMSG("Too many data points!");
+
1861 }
+
1862
+
1863 /* Close file... */
+
1864 fclose(in);
+
1865
+
1866 /* Return success... */
+
1867 return 1;
+
1868}
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define TOK(line, tok, format, var)
Get string tokens.
Definition: libtrac.h:647
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
+
+
+ +

◆ read_atm_bin()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_bin (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in binary format.

+ +

Definition at line 1872 of file libtrac.c.

+
1875 {
+
1876
+
1877 /* Open file... */
+
1878 FILE *in;
+
1879 if (!(in = fopen(filename, "r")))
+
1880 return 0;
+
1881
+
1882 /* Check version of binary data... */
+
1883 int version;
+
1884 FREAD(&version, int,
+
1885 1,
+
1886 in);
+
1887 if (version != 100)
+
1888 ERRMSG("Wrong version of binary data!");
+
1889
+
1890 /* Read data... */
+
1891 FREAD(&atm->np, int,
+
1892 1,
+
1893 in);
+
1894 FREAD(atm->time, double,
+
1895 (size_t) atm->np,
+
1896 in);
+
1897 FREAD(atm->p, double,
+
1898 (size_t) atm->np,
+
1899 in);
+
1900 FREAD(atm->lon, double,
+
1901 (size_t) atm->np,
+
1902 in);
+
1903 FREAD(atm->lat, double,
+
1904 (size_t) atm->np,
+
1905 in);
+
1906 for (int iq = 0; iq < ctl->nq; iq++)
+
1907 FREAD(atm->q[iq], double,
+
1908 (size_t) atm->np,
+
1909 in);
+
1910
+
1911 /* Read final flag... */
+
1912 int final;
+
1913 FREAD(&final, int,
+
1914 1,
+
1915 in);
+
1916 if (final != 999)
+
1917 ERRMSG("Error while reading binary data!");
+
1918
+
1919 /* Close file... */
+
1920 fclose(in);
+
1921
+
1922 /* Return success... */
+
1923 return 1;
+
1924}
+
+
+
+ +

◆ read_atm_clams()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_clams (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in CLaMS format.

+ +

Definition at line 1928 of file libtrac.c.

+
1931 {
+
1932
+
1933 int ncid, varid;
+
1934
+
1935 /* Open file... */
+
1936 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR)
+
1937 return 0;
+
1938
+
1939 /* Get dimensions... */
+
1940 NC_INQ_DIM("NPARTS", &atm->np, 1, NP);
+
1941
+
1942 /* Get time... */
+
1943 if (nc_inq_varid(ncid, "TIME_INIT", &varid) == NC_NOERR) {
+
1944 NC(nc_get_var_double(ncid, varid, atm->time));
+
1945 } else {
+
1946 WARN("TIME_INIT not found use time instead!");
+
1947 double time_init;
+
1948 NC_GET_DOUBLE("time", &time_init, 1);
+
1949 for (int ip = 0; ip < atm->np; ip++) {
+
1950 atm->time[ip] = time_init;
+
1951 }
+
1952 }
+
1953
+
1954 /* Read zeta coordinate, pressure is optional... */
+
1955 if (ctl->vert_coord_ap == 1) {
+
1956 NC_GET_DOUBLE("ZETA", atm->q[ctl->qnt_zeta], 1);
+
1957 NC_GET_DOUBLE("PRESS", atm->p, 0);
+
1958 }
+
1959
+
1960 /* Read pressure, zeta coordinate is optional... */
+
1961 else {
+
1962 if (nc_inq_varid(ncid, "PRESS_INIT", &varid) == NC_NOERR) {
+
1963 NC(nc_get_var_double(ncid, varid, atm->p));
+
1964 } else {
+
1965 WARN("PRESS_INIT not found use PRESS instead!");
+
1966 nc_inq_varid(ncid, "PRESS", &varid);
+
1967 NC(nc_get_var_double(ncid, varid, atm->p));
+
1968 }
+
1969 }
+
1970
+
1971 /* Read longitude and latitude... */
+
1972 NC_GET_DOUBLE("LON", atm->lon, 1);
+
1973 NC_GET_DOUBLE("LAT", atm->lat, 1);
+
1974
+
1975 /* Close file... */
+
1976 NC(nc_close(ncid));
+
1977
+
1978 /* Return success... */
+
1979 return 1;
+
1980}
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define NC_GET_DOUBLE(varname, ptr, force)
Read netCDF double array.
Definition: libtrac.h:500
+
int vert_coord_ap
Vertical coordinate of air parcels (0=pressure, 1=zeta).
Definition: libtrac.h:812
+
int qnt_zeta
Quantity array index for zeta vertical coordinate.
Definition: libtrac.h:1013
+
+
+
+ +

◆ read_atm_nc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int read_atm_nc (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Read atmospheric data in netCDF format.

+ +

Definition at line 1984 of file libtrac.c.

+
1987 {
+
1988
+
1989 int ncid, varid;
+
1990
+
1991 /* Open file... */
+
1992 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR)
+
1993 return 0;
+
1994
+
1995 /* Get dimensions... */
+
1996 NC_INQ_DIM("obs", &atm->np, 1, NP);
+
1997
+
1998 /* Read geolocations... */
+
1999 NC_GET_DOUBLE("time", atm->time, 1);
+
2000 NC_GET_DOUBLE("press", atm->p, 1);
+
2001 NC_GET_DOUBLE("lon", atm->lon, 1);
+
2002 NC_GET_DOUBLE("lat", atm->lat, 1);
+
2003
+
2004 /* Read variables... */
+
2005 for (int iq = 0; iq < ctl->nq; iq++)
+
2006 NC_GET_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
2007
+
2008 /* Close file... */
+
2009 NC(nc_close(ncid));
+
2010
+
2011 /* Return success... */
+
2012 return 1;
+
2013}
+
+
+
+ +

◆ read_clim()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_clim (ctl_tctl,
clim_tclim 
)
+
+ +

Read climatological data.

+ +

Definition at line 2017 of file libtrac.c.

+
2019 {
+
2020
+
2021 /* Set timer... */
+
2022 SELECT_TIMER("READ_CLIM", "INPUT", NVTX_READ);
+
2023
+
2024 /* Init tropopause climatology... */
+
2025 clim_tropo_init(clim);
+
2026
+
2027 /* Read photolysis rates... */
+
2028 if (ctl->clim_photo[0] != '-')
+
2029 read_clim_photo(ctl->clim_photo, &clim->photo);
+
2030
+
2031 /* Read HNO3 climatology... */
+
2032 if (ctl->clim_hno3_filename[0] != '-')
+
2033 read_clim_zm(ctl->clim_hno3_filename, "HNO3", &clim->hno3);
+
2034
+
2035 /* Read OH climatology... */
+
2036 if (ctl->clim_oh_filename[0] != '-') {
+
2037 read_clim_zm(ctl->clim_oh_filename, "OH", &clim->oh);
+
2038 if (ctl->oh_chem_beta > 0)
+
2039 clim_oh_diurnal_correction(ctl, clim);
+
2040 }
+
2041
+
2042 /* Read H2O2 climatology... */
+
2043 if (ctl->clim_h2o2_filename[0] != '-')
+
2044 read_clim_zm(ctl->clim_h2o2_filename, "H2O2", &clim->h2o2);
+
2045
+
2046 /* Read HO2 climatology... */
+
2047 if (ctl->clim_ho2_filename[0] != '-')
+
2048 read_clim_zm(ctl->clim_ho2_filename, "HO2", &clim->ho2);
+
2049
+
2050 /* Read O(1D) climatology... */
+
2051 if (ctl->clim_o1d_filename[0] != '-')
+
2052 read_clim_zm(ctl->clim_o1d_filename, "O1D", &clim->o1d);
+
2053
+
2054 /* Read CFC-10 time series... */
+
2055 if (ctl->clim_ccl4_timeseries[0] != '-')
+ +
2057
+
2058 /* Read CFC-11 time series... */
+
2059 if (ctl->clim_ccl3f_timeseries[0] != '-')
+ +
2061
+
2062 /* Read CFC-12 time series... */
+
2063 if (ctl->clim_ccl2f2_timeseries[0] != '-')
+ +
2065
+
2066 /* Read N2O time series... */
+
2067 if (ctl->clim_n2o_timeseries[0] != '-')
+
2068 read_clim_ts(ctl->clim_n2o_timeseries, &clim->n2o);
+
2069
+
2070 /* Read SF6 time series... */
+
2071 if (ctl->clim_sf6_timeseries[0] != '-')
+
2072 read_clim_ts(ctl->clim_sf6_timeseries, &clim->sf6);
+
2073}
+
void read_clim_zm(char *filename, char *varname, clim_zm_t *zm)
Read climatological zonal means.
Definition: libtrac.c:2202
+
void clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim)
Initialization function for OH climatology.
Definition: libtrac.c:82
+
int read_clim_ts(char *filename, clim_ts_t *ts)
Read climatological time series.
Definition: libtrac.c:2148
+
void read_clim_photo(char *filename, clim_photo_t *photo)
Read climatological photolysis rates.
Definition: libtrac.c:2077
+
void clim_tropo_init(clim_t *clim)
Initialize tropopause climatology.
Definition: libtrac.c:191
+
clim_ts_t ccl2f2
CFC-12 time series.
Definition: libtrac.h:1820
+
clim_photo_t photo
Photolysis rates.
Definition: libtrac.h:1796
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_ts_t sf6
SF6 time series.
Definition: libtrac.h:1826
+
clim_ts_t ccl4
CFC-10 time series.
Definition: libtrac.h:1814
+
clim_ts_t ccl3f
CFC-11 time series.
Definition: libtrac.h:1817
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
clim_ts_t n2o
N2O time series.
Definition: libtrac.h:1823
+
char clim_n2o_timeseries[LEN]
Filename of N2O time series.
Definition: libtrac.h:1333
+
char clim_ho2_filename[LEN]
Filename of HO2 climatology.
Definition: libtrac.h:1315
+
char clim_o1d_filename[LEN]
Filename of O(1D) climatology.
Definition: libtrac.h:1318
+
char clim_photo[LEN]
Filename of photolysis rates climatology.
Definition: libtrac.h:1303
+
char clim_h2o2_filename[LEN]
Filename of H2O2 climatology.
Definition: libtrac.h:1312
+
char clim_ccl4_timeseries[LEN]
Filename of CFC-10 time series.
Definition: libtrac.h:1324
+
char clim_oh_filename[LEN]
Filename of OH climatology.
Definition: libtrac.h:1309
+
char clim_sf6_timeseries[LEN]
Filename of SF6 time series.
Definition: libtrac.h:1336
+
char clim_ccl3f_timeseries[LEN]
Filename of CFC-11 time series.
Definition: libtrac.h:1327
+
char clim_ccl2f2_timeseries[LEN]
Filename of CFC-12 time series.
Definition: libtrac.h:1330
+
char clim_hno3_filename[LEN]
Filename of HNO3 climatology.
Definition: libtrac.h:1306
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + +
+ +
+
+ +

◆ read_clim_ts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int read_clim_ts (char * filename,
clim_ts_tts 
)
+
+ +

Read climatological time series.

+ +

Definition at line 2148 of file libtrac.c.

+
2150 {
+
2151
+
2152 /* Write info... */
+
2153 LOG(1, "Read climatological time series: %s", filename);
+
2154
+
2155 /* Open file... */
+
2156 FILE *in;
+
2157 if (!(in = fopen(filename, "r"))) {
+
2158 WARN("Cannot open file!");
+
2159 return 0;
+
2160 }
+
2161
+
2162 /* Read data... */
+
2163 char line[LEN];
+
2164 int nh = 0;
+
2165 while (fgets(line, LEN, in))
+
2166 if (sscanf(line, "%lg %lg", &ts->time[nh], &ts->vmr[nh]) == 2) {
+
2167
+
2168 /* Convert years to seconds... */
+
2169 ts->time[nh] = (ts->time[nh] - 2000.0) * 365.25 * 86400.;
+
2170
+
2171 /* Check data... */
+
2172 if (nh > 0 && ts->time[nh] <= ts->time[nh - 1])
+
2173 ERRMSG("Time series must be ascending!");
+
2174
+
2175 /* Count time steps... */
+
2176 if ((++nh) >= 1000)
+
2177 ERRMSG("Too many data points!");
+
2178 }
+
2179
+
2180 /* Close file... */
+
2181 fclose(in);
+
2182
+
2183 /* Check number of data points... */
+
2184 ts->ntime = nh;
+
2185 if (nh < 2)
+
2186 ERRMSG("Not enough data points!");
+
2187
+
2188 /* Write info... */
+
2189 LOG(2, "Number of time steps: %d", ts->ntime);
+
2190 LOG(2, "Time steps: %.2f, %.2f ... %.2f s", ts->time[0], ts->time[1],
+
2191 ts->time[nh - 1]);
+
2192 LOG(2, "Volume mixing ratio range: %g ... %g ppv",
+
2193 gsl_stats_min(ts->vmr, 1, (size_t) nh), gsl_stats_max(ts->vmr, 1,
+
2194 (size_t) nh));
+
2195
+
2196 /* Exit success... */
+
2197 return 1;
+
2198}
+
+
+
+ +

◆ read_clim_zm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_clim_zm (char * filename,
char * varname,
clim_zm_tzm 
)
+
+ +

Read climatological zonal means.

+ +

Definition at line 2202 of file libtrac.c.

+
2205 {
+
2206
+
2207 int ncid, varid, it, iy, iz, iz2, nt;
+
2208
+
2209 double *help, varmin = 1e99, varmax = -1e99;
+
2210
+
2211 /* Write info... */
+
2212 LOG(1, "Read %s data: %s", varname, filename);
+
2213
+
2214 /* Open netCDF file... */
+
2215 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR) {
+
2216 WARN("%s climatology data are missing!", varname);
+
2217 return;
+
2218 }
+
2219
+
2220 /* Read pressure data... */
+
2221 NC_INQ_DIM("press", &zm->np, 2, CP);
+
2222 NC_GET_DOUBLE("press", zm->p, 1);
+
2223 if (zm->p[0] < zm->p[1])
+
2224 ERRMSG("Pressure data are not descending!");
+
2225
+
2226 /* Read latitudes... */
+
2227 NC_INQ_DIM("lat", &zm->nlat, 2, CY);
+
2228 NC_GET_DOUBLE("lat", zm->lat, 1);
+
2229 if (zm->lat[0] > zm->lat[1])
+
2230 ERRMSG("Latitude data are not ascending!");
+
2231
+
2232 /* Set time data (for monthly means)... */
+
2233 zm->ntime = 12;
+
2234 zm->time[0] = 1209600.00;
+
2235 zm->time[1] = 3888000.00;
+
2236 zm->time[2] = 6393600.00;
+
2237 zm->time[3] = 9072000.00;
+
2238 zm->time[4] = 11664000.00;
+
2239 zm->time[5] = 14342400.00;
+
2240 zm->time[6] = 16934400.00;
+
2241 zm->time[7] = 19612800.00;
+
2242 zm->time[8] = 22291200.00;
+
2243 zm->time[9] = 24883200.00;
+
2244 zm->time[10] = 27561600.00;
+
2245 zm->time[11] = 30153600.00;
+
2246
+
2247 /* Check number of timesteps... */
+
2248 NC_INQ_DIM("time", &nt, 12, 12);
+
2249
+
2250 /* Read data... */
+
2251 ALLOC(help, double,
+
2252 zm->nlat * zm->np * zm->ntime);
+
2253 NC_GET_DOUBLE(varname, help, 1);
+
2254 for (it = 0; it < zm->ntime; it++)
+
2255 for (iz = 0; iz < zm->np; iz++)
+
2256 for (iy = 0; iy < zm->nlat; iy++)
+
2257 zm->vmr[it][iz][iy] = help[ARRAY_3D(it, iz, zm->np, iy, zm->nlat)];
+
2258 free(help);
+
2259
+
2260 /* Fix data gaps... */
+
2261 for (it = 0; it < zm->ntime; it++)
+
2262 for (iy = 0; iy < zm->nlat; iy++)
+
2263 for (iz = 0; iz < zm->np; iz++) {
+
2264 if (zm->vmr[it][iz][iy] < 0) {
+
2265 for (iz2 = 0; iz2 < zm->np; iz2++)
+
2266 if (zm->vmr[it][iz2][iy] >= 0) {
+
2267 zm->vmr[it][iz][iy] = zm->vmr[it][iz2][iy];
+
2268 break;
+
2269 }
+
2270 for (iz2 = zm->np - 1; iz2 >= 0; iz2--)
+
2271 if (zm->vmr[it][iz2][iy] >= 0) {
+
2272 zm->vmr[it][iz][iy] = zm->vmr[it][iz2][iy];
+
2273 break;
+
2274 }
+
2275 }
+
2276 varmin = GSL_MIN(varmin, zm->vmr[it][iz][iy]);
+
2277 varmax = GSL_MAX(varmax, zm->vmr[it][iz][iy]);
+
2278 }
+
2279
+
2280 /* Close netCDF file... */
+
2281 NC(nc_close(ncid));
+
2282
+
2283 /* Write info... */
+
2284 LOG(2, "Number of time steps: %d", zm->ntime);
+
2285 LOG(2, "Time steps: %.2f, %.2f ... %.2f s",
+
2286 zm->time[0], zm->time[1], zm->time[zm->ntime - 1]);
+
2287 LOG(2, "Number of pressure levels: %d", zm->np);
+
2288 LOG(2, "Altitude levels: %g, %g ... %g km",
+
2289 Z(zm->p[0]), Z(zm->p[1]), Z(zm->p[zm->np - 1]));
+
2290 LOG(2, "Pressure levels: %g, %g ... %g hPa", zm->p[0],
+
2291 zm->p[1], zm->p[zm->np - 1]);
+
2292 LOG(2, "Number of latitudes: %d", zm->nlat);
+
2293 LOG(2, "Latitudes: %g, %g ... %g deg",
+
2294 zm->lat[0], zm->lat[1], zm->lat[zm->nlat - 1]);
+
2295 LOG(2, "%s concentration range: %g ... %g ppv", varname, varmin, varmax);
+
2296}
+
#define ARRAY_3D(ix, iy, ny, iz, nz)
Get 3-D array index.
Definition: libtrac.h:262
+
#define CP
Maximum number of pressure levels for climatological data.
Definition: libtrac.h:222
+
#define CY
Maximum number of latitudes for climatological data.
Definition: libtrac.h:212
+
+
+
+ +

◆ read_clim_photo()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_clim_photo (char * filename,
clim_photo_tphoto 
)
+
+ +

Read climatological photolysis rates.

+ +

Definition at line 2077 of file libtrac.c.

+
2079 {
+
2080
+
2081 int ncid, varid, ip, is, io;
+
2082
+
2083 double *help1, *help2, *help3, *help4;
+
2084
+
2085 /* Write info... */
+
2086 LOG(1, "Read photolysis rates: %s", filename);
+
2087
+
2088 /* Open netCDF file... */
+
2089 if (nc_open(filename, NC_NOWRITE, &ncid) != NC_NOERR) {
+
2090 WARN("Photolysis rate data are missing!");
+
2091 return;
+
2092 }
+
2093
+
2094 /* Read pressure data... */
+
2095 NC_INQ_DIM("press", &photo->np, 2, CP);
+
2096 NC_GET_DOUBLE("press", photo->p, 1);
+
2097 if (photo->p[0] < photo->p[1])
+
2098 ERRMSG("Pressure data are not descending!");
+
2099
+
2100 /* Read total column ozone data... */
+
2101 NC_INQ_DIM("total_o3col", &photo->no3c, 2, CO3);
+
2102 NC_GET_DOUBLE("total_o3col", photo->o3c, 1);
+
2103 if (photo->o3c[0] > photo->o3c[1])
+
2104 ERRMSG("Total column ozone data are not ascending!");
+
2105
+
2106 /* Read solar zenith angle data... */
+
2107 NC_INQ_DIM("sza", &photo->nsza, 2, CSZA);
+
2108 NC_GET_DOUBLE("sza", photo->sza, 1);
+
2109 if (photo->sza[0] > photo->sza[1])
+
2110 ERRMSG("Solar zenith angle data are not ascending!");
+
2111
+
2112 /* Read data... */
+
2113 ALLOC(help1, double,
+
2114 photo->np * photo->nsza * photo->no3c);
+
2115 ALLOC(help2, double,
+
2116 photo->np * photo->nsza * photo->no3c);
+
2117 ALLOC(help3, double,
+
2118 photo->np * photo->nsza * photo->no3c);
+
2119 ALLOC(help4, double,
+
2120 photo->np * photo->nsza * photo->no3c);
+
2121 NC_GET_DOUBLE("n2o", help1, 1);
+
2122 NC_GET_DOUBLE("ccl4", help2, 1);
+
2123 NC_GET_DOUBLE("cfc11", help3, 1);
+
2124 NC_GET_DOUBLE("cfc12", help4, 1);
+
2125 for (ip = 0; ip < photo->np; ip++)
+
2126 for (is = 0; is < photo->nsza; is++)
+
2127 for (io = 0; io < photo->no3c; io++) {
+
2128 photo->n2o[ip][is][io] =
+
2129 help1[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2130 photo->ccl4[ip][is][io] =
+
2131 help2[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2132 photo->ccl3f[ip][is][io] =
+
2133 help3[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2134 photo->ccl2f2[ip][is][io] =
+
2135 help4[ARRAY_3D(ip, is, photo->nsza, io, photo->no3c)];
+
2136 }
+
2137 free(help1);
+
2138 free(help2);
+
2139 free(help3);
+
2140 free(help4);
+
2141
+
2142 /* Close netCDF file... */
+
2143 NC(nc_close(ncid));
+
2144}
+
#define CO3
Maximum number of total column ozone data for climatological data.
Definition: libtrac.h:217
+
#define CSZA
Maximum number of solar zenith angles for climatological data.
Definition: libtrac.h:227
+
double ccl2f2[CP][CSZA][CO3]
CCl2F2 photolysis rate [1/s].
Definition: libtrac.h:1733
+
double ccl3f[CP][CSZA][CO3]
CCl3F photolysis rate [1/s].
Definition: libtrac.h:1730
+
double n2o[CP][CSZA][CO3]
N2O photolysis rate [1/s].
Definition: libtrac.h:1724
+
double ccl4[CP][CSZA][CO3]
CCl4 photolysis rate [1/s].
Definition: libtrac.h:1727
+
+
+
+ +

◆ read_ctl()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_ctl (const char * filename,
int argc,
char * argv[],
ctl_tctl 
)
+
+ +

Read control parameters.

+ +

Definition at line 2300 of file libtrac.c.

+
2304 {
+
2305
+
2306 /* Set timer... */
+
2307 SELECT_TIMER("READ_CTL", "INPUT", NVTX_READ);
+
2308
+
2309 /* Write info... */
+
2310 LOG(1, "\nMassive-Parallel Trajectory Calculations (MPTRAC)\n"
+
2311 "(executable: %s | version: %s | compiled: %s, %s)\n",
+
2312 argv[0], VERSION, __DATE__, __TIME__);
+
2313
+
2314 /* Initialize quantity indices... */
+
2315 ctl->qnt_idx = -1;
+
2316 ctl->qnt_ens = -1;
+
2317 ctl->qnt_stat = -1;
+
2318 ctl->qnt_m = -1;
+
2319 ctl->qnt_vmr = -1;
+
2320 ctl->qnt_rp = -1;
+
2321 ctl->qnt_rhop = -1;
+
2322 ctl->qnt_ps = -1;
+
2323 ctl->qnt_ts = -1;
+
2324 ctl->qnt_zs = -1;
+
2325 ctl->qnt_us = -1;
+
2326 ctl->qnt_vs = -1;
+
2327 ctl->qnt_lsm = -1;
+
2328 ctl->qnt_sst = -1;
+
2329 ctl->qnt_pbl = -1;
+
2330 ctl->qnt_pt = -1;
+
2331 ctl->qnt_tt = -1;
+
2332 ctl->qnt_zt = -1;
+
2333 ctl->qnt_h2ot = -1;
+
2334 ctl->qnt_zg = -1;
+
2335 ctl->qnt_p = -1;
+
2336 ctl->qnt_t = -1;
+
2337 ctl->qnt_rho = -1;
+
2338 ctl->qnt_u = -1;
+
2339 ctl->qnt_v = -1;
+
2340 ctl->qnt_w = -1;
+
2341 ctl->qnt_h2o = -1;
+
2342 ctl->qnt_o3 = -1;
+
2343 ctl->qnt_lwc = -1;
+
2344 ctl->qnt_iwc = -1;
+
2345 ctl->qnt_cc = -1;
+
2346 ctl->qnt_pct = -1;
+
2347 ctl->qnt_pcb = -1;
+
2348 ctl->qnt_cl = -1;
+
2349 ctl->qnt_plcl = -1;
+
2350 ctl->qnt_plfc = -1;
+
2351 ctl->qnt_pel = -1;
+
2352 ctl->qnt_cape = -1;
+
2353 ctl->qnt_cin = -1;
+
2354 ctl->qnt_o3c = -1;
+
2355 ctl->qnt_hno3 = -1;
+
2356 ctl->qnt_oh = -1;
+
2357 ctl->qnt_h2o2 = -1;
+
2358 ctl->qnt_ho2 = -1;
+
2359 ctl->qnt_o1d = -1;
+
2360 ctl->qnt_mloss_oh = -1;
+
2361 ctl->qnt_mloss_h2o2 = -1;
+
2362 ctl->qnt_mloss_wet = -1;
+
2363 ctl->qnt_mloss_dry = -1;
+
2364 ctl->qnt_mloss_decay = -1;
+
2365 ctl->qnt_psat = -1;
+
2366 ctl->qnt_psice = -1;
+
2367 ctl->qnt_pw = -1;
+
2368 ctl->qnt_sh = -1;
+
2369 ctl->qnt_rh = -1;
+
2370 ctl->qnt_rhice = -1;
+
2371 ctl->qnt_theta = -1;
+
2372 ctl->qnt_zeta = -1;
+
2373 ctl->qnt_zeta_d = -1;
+
2374 ctl->qnt_tvirt = -1;
+
2375 ctl->qnt_lapse = -1;
+
2376 ctl->qnt_vh = -1;
+
2377 ctl->qnt_vz = -1;
+
2378 ctl->qnt_pv = -1;
+
2379 ctl->qnt_tdew = -1;
+
2380 ctl->qnt_tice = -1;
+
2381 ctl->qnt_tsts = -1;
+
2382 ctl->qnt_tnat = -1;
+
2383 ctl->qnt_Cx = -1;
+
2384 ctl->qnt_Ch2o = -1;
+
2385 ctl->qnt_Co3 = -1;
+
2386 ctl->qnt_Cco = -1;
+
2387 ctl->qnt_Coh = -1;
+
2388 ctl->qnt_Ch = -1;
+
2389 ctl->qnt_Cho2 = -1;
+
2390 ctl->qnt_Ch2o2 = -1;
+
2391 ctl->qnt_Co1d = -1;
+
2392 ctl->qnt_Co3p = -1;
+
2393 ctl->qnt_Cccl4 = -1;
+
2394 ctl->qnt_Cccl3f = -1;
+
2395 ctl->qnt_Cccl2f2 = -1;
+
2396 ctl->qnt_Cn2o = -1;
+
2397 ctl->qnt_Csf6 = -1;
+
2398 ctl->qnt_aoa = -1;
+
2399
+
2400 /* Read quantities... */
+
2401 ctl->nq = (int) scan_ctl(filename, argc, argv, "NQ", -1, "0", NULL);
+
2402 if (ctl->nq > NQ)
+
2403 ERRMSG("Too many quantities!");
+
2404 for (int iq = 0; iq < ctl->nq; iq++) {
+
2405
+
2406 /* Read quantity name and format... */
+
2407 scan_ctl(filename, argc, argv, "QNT_NAME", iq, "", ctl->qnt_name[iq]);
+
2408 scan_ctl(filename, argc, argv, "QNT_LONGNAME", iq, ctl->qnt_name[iq],
+
2409 ctl->qnt_longname[iq]);
+
2410 scan_ctl(filename, argc, argv, "QNT_FORMAT", iq, "%g",
+
2411 ctl->qnt_format[iq]);
+
2412 if (strcasecmp(ctl->qnt_name[iq], "aoa") == 0)
+
2413 sprintf(ctl->qnt_format[iq], "%%.2f");
+
2414
+
2415 /* Try to identify quantity... */
+
2416 SET_QNT(qnt_idx, "idx", "particle index", "-")
+
2417 SET_QNT(qnt_ens, "ens", "ensemble index", "-")
+
2418 SET_QNT(qnt_stat, "stat", "station flag", "-")
+
2419 SET_QNT(qnt_m, "m", "mass", "kg")
+
2420 SET_QNT(qnt_vmr, "vmr", "volume mixing ratio", "ppv")
+
2421 SET_QNT(qnt_rp, "rp", "particle radius", "microns")
+
2422 SET_QNT(qnt_rhop, "rhop", "particle density", "kg/m^3")
+
2423 SET_QNT(qnt_ps, "ps", "surface pressure", "hPa")
+
2424 SET_QNT(qnt_ts, "ts", "surface temperature", "K")
+
2425 SET_QNT(qnt_zs, "zs", "surface height", "km")
+
2426 SET_QNT(qnt_us, "us", "surface zonal wind", "m/s")
+
2427 SET_QNT(qnt_vs, "vs", "surface meridional wind", "m/s")
+
2428 SET_QNT(qnt_lsm, "lsm", "land-sea mask", "1")
+
2429 SET_QNT(qnt_sst, "sst", "sea surface temperature", "K")
+
2430 SET_QNT(qnt_pbl, "pbl", "planetary boundary layer", "hPa")
+
2431 SET_QNT(qnt_pt, "pt", "tropopause pressure", "hPa")
+
2432 SET_QNT(qnt_tt, "tt", "tropopause temperature", "K")
+
2433 SET_QNT(qnt_zt, "zt", "tropopause geopotential height", "km")
+
2434 SET_QNT(qnt_h2ot, "h2ot", "tropopause water vapor", "ppv")
+
2435 SET_QNT(qnt_zg, "zg", "geopotential height", "km")
+
2436 SET_QNT(qnt_p, "p", "pressure", "hPa")
+
2437 SET_QNT(qnt_t, "t", "temperature", "K")
+
2438 SET_QNT(qnt_rho, "rho", "air density", "kg/m^3")
+
2439 SET_QNT(qnt_u, "u", "zonal wind", "m/s")
+
2440 SET_QNT(qnt_v, "v", "meridional wind", "m/s")
+
2441 SET_QNT(qnt_w, "w", "vertical velocity", "hPa/s")
+
2442 SET_QNT(qnt_h2o, "h2o", "water vapor", "ppv")
+
2443 SET_QNT(qnt_o3, "o3", "ozone", "ppv")
+
2444 SET_QNT(qnt_lwc, "lwc", "cloud ice water content", "kg/kg")
+
2445 SET_QNT(qnt_iwc, "iwc", "cloud liquid water content", "kg/kg")
+
2446 SET_QNT(qnt_cc, "cc", "cloud cover", "1")
+
2447 SET_QNT(qnt_pct, "pct", "cloud top pressure", "hPa")
+
2448 SET_QNT(qnt_pcb, "pcb", "cloud bottom pressure", "hPa")
+
2449 SET_QNT(qnt_cl, "cl", "total column cloud water", "kg/m^2")
+
2450 SET_QNT(qnt_plcl, "plcl", "lifted condensation level", "hPa")
+
2451 SET_QNT(qnt_plfc, "plfc", "level of free convection", "hPa")
+
2452 SET_QNT(qnt_pel, "pel", "equilibrium level", "hPa")
+
2453 SET_QNT(qnt_cape, "cape", "convective available potential energy",
+
2454 "J/kg")
+
2455 SET_QNT(qnt_cin, "cin", "convective inhibition", "J/kg")
+
2456 SET_QNT(qnt_o3c, "o3c", "total column ozone", "DU")
+
2457 SET_QNT(qnt_hno3, "hno3", "nitric acid", "ppv")
+
2458 SET_QNT(qnt_oh, "oh", "hydroxyl radical", "ppv")
+
2459 SET_QNT(qnt_h2o2, "h2o2", "hydrogen peroxide", "ppv")
+
2460 SET_QNT(qnt_ho2, "ho2", "hydroperoxyl radical", "ppv")
+
2461 SET_QNT(qnt_o1d, "o1d", "atomic oxygen", "ppv")
+
2462 SET_QNT(qnt_mloss_oh, "mloss_oh", "mass loss due to OH chemistry", "kg")
+
2463 SET_QNT(qnt_mloss_h2o2, "mloss_h2o2", "mass loss due to H2O2 chemistry",
+
2464 "kg")
+
2465 SET_QNT(qnt_mloss_wet, "mloss_wet", "mass loss due to wet deposition",
+
2466 "kg")
+
2467 SET_QNT(qnt_mloss_dry, "mloss_dry", "mass loss due to dry deposition",
+
2468 "kg")
+
2469 SET_QNT(qnt_mloss_decay, "mloss_decay",
+
2470 "mass loss due to exponential decay", "kg")
+
2471 SET_QNT(qnt_psat, "psat", "saturation pressure over water", "hPa")
+
2472 SET_QNT(qnt_psice, "psice", "saturation pressure over ice", "hPa")
+
2473 SET_QNT(qnt_pw, "pw", "partial water vapor pressure", "hPa")
+
2474 SET_QNT(qnt_sh, "sh", "specific humidity", "kg/kg")
+
2475 SET_QNT(qnt_rh, "rh", "relative humidity", "%%")
+
2476 SET_QNT(qnt_rhice, "rhice", "relative humidity over ice", "%%")
+
2477 SET_QNT(qnt_theta, "theta", "potential temperature", "K")
+
2478 SET_QNT(qnt_zeta, "zeta", "zeta coordinate", "K")
+
2479 SET_QNT(qnt_zeta_d, "zeta_d", "diagnosed zeta coordinate", "K")
+
2480 SET_QNT(qnt_tvirt, "tvirt", "virtual temperature", "K")
+
2481 SET_QNT(qnt_lapse, "lapse", "temperature lapse rate", "K/km")
+
2482 SET_QNT(qnt_vh, "vh", "horizontal velocity", "m/s")
+
2483 SET_QNT(qnt_vz, "vz", "vertical velocity", "m/s")
+
2484 SET_QNT(qnt_pv, "pv", "potential vorticity", "PVU")
+
2485 SET_QNT(qnt_tdew, "tdew", "dew point temperature", "K")
+
2486 SET_QNT(qnt_tice, "tice", "frost point temperature", "K")
+
2487 SET_QNT(qnt_tsts, "tsts", "STS existence temperature", "K")
+
2488 SET_QNT(qnt_tnat, "tnat", "NAT existence temperature", "K")
+
2489 SET_QNT(qnt_Cx, "Cx", "Trace species x volume mixing ratio", "ppv")
+
2490 SET_QNT(qnt_Ch2o, "Ch2o", "H2O volume mixing ratio", "ppv")
+
2491 SET_QNT(qnt_Co3, "Co3", "O3 volume mixing ratio", "ppv")
+
2492 SET_QNT(qnt_Cco, "Cco", "CO volume mixing ratio", "ppv")
+
2493 SET_QNT(qnt_Coh, "Coh", "HO volume mixing ratio", "ppv")
+
2494 SET_QNT(qnt_Ch, "Ch", "H radical volume mixing ratio", "ppv")
+
2495 SET_QNT(qnt_Cho2, "Cho2", "HO2 volume mixing ratio", "ppv")
+
2496 SET_QNT(qnt_Ch2o2, "Ch2o2", "H2O2 volume mixing ratio", "ppv")
+
2497 SET_QNT(qnt_Co1d, "Co1d", "O(1D) volume mixing ratio", "ppv")
+
2498 SET_QNT(qnt_Co3p, "Co3p", "O(3P) radical volume mixing ratio", "ppv")
+
2499 SET_QNT(qnt_Cccl4, "Cccl4", "CCl4 (CFC-10) volume mixing ratio", "ppv")
+
2500 SET_QNT(qnt_Cccl3f, "Cccl3f", "CCl3F (CFC-11) volume mixing ratio",
+
2501 "ppv")
+
2502 SET_QNT(qnt_Cccl2f2, "Cccl2f2", "CCl2F2 (CFC-12) volume mixing ratio",
+
2503 "ppv")
+
2504 SET_QNT(qnt_Cn2o, "Cn2o", "N2O volume mixing ratio", "ppv")
+
2505 SET_QNT(qnt_Csf6, "Csf6", "SF6 volume mixing ratio", "ppv")
+
2506 SET_QNT(qnt_aoa, "aoa", "age of air", "s")
+
2507 scan_ctl(filename, argc, argv, "QNT_UNIT", iq, "", ctl->qnt_unit[iq]);
+
2508 }
+
2509
+
2510 /* netCDF I/O parameters... */
+
2511 ctl->chunkszhint =
+
2512 (size_t) scan_ctl(filename, argc, argv, "CHUNKSZHINT", -1, "163840000",
+
2513 NULL);
+
2514 ctl->read_mode =
+
2515 (int) scan_ctl(filename, argc, argv, "READMODE", -1, "0", NULL);
+
2516
+
2517 /* Vertical coordinates and velocities... */
+
2518 ctl->vert_coord_ap =
+
2519 (int) scan_ctl(filename, argc, argv, "VERT_COORD_AP", -1, "0", NULL);
+
2520 ctl->vert_coord_met =
+
2521 (int) scan_ctl(filename, argc, argv, "VERT_COORD_MET", -1, "0", NULL);
+
2522 if (ctl->vert_coord_ap == 1) {
+
2523 int error = 1;
+
2524 for (int iq = 0; iq < ctl->nq; iq++) {
+
2525 if (strcmp(ctl->qnt_name[iq], "zeta") == 0) {
+
2526 error = 0;
+
2527 break;
+
2528 }
+
2529 }
+
2530 if (error == 1)
+
2531 ERRMSG("Please add zeta to your quantities for diabatic calculations.");
+
2532 }
+
2533 ctl->clams_met_data =
+
2534 (int) scan_ctl(filename, argc, argv, "CLAMS_MET_DATA", -1, "0", NULL);
+ +
2536 (int) scan_ctl(filename, argc, argv, "CPL_ZETA_PRESS_MODULES", -1, "1",
+
2537 NULL);
+
2538
+
2539 /* Time steps of simulation... */
+
2540 ctl->direction =
+
2541 (int) scan_ctl(filename, argc, argv, "DIRECTION", -1, "1", NULL);
+
2542 if (ctl->direction != -1 && ctl->direction != 1)
+
2543 ERRMSG("Set DIRECTION to -1 or 1!");
+
2544 ctl->t_stop = scan_ctl(filename, argc, argv, "T_STOP", -1, "1e100", NULL);
+
2545 ctl->dt_mod = scan_ctl(filename, argc, argv, "DT_MOD", -1, "180", NULL);
+
2546
+
2547 /* Meteo data... */
+
2548 scan_ctl(filename, argc, argv, "METBASE", -1, "-", ctl->metbase);
+
2549 ctl->dt_met = scan_ctl(filename, argc, argv, "DT_MET", -1, "3600", NULL);
+
2550 ctl->met_convention =
+
2551 (int) scan_ctl(filename, argc, argv, "MET_CONVENTION", -1, "0", NULL);
+
2552 ctl->met_type =
+
2553 (int) scan_ctl(filename, argc, argv, "MET_TYPE", -1, "0", NULL);
+
2554 if (ctl->vert_coord_ap == 1 && ctl->met_type != 0)
+
2555 ERRMSG
+
2556 ("Please use meteorological files in netcdf format for diabatic calculations.");
+
2557 ctl->met_nc_scale =
+
2558 (int) scan_ctl(filename, argc, argv, "MET_NC_SCALE", -1, "1", NULL);
+
2559 ctl->met_zfp_prec =
+
2560 (int) scan_ctl(filename, argc, argv, "MET_ZFP_PREC", -1, "8", NULL);
+
2561 ctl->met_zfp_tol_t =
+
2562 scan_ctl(filename, argc, argv, "MET_ZFP_TOL_T", -1, "5.0", NULL);
+
2563 ctl->met_zfp_tol_z =
+
2564 scan_ctl(filename, argc, argv, "MET_ZFP_TOL_Z", -1, "0.5", NULL);
+
2565 ctl->met_dx = (int) scan_ctl(filename, argc, argv, "MET_DX", -1, "1", NULL);
+
2566 ctl->met_dy = (int) scan_ctl(filename, argc, argv, "MET_DY", -1, "1", NULL);
+
2567 ctl->met_dp = (int) scan_ctl(filename, argc, argv, "MET_DP", -1, "1", NULL);
+
2568 if (ctl->met_dx < 1 || ctl->met_dy < 1 || ctl->met_dp < 1)
+
2569 ERRMSG("MET_DX, MET_DY, and MET_DP need to be greater than zero!");
+
2570 ctl->met_sx = (int) scan_ctl(filename, argc, argv, "MET_SX", -1, "1", NULL);
+
2571 ctl->met_sy = (int) scan_ctl(filename, argc, argv, "MET_SY", -1, "1", NULL);
+
2572 ctl->met_sp = (int) scan_ctl(filename, argc, argv, "MET_SP", -1, "1", NULL);
+
2573 if (ctl->met_sx < 1 || ctl->met_sy < 1 || ctl->met_sp < 1)
+
2574 ERRMSG("MET_SX, MET_SY, and MET_SP need to be greater than zero!");
+
2575 ctl->met_detrend =
+
2576 scan_ctl(filename, argc, argv, "MET_DETREND", -1, "-999", NULL);
+
2577 ctl->met_np = (int) scan_ctl(filename, argc, argv, "MET_NP", -1, "0", NULL);
+
2578 if (ctl->met_np > EP)
+
2579 ERRMSG("Too many levels!");
+
2580 ctl->press_level_def =
+
2581 (int) scan_ctl(filename, argc, argv, "PRESS_LEVEL_DEF", -1, "-1", NULL);
+
2582 if (ctl->press_level_def >= 0) {
+
2583 level_definitions(ctl);
+
2584 } else {
+
2585 if (ctl->met_np > 0) {
+
2586 for (int ip = 0; ip < ctl->met_np; ip++)
+
2587 ctl->met_p[ip] =
+
2588 scan_ctl(filename, argc, argv, "MET_P", ip, "", NULL);
+
2589 }
+
2590 }
+
2591 ctl->met_geopot_sx
+
2592 = (int) scan_ctl(filename, argc, argv, "MET_GEOPOT_SX", -1, "-1", NULL);
+
2593 ctl->met_geopot_sy
+
2594 = (int) scan_ctl(filename, argc, argv, "MET_GEOPOT_SY", -1, "-1", NULL);
+
2595 ctl->met_relhum
+
2596 = (int) scan_ctl(filename, argc, argv, "MET_RELHUM", -1, "0", NULL);
+
2597 ctl->met_tropo =
+
2598 (int) scan_ctl(filename, argc, argv, "MET_TROPO", -1, "3", NULL);
+
2599 if (ctl->met_tropo < 0 || ctl->met_tropo > 5)
+
2600 ERRMSG("Set MET_TROPO = 0 ... 5!");
+
2601 ctl->met_tropo_lapse =
+
2602 scan_ctl(filename, argc, argv, "MET_TROPO_LAPSE", -1, "2.0", NULL);
+
2603 ctl->met_tropo_nlev =
+
2604 (int) scan_ctl(filename, argc, argv, "MET_TROPO_NLEV", -1, "20", NULL);
+
2605 ctl->met_tropo_lapse_sep =
+
2606 scan_ctl(filename, argc, argv, "MET_TROPO_LAPSE_SEP", -1, "3.0", NULL);
+
2607 ctl->met_tropo_nlev_sep =
+
2608 (int) scan_ctl(filename, argc, argv, "MET_TROPO_NLEV_SEP", -1, "10",
+
2609 NULL);
+
2610 ctl->met_tropo_pv =
+
2611 scan_ctl(filename, argc, argv, "MET_TROPO_PV", -1, "3.5", NULL);
+
2612 ctl->met_tropo_theta =
+
2613 scan_ctl(filename, argc, argv, "MET_TROPO_THETA", -1, "380", NULL);
+
2614 ctl->met_tropo_spline =
+
2615 (int) scan_ctl(filename, argc, argv, "MET_TROPO_SPLINE", -1, "1", NULL);
+
2616 ctl->met_cloud =
+
2617 (int) scan_ctl(filename, argc, argv, "MET_CLOUD", -1, "1", NULL);
+
2618 if (ctl->met_cloud < 0 || ctl->met_cloud > 3)
+
2619 ERRMSG("Set MET_CLOUD = 0 ... 3!");
+
2620 ctl->met_cloud_min =
+
2621 scan_ctl(filename, argc, argv, "MET_CLOUD_MIN", -1, "0", NULL);
+
2622 ctl->met_dt_out =
+
2623 scan_ctl(filename, argc, argv, "MET_DT_OUT", -1, "0.1", NULL);
+
2624 ctl->met_cache =
+
2625 (int) scan_ctl(filename, argc, argv, "MET_CACHE", -1, "0", NULL);
+
2626
+
2627 /* Sorting... */
+
2628 ctl->sort_dt = scan_ctl(filename, argc, argv, "SORT_DT", -1, "-999", NULL);
+
2629
+
2630 /* Isosurface parameters... */
+
2631 ctl->isosurf =
+
2632 (int) scan_ctl(filename, argc, argv, "ISOSURF", -1, "0", NULL);
+
2633 scan_ctl(filename, argc, argv, "BALLOON", -1, "-", ctl->balloon);
+
2634
+
2635 /* Advection parameters... */
+
2636 ctl->advect = (int) scan_ctl(filename, argc, argv, "ADVECT", -1, "2", NULL);
+
2637 if (!(ctl->advect == 0 || ctl->advect == 1
+
2638 || ctl->advect == 2 || ctl->advect == 4))
+
2639 ERRMSG("Set ADVECT to 0, 1, 2, or 4!");
+
2640 ctl->reflect =
+
2641 (int) scan_ctl(filename, argc, argv, "REFLECT", -1, "0", NULL);
+
2642
+
2643 /* Diffusion parameters... */
+
2644 ctl->turb_dx_trop =
+
2645 scan_ctl(filename, argc, argv, "TURB_DX_TROP", -1, "50", NULL);
+
2646 ctl->turb_dx_strat =
+
2647 scan_ctl(filename, argc, argv, "TURB_DX_STRAT", -1, "0", NULL);
+
2648 ctl->turb_dz_trop =
+
2649 scan_ctl(filename, argc, argv, "TURB_DZ_TROP", -1, "0", NULL);
+
2650 ctl->turb_dz_strat =
+
2651 scan_ctl(filename, argc, argv, "TURB_DZ_STRAT", -1, "0.1", NULL);
+
2652 ctl->turb_mesox =
+
2653 scan_ctl(filename, argc, argv, "TURB_MESOX", -1, "0.16", NULL);
+
2654 ctl->turb_mesoz =
+
2655 scan_ctl(filename, argc, argv, "TURB_MESOZ", -1, "0.16", NULL);
+
2656
+
2657 /* Convection... */
+
2658 ctl->conv_cape
+
2659 = scan_ctl(filename, argc, argv, "CONV_CAPE", -1, "-999", NULL);
+
2660 ctl->conv_cin
+
2661 = scan_ctl(filename, argc, argv, "CONV_CIN", -1, "-999", NULL);
+
2662 ctl->conv_dt = scan_ctl(filename, argc, argv, "CONV_DT", -1, "-999", NULL);
+
2663 ctl->conv_mix
+
2664 = (int) scan_ctl(filename, argc, argv, "CONV_MIX", -1, "1", NULL);
+
2665 ctl->conv_mix_bot
+
2666 = (int) scan_ctl(filename, argc, argv, "CONV_MIX_BOT", -1, "1", NULL);
+
2667 ctl->conv_mix_top
+
2668 = (int) scan_ctl(filename, argc, argv, "CONV_MIX_TOP", -1, "1", NULL);
+
2669
+
2670 /* Boundary conditions... */
+
2671 ctl->bound_mass =
+
2672 scan_ctl(filename, argc, argv, "BOUND_MASS", -1, "-999", NULL);
+
2673 ctl->bound_mass_trend =
+
2674 scan_ctl(filename, argc, argv, "BOUND_MASS_TREND", -1, "0", NULL);
+
2675 ctl->bound_vmr =
+
2676 scan_ctl(filename, argc, argv, "BOUND_VMR", -1, "-999", NULL);
+
2677 ctl->bound_vmr_trend =
+
2678 scan_ctl(filename, argc, argv, "BOUND_VMR_TREND", -1, "0", NULL);
+
2679 ctl->bound_lat0 =
+
2680 scan_ctl(filename, argc, argv, "BOUND_LAT0", -1, "-999", NULL);
+
2681 ctl->bound_lat1 =
+
2682 scan_ctl(filename, argc, argv, "BOUND_LAT1", -1, "-999", NULL);
+
2683 ctl->bound_p0 =
+
2684 scan_ctl(filename, argc, argv, "BOUND_P0", -1, "-999", NULL);
+
2685 ctl->bound_p1 =
+
2686 scan_ctl(filename, argc, argv, "BOUND_P1", -1, "-999", NULL);
+
2687 ctl->bound_dps =
+
2688 scan_ctl(filename, argc, argv, "BOUND_DPS", -1, "-999", NULL);
+
2689 ctl->bound_dzs =
+
2690 scan_ctl(filename, argc, argv, "BOUND_DZS", -1, "-999", NULL);
+
2691 ctl->bound_zetas =
+
2692 scan_ctl(filename, argc, argv, "BOUND_ZETAS", -1, "-999", NULL);
+
2693 ctl->bound_pbl =
+
2694 (int) scan_ctl(filename, argc, argv, "BOUND_PBL", -1, "0", NULL);
+
2695
+
2696 /* Species parameters... */
+
2697 scan_ctl(filename, argc, argv, "SPECIES", -1, "-", ctl->species);
+
2698 if (strcasecmp(ctl->species, "CF2Cl2") == 0) {
+
2699 ctl->molmass = 120.907;
+
2700 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 3e-5;
+
2701 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3500.0;
+
2702 } else if (strcasecmp(ctl->species, "CFCl3") == 0) {
+
2703 ctl->molmass = 137.359;
+
2704 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.1e-4;
+
2705 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3300.0;
+
2706 } else if (strcasecmp(ctl->species, "CH4") == 0) {
+
2707 ctl->molmass = 16.043;
+
2708 ctl->oh_chem_reaction = 2;
+
2709 ctl->oh_chem[0] = 2.45e-12;
+
2710 ctl->oh_chem[1] = 1775;
+
2711 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.4e-5;
+
2712 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1600.0;
+
2713 } else if (strcasecmp(ctl->species, "CO") == 0) {
+
2714 ctl->molmass = 28.01;
+
2715 ctl->oh_chem_reaction = 3;
+
2716 ctl->oh_chem[0] = 6.9e-33;
+
2717 ctl->oh_chem[1] = 2.1;
+
2718 ctl->oh_chem[2] = 1.1e-12;
+
2719 ctl->oh_chem[3] = -1.3;
+
2720 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 9.7e-6;
+
2721 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1300.0;
+
2722 } else if (strcasecmp(ctl->species, "CO2") == 0) {
+
2723 ctl->molmass = 44.009;
+
2724 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 3.3e-4;
+
2725 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2400.0;
+
2726 } else if (strcasecmp(ctl->species, "H2O") == 0) {
+
2727 ctl->molmass = 18.01528;
+
2728 } else if (strcasecmp(ctl->species, "N2O") == 0) {
+
2729 ctl->molmass = 44.013;
+
2730 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.4e-4;
+
2731 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2600.;
+
2732 } else if (strcasecmp(ctl->species, "NH3") == 0) {
+
2733 ctl->molmass = 17.031;
+
2734 ctl->oh_chem_reaction = 2;
+
2735 ctl->oh_chem[0] = 1.7e-12;
+
2736 ctl->oh_chem[1] = 710;
+
2737 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 5.9e-1;
+
2738 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 4200.0;
+
2739 } else if (strcasecmp(ctl->species, "HNO3") == 0) {
+
2740 ctl->molmass = 63.012;
+
2741 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.1e3;
+
2742 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 8700.0;
+
2743 } else if (strcasecmp(ctl->species, "NO") == 0) {
+
2744 ctl->molmass = 30.006;
+
2745 ctl->oh_chem_reaction = 3;
+
2746 ctl->oh_chem[0] = 7.1e-31;
+
2747 ctl->oh_chem[1] = 2.6;
+
2748 ctl->oh_chem[2] = 3.6e-11;
+
2749 ctl->oh_chem[3] = 0.1;
+
2750 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.9e-5;
+
2751 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 1600.0;
+
2752 } else if (strcasecmp(ctl->species, "NO2") == 0) {
+
2753 ctl->molmass = 46.005;
+
2754 ctl->oh_chem_reaction = 3;
+
2755 ctl->oh_chem[0] = 1.8e-30;
+
2756 ctl->oh_chem[1] = 3.0;
+
2757 ctl->oh_chem[2] = 2.8e-11;
+
2758 ctl->oh_chem[3] = 0.0;
+
2759 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.2e-4;
+
2760 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2400.0;
+
2761 } else if (strcasecmp(ctl->species, "O3") == 0) {
+
2762 ctl->molmass = 47.997;
+
2763 ctl->oh_chem_reaction = 2;
+
2764 ctl->oh_chem[0] = 1.7e-12;
+
2765 ctl->oh_chem[1] = 940;
+
2766 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1e-4;
+
2767 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2800.0;
+
2768 } else if (strcasecmp(ctl->species, "SF6") == 0) {
+
2769 ctl->molmass = 146.048;
+
2770 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 2.4e-6;
+
2771 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 3100.0;
+
2772 } else if (strcasecmp(ctl->species, "SO2") == 0) {
+
2773 ctl->molmass = 64.066;
+
2774 ctl->oh_chem_reaction = 3;
+
2775 ctl->oh_chem[0] = 2.9e-31;
+
2776 ctl->oh_chem[1] = 4.1;
+
2777 ctl->oh_chem[2] = 1.7e-12;
+
2778 ctl->oh_chem[3] = -0.2;
+
2779 ctl->wet_depo_ic_h[0] = ctl->wet_depo_bc_h[0] = 1.3e-2;
+
2780 ctl->wet_depo_ic_h[1] = ctl->wet_depo_bc_h[1] = 2900.0;
+
2781 }
+
2782
+
2783 /* Molar mass... */
+
2784 char defstr[LEN];
+
2785 sprintf(defstr, "%g", ctl->molmass);
+
2786 ctl->molmass = scan_ctl(filename, argc, argv, "MOLMASS", -1, defstr, NULL);
+
2787
+
2788 /* OH chemistry... */
+
2789 sprintf(defstr, "%d", ctl->oh_chem_reaction);
+
2790 ctl->oh_chem_reaction =
+
2791 (int) scan_ctl(filename, argc, argv, "OH_CHEM_REACTION", -1, defstr,
+
2792 NULL);
+
2793 for (int ip = 0; ip < 4; ip++) {
+
2794 sprintf(defstr, "%g", ctl->oh_chem[ip]);
+
2795 ctl->oh_chem[ip] =
+
2796 scan_ctl(filename, argc, argv, "OH_CHEM", ip, defstr, NULL);
+
2797 }
+
2798 ctl->oh_chem_beta =
+
2799 scan_ctl(filename, argc, argv, "OH_CHEM_BETA", -1, "0", NULL);
+
2800
+
2801 /* H2O2 chemistry... */
+
2802 ctl->h2o2_chem_reaction =
+
2803 (int) scan_ctl(filename, argc, argv, "H2O2_CHEM_REACTION", -1, "0", NULL);
+
2804
+
2805 /* KPP chemistry... */
+
2806 ctl->kpp_chem =
+
2807 (int) scan_ctl(filename, argc, argv, "KPP_CHEM", -1, "0", NULL);
+
2808
+
2809 /* First order tracer chemistry... */
+
2810 ctl->tracer_chem =
+
2811 (int) scan_ctl(filename, argc, argv, "TRACER_CHEM", -1, "0", NULL);
+
2812
+
2813 /* Wet deposition... */
+
2814 for (int ip = 0; ip < 3; ip++) {
+
2815 sprintf(defstr, "%g", ctl->wet_depo_ic_h[ip]);
+
2816 ctl->wet_depo_ic_h[ip] =
+
2817 scan_ctl(filename, argc, argv, "WET_DEPO_IC_H", ip, defstr, NULL);
+
2818 }
+
2819 for (int ip = 0; ip < 1; ip++) {
+
2820 sprintf(defstr, "%g", ctl->wet_depo_bc_h[ip]);
+
2821 ctl->wet_depo_bc_h[ip] =
+
2822 scan_ctl(filename, argc, argv, "WET_DEPO_BC_H", ip, defstr, NULL);
+
2823 }
+
2824 ctl->wet_depo_ic_a =
+
2825 scan_ctl(filename, argc, argv, "WET_DEPO_IC_A", -1, "0", NULL);
+
2826 ctl->wet_depo_ic_b =
+
2827 scan_ctl(filename, argc, argv, "WET_DEPO_IC_B", -1, "0", NULL);
+
2828 ctl->wet_depo_bc_a =
+
2829 scan_ctl(filename, argc, argv, "WET_DEPO_BC_A", -1, "0", NULL);
+
2830 ctl->wet_depo_bc_b =
+
2831 scan_ctl(filename, argc, argv, "WET_DEPO_BC_B", -1, "0", NULL);
+
2832 ctl->wet_depo_pre[0] =
+
2833 scan_ctl(filename, argc, argv, "WET_DEPO_PRE", 0, "0.5", NULL);
+
2834 ctl->wet_depo_pre[1] =
+
2835 scan_ctl(filename, argc, argv, "WET_DEPO_PRE", 1, "0.36", NULL);
+ +
2837 scan_ctl(filename, argc, argv, "WET_DEPO_IC_RET_RATIO", -1, "1", NULL);
+ +
2839 scan_ctl(filename, argc, argv, "WET_DEPO_BC_RET_RATIO", -1, "1", NULL);
+
2840
+
2841 /* Dry deposition... */
+
2842 ctl->dry_depo_vdep =
+
2843 scan_ctl(filename, argc, argv, "DRY_DEPO_VDEP", -1, "0", NULL);
+
2844 ctl->dry_depo_dp =
+
2845 scan_ctl(filename, argc, argv, "DRY_DEPO_DP", -1, "30", NULL);
+
2846
+
2847 /* Climatological data... */
+
2848 scan_ctl(filename, argc, argv, "CLIM_PHOTO", -1,
+
2849 "../../data/photolysis_rate.nc", ctl->clim_photo);
+
2850 scan_ctl(filename, argc, argv, "CLIM_HNO3_FILENAME", -1,
+
2851 "../../data/gozcards_HNO3.nc", ctl->clim_hno3_filename);
+
2852 scan_ctl(filename, argc, argv, "CLIM_OH_FILENAME", -1,
+
2853 "../../data/clams_radical_species_vmr.nc", ctl->clim_oh_filename);
+
2854 scan_ctl(filename, argc, argv, "CLIM_H2O2_FILENAME", -1,
+
2855 "../../data/cams_H2O2.nc", ctl->clim_h2o2_filename);
+
2856 scan_ctl(filename, argc, argv, "CLIM_HO2_FILENAME", -1,
+
2857 "../../data/clams_radical_species_vmr.nc", ctl->clim_ho2_filename);
+
2858 scan_ctl(filename, argc, argv, "CLIM_O1D_FILENAME", -1,
+
2859 "../../data/clams_radical_species_vmr.nc", ctl->clim_o1d_filename);
+
2860 scan_ctl(filename, argc, argv, "CLIM_CCL4_TIMESERIES", -1,
+
2861 "../../data/noaa_gml_ccl4.tab", ctl->clim_ccl4_timeseries);
+
2862 scan_ctl(filename, argc, argv, "CLIM_CCL3F_TIMESERIES", -1,
+
2863 "../../data/noaa_gml_cfc11.tab", ctl->clim_ccl3f_timeseries);
+
2864 scan_ctl(filename, argc, argv, "CLIM_CCL2F2_TIMESERIES", -1,
+
2865 "../../data/noaa_gml_cfc12.tab", ctl->clim_ccl2f2_timeseries);
+
2866 scan_ctl(filename, argc, argv, "CLIM_N2O_TIMESERIES", -1,
+
2867 "../../data/noaa_gml_n2o.tab", ctl->clim_n2o_timeseries);
+
2868 scan_ctl(filename, argc, argv, "CLIM_SF6_TIMESERIES", -1,
+
2869 "../../data/noaa_gml_sf6.tab", ctl->clim_sf6_timeseries);
+
2870
+
2871 /* Mixing... */
+
2872 ctl->mixing_dt =
+
2873 scan_ctl(filename, argc, argv, "MIXING_DT", -1, "3600.", NULL);
+
2874 ctl->mixing_trop =
+
2875 scan_ctl(filename, argc, argv, "MIXING_TROP", -1, "-999", NULL);
+
2876 ctl->mixing_strat =
+
2877 scan_ctl(filename, argc, argv, "MIXING_STRAT", -1, "-999", NULL);
+
2878 ctl->mixing_z0 =
+
2879 scan_ctl(filename, argc, argv, "MIXING_Z0", -1, "-5", NULL);
+
2880 ctl->mixing_z1 =
+
2881 scan_ctl(filename, argc, argv, "MIXING_Z1", -1, "85", NULL);
+
2882 ctl->mixing_nz =
+
2883 (int) scan_ctl(filename, argc, argv, "MIXING_NZ", -1, "90", NULL);
+
2884 ctl->mixing_lon0 =
+
2885 scan_ctl(filename, argc, argv, "MIXING_LON0", -1, "-180", NULL);
+
2886 ctl->mixing_lon1 =
+
2887 scan_ctl(filename, argc, argv, "MIXING_LON1", -1, "180", NULL);
+
2888 ctl->mixing_nx =
+
2889 (int) scan_ctl(filename, argc, argv, "MIXING_NX", -1, "360", NULL);
+
2890 ctl->mixing_lat0 =
+
2891 scan_ctl(filename, argc, argv, "MIXING_LAT0", -1, "-90", NULL);
+
2892 ctl->mixing_lat1 =
+
2893 scan_ctl(filename, argc, argv, "MIXING_LAT1", -1, "90", NULL);
+
2894 ctl->mixing_ny =
+
2895 (int) scan_ctl(filename, argc, argv, "MIXING_NY", -1, "180", NULL);
+
2896
+
2897 /* Chemistry grid... */
+
2898 ctl->chemgrid_z0 =
+
2899 scan_ctl(filename, argc, argv, "CHEMGRID_Z0", -1, "-5", NULL);
+
2900 ctl->chemgrid_z1 =
+
2901 scan_ctl(filename, argc, argv, "CHEMGRID_Z1", -1, "85", NULL);
+
2902 ctl->chemgrid_nz =
+
2903 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NZ", -1, "90", NULL);
+
2904 ctl->chemgrid_lon0 =
+
2905 scan_ctl(filename, argc, argv, "CHEMGRID_LON0", -1, "-180", NULL);
+
2906 ctl->chemgrid_lon1 =
+
2907 scan_ctl(filename, argc, argv, "CHEMGRID_LON1", -1, "180", NULL);
+
2908 ctl->chemgrid_nx =
+
2909 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NX", -1, "360", NULL);
+
2910 ctl->chemgrid_lat0 =
+
2911 scan_ctl(filename, argc, argv, "CHEMGRID_LAT0", -1, "-90", NULL);
+
2912 ctl->chemgrid_lat1 =
+
2913 scan_ctl(filename, argc, argv, "CHEMGRID_LAT1", -1, "90", NULL);
+
2914 ctl->chemgrid_ny =
+
2915 (int) scan_ctl(filename, argc, argv, "CHEMGRID_NY", -1, "180", NULL);
+
2916
+
2917 /* Exponential decay... */
+
2918 ctl->tdec_trop = scan_ctl(filename, argc, argv, "TDEC_TROP", -1, "0", NULL);
+
2919 ctl->tdec_strat
+
2920 = scan_ctl(filename, argc, argv, "TDEC_STRAT", -1, "0", NULL);
+
2921
+
2922 /* PSC analysis... */
+
2923 ctl->psc_h2o = scan_ctl(filename, argc, argv, "PSC_H2O", -1, "4e-6", NULL);
+
2924 ctl->psc_hno3 =
+
2925 scan_ctl(filename, argc, argv, "PSC_HNO3", -1, "9e-9", NULL);
+
2926
+
2927 /* Output of atmospheric data... */
+
2928 scan_ctl(filename, argc, argv, "ATM_BASENAME", -1, "-", ctl->atm_basename);
+
2929 scan_ctl(filename, argc, argv, "ATM_GPFILE", -1, "-", ctl->atm_gpfile);
+
2930 ctl->atm_dt_out =
+
2931 scan_ctl(filename, argc, argv, "ATM_DT_OUT", -1, "86400", NULL);
+
2932 ctl->atm_filter =
+
2933 (int) scan_ctl(filename, argc, argv, "ATM_FILTER", -1, "0", NULL);
+
2934 ctl->atm_stride =
+
2935 (int) scan_ctl(filename, argc, argv, "ATM_STRIDE", -1, "1", NULL);
+
2936 ctl->atm_type =
+
2937 (int) scan_ctl(filename, argc, argv, "ATM_TYPE", -1, "0", NULL);
+
2938 ctl->atm_type_out =
+
2939 (int) scan_ctl(filename, argc, argv, "ATM_TYPE_OUT", -1, "-1", NULL);
+
2940 if (ctl->atm_type_out == -1)
+
2941 ctl->atm_type_out = ctl->atm_type;
+
2942
+
2943 /* Output of CSI data... */
+
2944 scan_ctl(filename, argc, argv, "CSI_BASENAME", -1, "-", ctl->csi_basename);
+
2945 scan_ctl(filename, argc, argv, "CSI_KERNEL", -1, "-", ctl->csi_kernel);
+
2946 ctl->csi_dt_out =
+
2947 scan_ctl(filename, argc, argv, "CSI_DT_OUT", -1, "86400", NULL);
+
2948 scan_ctl(filename, argc, argv, "CSI_OBSFILE", -1, "-", ctl->csi_obsfile);
+
2949 ctl->csi_obsmin =
+
2950 scan_ctl(filename, argc, argv, "CSI_OBSMIN", -1, "0", NULL);
+
2951 ctl->csi_modmin =
+
2952 scan_ctl(filename, argc, argv, "CSI_MODMIN", -1, "0", NULL);
+
2953 ctl->csi_z0 = scan_ctl(filename, argc, argv, "CSI_Z0", -1, "-5", NULL);
+
2954 ctl->csi_z1 = scan_ctl(filename, argc, argv, "CSI_Z1", -1, "85", NULL);
+
2955 ctl->csi_nz = (int) scan_ctl(filename, argc, argv, "CSI_NZ", -1, "1", NULL);
+
2956 ctl->csi_lon0 =
+
2957 scan_ctl(filename, argc, argv, "CSI_LON0", -1, "-180", NULL);
+
2958 ctl->csi_lon1 = scan_ctl(filename, argc, argv, "CSI_LON1", -1, "180", NULL);
+
2959 ctl->csi_nx =
+
2960 (int) scan_ctl(filename, argc, argv, "CSI_NX", -1, "360", NULL);
+
2961 ctl->csi_lat0 = scan_ctl(filename, argc, argv, "CSI_LAT0", -1, "-90", NULL);
+
2962 ctl->csi_lat1 = scan_ctl(filename, argc, argv, "CSI_LAT1", -1, "90", NULL);
+
2963 ctl->csi_ny =
+
2964 (int) scan_ctl(filename, argc, argv, "CSI_NY", -1, "180", NULL);
+
2965
+
2966 /* Output of ensemble data... */
+
2967 scan_ctl(filename, argc, argv, "ENS_BASENAME", -1, "-", ctl->ens_basename);
+
2968 ctl->ens_dt_out =
+
2969 scan_ctl(filename, argc, argv, "ENS_DT_OUT", -1, "86400", NULL);
+
2970
+
2971 /* Output of grid data... */
+
2972 scan_ctl(filename, argc, argv, "GRID_BASENAME", -1, "-",
+
2973 ctl->grid_basename);
+
2974 scan_ctl(filename, argc, argv, "GRID_KERNEL", -1, "-", ctl->grid_kernel);
+
2975 scan_ctl(filename, argc, argv, "GRID_GPFILE", -1, "-", ctl->grid_gpfile);
+
2976 ctl->grid_dt_out =
+
2977 scan_ctl(filename, argc, argv, "GRID_DT_OUT", -1, "86400", NULL);
+
2978 ctl->grid_sparse =
+
2979 (int) scan_ctl(filename, argc, argv, "GRID_SPARSE", -1, "0", NULL);
+
2980 ctl->grid_z0 = scan_ctl(filename, argc, argv, "GRID_Z0", -1, "-5", NULL);
+
2981 ctl->grid_z1 = scan_ctl(filename, argc, argv, "GRID_Z1", -1, "85", NULL);
+
2982 ctl->grid_nz =
+
2983 (int) scan_ctl(filename, argc, argv, "GRID_NZ", -1, "1", NULL);
+
2984 ctl->grid_lon0 =
+
2985 scan_ctl(filename, argc, argv, "GRID_LON0", -1, "-180", NULL);
+
2986 ctl->grid_lon1 =
+
2987 scan_ctl(filename, argc, argv, "GRID_LON1", -1, "180", NULL);
+
2988 ctl->grid_nx =
+
2989 (int) scan_ctl(filename, argc, argv, "GRID_NX", -1, "360", NULL);
+
2990 ctl->grid_lat0 =
+
2991 scan_ctl(filename, argc, argv, "GRID_LAT0", -1, "-90", NULL);
+
2992 ctl->grid_lat1 =
+
2993 scan_ctl(filename, argc, argv, "GRID_LAT1", -1, "90", NULL);
+
2994 ctl->grid_ny =
+
2995 (int) scan_ctl(filename, argc, argv, "GRID_NY", -1, "180", NULL);
+
2996 ctl->grid_type =
+
2997 (int) scan_ctl(filename, argc, argv, "GRID_TYPE", -1, "0", NULL);
+
2998
+
2999 /* Output of profile data... */
+
3000 scan_ctl(filename, argc, argv, "PROF_BASENAME", -1, "-",
+
3001 ctl->prof_basename);
+
3002 scan_ctl(filename, argc, argv, "PROF_OBSFILE", -1, "-", ctl->prof_obsfile);
+
3003 ctl->prof_z0 = scan_ctl(filename, argc, argv, "PROF_Z0", -1, "0", NULL);
+
3004 ctl->prof_z1 = scan_ctl(filename, argc, argv, "PROF_Z1", -1, "60", NULL);
+
3005 ctl->prof_nz =
+
3006 (int) scan_ctl(filename, argc, argv, "PROF_NZ", -1, "60", NULL);
+
3007 ctl->prof_lon0 =
+
3008 scan_ctl(filename, argc, argv, "PROF_LON0", -1, "-180", NULL);
+
3009 ctl->prof_lon1 =
+
3010 scan_ctl(filename, argc, argv, "PROF_LON1", -1, "180", NULL);
+
3011 ctl->prof_nx =
+
3012 (int) scan_ctl(filename, argc, argv, "PROF_NX", -1, "360", NULL);
+
3013 ctl->prof_lat0 =
+
3014 scan_ctl(filename, argc, argv, "PROF_LAT0", -1, "-90", NULL);
+
3015 ctl->prof_lat1 =
+
3016 scan_ctl(filename, argc, argv, "PROF_LAT1", -1, "90", NULL);
+
3017 ctl->prof_ny =
+
3018 (int) scan_ctl(filename, argc, argv, "PROF_NY", -1, "180", NULL);
+
3019
+
3020 /* Output of sample data... */
+
3021 scan_ctl(filename, argc, argv, "SAMPLE_BASENAME", -1, "-",
+
3022 ctl->sample_basename);
+
3023 scan_ctl(filename, argc, argv, "SAMPLE_KERNEL", -1, "-",
+
3024 ctl->sample_kernel);
+
3025 scan_ctl(filename, argc, argv, "SAMPLE_OBSFILE", -1, "-",
+
3026 ctl->sample_obsfile);
+
3027 ctl->sample_dx =
+
3028 scan_ctl(filename, argc, argv, "SAMPLE_DX", -1, "50", NULL);
+
3029 ctl->sample_dz =
+
3030 scan_ctl(filename, argc, argv, "SAMPLE_DZ", -1, "-999", NULL);
+
3031
+
3032 /* Output of station data... */
+
3033 scan_ctl(filename, argc, argv, "STAT_BASENAME", -1, "-",
+
3034 ctl->stat_basename);
+
3035 ctl->stat_lon = scan_ctl(filename, argc, argv, "STAT_LON", -1, "0", NULL);
+
3036 ctl->stat_lat = scan_ctl(filename, argc, argv, "STAT_LAT", -1, "0", NULL);
+
3037 ctl->stat_r = scan_ctl(filename, argc, argv, "STAT_R", -1, "50", NULL);
+
3038 ctl->stat_t0 =
+
3039 scan_ctl(filename, argc, argv, "STAT_T0", -1, "-1e100", NULL);
+
3040 ctl->stat_t1 = scan_ctl(filename, argc, argv, "STAT_T1", -1, "1e100", NULL);
+
3041
+
3042 /* Output of VTK data... */
+
3043 scan_ctl(filename, argc, argv, "VTK_BASENAME", -1, "-", ctl->vtk_basename);
+
3044 ctl->vtk_dt_out =
+
3045 scan_ctl(filename, argc, argv, "VTK_DT_OUT", -1, "86400", NULL);
+
3046 ctl->vtk_stride =
+
3047 (int) scan_ctl(filename, argc, argv, "VTK_STRIDE", -1, "1", NULL);
+
3048 ctl->vtk_scale =
+
3049 scan_ctl(filename, argc, argv, "VTK_SCALE", -1, "1.0", NULL);
+
3050 ctl->vtk_offset =
+
3051 scan_ctl(filename, argc, argv, "VTK_OFFSET", -1, "0.0", NULL);
+
3052 ctl->vtk_sphere =
+
3053 (int) scan_ctl(filename, argc, argv, "VTK_SPHERE", -1, "0", NULL);
+
3054}
+
void level_definitions(ctl_t *ctl)
Get predefined pressure levels.
Definition: libtrac.c:1559
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
#define SET_QNT(qnt, name, longname, unit)
Set atmospheric quantity index.
Definition: libtrac.h:609
+
double grid_z0
Lower altitude of gridded data [km].
Definition: libtrac.h:1547
+
int qnt_o3
Quantity array index for ozone vmr.
Definition: libtrac.h:923
+
double csi_lat1
Upper latitude of gridded CSI data [deg].
Definition: libtrac.h:1520
+
char csi_obsfile[LEN]
Observation data file for CSI analysis.
Definition: libtrac.h:1487
+
int qnt_Coh
Quantity array index for OH concentration.
Definition: libtrac.h:1058
+
double wet_depo_ic_a
Coefficient A for wet deposition in cloud (exponential form).
Definition: libtrac.h:1429
+
int met_nc_scale
Check netCDF scaling factors (0=no, 1=yes).
Definition: libtrac.h:1118
+
int qnt_pel
Quantity array index for pressure at equilibrium level (EL).
Definition: libtrac.h:950
+
int csi_nz
Number of altitudes of gridded CSI data.
Definition: libtrac.h:1496
+
double molmass
Molar mass [g/mol].
Definition: libtrac.h:1294
+
int qnt_p
Quantity array index for pressure.
Definition: libtrac.h:902
+
int qnt_Cccl2f2
Quantity array index for CFC-12 concentration.
Definition: libtrac.h:1082
+
char atm_gpfile[LEN]
Gnuplot file for atmospheric data.
Definition: libtrac.h:1462
+
int mixing_nx
Number of longitudes of mixing grid.
Definition: libtrac.h:1357
+
double chemgrid_z1
Upper altitude of chemistry grid [km].
Definition: libtrac.h:1381
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
int qnt_rhop
Quantity array index for particle density.
Definition: libtrac.h:860
+
double csi_obsmin
Minimum observation index to trigger detection.
Definition: libtrac.h:1490
+
int qnt_pcb
Quantity array index for cloud bottom pressure.
Definition: libtrac.h:938
+
double bound_dzs
Boundary conditions surface layer depth [km].
Definition: libtrac.h:1282
+
double csi_lon1
Upper longitude of gridded CSI data [deg].
Definition: libtrac.h:1511
+
int qnt_u
Quantity array index for zonal wind.
Definition: libtrac.h:911
+
double stat_lon
Longitude of station [deg].
Definition: libtrac.h:1625
+
double mixing_trop
Interparcel exchange parameter for mixing in the troposphere.
Definition: libtrac.h:1342
+
double sort_dt
Time step for sorting of particle data [s].
Definition: libtrac.h:1203
+
double mixing_z1
Upper altitude of mixing grid [km].
Definition: libtrac.h:1354
+
double stat_r
Search radius around station [km].
Definition: libtrac.h:1631
+
double wet_depo_bc_a
Coefficient A for wet deposition below cloud (exponential form).
Definition: libtrac.h:1423
+
int csi_ny
Number of latitudes of gridded CSI data.
Definition: libtrac.h:1514
+
int vtk_sphere
Spherical projection for VTK data (0=no, 1=yes).
Definition: libtrac.h:1655
+
double chemgrid_z0
Lower altitude of chemistry grid [km].
Definition: libtrac.h:1378
+
int qnt_iwc
Quantity array index for cloud ice water content.
Definition: libtrac.h:929
+
double chemgrid_lat0
Lower latitude of chemistry grid [deg].
Definition: libtrac.h:1396
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
int qnt_Co1d
Quantity array index for O(1D) concentration.
Definition: libtrac.h:1070
+
int qnt_pw
Quantity array index for partial water vapor pressure.
Definition: libtrac.h:998
+
char prof_basename[LEN]
Basename for profile output file.
Definition: libtrac.h:1574
+
double grid_z1
Upper altitude of gridded data [km].
Definition: libtrac.h:1550
+
char balloon[LEN]
Balloon position filename.
Definition: libtrac.h:1210
+
int qnt_Cccl4
Quantity array index for CFC-10 concentration.
Definition: libtrac.h:1076
+
int met_dp
Stride for pressure levels.
Definition: libtrac.h:1136
+
double met_dt_out
Time step for sampling of meteo data along trajectories [s].
Definition: libtrac.h:1197
+
int qnt_h2o2
Quantity array index for hydrogen peroxide number concentrations.
Definition: libtrac.h:968
+
int qnt_vh
Quantity array index for horizontal wind.
Definition: libtrac.h:1025
+
char species[LEN]
Species.
Definition: libtrac.h:1291
+
int csi_nx
Number of longitudes of gridded CSI data.
Definition: libtrac.h:1505
+
double csi_lat0
Lower latitude of gridded CSI data [deg].
Definition: libtrac.h:1517
+
double turb_dz_trop
Vertical turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1225
+
int qnt_lwc
Quantity array index for cloud liquid water content.
Definition: libtrac.h:926
+
double turb_mesoz
Vertical scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1234
+
int grid_nx
Number of longitudes of gridded data.
Definition: libtrac.h:1553
+
double bound_mass
Boundary conditions mass per particle [kg].
Definition: libtrac.h:1255
+
double grid_lat0
Lower latitude of gridded data [deg].
Definition: libtrac.h:1565
+
int qnt_ts
Quantity array index for surface temperature.
Definition: libtrac.h:866
+
int qnt_plfc
Quantity array index for pressure at level of free convection (LCF).
Definition: libtrac.h:947
+
double grid_lon0
Lower longitude of gridded data [deg].
Definition: libtrac.h:1556
+
int qnt_o1d
Quantity array index for atomic oxygen number concentrations.
Definition: libtrac.h:974
+
int met_tropo_spline
Tropopause interpolation method (0=linear, 1=spline).
Definition: libtrac.h:1188
+
char sample_kernel[LEN]
Kernel data file for sample output.
Definition: libtrac.h:1610
+
int qnt_tvirt
Quantity array index for virtual temperature.
Definition: libtrac.h:1019
+
double chemgrid_lat1
Upper latitude of chemistry grid [deg].
Definition: libtrac.h:1399
+
int met_geopot_sy
Latitudinal smoothing of geopotential heights.
Definition: libtrac.h:1160
+
char grid_gpfile[LEN]
Gnuplot file for gridded data.
Definition: libtrac.h:1535
+
double turb_dx_strat
Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1222
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
int qnt_lsm
Quantity array index for land-sea mask.
Definition: libtrac.h:878
+
int qnt_theta
Quantity array index for potential temperature.
Definition: libtrac.h:1010
+
int met_tropo_nlev_sep
WMO tropopause separation layer depth (number of levels).
Definition: libtrac.h:1179
+
double bound_lat1
Boundary conditions maximum longitude [deg].
Definition: libtrac.h:1270
+
double stat_t1
Stop time for station output [s].
Definition: libtrac.h:1637
+
char csi_kernel[LEN]
Kernel data file for CSI output.
Definition: libtrac.h:1481
+
double turb_dx_trop
Horizontal turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1219
+
int grid_type
Type of grid data files (0=ASCII, 1=netCDF).
Definition: libtrac.h:1571
+
double csi_lon0
Lower longitude of gridded CSI data [deg].
Definition: libtrac.h:1508
+
int qnt_pbl
Quantity array index for boundary layer pressure.
Definition: libtrac.h:884
+
double oh_chem[4]
Coefficients for OH reaction rate (A, E/R or k0, n, kinf, m).
Definition: libtrac.h:1405
+
int qnt_psice
Quantity array index for saturation pressure over ice.
Definition: libtrac.h:995
+
double chemgrid_lon0
Lower longitude of chemistry grid [deg].
Definition: libtrac.h:1387
+
int bound_pbl
Boundary conditions planetary boundary layer (0=no, 1=yes).
Definition: libtrac.h:1288
+
int qnt_mloss_wet
Quantity array index for total mass loss due to wet deposition.
Definition: libtrac.h:983
+
int met_geopot_sx
Longitudinal smoothing of geopotential heights.
Definition: libtrac.h:1157
+
int met_sy
Smoothing for latitudes.
Definition: libtrac.h:1142
+
int qnt_ps
Quantity array index for surface pressure.
Definition: libtrac.h:863
+
char prof_obsfile[LEN]
Observation data file for profile output.
Definition: libtrac.h:1577
+
int isosurf
Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon).
Definition: libtrac.h:1207
+
double bound_p1
Boundary conditions top pressure [hPa].
Definition: libtrac.h:1276
+
int qnt_zs
Quantity array index for surface geopotential height.
Definition: libtrac.h:869
+
int prof_nz
Number of altitudes of gridded profile data.
Definition: libtrac.h:1580
+
double csi_dt_out
Time step for CSI output [s].
Definition: libtrac.h:1484
+
double csi_modmin
Minimum column density to trigger detection [kg/m^2].
Definition: libtrac.h:1493
+
int met_sx
Smoothing for longitudes.
Definition: libtrac.h:1139
+
double chemgrid_lon1
Upper longitude of chemistry grid [deg].
Definition: libtrac.h:1390
+
double turb_mesox
Horizontal scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1231
+
int conv_mix_bot
Lower level for mixing (0=particle pressure, 1=surface).
Definition: libtrac.h:1249
+
char grid_kernel[LEN]
Kernel data file for grid output.
Definition: libtrac.h:1532
+
int met_zfp_prec
ZFP compression precision (for all variables, except z and T).
Definition: libtrac.h:1121
+
double prof_z0
Lower altitude of gridded profile data [km].
Definition: libtrac.h:1583
+
int qnt_w
Quantity array index for vertical velocity.
Definition: libtrac.h:917
+
double bound_vmr
Boundary conditions volume mixing ratio [ppv].
Definition: libtrac.h:1261
+
double met_tropo_pv
Dyanmical tropopause potential vorticity threshold [PVU].
Definition: libtrac.h:1182
+
int prof_nx
Number of longitudes of gridded profile data.
Definition: libtrac.h:1589
+
int qnt_stat
Quantity array index for station flag.
Definition: libtrac.h:848
+
int met_tropo
Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical).
Definition: libtrac.h:1167
+
int qnt_rp
Quantity array index for particle radius.
Definition: libtrac.h:857
+
double mixing_strat
Interparcel exchange parameter for mixing in the stratosphere.
Definition: libtrac.h:1345
+
int qnt_vz
Quantity array index for vertical velocity.
Definition: libtrac.h:1028
+
int qnt_ho2
Quantity array index for hydroperoxyl radical number concentrations.
Definition: libtrac.h:971
+
double csi_z1
Upper altitude of gridded CSI data [km].
Definition: libtrac.h:1502
+
double stat_t0
Start time for station output [s].
Definition: libtrac.h:1634
+
double mixing_z0
Lower altitude of mixing grid [km].
Definition: libtrac.h:1351
+
int qnt_mloss_decay
Quantity array index for total mass loss due to exponential decay.
Definition: libtrac.h:989
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
char csi_basename[LEN]
Basename of CSI data files.
Definition: libtrac.h:1478
+
double dry_depo_dp
Dry deposition surface layer [hPa].
Definition: libtrac.h:1447
+
int qnt_vs
Quantity array index for surface meridional wind.
Definition: libtrac.h:875
+
int qnt_Cco
Quantity array index for CO concentration.
Definition: libtrac.h:1055
+
double vtk_dt_out
Time step for VTK data output [s].
Definition: libtrac.h:1643
+
double conv_dt
Time interval for convection module [s].
Definition: libtrac.h:1243
+
char sample_obsfile[LEN]
Observation data file for sample output.
Definition: libtrac.h:1613
+
int qnt_hno3
Quantity array index for nitric acid vmr.
Definition: libtrac.h:962
+
char grid_basename[LEN]
Basename of grid data files.
Definition: libtrac.h:1529
+
int qnt_h2ot
Quantity array index for tropopause water vapor vmr.
Definition: libtrac.h:896
+
int qnt_rh
Quantity array index for relative humidity over water.
Definition: libtrac.h:1004
+
double bound_lat0
Boundary conditions minimum longitude [deg].
Definition: libtrac.h:1267
+
int met_dx
Stride for longitudes.
Definition: libtrac.h:1130
+
int mixing_ny
Number of latitudes of mixing grid.
Definition: libtrac.h:1366
+
int met_convention
Convention of the data layout.
Definition: libtrac.h:1112
+
int qnt_zeta_d
Quantity array index for diagnosed zeta vertical coordinate.
Definition: libtrac.h:1016
+
int cpl_zeta_and_press_modules
Coupled use of pressure based modules and diabatic advection.
Definition: libtrac.h:806
+
int tracer_chem
Switch for first order tracer chemistry module (0=off, 1=on).
Definition: libtrac.h:1417
+
double dt_mod
Time step of simulation [s].
Definition: libtrac.h:1103
+
int qnt_tnat
Quantity array index for T_NAT.
Definition: libtrac.h:1043
+
int qnt_tice
Quantity array index for T_ice.
Definition: libtrac.h:1037
+
int qnt_zg
Quantity array index for geopotential height.
Definition: libtrac.h:899
+
double vtk_offset
Vertical offset for VTK data [km].
Definition: libtrac.h:1652
+
int qnt_v
Quantity array index for meridional wind.
Definition: libtrac.h:914
+
int qnt_mloss_dry
Quantity array index for total mass loss due to dry deposition.
Definition: libtrac.h:986
+
double bound_vmr_trend
Boundary conditions volume mixing ratio trend [ppv/s].
Definition: libtrac.h:1264
+
int met_cloud
Cloud data (0=none, 1=LWC+IWC, 2=RWC+SWC, 3=all).
Definition: libtrac.h:1191
+
int qnt_oh
Quantity array index for hydroxyl number concentrations.
Definition: libtrac.h:965
+
int qnt_Ch
Quantity array index for H concentration.
Definition: libtrac.h:1061
+
int oh_chem_reaction
Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular).
Definition: libtrac.h:1402
+
int qnt_h2o
Quantity array index for water vapor vmr.
Definition: libtrac.h:920
+
int prof_ny
Number of latitudes of gridded profile data.
Definition: libtrac.h:1598
+
int qnt_rhice
Quantity array index for relative humidity over ice.
Definition: libtrac.h:1007
+
int qnt_rho
Quantity array index for density of air.
Definition: libtrac.h:908
+
double sample_dz
Layer depth for sample output [km].
Definition: libtrac.h:1619
+
double wet_depo_ic_h[3]
Coefficients for wet deposition in cloud (Henry's law: Hb, Cb, pH).
Definition: libtrac.h:1435
+
double tdec_strat
Life time of particles in the stratosphere [s].
Definition: libtrac.h:1300
+
int qnt_us
Quantity array index for surface zonal wind.
Definition: libtrac.h:872
+
double grid_lon1
Upper longitude of gridded data [deg].
Definition: libtrac.h:1559
+
int conv_mix_top
Upper level for mixing (0=particle pressure, 1=EL).
Definition: libtrac.h:1252
+
int qnt_Cn2o
Quantity array index for N2O concentration.
Definition: libtrac.h:1085
+
int qnt_Cccl3f
Quantity array index for CFC-11 concentration.
Definition: libtrac.h:1079
+
char atm_basename[LEN]
Basename of atmospheric data files.
Definition: libtrac.h:1459
+
double met_cloud_min
Minimum cloud ice water content [kg/kg].
Definition: libtrac.h:1194
+
double mixing_lat0
Lower latitude of mixing grid [deg].
Definition: libtrac.h:1369
+
int qnt_pt
Quantity array index for tropopause pressure.
Definition: libtrac.h:887
+
int qnt_cl
Quantity array index for total column cloud water.
Definition: libtrac.h:941
+
int advect
Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta).
Definition: libtrac.h:1213
+
double prof_z1
Upper altitude of gridded profile data [km].
Definition: libtrac.h:1586
+
int reflect
Reflection of particles at top and bottom boundary (0=no, 1=yes).
Definition: libtrac.h:1216
+
int qnt_t
Quantity array index for temperature.
Definition: libtrac.h:905
+
int atm_filter
Time filter for atmospheric data output (0=none, 1=missval, 2=remove).
Definition: libtrac.h:1468
+
int kpp_chem
Switch for KPP chemistry module (0=off, 1=on).
Definition: libtrac.h:1414
+
double met_tropo_lapse
WMO tropopause lapse rate [K/km].
Definition: libtrac.h:1170
+
char ens_basename[LEN]
Basename of ensemble data file.
Definition: libtrac.h:1523
+
double wet_depo_pre[2]
Coefficients for precipitation calculation.
Definition: libtrac.h:1420
+
double csi_z0
Lower altitude of gridded CSI data [km].
Definition: libtrac.h:1499
+
int qnt_lapse
Quantity array index for lapse rate.
Definition: libtrac.h:1022
+
double stat_lat
Latitude of station [deg].
Definition: libtrac.h:1628
+
int qnt_Cho2
Quantity array index for HO2 concentration.
Definition: libtrac.h:1064
+
double wet_depo_bc_h[2]
Coefficients for wet deposition below cloud (Henry's law: Hb, Cb).
Definition: libtrac.h:1438
+
int grid_ny
Number of latitudes of gridded data.
Definition: libtrac.h:1562
+
int qnt_Csf6
Quantity array index for SF6 concentration.
Definition: libtrac.h:1088
+
int qnt_Ch2o
Quantity array index for H2O concentration.
Definition: libtrac.h:1049
+
double met_detrend
FWHM of horizontal Gaussian used for detrending [km].
Definition: libtrac.h:1148
+
double bound_dps
Boundary conditions surface layer depth [hPa].
Definition: libtrac.h:1279
+
int chemgrid_nz
Number of altitudes of chemistry grid.
Definition: libtrac.h:1375
+
int qnt_cape
Quantity array index for convective available potential energy (CAPE).
Definition: libtrac.h:953
+
double bound_mass_trend
Boundary conditions mass per particle trend [kg/s].
Definition: libtrac.h:1258
+
int mixing_nz
Number of altitudes of mixing grid.
Definition: libtrac.h:1348
+
int qnt_o3c
Quantity array index for total column ozone.
Definition: libtrac.h:959
+
double bound_p0
Boundary conditions bottom pressure [hPa].
Definition: libtrac.h:1273
+
double mixing_lon0
Lower longitude of mixing grid [deg].
Definition: libtrac.h:1360
+
int qnt_Co3
Quantity array index for O3 concentration.
Definition: libtrac.h:1052
+
int qnt_tsts
Quantity array index for T_STS.
Definition: libtrac.h:1040
+
int grid_nz
Number of altitudes of gridded data.
Definition: libtrac.h:1544
+
double ens_dt_out
Time step for ensemble output [s].
Definition: libtrac.h:1526
+
char sample_basename[LEN]
Basename of sample data file.
Definition: libtrac.h:1607
+
int atm_stride
Particle index stride for atmospheric data files.
Definition: libtrac.h:1471
+
int met_relhum
Try to read relative humidity (0=no, 1=yes).
Definition: libtrac.h:1163
+
double mixing_lat1
Upper latitude of mixing grid [deg].
Definition: libtrac.h:1372
+
double atm_dt_out
Time step for atmospheric data output [s].
Definition: libtrac.h:1465
+
double prof_lat1
Upper latitude of gridded profile data [deg].
Definition: libtrac.h:1604
+
double psc_h2o
H2O volume mixing ratio for PSC analysis.
Definition: libtrac.h:1453
+
int met_sp
Smoothing for pressure levels.
Definition: libtrac.h:1145
+
double prof_lon0
Lower longitude of gridded profile data [deg].
Definition: libtrac.h:1592
+
double met_tropo_lapse_sep
WMO tropopause separation layer lapse rate [K/km].
Definition: libtrac.h:1176
+
int chemgrid_nx
Number of longitudes of chemistry grid.
Definition: libtrac.h:1384
+
int qnt_pct
Quantity array index for cloud top pressure.
Definition: libtrac.h:935
+
int qnt_psat
Quantity array index for saturation pressure over water.
Definition: libtrac.h:992
+
double prof_lat0
Lower latitude of gridded profile data [deg].
Definition: libtrac.h:1601
+
int qnt_cin
Quantity array index for convective inhibition (CIN).
Definition: libtrac.h:956
+
double psc_hno3
HNO3 volume mixing ratio for PSC analysis.
Definition: libtrac.h:1456
+
double prof_lon1
Upper longitude of gridded profile data [deg].
Definition: libtrac.h:1595
+
int h2o2_chem_reaction
Reaction type for H2O2 chemistry (0=none, 1=SO2).
Definition: libtrac.h:1411
+
int qnt_Co3p
Quantity array index for O(3P) concentration.
Definition: libtrac.h:1073
+
double wet_depo_bc_ret_ratio
Coefficients for wet deposition below cloud: retention ratio.
Definition: libtrac.h:1444
+
int chemgrid_ny
Number of latitudes of chemistry grid.
Definition: libtrac.h:1393
+
int grid_sparse
Sparse output in grid data files (0=no, 1=yes).
Definition: libtrac.h:1541
+
char vtk_basename[LEN]
Basename of VTK data files.
Definition: libtrac.h:1640
+
double dry_depo_vdep
Dry deposition velocity [m/s].
Definition: libtrac.h:1450
+
int qnt_tt
Quantity array index for tropopause temperature.
Definition: libtrac.h:890
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
double met_zfp_tol_t
ZFP compression tolerance (for temperature).
Definition: libtrac.h:1124
+
double mixing_dt
Time interval for mixing [s].
Definition: libtrac.h:1339
+
int qnt_mloss_h2o2
Quantity array index for total mass loss due to H2O2 chemistry.
Definition: libtrac.h:980
+
double met_zfp_tol_z
ZFP compression tolerance (for geopotential height).
Definition: libtrac.h:1127
+
double vtk_scale
Vertical scaling factor for VTK data.
Definition: libtrac.h:1649
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
int qnt_pv
Quantity array index for potential vorticity.
Definition: libtrac.h:1031
+
int qnt_mloss_oh
Quantity array index for total mass loss due to OH chemistry.
Definition: libtrac.h:977
+
int qnt_Ch2o2
Quantity array index for H2O2 concentration.
Definition: libtrac.h:1067
+
int qnt_sst
Quantity array index for sea surface temperature.
Definition: libtrac.h:881
+
double mixing_lon1
Upper longitude of mixing grid [deg].
Definition: libtrac.h:1363
+
double wet_depo_ic_ret_ratio
Coefficients for wet deposition in cloud: retention ratio.
Definition: libtrac.h:1441
+
int qnt_sh
Quantity array index for specific humidity.
Definition: libtrac.h:1001
+
double wet_depo_ic_b
Coefficient B for wet deposition in cloud (exponential form).
Definition: libtrac.h:1432
+
double wet_depo_bc_b
Coefficient B for wet deposition below cloud (exponential form).
Definition: libtrac.h:1426
+
int met_dy
Stride for latitudes.
Definition: libtrac.h:1133
+
int qnt_Cx
Quantity array index for trace species x concentration.
Definition: libtrac.h:1046
+
double turb_dz_strat
Vertical turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1228
+
double bound_zetas
Boundary conditions surface layer zeta [K].
Definition: libtrac.h:1285
+
int met_tropo_nlev
WMO tropopause layer depth (number of levels).
Definition: libtrac.h:1173
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
double met_tropo_theta
Dynamical tropopause potential temperature threshold [K].
Definition: libtrac.h:1185
+
char qnt_longname[NQ][LEN]
Quantity long names.
Definition: libtrac.h:833
+
double tdec_trop
Life time of particles in the troposphere [s].
Definition: libtrac.h:1297
+
double sample_dx
Horizontal radius for sample output [km].
Definition: libtrac.h:1616
+
int vtk_stride
Particle index stride for VTK data.
Definition: libtrac.h:1646
+
char stat_basename[LEN]
Basename of station data file.
Definition: libtrac.h:1622
+
double grid_lat1
Upper latitude of gridded data [deg].
Definition: libtrac.h:1568
+
int qnt_zt
Quantity array index for tropopause geopotential height.
Definition: libtrac.h:893
+
int conv_mix
Type of vertical mixing (0=pressure, 1=density).
Definition: libtrac.h:1246
+
int qnt_cc
Quantity array index for cloud cover.
Definition: libtrac.h:932
+
int qnt_plcl
Quantity array index for pressure at lifted condensation level (LCL).
Definition: libtrac.h:944
+
double grid_dt_out
Time step for gridded data output [s].
Definition: libtrac.h:1538
+
int qnt_tdew
Quantity array index for dew point temperature.
Definition: libtrac.h:1034
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ read_kernel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_kernel (const char * filename,
double kz[EP],
double kw[EP],
int * nk 
)
+
+ +

Read kernel data file.

+ +

Definition at line 3058 of file libtrac.c.

+
3062 {
+
3063
+
3064 /* Write info... */
+
3065 LOG(1, "Read kernel function: %s", filename);
+
3066
+
3067 /* Open file... */
+
3068 FILE *in;
+
3069 if (!(in = fopen(filename, "r")))
+
3070 ERRMSG("Cannot open file!");
+
3071
+
3072 /* Read data... */
+
3073 char line[LEN];
+
3074 int n = 0;
+
3075 while (fgets(line, LEN, in))
+
3076 if (sscanf(line, "%lg %lg", &kz[n], &kw[n]) == 2) {
+
3077 if (n > 0 && kz[n] < kz[n - 1])
+
3078 ERRMSG("Height levels must be ascending!");
+
3079 if ((++n) >= EP)
+
3080 ERRMSG("Too many height levels!");
+
3081 }
+
3082
+
3083 /* Close file... */
+
3084 fclose(in);
+
3085
+
3086 /* Check number of data points... */
+
3087 *nk = n;
+
3088 if (n < 2)
+
3089 ERRMSG("Not enough height levels!");
+
3090
+
3091 /* Normalize kernel function... */
+
3092 double kmax = gsl_stats_max(kw, 1, (size_t) n);
+
3093 for (int iz = 0; iz < n; iz++)
+
3094 kw[iz] /= kmax;
+
3095}
+
+
+
+ +

◆ read_met()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int read_met (char * filename,
ctl_tctl,
clim_tclim,
met_tmet 
)
+
+ +

Read meteo data file.

+ +

Definition at line 3099 of file libtrac.c.

+
3103 {
+
3104
+
3105 /* Write info... */
+
3106 LOG(1, "Read meteo data: %s", filename);
+
3107
+
3108 /* Read netCDF data... */
+
3109 if (ctl->met_type == 0) {
+
3110
+
3111 int ncid;
+
3112
+
3113 /* Open netCDF file... */
+
3114 if (nc__open(filename, ctl->read_mode, &ctl->chunkszhint, &ncid) !=
+
3115 NC_NOERR) {
+
3116 WARN("Cannot open file!");
+
3117 return 0;
+
3118 }
+
3119
+
3120 /* Read coordinates of meteo data... */
+
3121 read_met_grid(filename, ncid, ctl, met);
+
3122
+
3123 /* Read meteo data on vertical levels... */
+
3124 read_met_levels(ncid, ctl, met);
+
3125
+
3126 /* Extrapolate data for lower boundary... */
+ +
3128
+
3129 /* Read surface data... */
+
3130 read_met_surface(ncid, met, ctl);
+
3131
+
3132 /* Create periodic boundary conditions... */
+
3133 read_met_periodic(met);
+
3134
+
3135 /* Downsampling... */
+
3136 read_met_sample(ctl, met);
+
3137
+
3138 /* Calculate geopotential heights... */
+
3139 read_met_geopot(ctl, met);
+
3140
+
3141 /* Calculate potential vorticity... */
+
3142 read_met_pv(met);
+
3143
+
3144 /* Calculate boundary layer data... */
+
3145 read_met_pbl(met);
+
3146
+
3147 /* Calculate tropopause data... */
+
3148 read_met_tropo(ctl, clim, met);
+
3149
+
3150 /* Calculate cloud properties... */
+
3151 read_met_cloud(ctl, met);
+
3152
+
3153 /* Calculate convective available potential energy... */
+
3154 read_met_cape(clim, met);
+
3155
+
3156 /* Calculate total column ozone... */
+
3157 read_met_ozone(met);
+
3158
+
3159 /* Detrending... */
+
3160 read_met_detrend(ctl, met);
+
3161
+
3162 /* Check meteo data and smooth zeta profiles ... */
+
3163 if (ctl->vert_coord_ap == 1)
+ +
3165
+
3166 /* Close file... */
+
3167 NC(nc_close(ncid));
+
3168 }
+
3169
+
3170 /* Read binary data... */
+
3171 else if (ctl->met_type >= 1 && ctl->met_type <= 4) {
+
3172
+
3173 FILE *in;
+
3174
+
3175 double r;
+
3176
+
3177 int year, mon, day, hour, min, sec;
+
3178
+
3179 /* Set timer... */
+
3180 SELECT_TIMER("READ_MET_BIN", "INPUT", NVTX_READ);
+
3181
+
3182 /* Open file... */
+
3183 if (!(in = fopen(filename, "r"))) {
+
3184 WARN("Cannot open file!");
+
3185 return 0;
+
3186 }
+
3187
+
3188 /* Check type of binary data... */
+
3189 int met_type;
+
3190 FREAD(&met_type, int,
+
3191 1,
+
3192 in);
+
3193 if (met_type != ctl->met_type)
+
3194 ERRMSG("Wrong MET_TYPE of binary data!");
+
3195
+
3196 /* Check version of binary data... */
+
3197 int version;
+
3198 FREAD(&version, int,
+
3199 1,
+
3200 in);
+
3201 if (version != 100 && version != 101)
+
3202 ERRMSG("Wrong version of binary data!");
+
3203
+
3204 /* Read time... */
+
3205 FREAD(&met->time, double,
+
3206 1,
+
3207 in);
+
3208 jsec2time(met->time, &year, &mon, &day, &hour, &min, &sec, &r);
+
3209 LOG(2, "Time: %.2f (%d-%02d-%02d, %02d:%02d UTC)",
+
3210 met->time, year, mon, day, hour, min);
+
3211 if (year < 1900 || year > 2100 || mon < 1 || mon > 12
+
3212 || day < 1 || day > 31 || hour < 0 || hour > 23)
+
3213 ERRMSG("Error while reading time!");
+
3214
+
3215 /* Read dimensions... */
+
3216 FREAD(&met->nx, int,
+
3217 1,
+
3218 in);
+
3219 LOG(2, "Number of longitudes: %d", met->nx);
+
3220 if (met->nx < 2 || met->nx > EX)
+
3221 ERRMSG("Number of longitudes out of range!");
+
3222
+
3223 FREAD(&met->ny, int,
+
3224 1,
+
3225 in);
+
3226 LOG(2, "Number of latitudes: %d", met->ny);
+
3227 if (met->ny < 2 || met->ny > EY)
+
3228 ERRMSG("Number of latitudes out of range!");
+
3229
+
3230 FREAD(&met->np, int,
+
3231 1,
+
3232 in);
+
3233 LOG(2, "Number of levels: %d", met->np);
+
3234 if (met->np < 2 || met->np > EP)
+
3235 ERRMSG("Number of levels out of range!");
+
3236
+
3237 /* Read grid... */
+
3238 FREAD(met->lon, double,
+
3239 (size_t) met->nx,
+
3240 in);
+
3241 LOG(2, "Longitudes: %g, %g ... %g deg",
+
3242 met->lon[0], met->lon[1], met->lon[met->nx - 1]);
+
3243
+
3244 FREAD(met->lat, double,
+
3245 (size_t) met->ny,
+
3246 in);
+
3247 LOG(2, "Latitudes: %g, %g ... %g deg",
+
3248 met->lat[0], met->lat[1], met->lat[met->ny - 1]);
+
3249
+
3250 FREAD(met->p, double,
+
3251 (size_t) met->np,
+
3252 in);
+
3253 LOG(2, "Altitude levels: %g, %g ... %g km",
+
3254 Z(met->p[0]), Z(met->p[1]), Z(met->p[met->np - 1]));
+
3255 LOG(2, "Pressure levels: %g, %g ... %g hPa",
+
3256 met->p[0], met->p[1], met->p[met->np - 1]);
+
3257
+
3258 /* Read surface data... */
+
3259 read_met_bin_2d(in, met, met->ps, "PS");
+
3260 read_met_bin_2d(in, met, met->ts, "TS");
+
3261 read_met_bin_2d(in, met, met->zs, "ZS");
+
3262 read_met_bin_2d(in, met, met->us, "US");
+
3263 read_met_bin_2d(in, met, met->vs, "VS");
+
3264 if (version == 101) {
+
3265 read_met_bin_2d(in, met, met->lsm, "LSM");
+
3266 read_met_bin_2d(in, met, met->sst, "SST");
+
3267 }
+
3268 read_met_bin_2d(in, met, met->pbl, "PBL");
+
3269 read_met_bin_2d(in, met, met->pt, "PT");
+
3270 read_met_bin_2d(in, met, met->tt, "TT");
+
3271 read_met_bin_2d(in, met, met->zt, "ZT");
+
3272 read_met_bin_2d(in, met, met->h2ot, "H2OT");
+
3273 read_met_bin_2d(in, met, met->pct, "PCT");
+
3274 read_met_bin_2d(in, met, met->pcb, "PCB");
+
3275 read_met_bin_2d(in, met, met->cl, "CL");
+
3276 read_met_bin_2d(in, met, met->plcl, "PLCL");
+
3277 read_met_bin_2d(in, met, met->plfc, "PLFC");
+
3278 read_met_bin_2d(in, met, met->pel, "PEL");
+
3279 read_met_bin_2d(in, met, met->cape, "CAPE");
+
3280 read_met_bin_2d(in, met, met->cin, "CIN");
+
3281
+
3282 /* Read level data... */
+
3283 read_met_bin_3d(in, ctl, met, met->z, "Z");
+
3284 read_met_bin_3d(in, ctl, met, met->t, "T");
+
3285 read_met_bin_3d(in, ctl, met, met->u, "U");
+
3286 read_met_bin_3d(in, ctl, met, met->v, "V");
+
3287 read_met_bin_3d(in, ctl, met, met->w, "W");
+
3288 read_met_bin_3d(in, ctl, met, met->pv, "PV");
+
3289 read_met_bin_3d(in, ctl, met, met->h2o, "H2O");
+
3290 read_met_bin_3d(in, ctl, met, met->o3, "O3");
+
3291 read_met_bin_3d(in, ctl, met, met->lwc, "LWC");
+
3292 read_met_bin_3d(in, ctl, met, met->iwc, "IWC");
+
3293 if (version == 101)
+
3294 read_met_bin_3d(in, ctl, met, met->cc, "CC");
+
3295
+
3296 /* Read final flag... */
+
3297 int final;
+
3298 FREAD(&final, int,
+
3299 1,
+
3300 in);
+
3301 if (final != 999)
+
3302 ERRMSG("Error while reading binary data!");
+
3303
+
3304 /* Close file... */
+
3305 fclose(in);
+
3306 }
+
3307
+
3308 /* Not implemented... */
+
3309 else
+
3310 ERRMSG("MET_TYPE not implemented!");
+
3311
+
3312 /* Copy wind data to cache... */
+
3313#ifdef UVW
+
3314#pragma omp parallel for default(shared) collapse(2)
+
3315 for (int ix = 0; ix < met->nx; ix++)
+
3316 for (int iy = 0; iy < met->ny; iy++)
+
3317 for (int ip = 0; ip < met->np; ip++) {
+
3318 met->uvw[ix][iy][ip][0] = met->u[ix][iy][ip];
+
3319 met->uvw[ix][iy][ip][1] = met->v[ix][iy][ip];
+
3320 met->uvw[ix][iy][ip][2] = met->w[ix][iy][ip];
+
3321 }
+
3322#endif
+
3323
+
3324 /* Return success... */
+
3325 return 1;
+
3326}
+
void read_met_bin_2d(FILE *in, met_t *met, float var[EX][EY], char *varname)
Read 2-D meteo variable.
Definition: libtrac.c:3330
+
void read_met_extrapolate(met_t *met)
Extrapolate meteo data at lower boundary.
Definition: libtrac.c:3692
+
void read_met_levels(int ncid, ctl_t *ctl, met_t *met)
Read meteo data on vertical levels.
Definition: libtrac.c:3969
+
void read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname)
Read 3-D meteo variable.
Definition: libtrac.c:3359
+
void read_met_periodic(met_t *met)
Create meteo data with periodic boundary conditions.
Definition: libtrac.c:4576
+
void read_met_pbl(met_t *met)
Calculate pressure of the boundary layer.
Definition: libtrac.c:4505
+
void read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met)
Calculate tropopause data.
Definition: libtrac.c:5009
+
void read_met_sample(ctl_t *ctl, met_t *met)
Downsampling of meteo data.
Definition: libtrac.c:4763
+
void read_met_monotonize(met_t *met)
Smooth vertical zeta and pressure profiles.
Definition: libtrac.c:4174
+
void read_met_detrend(ctl_t *ctl, met_t *met)
Apply detrending method to temperature and winds.
Definition: libtrac.c:3588
+
void read_met_cloud(ctl_t *ctl, met_t *met)
Calculate cloud properties.
Definition: libtrac.c:3538
+
void read_met_ozone(met_t *met)
Calculate total column ozone.
Definition: libtrac.c:4735
+
void read_met_surface(int ncid, met_t *met, ctl_t *ctl)
Read surface data.
Definition: libtrac.c:4903
+
void read_met_pv(met_t *met)
Calculate potential vorticity.
Definition: libtrac.c:4629
+
void read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met)
Read coordinates of meteo data.
Definition: libtrac.c:3850
+
void read_met_cape(clim_t *clim, met_t *met)
Calculate convective available potential energy.
Definition: libtrac.c:3428
+
void read_met_geopot(ctl_t *ctl, met_t *met)
Calculate geopotential heights.
Definition: libtrac.c:3730
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
int read_mode
Read mode for nc__open.
Definition: libtrac.h:824
+
size_t chunkszhint
Chunk size hint for nc__open.
Definition: libtrac.h:821
+
float zt[EX][EY]
Tropopause geopotential height [km].
Definition: libtrac.h:1888
+
float sst[EX][EY]
Sea surface temperature [K].
Definition: libtrac.h:1876
+
float h2o[EX][EY][EP]
Water vapor volume mixing ratio [1].
Definition: libtrac.h:1945
+
float cape[EX][EY]
Convective available potential energy [J/kg].
Definition: libtrac.h:1912
+
float w[EX][EY][EP]
Vertical velocity [hPa/s].
Definition: libtrac.h:1939
+
float pct[EX][EY]
Cloud top pressure [hPa].
Definition: libtrac.h:1894
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
float lwc[EX][EY][EP]
Cloud liquid water content [kg/kg].
Definition: libtrac.h:1951
+
float us[EX][EY]
Surface zonal wind [m/s].
Definition: libtrac.h:1867
+
float zs[EX][EY]
Surface geopotential height [km].
Definition: libtrac.h:1864
+
float o3[EX][EY][EP]
Ozone volume mixing ratio [1].
Definition: libtrac.h:1948
+
float cc[EX][EY][EP]
Cloud cover [1].
Definition: libtrac.h:1957
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
float ts[EX][EY]
Surface temperature [K].
Definition: libtrac.h:1861
+
float u[EX][EY][EP]
Zonal wind [m/s].
Definition: libtrac.h:1927
+
float pcb[EX][EY]
Cloud bottom pressure [hPa].
Definition: libtrac.h:1897
+
float pel[EX][EY]
Pressure at equilibrium level [hPa].
Definition: libtrac.h:1909
+
float cin[EX][EY]
Convective inhibition [J/kg].
Definition: libtrac.h:1915
+
float plcl[EX][EY]
Pressure at lifted condensation level (LCL) [hPa].
Definition: libtrac.h:1903
+
float pt[EX][EY]
Tropopause pressure [hPa].
Definition: libtrac.h:1882
+
float tt[EX][EY]
Tropopause temperature [K].
Definition: libtrac.h:1885
+
float pbl[EX][EY]
Boundary layer pressure [hPa].
Definition: libtrac.h:1879
+
float vs[EX][EY]
Surface meridional wind [m/s].
Definition: libtrac.h:1870
+
float z[EX][EY][EP]
Geopotential height [km].
Definition: libtrac.h:1921
+
float v[EX][EY][EP]
Meridional wind [m/s].
Definition: libtrac.h:1933
+
float lsm[EX][EY]
Land-sea mask [1].
Definition: libtrac.h:1873
+
float iwc[EX][EY][EP]
Cloud ice water content [kg/kg].
Definition: libtrac.h:1954
+
float h2ot[EX][EY]
Tropopause water vapor vmr [ppv].
Definition: libtrac.h:1891
+
float pv[EX][EY][EP]
Potential vorticity [PVU].
Definition: libtrac.h:1942
+
float cl[EX][EY]
Total column cloud water [kg/m^2].
Definition: libtrac.h:1900
+
float plfc[EX][EY]
Pressure at level of free convection (LFC) [hPa].
Definition: libtrac.h:1906
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +

◆ read_met_bin_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_bin_2d (FILE * out,
met_tmet,
float var[EX][EY],
char * varname 
)
+
+ +

Read 2-D meteo variable.

+ +

Definition at line 3330 of file libtrac.c.

+
3334 {
+
3335
+
3336 float *help;
+
3337
+
3338 /* Allocate... */
+
3339 ALLOC(help, float,
+
3340 EX * EY);
+
3341
+
3342 /* Read uncompressed... */
+
3343 LOG(2, "Read 2-D variable: %s (uncompressed)", varname);
+
3344 FREAD(help, float,
+
3345 (size_t) (met->nx * met->ny),
+
3346 in);
+
3347
+
3348 /* Copy data... */
+
3349 for (int ix = 0; ix < met->nx; ix++)
+
3350 for (int iy = 0; iy < met->ny; iy++)
+
3351 var[ix][iy] = help[ARRAY_2D(ix, iy, met->ny)];
+
3352
+
3353 /* Free... */
+
3354 free(help);
+
3355}
+
#define ARRAY_2D(ix, iy, ny)
Get 2-D array index.
Definition: libtrac.h:258
+
+
+
+ +

◆ read_met_bin_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_bin_3d (FILE * in,
ctl_tctl,
met_tmet,
float var[EX][EY][EP],
char * varname 
)
+
+ +

Read 3-D meteo variable.

+ +

Definition at line 3359 of file libtrac.c.

+
3364 {
+
3365
+
3366 float *help;
+
3367
+
3368 /* Allocate... */
+
3369 ALLOC(help, float,
+
3370 EX * EY * EP);
+
3371
+
3372 /* Read uncompressed data... */
+
3373 if (ctl->met_type == 1) {
+
3374 LOG(2, "Read 3-D variable: %s (uncompressed)", varname);
+
3375 FREAD(help, float,
+
3376 (size_t) (met->nx * met->ny * met->np),
+
3377 in);
+
3378 }
+
3379
+
3380 /* Read packed data... */
+
3381 else if (ctl->met_type == 2)
+
3382 compress_pack(varname, help, (size_t) (met->ny * met->nx),
+
3383 (size_t) met->np, 1, in);
+
3384
+
3385 /* Read zfp data... */
+
3386 else if (ctl->met_type == 3) {
+
3387#ifdef ZFP
+
3388 int precision;
+
3389 FREAD(&precision, int,
+
3390 1,
+
3391 in);
+
3392
+
3393 double tolerance;
+
3394 FREAD(&tolerance, double,
+
3395 1,
+
3396 in);
+
3397
+
3398 compress_zfp(varname, help, met->np, met->ny, met->nx, precision,
+
3399 tolerance, 1, in);
+
3400#else
+
3401 ERRMSG("MPTRAC was compiled without zfp compression!");
+
3402#endif
+
3403 }
+
3404
+
3405 /* Read zstd data... */
+
3406 else if (ctl->met_type == 4) {
+
3407#ifdef ZSTD
+
3408 compress_zstd(varname, help, (size_t) (met->np * met->ny * met->nx), 1,
+
3409 in);
+
3410#else
+
3411 ERRMSG("MPTRAC was compiled without zstd compression!");
+
3412#endif
+
3413 }
+
3414
+
3415 /* Copy data... */
+
3416#pragma omp parallel for default(shared) collapse(2)
+
3417 for (int ix = 0; ix < met->nx; ix++)
+
3418 for (int iy = 0; iy < met->ny; iy++)
+
3419 for (int ip = 0; ip < met->np; ip++)
+
3420 var[ix][iy][ip] = help[ARRAY_3D(ix, iy, met->ny, ip, met->np)];
+
3421
+
3422 /* Free... */
+
3423 free(help);
+
3424}
+
void compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout)
Pack or unpack array.
Definition: libtrac.c:413
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_cape()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_cape (clim_tclim,
met_tmet 
)
+
+ +

Calculate convective available potential energy.

+ +

Definition at line 3428 of file libtrac.c.

+
3430 {
+
3431
+
3432 /* Set timer... */
+
3433 SELECT_TIMER("READ_MET_CAPE", "METPROC", NVTX_READ);
+
3434 LOG(2, "Calculate CAPE...");
+
3435
+
3436 /* Vertical spacing (about 100 m)... */
+
3437 const double pfac = 1.01439, dz0 = RI / MA / G0 * log(pfac);
+
3438
+
3439 /* Loop over columns... */
+
3440#pragma omp parallel for default(shared) collapse(2)
+
3441 for (int ix = 0; ix < met->nx; ix++)
+
3442 for (int iy = 0; iy < met->ny; iy++) {
+
3443
+
3444 /* Get potential temperature and water vapor vmr at lowest 50 hPa... */
+
3445 int n = 0;
+
3446 double h2o = 0, t, theta = 0;
+
3447 double pbot = GSL_MIN(met->ps[ix][iy], met->p[0]);
+
3448 double ptop = pbot - 50.;
+
3449 for (int ip = 0; ip < met->np; ip++) {
+
3450 if (met->p[ip] <= pbot) {
+
3451 theta += THETA(met->p[ip], met->t[ix][iy][ip]);
+
3452 h2o += met->h2o[ix][iy][ip];
+
3453 n++;
+
3454 }
+
3455 if (met->p[ip] < ptop && n > 0)
+
3456 break;
+
3457 }
+
3458 theta /= n;
+
3459 h2o /= n;
+
3460
+
3461 /* Cannot compute anything if water vapor is missing... */
+
3462 met->plcl[ix][iy] = GSL_NAN;
+
3463 met->plfc[ix][iy] = GSL_NAN;
+
3464 met->pel[ix][iy] = GSL_NAN;
+
3465 met->cape[ix][iy] = GSL_NAN;
+
3466 met->cin[ix][iy] = GSL_NAN;
+
3467 if (h2o <= 0)
+
3468 continue;
+
3469
+
3470 /* Find lifted condensation level (LCL)... */
+
3471 ptop = P(20.);
+
3472 pbot = met->ps[ix][iy];
+
3473 do {
+
3474 met->plcl[ix][iy] = (float) (0.5 * (pbot + ptop));
+
3475 t = theta / pow(1000. / met->plcl[ix][iy], 0.286);
+
3476 if (RH(met->plcl[ix][iy], t, h2o) > 100.)
+
3477 ptop = met->plcl[ix][iy];
+
3478 else
+
3479 pbot = met->plcl[ix][iy];
+
3480 } while (pbot - ptop > 0.1);
+
3481
+
3482 /* Calculate CIN up to LCL... */
+ +
3484 double dcape, dz, h2o_env, t_env;
+
3485 double p = met->ps[ix][iy];
+
3486 met->cape[ix][iy] = met->cin[ix][iy] = 0;
+
3487 do {
+
3488 dz = dz0 * TVIRT(t, h2o);
+
3489 p /= pfac;
+
3490 t = theta / pow(1000. / p, 0.286);
+
3491 intpol_met_space_3d(met, met->t, p, met->lon[ix], met->lat[iy],
+
3492 &t_env, ci, cw, 1);
+
3493 intpol_met_space_3d(met, met->h2o, p, met->lon[ix], met->lat[iy],
+
3494 &h2o_env, ci, cw, 0);
+
3495 dcape = 1e3 * G0 * (TVIRT(t, h2o) - TVIRT(t_env, h2o_env)) /
+
3496 TVIRT(t_env, h2o_env) * dz;
+
3497 if (dcape < 0)
+
3498 met->cin[ix][iy] += fabsf((float) dcape);
+
3499 } while (p > met->plcl[ix][iy]);
+
3500
+
3501 /* Calculate level of free convection (LFC), equilibrium level (EL),
+
3502 and convective available potential energy (CAPE)... */
+
3503 dcape = 0;
+
3504 p = met->plcl[ix][iy];
+
3505 t = theta / pow(1000. / p, 0.286);
+
3506 ptop = 0.75 * clim_tropo(clim, met->time, met->lat[iy]);
+
3507 do {
+
3508 dz = dz0 * TVIRT(t, h2o);
+
3509 p /= pfac;
+
3510 t -= lapse_rate(t, h2o) * dz;
+
3511 double psat = PSAT(t);
+
3512 h2o = psat / (p - (1. - EPS) * psat);
+
3513 intpol_met_space_3d(met, met->t, p, met->lon[ix], met->lat[iy],
+
3514 &t_env, ci, cw, 1);
+
3515 intpol_met_space_3d(met, met->h2o, p, met->lon[ix], met->lat[iy],
+
3516 &h2o_env, ci, cw, 0);
+
3517 double dcape_old = dcape;
+
3518 dcape = 1e3 * G0 * (TVIRT(t, h2o) - TVIRT(t_env, h2o_env)) /
+
3519 TVIRT(t_env, h2o_env) * dz;
+
3520 if (dcape > 0) {
+
3521 met->cape[ix][iy] += (float) dcape;
+
3522 if (!isfinite(met->plfc[ix][iy]))
+
3523 met->plfc[ix][iy] = (float) p;
+
3524 } else if (dcape_old > 0)
+
3525 met->pel[ix][iy] = (float) p;
+
3526 if (dcape < 0 && !isfinite(met->plfc[ix][iy]))
+
3527 met->cin[ix][iy] += fabsf((float) dcape);
+
3528 } while (p > ptop);
+
3529
+
3530 /* Check results... */
+
3531 if (!isfinite(met->plfc[ix][iy]))
+
3532 met->cin[ix][iy] = GSL_NAN;
+
3533 }
+
3534}
+
double clim_tropo(const clim_t *clim, const double t, const double lat)
Climatology of tropopause pressure.
Definition: libtrac.c:163
+
double lapse_rate(const double t, const double h2o)
Calculate moist adiabatic lapse rate.
Definition: libtrac.c:1541
+
#define INTPOL_INIT
Initialize cache variables for interpolation.
Definition: libtrac.h:323
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define PSAT(t)
Compute saturation pressure over water (WMO, 2018).
Definition: libtrac.h:575
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ read_met_cloud()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_cloud (ctl_tctl,
met_tmet 
)
+
+ +

Calculate cloud properties.

+ +

Definition at line 3538 of file libtrac.c.

+
3540 {
+
3541
+
3542 /* Set timer... */
+
3543 SELECT_TIMER("READ_MET_CLOUD", "METPROC", NVTX_READ);
+
3544 LOG(2, "Calculate cloud data...");
+
3545
+
3546 /* Loop over columns... */
+
3547#pragma omp parallel for default(shared) collapse(2)
+
3548 for (int ix = 0; ix < met->nx; ix++)
+
3549 for (int iy = 0; iy < met->ny; iy++) {
+
3550
+
3551 /* Init... */
+
3552 met->pct[ix][iy] = GSL_NAN;
+
3553 met->pcb[ix][iy] = GSL_NAN;
+
3554 met->cl[ix][iy] = 0;
+
3555
+
3556 /* Loop over pressure levels... */
+
3557 for (int ip = 0; ip < met->np - 1; ip++) {
+
3558
+
3559 /* Check pressure... */
+
3560 if (met->p[ip] > met->ps[ix][iy] || met->p[ip] < P(20.))
+
3561 continue;
+
3562
+
3563 /* Check ice water and liquid water content... */
+
3564 if (met->iwc[ix][iy][ip] > ctl->met_cloud_min
+
3565 || met->lwc[ix][iy][ip] > ctl->met_cloud_min) {
+
3566
+
3567 /* Get cloud top pressure ... */
+
3568 met->pct[ix][iy]
+
3569 = (float) (0.5 * (met->p[ip] + (float) met->p[ip + 1]));
+
3570
+
3571 /* Get cloud bottom pressure ... */
+
3572 if (!isfinite(met->pcb[ix][iy]))
+
3573 met->pcb[ix][iy]
+
3574 = (float) (0.5 * (met->p[ip] + met->p[GSL_MAX(ip - 1, 0)]));
+
3575 }
+
3576
+
3577 /* Get cloud water... */
+
3578 met->cl[ix][iy] += (float)
+
3579 (0.5 * (met->iwc[ix][iy][ip] + met->iwc[ix][iy][ip + 1]
+
3580 + met->lwc[ix][iy][ip] + met->lwc[ix][iy][ip + 1])
+
3581 * 100. * (met->p[ip] - met->p[ip + 1]) / G0);
+
3582 }
+
3583 }
+
3584}
+
+
+
+ +

◆ read_met_detrend()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_detrend (ctl_tctl,
met_tmet 
)
+
+ +

Apply detrending method to temperature and winds.

+ +

Definition at line 3588 of file libtrac.c.

+
3590 {
+
3591
+
3592 met_t *help;
+
3593
+
3594 /* Check parameters... */
+
3595 if (ctl->met_detrend <= 0)
+
3596 return;
+
3597
+
3598 /* Set timer... */
+
3599 SELECT_TIMER("READ_MET_DETREND", "METPROC", NVTX_READ);
+
3600 LOG(2, "Detrend meteo data...");
+
3601
+
3602 /* Allocate... */
+
3603 ALLOC(help, met_t, 1);
+
3604
+
3605 /* Calculate standard deviation... */
+
3606 double sigma = ctl->met_detrend / 2.355;
+
3607 double tssq = 2. * SQR(sigma);
+
3608
+
3609 /* Calculate box size in latitude... */
+
3610 int sy = (int) (3. * DY2DEG(sigma) / fabs(met->lat[1] - met->lat[0]));
+
3611 sy = GSL_MIN(GSL_MAX(1, sy), met->ny / 2);
+
3612
+
3613 /* Calculate background... */
+
3614#pragma omp parallel for default(shared) collapse(2)
+
3615 for (int ix = 0; ix < met->nx; ix++) {
+
3616 for (int iy = 0; iy < met->ny; iy++) {
+
3617
+
3618 /* Calculate Cartesian coordinates... */
+
3619 double x0[3];
+
3620 geo2cart(0.0, met->lon[ix], met->lat[iy], x0);
+
3621
+
3622 /* Calculate box size in longitude... */
+
3623 int sx =
+
3624 (int) (3. * DX2DEG(sigma, met->lat[iy]) /
+
3625 fabs(met->lon[1] - met->lon[0]));
+
3626 sx = GSL_MIN(GSL_MAX(1, sx), met->nx / 2);
+
3627
+
3628 /* Init... */
+
3629 float wsum = 0;
+
3630 for (int ip = 0; ip < met->np; ip++) {
+
3631 help->t[ix][iy][ip] = 0;
+
3632 help->u[ix][iy][ip] = 0;
+
3633 help->v[ix][iy][ip] = 0;
+
3634 help->w[ix][iy][ip] = 0;
+
3635 }
+
3636
+
3637 /* Loop over neighboring grid points... */
+
3638 for (int ix2 = ix - sx; ix2 <= ix + sx; ix2++) {
+
3639 int ix3 = ix2;
+
3640 if (ix3 < 0)
+
3641 ix3 += met->nx;
+
3642 else if (ix3 >= met->nx)
+
3643 ix3 -= met->nx;
+
3644 for (int iy2 = GSL_MAX(iy - sy, 0);
+
3645 iy2 <= GSL_MIN(iy + sy, met->ny - 1); iy2++) {
+
3646
+
3647 /* Calculate Cartesian coordinates... */
+
3648 double x1[3];
+
3649 geo2cart(0.0, met->lon[ix3], met->lat[iy2], x1);
+
3650
+
3651 /* Calculate weighting factor... */
+
3652 float w = (float) exp(-DIST2(x0, x1) / tssq);
+
3653
+
3654 /* Add data... */
+
3655 wsum += w;
+
3656 for (int ip = 0; ip < met->np; ip++) {
+
3657 help->t[ix][iy][ip] += w * met->t[ix3][iy2][ip];
+
3658 help->u[ix][iy][ip] += w * met->u[ix3][iy2][ip];
+
3659 help->v[ix][iy][ip] += w * met->v[ix3][iy2][ip];
+
3660 help->w[ix][iy][ip] += w * met->w[ix3][iy2][ip];
+
3661 }
+
3662 }
+
3663 }
+
3664
+
3665 /* Normalize... */
+
3666 for (int ip = 0; ip < met->np; ip++) {
+
3667 help->t[ix][iy][ip] /= wsum;
+
3668 help->u[ix][iy][ip] /= wsum;
+
3669 help->v[ix][iy][ip] /= wsum;
+
3670 help->w[ix][iy][ip] /= wsum;
+
3671 }
+
3672 }
+
3673 }
+
3674
+
3675 /* Subtract background... */
+
3676#pragma omp parallel for default(shared) collapse(3)
+
3677 for (int ix = 0; ix < met->nx; ix++)
+
3678 for (int iy = 0; iy < met->ny; iy++)
+
3679 for (int ip = 0; ip < met->np; ip++) {
+
3680 met->t[ix][iy][ip] -= help->t[ix][iy][ip];
+
3681 met->u[ix][iy][ip] -= help->u[ix][iy][ip];
+
3682 met->v[ix][iy][ip] -= help->v[ix][iy][ip];
+
3683 met->w[ix][iy][ip] -= help->w[ix][iy][ip];
+
3684 }
+
3685
+
3686 /* Free... */
+
3687 free(help);
+
3688}
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define DIST2(a, b)
Compute squared distance between two vectors.
Definition: libtrac.h:299
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_extrapolate()

+ +
+
+ + + + + + + + +
void read_met_extrapolate (met_tmet)
+
+ +

Extrapolate meteo data at lower boundary.

+ +

Definition at line 3692 of file libtrac.c.

+
3693 {
+
3694
+
3695 /* Set timer... */
+
3696 SELECT_TIMER("READ_MET_EXTRAPOLATE", "METPROC", NVTX_READ);
+
3697 LOG(2, "Extrapolate meteo data...");
+
3698
+
3699 /* Loop over columns... */
+
3700#pragma omp parallel for default(shared) collapse(2)
+
3701 for (int ix = 0; ix < met->nx; ix++)
+
3702 for (int iy = 0; iy < met->ny; iy++) {
+
3703
+
3704 /* Find lowest valid data point... */
+
3705 int ip0;
+
3706 for (ip0 = met->np - 1; ip0 >= 0; ip0--)
+
3707 if (!isfinite(met->t[ix][iy][ip0])
+
3708 || !isfinite(met->u[ix][iy][ip0])
+
3709 || !isfinite(met->v[ix][iy][ip0])
+
3710 || !isfinite(met->w[ix][iy][ip0]))
+
3711 break;
+
3712
+
3713 /* Extrapolate... */
+
3714 for (int ip = ip0; ip >= 0; ip--) {
+
3715 met->t[ix][iy][ip] = met->t[ix][iy][ip + 1];
+
3716 met->u[ix][iy][ip] = met->u[ix][iy][ip + 1];
+
3717 met->v[ix][iy][ip] = met->v[ix][iy][ip + 1];
+
3718 met->w[ix][iy][ip] = met->w[ix][iy][ip + 1];
+
3719 met->h2o[ix][iy][ip] = met->h2o[ix][iy][ip + 1];
+
3720 met->o3[ix][iy][ip] = met->o3[ix][iy][ip + 1];
+
3721 met->lwc[ix][iy][ip] = met->lwc[ix][iy][ip + 1];
+
3722 met->iwc[ix][iy][ip] = met->iwc[ix][iy][ip + 1];
+
3723 met->cc[ix][iy][ip] = met->cc[ix][iy][ip + 1];
+
3724 }
+
3725 }
+
3726}
+
+
+
+ +

◆ read_met_geopot()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_geopot (ctl_tctl,
met_tmet 
)
+
+ +

Calculate geopotential heights.

+ +

Definition at line 3730 of file libtrac.c.

+
3732 {
+
3733
+
3734 static float help[EP][EX][EY];
+
3735
+
3736 double logp[EP];
+
3737
+
3738 int dx = ctl->met_geopot_sx, dy = ctl->met_geopot_sy;
+
3739
+
3740 /* Set timer... */
+
3741 SELECT_TIMER("READ_MET_GEOPOT", "METPROC", NVTX_READ);
+
3742 LOG(2, "Calculate geopotential heights...");
+
3743
+
3744 /* Calculate log pressure... */
+
3745#pragma omp parallel for default(shared)
+
3746 for (int ip = 0; ip < met->np; ip++)
+
3747 logp[ip] = log(met->p[ip]);
+
3748
+
3749 /* Apply hydrostatic equation to calculate geopotential heights... */
+
3750#pragma omp parallel for default(shared) collapse(2)
+
3751 for (int ix = 0; ix < met->nx; ix++)
+
3752 for (int iy = 0; iy < met->ny; iy++) {
+
3753
+
3754 /* Get surface height and pressure... */
+
3755 double zs = met->zs[ix][iy];
+
3756 double lnps = log(met->ps[ix][iy]);
+
3757
+
3758 /* Get temperature and water vapor vmr at the surface... */
+
3759 int ip0 = locate_irr(met->p, met->np, met->ps[ix][iy]);
+
3760 double ts = LIN(met->p[ip0], met->t[ix][iy][ip0], met->p[ip0 + 1],
+
3761 met->t[ix][iy][ip0 + 1], met->ps[ix][iy]);
+
3762 double h2os = LIN(met->p[ip0], met->h2o[ix][iy][ip0], met->p[ip0 + 1],
+
3763 met->h2o[ix][iy][ip0 + 1], met->ps[ix][iy]);
+
3764
+
3765 /* Upper part of profile... */
+
3766 met->z[ix][iy][ip0 + 1]
+
3767 = (float) (zs +
+
3768 ZDIFF(lnps, ts, h2os, logp[ip0 + 1],
+
3769 met->t[ix][iy][ip0 + 1], met->h2o[ix][iy][ip0 + 1]));
+
3770 for (int ip = ip0 + 2; ip < met->np; ip++)
+
3771 met->z[ix][iy][ip]
+
3772 = (float) (met->z[ix][iy][ip - 1] +
+
3773 ZDIFF(logp[ip - 1], met->t[ix][iy][ip - 1],
+
3774 met->h2o[ix][iy][ip - 1], logp[ip],
+
3775 met->t[ix][iy][ip], met->h2o[ix][iy][ip]));
+
3776
+
3777 /* Lower part of profile... */
+
3778 met->z[ix][iy][ip0]
+
3779 = (float) (zs +
+
3780 ZDIFF(lnps, ts, h2os, logp[ip0],
+
3781 met->t[ix][iy][ip0], met->h2o[ix][iy][ip0]));
+
3782 for (int ip = ip0 - 1; ip >= 0; ip--)
+
3783 met->z[ix][iy][ip]
+
3784 = (float) (met->z[ix][iy][ip + 1] +
+
3785 ZDIFF(logp[ip + 1], met->t[ix][iy][ip + 1],
+
3786 met->h2o[ix][iy][ip + 1], logp[ip],
+
3787 met->t[ix][iy][ip], met->h2o[ix][iy][ip]));
+
3788 }
+
3789
+
3790 /* Check control parameters... */
+
3791 if (dx == 0 || dy == 0)
+
3792 return;
+
3793
+
3794 /* Default smoothing parameters... */
+
3795 if (dx < 0 || dy < 0) {
+
3796 if (fabs(met->lon[1] - met->lon[0]) < 0.5) {
+
3797 dx = 3;
+
3798 dy = 2;
+
3799 } else {
+
3800 dx = 6;
+
3801 dy = 4;
+
3802 }
+
3803 }
+
3804
+
3805 /* Calculate weights for smoothing... */
+
3806 float ws[dx + 1][dy + 1];
+
3807#pragma omp parallel for default(shared) collapse(2)
+
3808 for (int ix = 0; ix <= dx; ix++)
+
3809 for (int iy = 0; iy < dy; iy++)
+
3810 ws[ix][iy] = (1.0f - (float) ix / (float) dx)
+
3811 * (1.0f - (float) iy / (float) dy);
+
3812
+
3813 /* Copy data... */
+
3814#pragma omp parallel for default(shared) collapse(3)
+
3815 for (int ix = 0; ix < met->nx; ix++)
+
3816 for (int iy = 0; iy < met->ny; iy++)
+
3817 for (int ip = 0; ip < met->np; ip++)
+
3818 help[ip][ix][iy] = met->z[ix][iy][ip];
+
3819
+
3820 /* Horizontal smoothing... */
+
3821#pragma omp parallel for default(shared) collapse(3)
+
3822 for (int ip = 0; ip < met->np; ip++)
+
3823 for (int ix = 0; ix < met->nx; ix++)
+
3824 for (int iy = 0; iy < met->ny; iy++) {
+
3825 float res = 0, wsum = 0;
+
3826 int iy0 = GSL_MAX(iy - dy + 1, 0);
+
3827 int iy1 = GSL_MIN(iy + dy - 1, met->ny - 1);
+
3828 for (int ix2 = ix - dx + 1; ix2 <= ix + dx - 1; ++ix2) {
+
3829 int ix3 = ix2;
+
3830 if (ix3 < 0)
+
3831 ix3 += met->nx;
+
3832 else if (ix3 >= met->nx)
+
3833 ix3 -= met->nx;
+
3834 for (int iy2 = iy0; iy2 <= iy1; ++iy2)
+
3835 if (isfinite(help[ip][ix3][iy2])) {
+
3836 float w = ws[abs(ix - ix2)][abs(iy - iy2)];
+
3837 res += w * help[ip][ix3][iy2];
+
3838 wsum += w;
+
3839 }
+
3840 }
+
3841 if (wsum > 0)
+
3842 met->z[ix][iy][ip] = res / wsum;
+
3843 else
+
3844 met->z[ix][iy][ip] = GSL_NAN;
+
3845 }
+
3846}
+
#define ZDIFF(lnp0, t0, h2o0, lnp1, t1, h2o1)
Calculate geopotential height difference.
Definition: libtrac.h:662
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_grid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_grid (char * filename,
int ncid,
ctl_tctl,
met_tmet 
)
+
+ +

Read coordinates of meteo data.

+ +

Definition at line 3850 of file libtrac.c.

+
3854 {
+
3855
+
3856 char levname[LEN], tstr[10];
+
3857
+
3858 double rtime, r, r2;
+
3859
+
3860 int varid, year2, mon2, day2, hour2, min2, sec2,
+
3861 year, mon, day, hour, min, sec;
+
3862
+
3863 size_t np;
+
3864
+
3865 /* Set timer... */
+
3866 SELECT_TIMER("READ_MET_GRID", "INPUT", NVTX_READ);
+
3867 LOG(2, "Read meteo grid information...");
+
3868
+
3869 /* MPTRAC meteo files... */
+
3870 if (ctl->clams_met_data == 0) {
+
3871
+
3872 /* Get time from filename... */
+
3873 met->time = time_from_filename(filename, 16);
+
3874
+
3875 /* Check time information from data file... */
+
3876 jsec2time(met->time, &year, &mon, &day, &hour, &min, &sec, &r);
+
3877 if (nc_inq_varid(ncid, "time", &varid) == NC_NOERR) {
+
3878 NC(nc_get_var_double(ncid, varid, &rtime));
+
3879 if (fabs(year * 10000. + mon * 100. + day + hour / 24. - rtime) > 1.0)
+
3880 WARN("Time information in meteo file does not match filename!");
+
3881 } else
+
3882 WARN("Time information in meteo file is missing!");
+
3883 }
+
3884
+
3885 /* CLaMS meteo files... */
+
3886 else {
+
3887
+
3888 /* Read time from file... */
+
3889 NC_GET_DOUBLE("time", &rtime, 0);
+
3890
+
3891 /* Get time from filename (considering the century)... */
+
3892 if (rtime < 0)
+
3893 sprintf(tstr, "19%.2s", &filename[strlen(filename) - 11]);
+
3894 else
+
3895 sprintf(tstr, "20%.2s", &filename[strlen(filename) - 11]);
+
3896 year = atoi(tstr);
+
3897 sprintf(tstr, "%.2s", &filename[strlen(filename) - 9]);
+
3898 mon = atoi(tstr);
+
3899 sprintf(tstr, "%.2s", &filename[strlen(filename) - 7]);
+
3900 day = atoi(tstr);
+
3901 sprintf(tstr, "%.2s", &filename[strlen(filename) - 5]);
+
3902 hour = atoi(tstr);
+
3903 time2jsec(year, mon, day, hour, 0, 0, 0, &met->time);
+
3904 }
+
3905
+
3906 /* Check time... */
+
3907 if (year < 1900 || year > 2100 || mon < 1 || mon > 12
+
3908 || day < 1 || day > 31 || hour < 0 || hour > 23)
+
3909 ERRMSG("Cannot read time from filename!");
+
3910 jsec2time(met->time, &year2, &mon2, &day2, &hour2, &min2, &sec2, &r2);
+
3911 LOG(2, "Time: %.2f (%d-%02d-%02d, %02d:%02d UTC)",
+
3912 met->time, year2, mon2, day2, hour2, min2);
+
3913
+
3914 /* Get grid dimensions... */
+
3915 NC_INQ_DIM("lon", &met->nx, 2, EX);
+
3916 LOG(2, "Number of longitudes: %d", met->nx);
+
3917
+
3918 NC_INQ_DIM("lat", &met->ny, 2, EY);
+
3919 LOG(2, "Number of latitudes: %d", met->ny);
+
3920
+
3921 if (ctl->vert_coord_met == 0) {
+
3922 int dimid;
+
3923 sprintf(levname, "lev");
+
3924 if (nc_inq_dimid(ncid, levname, &dimid) != NC_NOERR)
+
3925 sprintf(levname, "plev");
+
3926 } else {
+
3927 sprintf(levname, "hybrid");
+
3928 NC_GET_DOUBLE(levname, met->hybrid, 1);
+
3929 printf("Meteorological data is in hybrid coordinates.");
+
3930 }
+
3931
+
3932 NC_INQ_DIM(levname, &met->np, 1, EP);
+
3933 if (met->np == 1) {
+
3934 int dimid;
+
3935 sprintf(levname, "lev_2");
+
3936 if (nc_inq_dimid(ncid, levname, &dimid) != NC_NOERR) {
+
3937 sprintf(levname, "plev");
+
3938 NC(nc_inq_dimid(ncid, levname, &dimid));
+
3939 }
+
3940 NC(nc_inq_dimlen(ncid, dimid, &np));
+
3941 met->np = (int) np;
+
3942 }
+
3943 LOG(2, "Number of levels: %d", met->np);
+
3944 if (met->np < 2 || met->np > EP)
+
3945 ERRMSG("Number of levels out of range!");
+
3946
+
3947 /* Read longitudes and latitudes... */
+
3948 NC_GET_DOUBLE("lon", met->lon, 1);
+
3949 LOG(2, "Longitudes: %g, %g ... %g deg",
+
3950 met->lon[0], met->lon[1], met->lon[met->nx - 1]);
+
3951 NC_GET_DOUBLE("lat", met->lat, 1);
+
3952 LOG(2, "Latitudes: %g, %g ... %g deg",
+
3953 met->lat[0], met->lat[1], met->lat[met->ny - 1]);
+
3954
+
3955 /* Read pressure levels... */
+
3956 if (ctl->met_np <= 0) {
+
3957 NC_GET_DOUBLE(levname, met->p, 1);
+
3958 for (int ip = 0; ip < met->np; ip++)
+
3959 met->p[ip] /= 100.;
+
3960 LOG(2, "Altitude levels: %g, %g ... %g km",
+
3961 Z(met->p[0]), Z(met->p[1]), Z(met->p[met->np - 1]));
+
3962 LOG(2, "Pressure levels: %g, %g ... %g hPa",
+
3963 met->p[0], met->p[1], met->p[met->np - 1]);
+
3964 }
+
3965}
+
void time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
Convert date to seconds.
Definition: libtrac.c:5449
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
int vert_coord_met
Vertical coordinate of input meteo data (0=automatic, 1=eta).
Definition: libtrac.h:815
+
double hybrid[EP]
Hybrid model levels.
Definition: libtrac.h:1978
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ read_met_levels()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_levels (int ncid,
ctl_tctl,
met_tmet 
)
+
+ +

Read meteo data on vertical levels.

+ +

Definition at line 3969 of file libtrac.c.

+
3972 {
+
3973
+
3974 /* Set timer... */
+
3975 SELECT_TIMER("READ_MET_LEVELS", "INPUT", NVTX_READ);
+
3976 LOG(2, "Read level data...");
+
3977
+
3978 /* MPTRAC meteo data... */
+
3979 if (ctl->clams_met_data == 0) {
+
3980
+
3981 /* Read meteo data... */
+
3982 if (!read_met_nc_3d(ncid, "t", "T", ctl, met, met->t, 1.0, 1))
+
3983 ERRMSG("Cannot read temperature!");
+
3984 if (!read_met_nc_3d(ncid, "u", "U", ctl, met, met->u, 1.0, 1))
+
3985 ERRMSG("Cannot read zonal wind!");
+
3986 if (!read_met_nc_3d(ncid, "v", "V", ctl, met, met->v, 1.0, 1))
+
3987 ERRMSG("Cannot read meridional wind!");
+
3988 if (!read_met_nc_3d(ncid, "w", "W", ctl, met, met->w, 0.01f, 1))
+
3989 WARN("Cannot read vertical velocity!");
+
3990 if (!read_met_nc_3d
+
3991 (ncid, "q", "Q", ctl, met, met->h2o, (float) (MA / MH2O), 1))
+
3992 WARN("Cannot read specific humidity!");
+
3993 if (ctl->met_relhum) {
+
3994 if (!read_met_nc_3d(ncid, "rh", "RH", ctl, met, met->h2o, 0.01f, 1))
+
3995 WARN("Cannot read relative humidity!");
+
3996#pragma omp parallel for default(shared) collapse(2)
+
3997 for (int ix = 0; ix < met->nx; ix++)
+
3998 for (int iy = 0; iy < met->ny; iy++)
+
3999 for (int ip = 0; ip < met->np; ip++) {
+
4000 double pw = met->h2o[ix][iy][ip] * PSAT(met->t[ix][iy][ip]);
+
4001 met->h2o[ix][iy][ip] =
+
4002 (float) (pw / (met->p[ip] - (1.0 - EPS) * pw));
+
4003 }
+
4004 }
+
4005 if (!read_met_nc_3d
+
4006 (ncid, "o3", "O3", ctl, met, met->o3, (float) (MA / MO3), 1))
+
4007 WARN("Cannot read ozone data!");
+
4008 if (ctl->met_cloud == 1 || ctl->met_cloud == 3) {
+
4009 if (!read_met_nc_3d(ncid, "clwc", "CLWC", ctl, met, met->lwc, 1.0, 1))
+
4010 WARN("Cannot read cloud liquid water content!");
+
4011 if (!read_met_nc_3d(ncid, "ciwc", "CIWC", ctl, met, met->iwc, 1.0, 1))
+
4012 WARN("Cannot read cloud ice water content!");
+
4013 }
+
4014 if (ctl->met_cloud == 2 || ctl->met_cloud == 3) {
+
4015 if (!read_met_nc_3d
+
4016 (ncid, "crwc", "CRWC", ctl, met, met->lwc, 1.0,
+
4017 ctl->met_cloud == 2))
+
4018 WARN("Cannot read cloud rain water content!");
+
4019 if (!read_met_nc_3d
+
4020 (ncid, "cswc", "CSWC", ctl, met, met->iwc, 1.0,
+
4021 ctl->met_cloud == 2))
+
4022 WARN("Cannot read cloud snow water content!");
+
4023 }
+
4024 if (!read_met_nc_3d(ncid, "cc", "CC", ctl, met, met->cc, 1.0, 1))
+
4025 WARN("Cannot read cloud cover!");
+
4026
+
4027
+
4028 }
+
4029
+
4030 /* CLaMS meteo data... */
+
4031 else if (ctl->clams_met_data == 1) {
+
4032
+
4033 /* Read meteorological data... */
+
4034 if (!read_met_nc_3d(ncid, "t", "TEMP", ctl, met, met->t, 1.0, 1))
+
4035 ERRMSG("Cannot read temperature!");
+
4036 if (!read_met_nc_3d(ncid, "u", "U", ctl, met, met->u, 1.0, 1))
+
4037 ERRMSG("Cannot read zonal wind!");
+
4038 if (!read_met_nc_3d(ncid, "v", "V", ctl, met, met->v, 1.0, 1))
+
4039 ERRMSG("Cannot read meridional wind!");
+
4040 if (!read_met_nc_3d(ncid, "W", "OMEGA", ctl, met, met->w, 0.01f, 1))
+
4041 WARN("Cannot read vertical velocity!");
+
4042 if (!read_met_nc_3d(ncid, "ZETA", "zeta", ctl, met, met->zeta, 1.0, 1))
+
4043 WARN("Cannot read ZETA in meteo data!");
+
4044 if (ctl->vert_coord_ap == 1) {
+
4045 if (!read_met_nc_3d
+
4046 (ncid, "ZETA_DOT_TOT", "zeta_dot_clr", ctl, met, met->zeta_dot,
+
4047 0.00001157407f, 1)) {
+
4048 if (!read_met_nc_3d
+
4049 (ncid, "ZETA_DOT_TOT", "ZETA_DOT_clr", ctl, met, met->zeta_dot,
+
4050 0.00001157407f, 1)) {
+
4051 WARN("Cannot read vertical velocity!");
+
4052 }
+
4053 }
+
4054 }
+
4055 if (!read_met_nc_3d
+
4056 (ncid, "sh", "SH", ctl, met, met->h2o, (float) (MA / MH2O), 1))
+
4057 WARN("Cannot read specific humidity!");
+
4058 if (!read_met_nc_3d
+
4059 (ncid, "o3", "O3", ctl, met, met->o3, (float) (MA / MO3), 1))
+
4060 WARN("Cannot read ozone data!");
+
4061 if (ctl->met_cloud == 1 || ctl->met_cloud == 3) {
+
4062 if (!read_met_nc_3d(ncid, "clwc", "CLWC", ctl, met, met->lwc, 1.0, 1))
+
4063 WARN("Cannot read cloud liquid water content!");
+
4064 if (!read_met_nc_3d(ncid, "ciwc", "CIWC", ctl, met, met->iwc, 1.0, 1))
+
4065 WARN("Cannot read cloud ice water content!");
+
4066 }
+
4067 if (ctl->met_cloud == 2 || ctl->met_cloud == 3) {
+
4068 if (!read_met_nc_3d
+
4069 (ncid, "crwc", "CRWC", ctl, met, met->lwc, 1.0,
+
4070 ctl->met_cloud == 2))
+
4071 WARN("Cannot read cloud rain water content!");
+
4072 if (!read_met_nc_3d
+
4073 (ncid, "cswc", "CSWC", ctl, met, met->iwc, 1.0,
+
4074 ctl->met_cloud == 2))
+
4075 WARN("Cannot read cloud snow water content!");
+
4076 }
+
4077 if (!read_met_nc_3d(ncid, "cc", "CC", ctl, met, met->cc, 1.0, 1))
+
4078 WARN("Cannot read cloud cover!");
+
4079
+
4080 } else
+
4081 ERRMSG("Meteo data format unknown!");
+
4082
+
4083 if (ctl->vert_coord_ap == 1) {
+
4084 /* Store the velocities on model levels for diabatic advection... */
+
4085 for (int ix = 0; ix < met->nx; ix++)
+
4086 for (int iy = 0; iy < met->ny; iy++)
+
4087 for (int ip = 0; ip < met->np; ip++) {
+
4088 met->ul[ix][iy][ip] = met->u[ix][iy][ip];
+
4089 met->vl[ix][iy][ip] = met->v[ix][iy][ip];
+
4090 met->zetal[ix][iy][ip] = met->zeta[ix][iy][ip];
+
4091 met->zeta_dotl[ix][iy][ip] = met->zeta_dot[ix][iy][ip];
+
4092 }
+
4093 /* Original number of vertical levels... */
+
4094 met->npl = met->np;
+
4095 }
+
4096
+
4097 if (ctl->met_np > 0 || ctl->vert_coord_ap == 1) {
+
4098 /* Read pressure on model levels... */
+
4099 if (!read_met_nc_3d(ncid, "pl", "PL", ctl, met, met->pl, 0.01f, 1))
+
4100 if (!read_met_nc_3d(ncid, "pl", "PRESS", ctl, met, met->pl, 1.0, 1))
+
4101 ERRMSG("Cannot read pressure on model levels!");
+
4102 }
+
4103
+
4104 /* Transfer from model levels to pressure levels... */
+
4105 if (ctl->met_np > 0) {
+
4106
+
4107 /* Vertical interpolation from model to pressure levels... */
+
4108 read_met_ml2pl(ctl, met, met->t);
+
4109 read_met_ml2pl(ctl, met, met->u);
+
4110 read_met_ml2pl(ctl, met, met->v);
+
4111 read_met_ml2pl(ctl, met, met->w);
+
4112 read_met_ml2pl(ctl, met, met->h2o);
+
4113 read_met_ml2pl(ctl, met, met->o3);
+
4114 read_met_ml2pl(ctl, met, met->lwc);
+
4115 read_met_ml2pl(ctl, met, met->iwc);
+
4116 read_met_ml2pl(ctl, met, met->cc);
+
4117
+
4118 /* Set new pressure levels... */
+
4119 met->np = ctl->met_np;
+
4120 for (int ip = 0; ip < met->np; ip++)
+
4121 met->p[ip] = ctl->met_p[ip];
+
4122 }
+
4123
+
4124 /* Check ordering of pressure levels... */
+
4125 for (int ip = 1; ip < met->np; ip++)
+
4126 if (met->p[ip - 1] < met->p[ip])
+
4127 ERRMSG("Pressure levels must be descending!");
+
4128
+
4129}
+
int read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init)
Read and convert 3D variable from meteo data file.
Definition: libtrac.c:4367
+
void read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP])
Convert meteo data from model levels to pressure levels.
Definition: libtrac.c:4133
+
#define MH2O
Molar mass of water vapor [g/mol].
Definition: libtrac.h:123
+
#define MO3
Molar mass of ozone [g/mol].
Definition: libtrac.h:128
+
float zeta_dotl[EX][EY][EP]
Vertical velocity on model levels [K/s].
Definition: libtrac.h:1975
+
float vl[EX][EY][EP]
Meridional wind on model levels [m/s].
Definition: libtrac.h:1936
+
float ul[EX][EY][EP]
Zonal wind on model levels [m/s].
Definition: libtrac.h:1930
+
float zeta_dot[EX][EY][EP]
Vertical velocity [K/s].
Definition: libtrac.h:1969
+
float pl[EX][EY][EP]
Pressure on model levels [hPa].
Definition: libtrac.h:1960
+
float zeta[EX][EY][EP]
Zeta [K].
Definition: libtrac.h:1966
+
float zetal[EX][EY][EP]
Zeta on model levels [K].
Definition: libtrac.h:1972
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ read_met_monotonize()

+ +
+
+ + + + + + + + +
void read_met_monotonize (met_tmet)
+
+ +

Smooth vertical zeta and pressure profiles.

+ +

Definition at line 4174 of file libtrac.c.

+
4175 {
+
4176
+
4177 /* Create monotone zeta profiles... */
+
4178#pragma omp parallel for default(shared) collapse(2)
+
4179 for (int i = 0; i < met->nx; i++)
+
4180 for (int j = 0; j < met->ny; j++) {
+
4181 int k = 1;
+
4182
+
4183 while (k < met->npl) { /* Check if there is an inversion at level k... */
+
4184 if ((met->zetal[i][j][k - 1] >= met->zetal[i][j][k])) {
+
4185 /* Find the upper level k+l over the inversion... */
+
4186 int l = 0;
+
4187 do {
+
4188 l++;
+
4189 }
+
4190 while ((met->zetal[i][j][k - 1] >=
+
4191 met->zetal[i][j][k + l]) & (k + l < met->npl));
+
4192
+
4193 /* Interpolate linear between the top and bottom
+
4194 of the inversion... */
+
4195 float s =
+
4196 (float) (met->zetal[i][j][k + l] - met->zetal[i][j][k - 1])
+
4197 / (float) (met->hybrid[k + l] - met->hybrid[k - 1]);
+
4198
+
4199 for (int m = k; m < k + l; m++) {
+
4200 float d = (float) (met->hybrid[m] - met->hybrid[k - 1]);
+
4201 met->zetal[i][j][m] = s * d + met->zetal[i][j][k - 1];
+
4202 }
+
4203
+
4204 /* Search for more inversions above the last inversion ... */
+
4205 k = k + l;
+
4206 } else {
+
4207 k++;
+
4208 }
+
4209 }
+
4210 }
+
4211
+
4212 /* Create monotone pressure profiles... */
+
4213#pragma omp parallel for default(shared) collapse(2)
+
4214 for (int i = 0; i < met->nx; i++)
+
4215 for (int j = 0; j < met->ny; j++) {
+
4216 int k = 1;
+
4217
+
4218 while (k < met->npl) { /* Check if there is an inversion at level k... */
+
4219 if ((met->pl[i][j][k - 1] <= met->pl[i][j][k])) {
+
4220 /* Find the upper level k+l over the inversion... */
+
4221 int l = 0;
+
4222 do {
+
4223 l++;
+
4224 }
+
4225 while ((met->pl[i][j][k - 1] <= met->pl[i][j][k + l]) & (k + l <
+
4226 met->npl));
+
4227
+
4228 /* Interpolate linear between the top and bottom
+
4229 of the inversion... */
+
4230 float s = (float) (met->pl[i][j][k + l] - met->pl[i][j][k - 1])
+
4231 / (float) (met->hybrid[k + l] - met->hybrid[k - 1]);
+
4232
+
4233 for (int m = k; m < k + l; m++) {
+
4234 float d = (float) (met->hybrid[m] - met->hybrid[k - 1]);
+
4235 met->pl[i][j][m] = s * d + met->pl[i][j][k - 1];
+
4236 }
+
4237
+
4238 /* Search for more inversions above the last inversion ... */
+
4239 k = k + l;
+
4240 } else {
+
4241 k++;
+
4242 }
+
4243 }
+
4244 }
+
4245}
+
+
+
+ +

◆ read_met_ml2pl()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_ml2pl (ctl_tctl,
met_tmet,
float var[EX][EY][EP] 
)
+
+ +

Convert meteo data from model levels to pressure levels.

+ +

Definition at line 4133 of file libtrac.c.

+
4136 {
+
4137
+
4138 double aux[EP], p[EP];
+
4139
+
4140 /* Set timer... */
+
4141 SELECT_TIMER("READ_MET_ML2PL", "METPROC", NVTX_READ);
+
4142 LOG(2, "Interpolate meteo data to pressure levels...");
+
4143
+
4144 /* Loop over columns... */
+
4145#pragma omp parallel for default(shared) private(aux,p) collapse(2)
+
4146 for (int ix = 0; ix < met->nx; ix++)
+
4147 for (int iy = 0; iy < met->ny; iy++) {
+
4148
+
4149 /* Copy pressure profile... */
+
4150 for (int ip = 0; ip < met->np; ip++)
+
4151 p[ip] = met->pl[ix][iy][ip];
+
4152
+
4153 /* Interpolate... */
+
4154 for (int ip = 0; ip < ctl->met_np; ip++) {
+
4155 double pt = ctl->met_p[ip];
+
4156 if ((pt > p[0] && p[0] > p[1]) || (pt < p[0] && p[0] < p[1]))
+
4157 pt = p[0];
+
4158 else if ((pt > p[met->np - 1] && p[1] > p[0])
+
4159 || (pt < p[met->np - 1] && p[1] < p[0]))
+
4160 pt = p[met->np - 1];
+
4161 int ip2 = locate_irr(p, met->np, pt);
+
4162 aux[ip] = LIN(p[ip2], var[ix][iy][ip2],
+
4163 p[ip2 + 1], var[ix][iy][ip2 + 1], pt);
+
4164 }
+
4165
+
4166 /* Copy data... */
+
4167 for (int ip = 0; ip < ctl->met_np; ip++)
+
4168 var[ix][iy][ip] = (float) aux[ip];
+
4169 }
+
4170}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ read_met_nc_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int read_met_nc_2d (int ncid,
char * varname,
char * varname2,
ctl_tctl,
met_tmet,
float dest[EX][EY],
float scl,
int init 
)
+
+ +

Read and convert 2D variable from meteo data file.

+ +

Definition at line 4249 of file libtrac.c.

+
4257 {
+
4258
+
4259 char varsel[LEN];
+
4260
+
4261 float offset, scalfac;
+
4262
+
4263 int varid;
+
4264
+
4265 /* Check if variable exists... */
+
4266 if (nc_inq_varid(ncid, varname, &varid) != NC_NOERR)
+
4267 if (nc_inq_varid(ncid, varname2, &varid) != NC_NOERR) {
+
4268 WARN("Cannot read 2-D variable: %s or %s", varname, varname2);
+
4269 return 0;
+
4270 } else {
+
4271 sprintf(varsel, "%s", varname2);
+
4272 } else
+
4273 sprintf(varsel, "%s", varname);
+
4274
+
4275 /* Read packed data... */
+
4276 if (ctl->met_nc_scale
+
4277 && nc_get_att_float(ncid, varid, "add_offset", &offset) == NC_NOERR
+
4278 && nc_get_att_float(ncid, varid, "scale_factor",
+
4279 &scalfac) == NC_NOERR) {
+
4280
+
4281 /* Allocate... */
+
4282 short *help;
+
4283 ALLOC(help, short,
+
4284 EX * EY * EP);
+
4285
+
4286 /* Read fill value and missing value... */
+
4287 short fillval, missval;
+
4288 if (nc_get_att_short(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4289 fillval = 0;
+
4290 if (nc_get_att_short(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4291 missval = 0;
+
4292
+
4293 /* Write info... */
+
4294 LOG(2, "Read 2-D variable: %s"
+
4295 " (FILL = %d, MISS = %d, SCALE = %g, OFFSET = %g)",
+
4296 varsel, fillval, missval, scalfac, offset);
+
4297
+
4298 /* Read data... */
+
4299 NC(nc_get_var_short(ncid, varid, help));
+
4300
+
4301 /* Copy and check data... */
+
4302#pragma omp parallel for default(shared) num_threads(12)
+
4303 for (int ix = 0; ix < met->nx; ix++)
+
4304 for (int iy = 0; iy < met->ny; iy++) {
+
4305 if (init)
+
4306 dest[ix][iy] = 0;
+
4307 short aux = help[ARRAY_2D(iy, ix, met->nx)];
+
4308 if ((fillval == 0 || aux != fillval)
+
4309 && (missval == 0 || aux != missval)
+
4310 && fabsf(aux * scalfac + offset) < 1e14f)
+
4311 dest[ix][iy] += scl * (aux * scalfac + offset);
+
4312 else
+
4313 dest[ix][iy] = GSL_NAN;
+
4314 }
+
4315
+
4316 /* Free... */
+
4317 free(help);
+
4318 }
+
4319
+
4320 /* Unpacked data... */
+
4321 else {
+
4322
+
4323 /* Allocate... */
+
4324 float *help;
+
4325 ALLOC(help, float,
+
4326 EX * EY);
+
4327
+
4328 /* Read fill value and missing value... */
+
4329 float fillval, missval;
+
4330 if (nc_get_att_float(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4331 fillval = 0;
+
4332 if (nc_get_att_float(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4333 missval = 0;
+
4334
+
4335 /* Write info... */
+
4336 LOG(2, "Read 2-D variable: %s (FILL = %g, MISS = %g)",
+
4337 varsel, fillval, missval);
+
4338
+
4339 /* Read data... */
+
4340 NC(nc_get_var_float(ncid, varid, help));
+
4341
+
4342 /* Copy and check data... */
+
4343#pragma omp parallel for default(shared) num_threads(12)
+
4344 for (int ix = 0; ix < met->nx; ix++)
+
4345 for (int iy = 0; iy < met->ny; iy++) {
+
4346 if (init)
+
4347 dest[ix][iy] = 0;
+
4348 float aux = help[ARRAY_2D(iy, ix, met->nx)];
+
4349 if ((fillval == 0 || aux != fillval)
+
4350 && (missval == 0 || aux != missval)
+
4351 && fabsf(aux) < 1e14f)
+
4352 dest[ix][iy] += scl * aux;
+
4353 else
+
4354 dest[ix][iy] = GSL_NAN;
+
4355 }
+
4356
+
4357 /* Free... */
+
4358 free(help);
+
4359 }
+
4360
+
4361 /* Return... */
+
4362 return 1;
+
4363}
+
+
+
+ +

◆ read_met_nc_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int read_met_nc_3d (int ncid,
char * varname,
char * varname2,
ctl_tctl,
met_tmet,
float dest[EX][EY][EP],
float scl,
int init 
)
+
+ +

Read and convert 3D variable from meteo data file.

+ +

Definition at line 4367 of file libtrac.c.

+
4375 {
+
4376
+
4377 char varsel[LEN];
+
4378
+
4379 float offset, scalfac;
+
4380
+
4381 int varid;
+
4382
+
4383 /* Check if variable exists... */
+
4384 if (nc_inq_varid(ncid, varname, &varid) != NC_NOERR)
+
4385 if (nc_inq_varid(ncid, varname2, &varid) != NC_NOERR) {
+
4386 WARN("Cannot read 3-D variable: %s or %s", varname, varname2);
+
4387 return 0;
+
4388 } else {
+
4389 sprintf(varsel, "%s", varname2);
+
4390 } else
+
4391 sprintf(varsel, "%s", varname);
+
4392
+
4393 /* Read packed data... */
+
4394 if (ctl->met_nc_scale
+
4395 && nc_get_att_float(ncid, varid, "add_offset", &offset) == NC_NOERR
+
4396 && nc_get_att_float(ncid, varid, "scale_factor",
+
4397 &scalfac) == NC_NOERR) {
+
4398
+
4399 /* Allocate... */
+
4400 short *help;
+
4401 ALLOC(help, short,
+
4402 EX * EY * EP);
+
4403
+
4404 /* Read fill value and missing value... */
+
4405 short fillval, missval;
+
4406 if (nc_get_att_short(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4407 fillval = 0;
+
4408 if (nc_get_att_short(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4409 missval = 0;
+
4410
+
4411 /* Write info... */
+
4412 LOG(2, "Read 3-D variable: %s "
+
4413 "(FILL = %d, MISS = %d, SCALE = %g, OFFSET = %g)",
+
4414 varsel, fillval, missval, scalfac, offset);
+
4415
+
4416 /* Read data... */
+
4417 NC(nc_get_var_short(ncid, varid, help));
+
4418
+
4419 /* Copy and check data... */
+
4420#pragma omp parallel for default(shared) num_threads(12)
+
4421 for (int ix = 0; ix < met->nx; ix++)
+
4422 for (int iy = 0; iy < met->ny; iy++)
+
4423 for (int ip = 0; ip < met->np; ip++) {
+
4424 if (init)
+
4425 dest[ix][iy][ip] = 0;
+
4426 short aux = help[ARRAY_3D(ip, iy, met->ny, ix, met->nx)];
+
4427 if ((fillval == 0 || aux != fillval)
+
4428 && (missval == 0 || aux != missval)
+
4429 && fabsf(aux * scalfac + offset) < 1e14f)
+
4430 dest[ix][iy][ip] += scl * (aux * scalfac + offset);
+
4431 else
+
4432 dest[ix][iy][ip] = GSL_NAN;
+
4433 }
+
4434
+
4435 /* Free... */
+
4436 free(help);
+
4437 }
+
4438
+
4439 /* Unpacked data... */
+
4440 else {
+
4441
+
4442 /* Allocate... */
+
4443 float *help;
+
4444 ALLOC(help, float,
+
4445 EX * EY * EP);
+
4446
+
4447 /* Read fill value and missing value... */
+
4448 float fillval, missval;
+
4449 if (nc_get_att_float(ncid, varid, "_FillValue", &fillval) != NC_NOERR)
+
4450 fillval = 0;
+
4451 if (nc_get_att_float(ncid, varid, "missing_value", &missval) != NC_NOERR)
+
4452 missval = 0;
+
4453
+
4454 /* Write info... */
+
4455 LOG(2, "Read 3-D variable: %s (FILL = %g, MISS = %g)",
+
4456 varsel, fillval, missval);
+
4457
+
4458 /* Read data... */
+
4459 NC(nc_get_var_float(ncid, varid, help));
+
4460
+
4461 if (ctl->met_convention == 0) {
+
4462 /* Copy and check data... */
+
4463#pragma omp parallel for default(shared) num_threads(12)
+
4464 for (int ix = 0; ix < met->nx; ix++)
+
4465 for (int iy = 0; iy < met->ny; iy++)
+
4466 for (int ip = 0; ip < met->np; ip++) {
+
4467 if (init)
+
4468 dest[ix][iy][ip] = 0;
+
4469 float aux = help[ARRAY_3D(ip, iy, met->ny, ix, met->nx)];
+
4470 if ((fillval == 0 || aux != fillval)
+
4471 && (missval == 0 || aux != missval)
+
4472 && fabsf(aux) < 1e14f)
+
4473 dest[ix][iy][ip] += scl * aux;
+
4474 else
+
4475 dest[ix][iy][ip] = GSL_NAN;
+
4476 }
+
4477 } else {
+
4478 /* Copy and check data... */
+
4479#pragma omp parallel for default(shared) num_threads(12)
+
4480 for (int ip = 0; ip < met->np; ip++)
+
4481 for (int iy = 0; iy < met->ny; iy++)
+
4482 for (int ix = 0; ix < met->nx; ix++) {
+
4483 if (init)
+
4484 dest[ix][iy][ip] = 0;
+
4485 float aux = help[ARRAY_3D(ix, iy, met->ny, ip, met->np)];
+
4486 if ((fillval == 0 || aux != fillval)
+
4487 && (missval == 0 || aux != missval)
+
4488 && fabsf(aux) < 1e14f)
+
4489 dest[ix][iy][ip] += scl * aux;
+
4490 else
+
4491 dest[ix][iy][ip] = GSL_NAN;
+
4492 }
+
4493 }
+
4494
+
4495 /* Free... */
+
4496 free(help);
+
4497 }
+
4498
+
4499 /* Return... */
+
4500 return 1;
+
4501}
+
+
+
+ +

◆ read_met_pbl()

+ +
+
+ + + + + + + + +
void read_met_pbl (met_tmet)
+
+ +

Calculate pressure of the boundary layer.

+ +

Definition at line 4505 of file libtrac.c.

+
4506 {
+
4507
+
4508 /* Set timer... */
+
4509 SELECT_TIMER("READ_MET_PBL", "METPROC", NVTX_READ);
+
4510 LOG(2, "Calculate planetary boundary layer...");
+
4511
+
4512 /* Parameters used to estimate the height of the PBL
+
4513 (e.g., Vogelezang and Holtslag, 1996; Seidel et al., 2012)... */
+
4514 const double rib_crit = 0.25, dz = 0.05, umin = 5.0;
+
4515
+
4516 /* Loop over grid points... */
+
4517#pragma omp parallel for default(shared) collapse(2)
+
4518 for (int ix = 0; ix < met->nx; ix++)
+
4519 for (int iy = 0; iy < met->ny; iy++) {
+
4520
+
4521 /* Set bottom level of PBL... */
+
4522 double pbl_bot = met->ps[ix][iy] + DZ2DP(dz, met->ps[ix][iy]);
+
4523
+
4524 /* Find lowest level near the bottom... */
+
4525 int ip;
+
4526 for (ip = 1; ip < met->np; ip++)
+
4527 if (met->p[ip] < pbl_bot)
+
4528 break;
+
4529
+
4530 /* Get near surface data... */
+
4531 double zs = LIN(met->p[ip - 1], met->z[ix][iy][ip - 1],
+
4532 met->p[ip], met->z[ix][iy][ip], pbl_bot);
+
4533 double ts = LIN(met->p[ip - 1], met->t[ix][iy][ip - 1],
+
4534 met->p[ip], met->t[ix][iy][ip], pbl_bot);
+
4535 double us = LIN(met->p[ip - 1], met->u[ix][iy][ip - 1],
+
4536 met->p[ip], met->u[ix][iy][ip], pbl_bot);
+
4537 double vs = LIN(met->p[ip - 1], met->v[ix][iy][ip - 1],
+
4538 met->p[ip], met->v[ix][iy][ip], pbl_bot);
+
4539 double h2os = LIN(met->p[ip - 1], met->h2o[ix][iy][ip - 1],
+
4540 met->p[ip], met->h2o[ix][iy][ip], pbl_bot);
+
4541 double tvs = THETAVIRT(pbl_bot, ts, h2os);
+
4542
+
4543 /* Init... */
+
4544 double rib_old = 0;
+
4545
+
4546 /* Loop over levels... */
+
4547 for (; ip < met->np; ip++) {
+
4548
+
4549 /* Get squared horizontal wind speed... */
+
4550 double vh2
+
4551 = SQR(met->u[ix][iy][ip] - us) + SQR(met->v[ix][iy][ip] - vs);
+
4552 vh2 = GSL_MAX(vh2, SQR(umin));
+
4553
+
4554 /* Calculate bulk Richardson number... */
+
4555 double rib = G0 * 1e3 * (met->z[ix][iy][ip] - zs) / tvs
+
4556 * (THETAVIRT(met->p[ip], met->t[ix][iy][ip],
+
4557 met->h2o[ix][iy][ip]) - tvs) / vh2;
+
4558
+
4559 /* Check for critical value... */
+
4560 if (rib >= rib_crit) {
+
4561 met->pbl[ix][iy] = (float) (LIN(rib_old, met->p[ip - 1],
+
4562 rib, met->p[ip], rib_crit));
+
4563 if (met->pbl[ix][iy] > pbl_bot)
+
4564 met->pbl[ix][iy] = (float) pbl_bot;
+
4565 break;
+
4566 }
+
4567
+
4568 /* Save Richardson number... */
+
4569 rib_old = rib;
+
4570 }
+
4571 }
+
4572}
+
#define THETAVIRT(p, t, h2o)
Compute virtual potential temperature.
Definition: libtrac.h:643
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
+
+
+ +

◆ read_met_periodic()

+ +
+
+ + + + + + + + +
void read_met_periodic (met_tmet)
+
+ +

Create meteo data with periodic boundary conditions.

+ +

Definition at line 4576 of file libtrac.c.

+
4577 {
+
4578
+
4579 /* Set timer... */
+
4580 SELECT_TIMER("READ_MET_PERIODIC", "METPROC", NVTX_READ);
+
4581 LOG(2, "Apply periodic boundary conditions...");
+
4582
+
4583 /* Check longitudes... */
+
4584 if (!(fabs(met->lon[met->nx - 1] - met->lon[0]
+
4585 + met->lon[1] - met->lon[0] - 360) < 0.01))
+
4586 return;
+
4587
+
4588 /* Increase longitude counter... */
+
4589 if ((++met->nx) > EX)
+
4590 ERRMSG("Cannot create periodic boundary conditions!");
+
4591
+
4592 /* Set longitude... */
+
4593 met->lon[met->nx - 1] = met->lon[met->nx - 2] + met->lon[1] - met->lon[0];
+
4594
+
4595 /* Loop over latitudes and pressure levels... */
+
4596#pragma omp parallel for default(shared)
+
4597 for (int iy = 0; iy < met->ny; iy++) {
+
4598 met->ps[met->nx - 1][iy] = met->ps[0][iy];
+
4599 met->zs[met->nx - 1][iy] = met->zs[0][iy];
+
4600 met->ts[met->nx - 1][iy] = met->ts[0][iy];
+
4601 met->us[met->nx - 1][iy] = met->us[0][iy];
+
4602 met->vs[met->nx - 1][iy] = met->vs[0][iy];
+
4603 met->lsm[met->nx - 1][iy] = met->lsm[0][iy];
+
4604 met->sst[met->nx - 1][iy] = met->sst[0][iy];
+
4605 for (int ip = 0; ip < met->np; ip++) {
+
4606 met->t[met->nx - 1][iy][ip] = met->t[0][iy][ip];
+
4607 met->u[met->nx - 1][iy][ip] = met->u[0][iy][ip];
+
4608 met->v[met->nx - 1][iy][ip] = met->v[0][iy][ip];
+
4609 met->w[met->nx - 1][iy][ip] = met->w[0][iy][ip];
+
4610 met->h2o[met->nx - 1][iy][ip] = met->h2o[0][iy][ip];
+
4611 met->o3[met->nx - 1][iy][ip] = met->o3[0][iy][ip];
+
4612 met->lwc[met->nx - 1][iy][ip] = met->lwc[0][iy][ip];
+
4613 met->iwc[met->nx - 1][iy][ip] = met->iwc[0][iy][ip];
+
4614 met->cc[met->nx - 1][iy][ip] = met->cc[0][iy][ip];
+
4615 met->patp[met->nx - 1][iy][ip] = met->patp[0][iy][ip];
+
4616 }
+
4617 for (int ip = 0; ip < met->npl; ip++) {
+
4618 met->ul[met->nx - 1][iy][ip] = met->ul[0][iy][ip];
+
4619 met->vl[met->nx - 1][iy][ip] = met->vl[0][iy][ip];
+
4620 met->pl[met->nx - 1][iy][ip] = met->pl[0][iy][ip];
+
4621 met->zetal[met->nx - 1][iy][ip] = met->zetal[0][iy][ip];
+
4622 met->zeta_dotl[met->nx - 1][iy][ip] = met->zeta_dotl[0][iy][ip];
+
4623 }
+
4624 }
+
4625}
+
float patp[EX][EY][EP]
Pressure field in pressure levels [hPa].
Definition: libtrac.h:1963
+
+
+
+ +

◆ read_met_pv()

+ +
+
+ + + + + + + + +
void read_met_pv (met_tmet)
+
+ +

Calculate potential vorticity.

+ +

Definition at line 4629 of file libtrac.c.

+
4630 {
+
4631
+
4632 double pows[EP];
+
4633
+
4634 /* Set timer... */
+
4635 SELECT_TIMER("READ_MET_PV", "METPROC", NVTX_READ);
+
4636 LOG(2, "Calculate potential vorticity...");
+
4637
+
4638 /* Set powers... */
+
4639#pragma omp parallel for default(shared)
+
4640 for (int ip = 0; ip < met->np; ip++)
+
4641 pows[ip] = pow(1000. / met->p[ip], 0.286);
+
4642
+
4643 /* Loop over grid points... */
+
4644#pragma omp parallel for default(shared)
+
4645 for (int ix = 0; ix < met->nx; ix++) {
+
4646
+
4647 /* Set indices... */
+
4648 int ix0 = GSL_MAX(ix - 1, 0);
+
4649 int ix1 = GSL_MIN(ix + 1, met->nx - 1);
+
4650
+
4651 /* Loop over grid points... */
+
4652 for (int iy = 0; iy < met->ny; iy++) {
+
4653
+
4654 /* Set indices... */
+
4655 int iy0 = GSL_MAX(iy - 1, 0);
+
4656 int iy1 = GSL_MIN(iy + 1, met->ny - 1);
+
4657
+
4658 /* Set auxiliary variables... */
+
4659 double latr = 0.5 * (met->lat[iy1] + met->lat[iy0]);
+
4660 double dx = 1000. * DEG2DX(met->lon[ix1] - met->lon[ix0], latr);
+
4661 double dy = 1000. * DEG2DY(met->lat[iy1] - met->lat[iy0]);
+
4662 double c0 = cos(met->lat[iy0] / 180. * M_PI);
+
4663 double c1 = cos(met->lat[iy1] / 180. * M_PI);
+
4664 double cr = cos(latr / 180. * M_PI);
+
4665 double vort = 2 * 7.2921e-5 * sin(latr * M_PI / 180.);
+
4666
+
4667 /* Loop over grid points... */
+
4668 for (int ip = 0; ip < met->np; ip++) {
+
4669
+
4670 /* Get gradients in longitude... */
+
4671 double dtdx
+
4672 = (met->t[ix1][iy][ip] - met->t[ix0][iy][ip]) * pows[ip] / dx;
+
4673 double dvdx = (met->v[ix1][iy][ip] - met->v[ix0][iy][ip]) / dx;
+
4674
+
4675 /* Get gradients in latitude... */
+
4676 double dtdy
+
4677 = (met->t[ix][iy1][ip] - met->t[ix][iy0][ip]) * pows[ip] / dy;
+
4678 double dudy
+
4679 = (met->u[ix][iy1][ip] * c1 - met->u[ix][iy0][ip] * c0) / dy;
+
4680
+
4681 /* Set indices... */
+
4682 int ip0 = GSL_MAX(ip - 1, 0);
+
4683 int ip1 = GSL_MIN(ip + 1, met->np - 1);
+
4684
+
4685 /* Get gradients in pressure... */
+
4686 double dtdp, dudp, dvdp;
+
4687 double dp0 = 100. * (met->p[ip] - met->p[ip0]);
+
4688 double dp1 = 100. * (met->p[ip1] - met->p[ip]);
+
4689 if (ip != ip0 && ip != ip1) {
+
4690 double denom = dp0 * dp1 * (dp0 + dp1);
+
4691 dtdp = (dp0 * dp0 * met->t[ix][iy][ip1] * pows[ip1]
+
4692 - dp1 * dp1 * met->t[ix][iy][ip0] * pows[ip0]
+
4693 + (dp1 * dp1 - dp0 * dp0) * met->t[ix][iy][ip] * pows[ip])
+
4694 / denom;
+
4695 dudp = (dp0 * dp0 * met->u[ix][iy][ip1]
+
4696 - dp1 * dp1 * met->u[ix][iy][ip0]
+
4697 + (dp1 * dp1 - dp0 * dp0) * met->u[ix][iy][ip])
+
4698 / denom;
+
4699 dvdp = (dp0 * dp0 * met->v[ix][iy][ip1]
+
4700 - dp1 * dp1 * met->v[ix][iy][ip0]
+
4701 + (dp1 * dp1 - dp0 * dp0) * met->v[ix][iy][ip])
+
4702 / denom;
+
4703 } else {
+
4704 double denom = dp0 + dp1;
+
4705 dtdp =
+
4706 (met->t[ix][iy][ip1] * pows[ip1] -
+
4707 met->t[ix][iy][ip0] * pows[ip0]) / denom;
+
4708 dudp = (met->u[ix][iy][ip1] - met->u[ix][iy][ip0]) / denom;
+
4709 dvdp = (met->v[ix][iy][ip1] - met->v[ix][iy][ip0]) / denom;
+
4710 }
+
4711
+
4712 /* Calculate PV... */
+
4713 met->pv[ix][iy][ip] = (float)
+
4714 (1e6 * G0 *
+
4715 (-dtdp * (dvdx - dudy / cr + vort) + dvdp * dtdx - dudp * dtdy));
+
4716 }
+
4717 }
+
4718 }
+
4719
+
4720 /* Fix for polar regions... */
+
4721#pragma omp parallel for default(shared)
+
4722 for (int ix = 0; ix < met->nx; ix++)
+
4723 for (int ip = 0; ip < met->np; ip++) {
+
4724 met->pv[ix][0][ip]
+
4725 = met->pv[ix][1][ip]
+
4726 = met->pv[ix][2][ip];
+
4727 met->pv[ix][met->ny - 1][ip]
+
4728 = met->pv[ix][met->ny - 2][ip]
+
4729 = met->pv[ix][met->ny - 3][ip];
+
4730 }
+
4731}
+
#define DEG2DY(dlat)
Convert degrees to meridional distance.
Definition: libtrac.h:274
+
#define DEG2DX(dlon, lat)
Convert degrees to zonal distance.
Definition: libtrac.h:270
+
+
+
+ +

◆ read_met_ozone()

+ +
+
+ + + + + + + + +
void read_met_ozone (met_tmet)
+
+ +

Calculate total column ozone.

+ +

Definition at line 4735 of file libtrac.c.

+
4736 {
+
4737
+
4738 /* Set timer... */
+
4739 SELECT_TIMER("READ_MET_OZONE", "METPROC", NVTX_READ);
+
4740 LOG(2, "Calculate total column ozone...");
+
4741
+
4742 /* Loop over columns... */
+
4743#pragma omp parallel for default(shared) collapse(2)
+
4744 for (int ix = 0; ix < met->nx; ix++)
+
4745 for (int iy = 0; iy < met->ny; iy++) {
+
4746
+
4747 /* Integrate... */
+
4748 double cd = 0;
+
4749 for (int ip = 1; ip < met->np; ip++)
+
4750 if (met->p[ip - 1] <= met->ps[ix][iy]) {
+
4751 double vmr = 0.5 * (met->o3[ix][iy][ip - 1] + met->o3[ix][iy][ip]);
+
4752 double dp = met->p[ip - 1] - met->p[ip];
+
4753 cd += vmr * MO3 / MA * dp * 1e2 / G0;
+
4754 }
+
4755
+
4756 /* Convert to Dobson units... */
+
4757 met->o3c[ix][iy] = (float) (cd / 2.1415e-5);
+
4758 }
+
4759}
+
float o3c[EX][EY]
Total column ozone [DU].
Definition: libtrac.h:1918
+
+
+
+ +

◆ read_met_sample()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void read_met_sample (ctl_tctl,
met_tmet 
)
+
+ +

Downsampling of meteo data.

+ +

Definition at line 4763 of file libtrac.c.

+
4765 {
+
4766
+
4767 met_t *help;
+
4768
+
4769 /* Check parameters... */
+
4770 if (ctl->met_dp <= 1 && ctl->met_dx <= 1 && ctl->met_dy <= 1
+
4771 && ctl->met_sp <= 1 && ctl->met_sx <= 1 && ctl->met_sy <= 1)
+
4772 return;
+
4773
+
4774 /* Set timer... */
+
4775 SELECT_TIMER("READ_MET_SAMPLE", "METPROC", NVTX_READ);
+
4776 LOG(2, "Downsampling of meteo data...");
+
4777
+
4778 /* Allocate... */
+
4779 ALLOC(help, met_t, 1);
+
4780
+
4781 /* Copy data... */
+
4782 help->nx = met->nx;
+
4783 help->ny = met->ny;
+
4784 help->np = met->np;
+
4785 memcpy(help->lon, met->lon, sizeof(met->lon));
+
4786 memcpy(help->lat, met->lat, sizeof(met->lat));
+
4787 memcpy(help->p, met->p, sizeof(met->p));
+
4788
+
4789 /* Smoothing... */
+
4790 for (int ix = 0; ix < met->nx; ix += ctl->met_dx) {
+
4791 for (int iy = 0; iy < met->ny; iy += ctl->met_dy) {
+
4792 for (int ip = 0; ip < met->np; ip += ctl->met_dp) {
+
4793 help->ps[ix][iy] = 0;
+
4794 help->zs[ix][iy] = 0;
+
4795 help->ts[ix][iy] = 0;
+
4796 help->us[ix][iy] = 0;
+
4797 help->vs[ix][iy] = 0;
+
4798 help->lsm[ix][iy] = 0;
+
4799 help->sst[ix][iy] = 0;
+
4800 help->t[ix][iy][ip] = 0;
+
4801 help->u[ix][iy][ip] = 0;
+
4802 help->v[ix][iy][ip] = 0;
+
4803 help->w[ix][iy][ip] = 0;
+
4804 help->h2o[ix][iy][ip] = 0;
+
4805 help->o3[ix][iy][ip] = 0;
+
4806 help->lwc[ix][iy][ip] = 0;
+
4807 help->iwc[ix][iy][ip] = 0;
+
4808 help->cc[ix][iy][ip] = 0;
+
4809 float wsum = 0;
+
4810 for (int ix2 = ix - ctl->met_sx + 1; ix2 <= ix + ctl->met_sx - 1;
+
4811 ix2++) {
+
4812 int ix3 = ix2;
+
4813 if (ix3 < 0)
+
4814 ix3 += met->nx;
+
4815 else if (ix3 >= met->nx)
+
4816 ix3 -= met->nx;
+
4817
+
4818 for (int iy2 = GSL_MAX(iy - ctl->met_sy + 1, 0);
+
4819 iy2 <= GSL_MIN(iy + ctl->met_sy - 1, met->ny - 1); iy2++)
+
4820 for (int ip2 = GSL_MAX(ip - ctl->met_sp + 1, 0);
+
4821 ip2 <= GSL_MIN(ip + ctl->met_sp - 1, met->np - 1); ip2++) {
+
4822 float w = (1.0f - (float) abs(ix - ix2) / (float) ctl->met_sx)
+
4823 * (1.0f - (float) abs(iy - iy2) / (float) ctl->met_sy)
+
4824 * (1.0f - (float) abs(ip - ip2) / (float) ctl->met_sp);
+
4825 help->ps[ix][iy] += w * met->ps[ix3][iy2];
+
4826 help->zs[ix][iy] += w * met->zs[ix3][iy2];
+
4827 help->ts[ix][iy] += w * met->ts[ix3][iy2];
+
4828 help->us[ix][iy] += w * met->us[ix3][iy2];
+
4829 help->vs[ix][iy] += w * met->vs[ix3][iy2];
+
4830 help->lsm[ix][iy] += w * met->lsm[ix3][iy2];
+
4831 help->sst[ix][iy] += w * met->sst[ix3][iy2];
+
4832 help->t[ix][iy][ip] += w * met->t[ix3][iy2][ip2];
+
4833 help->u[ix][iy][ip] += w * met->u[ix3][iy2][ip2];
+
4834 help->v[ix][iy][ip] += w * met->v[ix3][iy2][ip2];
+
4835 help->w[ix][iy][ip] += w * met->w[ix3][iy2][ip2];
+
4836 help->h2o[ix][iy][ip] += w * met->h2o[ix3][iy2][ip2];
+
4837 help->o3[ix][iy][ip] += w * met->o3[ix3][iy2][ip2];
+
4838 help->lwc[ix][iy][ip] += w * met->lwc[ix3][iy2][ip2];
+
4839 help->iwc[ix][iy][ip] += w * met->iwc[ix3][iy2][ip2];
+
4840 help->cc[ix][iy][ip] += w * met->cc[ix3][iy2][ip2];
+
4841 wsum += w;
+
4842 }
+
4843 }
+
4844 help->ps[ix][iy] /= wsum;
+
4845 help->zs[ix][iy] /= wsum;
+
4846 help->ts[ix][iy] /= wsum;
+
4847 help->us[ix][iy] /= wsum;
+
4848 help->vs[ix][iy] /= wsum;
+
4849 help->lsm[ix][iy] /= wsum;
+
4850 help->sst[ix][iy] /= wsum;
+
4851 help->t[ix][iy][ip] /= wsum;
+
4852 help->u[ix][iy][ip] /= wsum;
+
4853 help->v[ix][iy][ip] /= wsum;
+
4854 help->w[ix][iy][ip] /= wsum;
+
4855 help->h2o[ix][iy][ip] /= wsum;
+
4856 help->o3[ix][iy][ip] /= wsum;
+
4857 help->lwc[ix][iy][ip] /= wsum;
+
4858 help->iwc[ix][iy][ip] /= wsum;
+
4859 help->cc[ix][iy][ip] /= wsum;
+
4860 }
+
4861 }
+
4862 }
+
4863
+
4864 /* Downsampling... */
+
4865 met->nx = 0;
+
4866 for (int ix = 0; ix < help->nx; ix += ctl->met_dx) {
+
4867 met->lon[met->nx] = help->lon[ix];
+
4868 met->ny = 0;
+
4869 for (int iy = 0; iy < help->ny; iy += ctl->met_dy) {
+
4870 met->lat[met->ny] = help->lat[iy];
+
4871 met->ps[met->nx][met->ny] = help->ps[ix][iy];
+
4872 met->zs[met->nx][met->ny] = help->zs[ix][iy];
+
4873 met->ts[met->nx][met->ny] = help->ts[ix][iy];
+
4874 met->us[met->nx][met->ny] = help->us[ix][iy];
+
4875 met->vs[met->nx][met->ny] = help->vs[ix][iy];
+
4876 met->lsm[met->nx][met->ny] = help->lsm[ix][iy];
+
4877 met->sst[met->nx][met->ny] = help->sst[ix][iy];
+
4878 met->np = 0;
+
4879 for (int ip = 0; ip < help->np; ip += ctl->met_dp) {
+
4880 met->p[met->np] = help->p[ip];
+
4881 met->t[met->nx][met->ny][met->np] = help->t[ix][iy][ip];
+
4882 met->u[met->nx][met->ny][met->np] = help->u[ix][iy][ip];
+
4883 met->v[met->nx][met->ny][met->np] = help->v[ix][iy][ip];
+
4884 met->w[met->nx][met->ny][met->np] = help->w[ix][iy][ip];
+
4885 met->h2o[met->nx][met->ny][met->np] = help->h2o[ix][iy][ip];
+
4886 met->o3[met->nx][met->ny][met->np] = help->o3[ix][iy][ip];
+
4887 met->lwc[met->nx][met->ny][met->np] = help->lwc[ix][iy][ip];
+
4888 met->iwc[met->nx][met->ny][met->np] = help->iwc[ix][iy][ip];
+
4889 met->cc[met->nx][met->ny][met->np] = help->cc[ix][iy][ip];
+
4890 met->np++;
+
4891 }
+
4892 met->ny++;
+
4893 }
+
4894 met->nx++;
+
4895 }
+
4896
+
4897 /* Free... */
+
4898 free(help);
+
4899}
+
+
+
+ +

◆ read_met_surface()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_surface (int ncid,
met_tmet,
ctl_tctl 
)
+
+ +

Read surface data.

+ +

Definition at line 4903 of file libtrac.c.

+
4906 {
+
4907
+
4908 /* Set timer... */
+
4909 SELECT_TIMER("READ_MET_SURFACE", "INPUT", NVTX_READ);
+
4910 LOG(2, "Read surface data...");
+
4911
+
4912 /* MPTRAC meteo data... */
+
4913 if (ctl->clams_met_data == 0) {
+
4914
+
4915 /* Read surface pressure... */
+
4916 if (!read_met_nc_2d(ncid, "lnsp", "LNSP", ctl, met, met->ps, 1.0f, 1)) {
+
4917 if (!read_met_nc_2d(ncid, "ps", "PS", ctl, met, met->ps, 0.01f, 1)) {
+
4918 if (!read_met_nc_2d(ncid, "sp", "SP", ctl, met, met->ps, 0.01f, 1)) {
+
4919 WARN("Cannot not read surface pressure data (use lowest level)!");
+
4920 for (int ix = 0; ix < met->nx; ix++)
+
4921 for (int iy = 0; iy < met->ny; iy++)
+
4922 met->ps[ix][iy] = (float) met->p[0];
+
4923 }
+
4924 }
+
4925 } else
+
4926 for (int ix = 0; ix < met->nx; ix++)
+
4927 for (int iy = 0; iy < met->ny; iy++)
+
4928 met->ps[ix][iy] = (float) (exp(met->ps[ix][iy]) / 100.);
+
4929
+
4930 /* Read geopotential height at the surface... */
+
4931 if (!read_met_nc_2d
+
4932 (ncid, "z", "Z", ctl, met, met->zs, (float) (1. / (1000. * G0)), 1))
+
4933 if (!read_met_nc_2d
+
4934 (ncid, "zm", "ZM", ctl, met, met->zs, (float) (1. / 1000.), 1))
+
4935 WARN("Cannot read surface geopotential height!");
+
4936
+
4937 /* Read temperature at the surface... */
+
4938 if (!read_met_nc_2d(ncid, "t2m", "T2M", ctl, met, met->ts, 1.0, 1))
+
4939 WARN("Cannot read surface temperature!");
+
4940
+
4941 /* Read zonal wind at the surface... */
+
4942 if (!read_met_nc_2d(ncid, "u10m", "U10M", ctl, met, met->us, 1.0, 1))
+
4943 WARN("Cannot read surface zonal wind!");
+
4944
+
4945 /* Read meridional wind at the surface... */
+
4946 if (!read_met_nc_2d(ncid, "v10m", "V10M", ctl, met, met->vs, 1.0, 1))
+
4947 WARN("Cannot read surface meridional wind!");
+
4948
+
4949 /* Read land-sea mask... */
+
4950 if (!read_met_nc_2d(ncid, "lsm", "LSM", ctl, met, met->lsm, 1.0, 1))
+
4951 WARN("Cannot read land-sea mask!");
+
4952
+
4953 /* Read sea surface temperature... */
+
4954 if (!read_met_nc_2d(ncid, "sstk", "SSTK", ctl, met, met->sst, 1.0, 1))
+
4955 WARN("Cannot read sea surface temperature!");
+
4956 }
+
4957
+
4958 /* CLaMS meteo data... */
+
4959 else {
+
4960
+
4961 /* Read surface pressure... */
+
4962 if (!read_met_nc_2d(ncid, "ps", "PS", ctl, met, met->ps, 0.01f, 1)) {
+
4963 WARN("Cannot not read surface pressure data (use lowest level)!");
+
4964 for (int ix = 0; ix < met->nx; ix++)
+
4965 for (int iy = 0; iy < met->ny; iy++)
+
4966 met->ps[ix][iy] = (float) met->p[0];
+
4967 }
+
4968
+
4969 /* Read geopotential height at the surface
+
4970 (use lowermost level of 3-D data field)... */
+
4971 float *help;
+
4972 ALLOC(help, float,
+
4973 EX * EY * EP);
+
4974 memcpy(help, met->pl, sizeof(met->pl));
+
4975 if (!read_met_nc_3d
+
4976 (ncid, "gph", "GPH", ctl, met, met->pl, (float) (1e-3 / G0), 1)) {
+
4977 ERRMSG("Cannot read geopotential height!");
+
4978 } else
+
4979 for (int ix = 0; ix < met->nx; ix++)
+
4980 for (int iy = 0; iy < met->ny; iy++)
+
4981 met->zs[ix][iy] = met->pl[ix][iy][0];
+
4982 memcpy(met->pl, help, sizeof(met->pl));
+
4983 free(help);
+
4984
+
4985 /* Read temperature at the surface... */
+
4986 if (!read_met_nc_2d(ncid, "t2", "T2", ctl, met, met->ts, 1.0, 1))
+
4987 WARN("Cannot read surface temperature!");
+
4988
+
4989 /* Read zonal wind at the surface... */
+
4990 if (!read_met_nc_2d(ncid, "u10", "U10", ctl, met, met->us, 1.0, 1))
+
4991 WARN("Cannot read surface zonal wind!");
+
4992
+
4993 /* Read meridional wind at the surface... */
+
4994 if (!read_met_nc_2d(ncid, "v10", "V10", ctl, met, met->vs, 1.0, 1))
+
4995 WARN("Cannot read surface meridional wind!");
+
4996
+
4997 /* Read land-sea mask... */
+
4998 if (!read_met_nc_2d(ncid, "lsm", "LSM", ctl, met, met->lsm, 1.0, 1))
+
4999 WARN("Cannot read land-sea mask!");
+
5000
+
5001 /* Read sea surface temperature... */
+
5002 if (!read_met_nc_2d(ncid, "sstk", "SSTK", ctl, met, met->sst, 1.0, 1))
+
5003 WARN("Cannot read sea surface temperature!");
+
5004 }
+
5005}
+
int read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init)
Read and convert 2D variable from meteo data file.
Definition: libtrac.c:4249
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ read_met_tropo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void read_met_tropo (ctl_tctl,
clim_tclim,
met_tmet 
)
+
+ +

Calculate tropopause data.

+ +

Definition at line 5009 of file libtrac.c.

+
5012 {
+
5013
+
5014 double p2[200], pv[EP], pv2[200], t[EP], t2[200], th[EP],
+
5015 th2[200], z[EP], z2[200];
+
5016
+
5017 /* Set timer... */
+
5018 SELECT_TIMER("READ_MET_TROPO", "METPROC", NVTX_READ);
+
5019 LOG(2, "Calculate tropopause...");
+
5020
+
5021 /* Get altitude and pressure profiles... */
+
5022#pragma omp parallel for default(shared)
+
5023 for (int iz = 0; iz < met->np; iz++)
+
5024 z[iz] = Z(met->p[iz]);
+
5025#pragma omp parallel for default(shared)
+
5026 for (int iz = 0; iz <= 190; iz++) {
+
5027 z2[iz] = 4.5 + 0.1 * iz;
+
5028 p2[iz] = P(z2[iz]);
+
5029 }
+
5030
+
5031 /* Do not calculate tropopause... */
+
5032 if (ctl->met_tropo == 0)
+
5033#pragma omp parallel for default(shared) collapse(2)
+
5034 for (int ix = 0; ix < met->nx; ix++)
+
5035 for (int iy = 0; iy < met->ny; iy++)
+
5036 met->pt[ix][iy] = GSL_NAN;
+
5037
+
5038 /* Use tropopause climatology... */
+
5039 else if (ctl->met_tropo == 1) {
+
5040#pragma omp parallel for default(shared) collapse(2)
+
5041 for (int ix = 0; ix < met->nx; ix++)
+
5042 for (int iy = 0; iy < met->ny; iy++)
+
5043 met->pt[ix][iy] = (float) clim_tropo(clim, met->time, met->lat[iy]);
+
5044 }
+
5045
+
5046 /* Use cold point... */
+
5047 else if (ctl->met_tropo == 2) {
+
5048
+
5049 /* Loop over grid points... */
+
5050#pragma omp parallel for default(shared) private(t,t2) collapse(2)
+
5051 for (int ix = 0; ix < met->nx; ix++)
+
5052 for (int iy = 0; iy < met->ny; iy++) {
+
5053
+
5054 /* Interpolate temperature profile... */
+
5055 for (int iz = 0; iz < met->np; iz++)
+
5056 t[iz] = met->t[ix][iy][iz];
+
5057 spline(z, t, met->np, z2, t2, 171, ctl->met_tropo_spline);
+
5058
+
5059 /* Find minimum... */
+
5060 int iz = (int) gsl_stats_min_index(t2, 1, 171);
+
5061 if (iz > 0 && iz < 170)
+
5062 met->pt[ix][iy] = (float) p2[iz];
+
5063 else
+
5064 met->pt[ix][iy] = GSL_NAN;
+
5065 }
+
5066 }
+
5067
+
5068 /* Use WMO definition... */
+
5069 else if (ctl->met_tropo == 3 || ctl->met_tropo == 4) {
+
5070
+
5071 /* Loop over grid points... */
+
5072#pragma omp parallel for default(shared) private(t,t2) collapse(2)
+
5073 for (int ix = 0; ix < met->nx; ix++)
+
5074 for (int iy = 0; iy < met->ny; iy++) {
+
5075
+
5076 /* Interpolate temperature profile... */
+
5077 int iz;
+
5078 for (iz = 0; iz < met->np; iz++)
+
5079 t[iz] = met->t[ix][iy][iz];
+
5080 spline(z, t, met->np, z2, t2, 191, ctl->met_tropo_spline);
+
5081
+
5082 /* Find 1st tropopause... */
+
5083 met->pt[ix][iy] = GSL_NAN;
+
5084 for (iz = 0; iz <= 170; iz++) {
+
5085 int found = 1;
+
5086 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev; iz2++)
+
5087 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) >
+
5088 ctl->met_tropo_lapse) {
+
5089 found = 0;
+
5090 break;
+
5091 }
+
5092 if (found) {
+
5093 if (iz > 0 && iz < 170)
+
5094 met->pt[ix][iy] = (float) p2[iz];
+
5095 break;
+
5096 }
+
5097 }
+
5098
+
5099 /* Find 2nd tropopause... */
+
5100 if (ctl->met_tropo == 4) {
+
5101 met->pt[ix][iy] = GSL_NAN;
+
5102 for (; iz <= 170; iz++) {
+
5103 int found = 1;
+
5104 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev_sep; iz2++)
+
5105 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) <
+
5106 ctl->met_tropo_lapse_sep) {
+
5107 found = 0;
+
5108 break;
+
5109 }
+
5110 if (found)
+
5111 break;
+
5112 }
+
5113 for (; iz <= 170; iz++) {
+
5114 int found = 1;
+
5115 for (int iz2 = iz + 1; iz2 <= iz + ctl->met_tropo_nlev; iz2++)
+
5116 if (LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]) >
+
5117 ctl->met_tropo_lapse) {
+
5118 found = 0;
+
5119 break;
+
5120 }
+
5121 if (found) {
+
5122 if (iz > 0 && iz < 170)
+
5123 met->pt[ix][iy] = (float) p2[iz];
+
5124 break;
+
5125 }
+
5126 }
+
5127 }
+
5128 }
+
5129 }
+
5130
+
5131 /* Use dynamical tropopause... */
+
5132 else if (ctl->met_tropo == 5) {
+
5133
+
5134 /* Loop over grid points... */
+
5135#pragma omp parallel for default(shared) private(pv,pv2,th,th2) collapse(2)
+
5136 for (int ix = 0; ix < met->nx; ix++)
+
5137 for (int iy = 0; iy < met->ny; iy++) {
+
5138
+
5139 /* Interpolate potential vorticity profile... */
+
5140 for (int iz = 0; iz < met->np; iz++)
+
5141 pv[iz] = met->pv[ix][iy][iz];
+
5142 spline(z, pv, met->np, z2, pv2, 171, ctl->met_tropo_spline);
+
5143
+
5144 /* Interpolate potential temperature profile... */
+
5145 for (int iz = 0; iz < met->np; iz++)
+
5146 th[iz] = THETA(met->p[iz], met->t[ix][iy][iz]);
+
5147 spline(z, th, met->np, z2, th2, 171, ctl->met_tropo_spline);
+
5148
+
5149 /* Find dynamical tropopause... */
+
5150 met->pt[ix][iy] = GSL_NAN;
+
5151 for (int iz = 0; iz <= 170; iz++)
+
5152 if (fabs(pv2[iz]) >= ctl->met_tropo_pv
+
5153 || th2[iz] >= ctl->met_tropo_theta) {
+
5154 if (iz > 0 && iz < 170)
+
5155 met->pt[ix][iy] = (float) p2[iz];
+
5156 break;
+
5157 }
+
5158 }
+
5159 }
+
5160
+
5161 else
+
5162 ERRMSG("Cannot calculate tropopause!");
+
5163
+
5164 /* Interpolate temperature, geopotential height, and water vapor vmr... */
+
5165#pragma omp parallel for default(shared) collapse(2)
+
5166 for (int ix = 0; ix < met->nx; ix++)
+
5167 for (int iy = 0; iy < met->ny; iy++) {
+
5168 double h2ot, tt, zt;
+ +
5170 intpol_met_space_3d(met, met->t, met->pt[ix][iy], met->lon[ix],
+
5171 met->lat[iy], &tt, ci, cw, 1);
+
5172 intpol_met_space_3d(met, met->z, met->pt[ix][iy], met->lon[ix],
+
5173 met->lat[iy], &zt, ci, cw, 0);
+
5174 intpol_met_space_3d(met, met->h2o, met->pt[ix][iy], met->lon[ix],
+
5175 met->lat[iy], &h2ot, ci, cw, 0);
+
5176 met->tt[ix][iy] = (float) tt;
+
5177 met->zt[ix][iy] = (float) zt;
+
5178 met->h2ot[ix][iy] = (float) h2ot;
+
5179 }
+
5180}
+
void spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
Spline interpolation.
Definition: libtrac.c:5338
+
#define LAPSE(p1, t1, p2, t2)
Calculate lapse rate between pressure levels.
Definition: libtrac.h:416
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ read_obs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void read_obs (char * filename,
double * rt,
double * rz,
double * rlon,
double * rlat,
double * robs,
int * nobs 
)
+
+ +

Read observation data.

+ +

Definition at line 5184 of file libtrac.c.

+
5191 {
+
5192
+
5193 /* Open observation data file... */
+
5194 FILE *in;
+
5195 LOG(1, "Read observation data: %s", filename);
+
5196 if (!(in = fopen(filename, "r")))
+
5197 ERRMSG("Cannot open file!");
+
5198
+
5199 /* Read observations... */
+
5200 char line[LEN];
+
5201 while (fgets(line, LEN, in))
+
5202 if (sscanf(line, "%lg %lg %lg %lg %lg", &rt[*nobs], &rz[*nobs],
+
5203 &rlon[*nobs], &rlat[*nobs], &robs[*nobs]) == 5)
+
5204 if ((++(*nobs)) >= NOBS)
+
5205 ERRMSG("Too many observations!");
+
5206
+
5207 /* Close observation data file... */
+
5208 fclose(in);
+
5209
+
5210 /* Check time... */
+
5211 for (int i = 1; i < *nobs; i++)
+
5212 if (rt[i] < rt[i - 1])
+
5213 ERRMSG("Time must be ascending!");
+
5214
+
5215 /* Write info... */
+
5216 int n = *nobs;
+
5217 double mini, maxi;
+
5218 LOG(2, "Number of observations: %d", *nobs);
+
5219 gsl_stats_minmax(&mini, &maxi, rt, 1, (size_t) n);
+
5220 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
5221 gsl_stats_minmax(&mini, &maxi, rz, 1, (size_t) n);
+
5222 LOG(2, "Altitude range: %g ... %g km", mini, maxi);
+
5223 gsl_stats_minmax(&mini, &maxi, rlon, 1, (size_t) n);
+
5224 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
5225 gsl_stats_minmax(&mini, &maxi, rlat, 1, (size_t) n);
+
5226 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
5227 gsl_stats_minmax(&mini, &maxi, robs, 1, (size_t) n);
+
5228 LOG(2, "Observation range: %g ... %g", mini, maxi);
+
5229}
+
#define NOBS
Maximum number of observation data points.
Definition: libtrac.h:202
+
+
+
+ +

◆ scan_ctl()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double scan_ctl (const char * filename,
int argc,
char * argv[],
const char * varname,
int arridx,
const char * defvalue,
char * value 
)
+
+ +

Read a control parameter from file or command line.

+ +

Definition at line 5233 of file libtrac.c.

+
5240 {
+
5241
+
5242 FILE *in = NULL;
+
5243
+
5244 char fullname1[LEN], fullname2[LEN], rval[LEN];
+
5245
+
5246 int contain = 0, i;
+
5247
+
5248 /* Open file... */
+
5249 if (filename[strlen(filename) - 1] != '-')
+
5250 if (!(in = fopen(filename, "r")))
+
5251 ERRMSG("Cannot open file!");
+
5252
+
5253 /* Set full variable name... */
+
5254 if (arridx >= 0) {
+
5255 sprintf(fullname1, "%s[%d]", varname, arridx);
+
5256 sprintf(fullname2, "%s[*]", varname);
+
5257 } else {
+
5258 sprintf(fullname1, "%s", varname);
+
5259 sprintf(fullname2, "%s", varname);
+
5260 }
+
5261
+
5262 /* Read data... */
+
5263 if (in != NULL) {
+
5264 char dummy[LEN], line[LEN], rvarname[LEN];
+
5265 while (fgets(line, LEN, in)) {
+
5266 if (sscanf(line, "%4999s %4999s %4999s", rvarname, dummy, rval) == 3)
+
5267 if (strcasecmp(rvarname, fullname1) == 0 ||
+
5268 strcasecmp(rvarname, fullname2) == 0) {
+
5269 contain = 1;
+
5270 break;
+
5271 }
+
5272 }
+
5273 }
+
5274 for (i = 1; i < argc - 1; i++)
+
5275 if (strcasecmp(argv[i], fullname1) == 0 ||
+
5276 strcasecmp(argv[i], fullname2) == 0) {
+
5277 sprintf(rval, "%s", argv[i + 1]);
+
5278 contain = 1;
+
5279 break;
+
5280 }
+
5281
+
5282 /* Close file... */
+
5283 if (in != NULL)
+
5284 fclose(in);
+
5285
+
5286 /* Check for missing variables... */
+
5287 if (!contain) {
+
5288 if (strlen(defvalue) > 0)
+
5289 sprintf(rval, "%s", defvalue);
+
5290 else
+
5291 ERRMSG("Missing variable %s!\n", fullname1);
+
5292 }
+
5293
+
5294 /* Write info... */
+
5295 LOG(1, "%s = %s", fullname1, rval);
+
5296
+
5297 /* Return values... */
+
5298 if (value != NULL)
+
5299 sprintf(value, "%s", rval);
+
5300 return atof(rval);
+
5301}
+
+
+
+ +

◆ sedi()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double sedi (const double p,
const double T,
const double rp,
const double rhop 
)
+
+ +

Calculate sedimentation velocity.

+ +

Definition at line 5305 of file libtrac.c.

+
5309 {
+
5310
+
5311 /* Convert particle radius from microns to m... */
+
5312 double rp_help = rp * 1e-6;
+
5313
+
5314 /* Density of dry air [kg / m^3]... */
+
5315 double rho = RHO(p, T);
+
5316
+
5317 /* Dynamic viscosity of air [kg / (m s)]... */
+
5318 double eta = 1.8325e-5 * (416.16 / (T + 120.)) * pow(T / 296.16, 1.5);
+
5319
+
5320 /* Thermal velocity of an air molecule [m / s]... */
+
5321 double v = sqrt(8. * KB * T / (M_PI * 4.8096e-26));
+
5322
+
5323 /* Mean free path of an air molecule [m]... */
+
5324 double lambda = 2. * eta / (rho * v);
+
5325
+
5326 /* Knudsen number for air (dimensionless)... */
+
5327 double K = lambda / rp_help;
+
5328
+
5329 /* Cunningham slip-flow correction (dimensionless)... */
+
5330 double G = 1. + K * (1.249 + 0.42 * exp(-0.87 / K));
+
5331
+
5332 /* Sedimentation velocity [m / s]... */
+
5333 return 2. * SQR(rp_help) * (rhop - rho) * G0 / (9. * eta) * G;
+
5334}
+
#define KB
Boltzmann constant [kg m^2/(K s^2)].
Definition: libtrac.h:113
+
#define RHO(p, t)
Compute density of air.
Definition: libtrac.h:596
+
+
+
+ +

◆ spline()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void spline (const double * x,
const double * y,
const int n,
const double * x2,
double * y2,
const int n2,
const int method 
)
+
+ +

Spline interpolation.

+ +

Definition at line 5338 of file libtrac.c.

+
5345 {
+
5346
+
5347 /* Cubic spline interpolation... */
+
5348 if (method == 1) {
+
5349
+
5350 /* Allocate... */
+
5351 gsl_interp_accel *acc;
+
5352 gsl_spline *s;
+
5353 acc = gsl_interp_accel_alloc();
+
5354 s = gsl_spline_alloc(gsl_interp_cspline, (size_t) n);
+
5355
+
5356 /* Interpolate profile... */
+
5357 gsl_spline_init(s, x, y, (size_t) n);
+
5358 for (int i = 0; i < n2; i++)
+
5359 if (x2[i] <= x[0])
+
5360 y2[i] = y[0];
+
5361 else if (x2[i] >= x[n - 1])
+
5362 y2[i] = y[n - 1];
+
5363 else
+
5364 y2[i] = gsl_spline_eval(s, x2[i], acc);
+
5365
+
5366 /* Free... */
+
5367 gsl_spline_free(s);
+
5368 gsl_interp_accel_free(acc);
+
5369 }
+
5370
+
5371 /* Linear interpolation... */
+
5372 else {
+
5373 for (int i = 0; i < n2; i++)
+
5374 if (x2[i] <= x[0])
+
5375 y2[i] = y[0];
+
5376 else if (x2[i] >= x[n - 1])
+
5377 y2[i] = y[n - 1];
+
5378 else {
+
5379 int idx = locate_irr(x, n, x2[i]);
+
5380 y2[i] = LIN(x[idx], y[idx], x[idx + 1], y[idx + 1], x2[i]);
+
5381 }
+
5382 }
+
5383}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ stddev()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float stddev (const float * data,
const int n 
)
+
+ +

Calculate standard deviation.

+ +

Definition at line 5387 of file libtrac.c.

+
5389 {
+
5390
+
5391 if (n <= 0)
+
5392 return 0;
+
5393
+
5394 float mean = 0, var = 0;
+
5395
+
5396 for (int i = 0; i < n; ++i) {
+
5397 mean += data[i];
+
5398 var += SQR(data[i]);
+
5399 }
+
5400
+
5401 var = var / (float) n - SQR(mean / (float) n);
+
5402
+
5403 return (var > 0 ? sqrtf(var) : 0);
+
5404}
+
+
+
+ +

◆ sza_calc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double sza_calc (const double sec,
const double lon,
const double lat 
)
+
+ +

Calculate solar zenith angle.

+ +

Definition at line 5408 of file libtrac.c.

+
5411 {
+
5412
+
5413 /* Number of days and fraction with respect to 2000-01-01T12:00Z... */
+
5414 const double D = sec / 86400 - 0.5;
+
5415
+
5416 /* Geocentric apparent ecliptic longitude [rad]... */
+
5417 const double g = (357.529 + 0.98560028 * D) * M_PI / 180;
+
5418 const double q = 280.459 + 0.98564736 * D;
+
5419 const double L = (q + 1.915 * sin(g) + 0.020 * sin(2 * g)) * M_PI / 180;
+
5420
+
5421 /* Mean obliquity of the ecliptic [rad]... */
+
5422 const double e = (23.439 - 0.00000036 * D) * M_PI / 180;
+
5423
+
5424 /* Declination [rad]... */
+
5425 const double sindec = sin(e) * sin(L);
+
5426
+
5427 /* Right ascension [rad]... */
+
5428 const double ra = atan2(cos(e) * sin(L), cos(L));
+
5429
+
5430 /* Greenwich Mean Sidereal Time [h]... */
+
5431 const double GMST = 18.697374558 + 24.06570982441908 * D;
+
5432
+
5433 /* Local Sidereal Time [h]... */
+
5434 const double LST = GMST + lon / 15;
+
5435
+
5436 /* Hour angle [rad]... */
+
5437 const double h = LST / 12 * M_PI - ra;
+
5438
+
5439 /* Convert latitude... */
+
5440 const double lat_help = lat * M_PI / 180;
+
5441
+
5442 /* Return solar zenith angle [rad]... */
+
5443 return acos(sin(lat_help) * sindec +
+
5444 cos(lat_help) * sqrt(1 - SQR(sindec)) * cos(h));
+
5445}
+
+
+
+ +

◆ time2jsec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void time2jsec (const int year,
const int mon,
const int day,
const int hour,
const int min,
const int sec,
const double remain,
double * jsec 
)
+
+ +

Convert date to seconds.

+ +

Definition at line 5449 of file libtrac.c.

+
5457 {
+
5458
+
5459 struct tm t0, t1;
+
5460
+
5461 t0.tm_year = 100;
+
5462 t0.tm_mon = 0;
+
5463 t0.tm_mday = 1;
+
5464 t0.tm_hour = 0;
+
5465 t0.tm_min = 0;
+
5466 t0.tm_sec = 0;
+
5467
+
5468 t1.tm_year = year - 1900;
+
5469 t1.tm_mon = mon - 1;
+
5470 t1.tm_mday = day;
+
5471 t1.tm_hour = hour;
+
5472 t1.tm_min = min;
+
5473 t1.tm_sec = sec;
+
5474
+
5475 *jsec = (double) timegm(&t1) - (double) timegm(&t0) + remain;
+
5476}
+
+
+
+ +

◆ timer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void timer (const char * name,
const char * group,
int output 
)
+
+ +

Measure wall-clock time.

+ +

Definition at line 5480 of file libtrac.c.

+
5483 {
+
5484
+
5485 static char names[NTIMER][100], groups[NTIMER][100];
+
5486
+
5487 static double rt_name[NTIMER], rt_group[NTIMER],
+
5488 rt_min[NTIMER], rt_max[NTIMER], dt, t0, t1;
+
5489
+
5490 static int iname = -1, igroup = -1, nname, ngroup, ct_name[NTIMER];
+
5491
+
5492 /* Get time... */
+
5493 t1 = omp_get_wtime();
+
5494 dt = t1 - t0;
+
5495
+
5496 /* Add elapsed time to current timers... */
+
5497 if (iname >= 0) {
+
5498 rt_name[iname] += dt;
+
5499 rt_min[iname] = (ct_name[iname] <= 0 ? dt : GSL_MIN(rt_min[iname], dt));
+
5500 rt_max[iname] = (ct_name[iname] <= 0 ? dt : GSL_MAX(rt_max[iname], dt));
+
5501 ct_name[iname]++;
+
5502 }
+
5503 if (igroup >= 0)
+
5504 rt_group[igroup] += t1 - t0;
+
5505
+
5506 /* Report timers... */
+
5507 if (output) {
+
5508 for (int i = 0; i < nname; i++)
+
5509 LOG(1, "TIMER_%s = %.3f s (min= %g s, mean= %g s,"
+
5510 " max= %g s, n= %d)", names[i], rt_name[i], rt_min[i],
+
5511 rt_name[i] / ct_name[i], rt_max[i], ct_name[i]);
+
5512 for (int i = 0; i < ngroup; i++)
+
5513 LOG(1, "TIMER_GROUP_%s = %.3f s", groups[i], rt_group[i]);
+
5514 double total = 0.0;
+
5515 for (int i = 0; i < nname; i++)
+
5516 total += rt_name[i];
+
5517 LOG(1, "TIMER_TOTAL = %.3f s", total);
+
5518 }
+
5519
+
5520 /* Identify IDs of next timer... */
+
5521 for (iname = 0; iname < nname; iname++)
+
5522 if (strcasecmp(name, names[iname]) == 0)
+
5523 break;
+
5524 for (igroup = 0; igroup < ngroup; igroup++)
+
5525 if (strcasecmp(group, groups[igroup]) == 0)
+
5526 break;
+
5527
+
5528 /* Check whether this is a new timer... */
+
5529 if (iname >= nname) {
+
5530 sprintf(names[iname], "%s", name);
+
5531 if ((++nname) > NTIMER)
+
5532 ERRMSG("Too many timers!");
+
5533 }
+
5534
+
5535 /* Check whether this is a new group... */
+
5536 if (igroup >= ngroup) {
+
5537 sprintf(groups[igroup], "%s", group);
+
5538 if ((++ngroup) > NTIMER)
+
5539 ERRMSG("Too many groups!");
+
5540 }
+
5541
+
5542 /* Save starting time... */
+
5543 t0 = t1;
+
5544}
+
#define NTIMER
Maximum number of timers.
Definition: libtrac.h:714
+
+
+
+ +

◆ time_from_filename()

+ +
+
+ + + + + + + + + + + + + + + + + + +
double time_from_filename (const char * filename,
int offset 
)
+
+ +

Extract time information from filename.

+ +

Definition at line 5548 of file libtrac.c.

+
5550 {
+
5551
+
5552 char tstr[10];
+
5553
+
5554 double t;
+
5555
+
5556 /* Get time from filename... */
+
5557 int len = (int) strlen(filename);
+
5558 sprintf(tstr, "%.4s", &filename[len - offset]);
+
5559 int year = atoi(tstr);
+
5560 sprintf(tstr, "%.2s", &filename[len - offset + 5]);
+
5561 int mon = atoi(tstr);
+
5562 sprintf(tstr, "%.2s", &filename[len - offset + 8]);
+
5563 int day = atoi(tstr);
+
5564 sprintf(tstr, "%.2s", &filename[len - offset + 11]);
+
5565 int hour = atoi(tstr);
+
5566 sprintf(tstr, "%.2s", &filename[len - offset + 14]);
+
5567 int min = atoi(tstr);
+
5568
+
5569 /* Check time... */
+
5570 if (year < 1900 || year > 2100 || mon < 1 || mon > 12 || day < 1
+
5571 || day > 31 || hour < 0 || hour > 23 || min < 0 || min > 59)
+
5572 ERRMSG("Cannot read time from filename!");
+
5573
+
5574 /* Convert time to Julian seconds... */
+
5575 time2jsec(year, mon, day, hour, min, 0, 0.0, &t);
+
5576
+
5577 /* Return time... */
+
5578 return t;
+
5579}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ tropo_weight()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double tropo_weight (const clim_tclim,
const double t,
const double lat,
const double p 
)
+
+ +

Get weighting factor based on tropopause distance.

+ +

Definition at line 5583 of file libtrac.c.

+
5587 {
+
5588
+
5589 /* Get tropopause pressure... */
+
5590 double pt = clim_tropo(clim, t, lat);
+
5591
+
5592 /* Get pressure range... */
+
5593 double p1 = pt * 0.866877899;
+
5594 double p0 = pt / 0.866877899;
+
5595
+
5596 /* Get weighting factor... */
+
5597 if (p > p0)
+
5598 return 1;
+
5599 else if (p < p1)
+
5600 return 0;
+
5601 else
+
5602 return LIN(p0, 1.0, p1, 0.0, p);
+
5603}
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ write_atm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write atmospheric data.

+ +

Definition at line 5607 of file libtrac.c.

+
5611 {
+
5612
+
5613 /* Set timer... */
+
5614 SELECT_TIMER("WRITE_ATM", "OUTPUT", NVTX_WRITE);
+
5615
+
5616 /* Write info... */
+
5617 LOG(1, "Write atmospheric data: %s", filename);
+
5618
+
5619 /* Write ASCII data... */
+
5620 if (ctl->atm_type_out == 0)
+
5621 write_atm_asc(filename, ctl, atm, t);
+
5622
+
5623 /* Write binary data... */
+
5624 else if (ctl->atm_type_out == 1)
+
5625 write_atm_bin(filename, ctl, atm);
+
5626
+
5627 /* Write netCDF data... */
+
5628 else if (ctl->atm_type_out == 2)
+
5629 write_atm_nc(filename, ctl, atm);
+
5630
+
5631 /* Write CLaMS trajectory data... */
+
5632 else if (ctl->atm_type_out == 3)
+
5633 write_atm_clams_traj(filename, ctl, atm, t);
+
5634
+
5635 /* Write CLaMS pos data... */
+
5636 else if (ctl->atm_type_out == 4)
+
5637 write_atm_clams(filename, ctl, atm);
+
5638
+
5639 /* Error... */
+
5640 else
+
5641 ERRMSG("Atmospheric data type not supported!");
+
5642
+
5643 /* Write info... */
+
5644 double mini, maxi;
+
5645 LOG(2, "Number of particles: %d", atm->np);
+
5646 gsl_stats_minmax(&mini, &maxi, atm->time, 1, (size_t) atm->np);
+
5647 LOG(2, "Time range: %.2f ... %.2f s", mini, maxi);
+
5648 gsl_stats_minmax(&mini, &maxi, atm->p, 1, (size_t) atm->np);
+
5649 LOG(2, "Altitude range: %g ... %g km", Z(maxi), Z(mini));
+
5650 LOG(2, "Pressure range: %g ... %g hPa", maxi, mini);
+
5651 gsl_stats_minmax(&mini, &maxi, atm->lon, 1, (size_t) atm->np);
+
5652 LOG(2, "Longitude range: %g ... %g deg", mini, maxi);
+
5653 gsl_stats_minmax(&mini, &maxi, atm->lat, 1, (size_t) atm->np);
+
5654 LOG(2, "Latitude range: %g ... %g deg", mini, maxi);
+
5655 for (int iq = 0; iq < ctl->nq; iq++) {
+
5656 char msg[LEN];
+
5657 sprintf(msg, "Quantity %s range: %s ... %s %s",
+
5658 ctl->qnt_name[iq], ctl->qnt_format[iq],
+
5659 ctl->qnt_format[iq], ctl->qnt_unit[iq]);
+
5660 gsl_stats_minmax(&mini, &maxi, atm->q[iq], 1, (size_t) atm->np);
+
5661 LOG(2, msg, mini, maxi);
+
5662 }
+
5663}
+
void write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in ASCII format.
Definition: libtrac.c:5667
+
void write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in CLaMS position file and trajectory format.
Definition: libtrac.c:5799
+
void write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in CLaMS position file format.
Definition: libtrac.c:5950
+
void write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in binary format.
Definition: libtrac.c:5749
+
void write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in netCDF format.
Definition: libtrac.c:6004
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + +
+ +
+
+ +

◆ write_atm_asc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_asc (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write atmospheric data in ASCII format.

+ +

Definition at line 5667 of file libtrac.c.

+
5671 {
+
5672
+
5673 FILE *out;
+
5674
+
5675 /* Set time interval for output... */
+
5676 double t0 = t - 0.5 * ctl->dt_mod;
+
5677 double t1 = t + 0.5 * ctl->dt_mod;
+
5678
+
5679 /* Check if gnuplot output is requested... */
+
5680 if (ctl->atm_gpfile[0] != '-') {
+
5681
+
5682 /* Create gnuplot pipe... */
+
5683 if (!(out = popen("gnuplot", "w")))
+
5684 ERRMSG("Cannot create pipe to gnuplot!");
+
5685
+
5686 /* Set plot filename... */
+
5687 fprintf(out, "set out \"%s.png\"\n", filename);
+
5688
+
5689 /* Set time string... */
+
5690 double r;
+
5691 int year, mon, day, hour, min, sec;
+
5692 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
5693 fprintf(out, "timestr=\"%d-%02d-%02d, %02d:%02d UTC\"\n",
+
5694 year, mon, day, hour, min);
+
5695
+
5696 /* Dump gnuplot file to pipe... */
+
5697 FILE *in;
+
5698 if (!(in = fopen(ctl->atm_gpfile, "r")))
+
5699 ERRMSG("Cannot open file!");
+
5700 char line[LEN];
+
5701 while (fgets(line, LEN, in))
+
5702 fprintf(out, "%s", line);
+
5703 fclose(in);
+
5704 }
+
5705
+
5706 else {
+
5707
+
5708 /* Create file... */
+
5709 if (!(out = fopen(filename, "w")))
+
5710 ERRMSG("Cannot create file!");
+
5711 }
+
5712
+
5713 /* Write header... */
+
5714 fprintf(out,
+
5715 "# $1 = time [s]\n"
+
5716 "# $2 = altitude [km]\n"
+
5717 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
5718 for (int iq = 0; iq < ctl->nq; iq++)
+
5719 fprintf(out, "# $%i = %s [%s]\n", iq + 5, ctl->qnt_name[iq],
+
5720 ctl->qnt_unit[iq]);
+
5721 fprintf(out, "\n");
+
5722
+
5723 /* Write data... */
+
5724 for (int ip = 0; ip < atm->np; ip += ctl->atm_stride) {
+
5725
+
5726 /* Check time... */
+
5727 if (ctl->atm_filter == 2 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
5728 continue;
+
5729
+
5730 /* Write output... */
+
5731 fprintf(out, "%.2f %g %g %g", atm->time[ip], Z(atm->p[ip]),
+
5732 atm->lon[ip], atm->lat[ip]);
+
5733 for (int iq = 0; iq < ctl->nq; iq++) {
+
5734 fprintf(out, " ");
+
5735 if (ctl->atm_filter == 1 && (atm->time[ip] < t0 || atm->time[ip] > t1))
+
5736 fprintf(out, ctl->qnt_format[iq], GSL_NAN);
+
5737 else
+
5738 fprintf(out, ctl->qnt_format[iq], atm->q[iq][ip]);
+
5739 }
+
5740 fprintf(out, "\n");
+
5741 }
+
5742
+
5743 /* Close file... */
+
5744 fclose(out);
+
5745}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_atm_bin()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_bin (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Write atmospheric data in binary format.

+ +

Definition at line 5749 of file libtrac.c.

+
5752 {
+
5753
+
5754 FILE *out;
+
5755
+
5756 /* Create file... */
+
5757 if (!(out = fopen(filename, "w")))
+
5758 ERRMSG("Cannot create file!");
+
5759
+
5760 /* Write version of binary data... */
+
5761 int version = 100;
+
5762 FWRITE(&version, int,
+
5763 1,
+
5764 out);
+
5765
+
5766 /* Write data... */
+
5767 FWRITE(&atm->np, int,
+
5768 1,
+
5769 out);
+
5770 FWRITE(atm->time, double,
+
5771 (size_t) atm->np,
+
5772 out);
+
5773 FWRITE(atm->p, double,
+
5774 (size_t) atm->np,
+
5775 out);
+
5776 FWRITE(atm->lon, double,
+
5777 (size_t) atm->np,
+
5778 out);
+
5779 FWRITE(atm->lat, double,
+
5780 (size_t) atm->np,
+
5781 out);
+
5782 for (int iq = 0; iq < ctl->nq; iq++)
+
5783 FWRITE(atm->q[iq], double,
+
5784 (size_t) atm->np,
+
5785 out);
+
5786
+
5787 /* Write final flag... */
+
5788 int final = 999;
+
5789 FWRITE(&final, int,
+
5790 1,
+
5791 out);
+
5792
+
5793 /* Close file... */
+
5794 fclose(out);
+
5795}
+
+
+
+ +

◆ write_atm_clams()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_clams (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Write atmospheric data in CLaMS position file format.

+ +

Definition at line 5950 of file libtrac.c.

+
5953 {
+
5954
+
5955 int tid, pid, ncid, varid;
+
5956 size_t start[2], count[2];
+
5957
+
5958 /* Create file... */
+
5959 nc_create(filename, NC_CLOBBER, &ncid);
+
5960
+
5961 /* Define dimensions... */
+
5962 NC(nc_def_dim(ncid, "time", 1, &tid));
+
5963 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5964
+
5965 int dim_ids[2] = { tid, pid };
+
5966
+
5967 /* Define variables and their attributes... */
+
5968 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5969 "seconds since 2000-01-01 00:00:00 UTC");
+
5970 NC_DEF_VAR("LAT", NC_DOUBLE, 1, &pid, "Latitude", "deg");
+
5971 NC_DEF_VAR("LON", NC_DOUBLE, 1, &pid, "Longitude", "deg");
+
5972 NC_DEF_VAR("PRESS", NC_DOUBLE, 1, &pid, "Pressure", "hPa");
+
5973 NC_DEF_VAR("ZETA", NC_DOUBLE, 1, &pid, "Zeta", "K");
+
5974 //NC_DEF_VAR("ZETA_GRID", NC_DOUBLE, 1, &zid, "levels", "K");
+
5975 //NC_DEF_VAR("ZETA_DELTA", NC_DOUBLE, 1, &zid, "Width of zeta levels", "K");
+
5976 for (int iq = 0; iq < ctl->nq; iq++)
+
5977 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5978 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5979
+
5980 /* Define global attributes... */
+
5981 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5982 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5983
+
5984 /* End definitions... */
+
5985 NC(nc_enddef(ncid));
+
5986
+
5987 /* Write data... */
+
5988 NC_PUT_DOUBLE("time", atm->time, 0);
+
5989 NC_PUT_DOUBLE("LAT", atm->lat, 0);
+
5990 NC_PUT_DOUBLE("LON", atm->lon, 0);
+
5991 NC_PUT_DOUBLE("PRESS", atm->p, 0);
+
5992 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 0);
+
5993 for (int iq = 0; iq < ctl->nq; iq++)
+
5994 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
5995
+
5996 /* Close file... */
+
5997 NC(nc_close(ncid));
+
5998
+
5999}
+
#define NC_PUT_ATT_GLOBAL(attname, text)
Set netCDF global attribute.
Definition: libtrac.h:549
+
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
Write netCDF double array.
Definition: libtrac.h:523
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
+
+
+ +

◆ write_atm_clams_traj()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_clams_traj (const char * dirname,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write atmospheric data in CLaMS position file and trajectory format.

+ +

Definition at line 5799 of file libtrac.c.

+
5803 {
+
5804
+
5805 /* Global Counter... */
+
5806 static size_t out_cnt = 0;
+
5807
+
5808 double r, r_start, r_stop;
+
5809 int year, mon, day, hour, min, sec;
+
5810 int year_start, mon_start, day_start, hour_start, min_start, sec_start;
+
5811 int year_stop, mon_stop, day_stop, hour_stop, min_stop, sec_stop;
+
5812 char filename_out[2 * LEN] = "traj_fix_3d_YYYYMMDDHH_YYYYMMDDHH.nc";
+
5813
+
5814 int ncid, varid, tid, pid, cid;
+
5815 int dim_ids[2];
+
5816
+
5817 /* time, nparc */
+
5818 size_t start[2];
+
5819 size_t count[2];
+
5820
+
5821 /* Determine start and stop times of calculation... */
+
5822 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
5823 jsec2time(ctl->t_start, &year_start, &mon_start, &day_start, &hour_start,
+
5824 &min_start, &sec_start, &r_start);
+
5825 jsec2time(ctl->t_stop, &year_stop, &mon_stop, &day_stop, &hour_stop,
+
5826 &min_stop, &sec_stop, &r_stop);
+
5827
+
5828 sprintf(filename_out, "%s/traj_fix_3d_%02d%02d%02d%02d_%02d%02d%02d%02d.nc",
+
5829 dirname,
+
5830 year_start % 100, mon_start, day_start, hour_start,
+
5831 year_stop % 100, mon_stop, day_stop, hour_stop);
+
5832 LOG(1, "Write traj file: %s", filename_out);
+
5833
+
5834 /* Define hyperslap for the traj_file... */
+
5835 start[0] = out_cnt;
+
5836 start[1] = 0;
+
5837 count[0] = 1;
+
5838 count[1] = (size_t) atm->np;
+
5839
+
5840 /* Create the file at the first timestep... */
+
5841 if (out_cnt == 0) {
+
5842
+
5843 /* Create file... */
+
5844 nc_create(filename_out, NC_CLOBBER, &ncid);
+
5845
+
5846 /* Define dimensions... */
+
5847 NC(nc_def_dim(ncid, "time", NC_UNLIMITED, &tid));
+
5848 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5849 NC(nc_def_dim(ncid, "TMDT", 7, &cid));
+
5850 dim_ids[0] = tid;
+
5851 dim_ids[1] = pid;
+
5852
+
5853 /* Define variables and their attributes... */
+
5854 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5855 "seconds since 2000-01-01 00:00:00 UTC");
+
5856 NC_DEF_VAR("LAT", NC_DOUBLE, 2, dim_ids, "Latitude", "deg");
+
5857 NC_DEF_VAR("LON", NC_DOUBLE, 2, dim_ids, "Longitude", "deg");
+
5858 NC_DEF_VAR("PRESS", NC_DOUBLE, 2, dim_ids, "Pressure", "hPa");
+
5859 NC_DEF_VAR("ZETA", NC_DOUBLE, 2, dim_ids, "Zeta", "K");
+
5860 for (int iq = 0; iq < ctl->nq; iq++)
+
5861 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5862 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5863
+
5864 /* Define global attributes... */
+
5865 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5866 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5867
+
5868 /* End definitions... */
+
5869 NC(nc_enddef(ncid));
+
5870 NC(nc_close(ncid));
+
5871 }
+
5872
+
5873 /* Increment global counter to change hyperslap... */
+
5874 out_cnt++;
+
5875
+
5876 /* Open file... */
+
5877 NC(nc_open(filename_out, NC_WRITE, &ncid));
+
5878
+
5879 /* Write data... */
+
5880 NC_PUT_DOUBLE("time", atm->time, 1);
+
5881 NC_PUT_DOUBLE("LAT", atm->lat, 1);
+
5882 NC_PUT_DOUBLE("LON", atm->lon, 1);
+
5883 NC_PUT_DOUBLE("PRESS", atm->p, 1);
+
5884 if (ctl->vert_coord_ap == 1) {
+
5885 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta], 1);
+
5886 } else if (ctl->qnt_zeta >= 0) {
+
5887 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 1);
+
5888 }
+
5889 for (int iq = 0; iq < ctl->nq; iq++)
+
5890 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 1);
+
5891
+
5892 /* Close file... */
+
5893 NC(nc_close(ncid));
+
5894
+
5895 /* At the last time step create the init_fix_YYYYMMDDHH file... */
+
5896 if ((year == year_stop) && (mon == mon_stop)
+
5897 && (day == day_stop) && (hour == hour_stop)) {
+
5898
+
5899 /* Set filename... */
+
5900 char filename_init[2 * LEN] = "./init_fix_YYYYMMDDHH.nc";
+
5901 sprintf(filename_init, "%s/init_fix_%02d%02d%02d%02d.nc",
+
5902 dirname, year_stop % 100, mon_stop, day_stop, hour_stop);
+
5903 LOG(1, "Write init file: %s", filename_init);
+
5904
+
5905 /* Create file... */
+
5906 nc_create(filename_init, NC_CLOBBER, &ncid);
+
5907
+
5908 /* Define dimensions... */
+
5909 NC(nc_def_dim(ncid, "time", 1, &tid));
+
5910 NC(nc_def_dim(ncid, "NPARTS", (size_t) atm->np, &pid));
+
5911 dim_ids[0] = tid;
+
5912 dim_ids[1] = pid;
+
5913
+
5914 /* Define variables and their attributes... */
+
5915 NC_DEF_VAR("time", NC_DOUBLE, 1, &tid, "Time",
+
5916 "seconds since 2000-01-01 00:00:00 UTC");
+
5917 NC_DEF_VAR("LAT", NC_DOUBLE, 1, &pid, "Latitude", "deg");
+
5918 NC_DEF_VAR("LON", NC_DOUBLE, 1, &pid, "Longitude", "deg");
+
5919 NC_DEF_VAR("PRESS", NC_DOUBLE, 1, &pid, "Pressure", "hPa");
+
5920 NC_DEF_VAR("ZETA", NC_DOUBLE, 1, &pid, "Zeta", "K");
+
5921 //NC_DEF_VAR("ZETA_GRID", NC_DOUBLE, 1, &zid, "levels", "K");
+
5922 //NC_DEF_VAR("ZETA_DELTA", NC_DOUBLE, 1, &zid, "Width of zeta levels", "K");
+
5923 for (int iq = 0; iq < ctl->nq; iq++)
+
5924 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 2, dim_ids,
+
5925 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
5926
+
5927 /* Define global attributes... */
+
5928 NC_PUT_ATT_GLOBAL("exp_VERTCOOR_name", "zeta");
+
5929 NC_PUT_ATT_GLOBAL("model", "MPTRAC");
+
5930
+
5931 /* End definitions... */
+
5932 NC(nc_enddef(ncid));
+
5933
+
5934 /* Write data... */
+
5935 NC_PUT_DOUBLE("time", atm->time, 0);
+
5936 NC_PUT_DOUBLE("LAT", atm->lat, 0);
+
5937 NC_PUT_DOUBLE("LON", atm->lon, 0);
+
5938 NC_PUT_DOUBLE("PRESS", atm->p, 0);
+
5939 NC_PUT_DOUBLE("ZETA", atm->q[ctl->qnt_zeta_d], 0);
+
5940 for (int iq = 0; iq < ctl->nq; iq++)
+
5941 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
5942
+
5943 /* Close file... */
+
5944 NC(nc_close(ncid));
+
5945 }
+
5946}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_atm_nc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void write_atm_nc (const char * filename,
ctl_tctl,
atm_tatm 
)
+
+ +

Write atmospheric data in netCDF format.

+ +

Definition at line 6004 of file libtrac.c.

+
6007 {
+
6008
+
6009 int ncid, obsid, varid;
+
6010
+
6011 size_t start[2], count[2];
+
6012
+
6013 /* Create file... */
+
6014 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
6015
+
6016 /* Define dimensions... */
+
6017 NC(nc_def_dim(ncid, "obs", (size_t) atm->np, &obsid));
+
6018
+
6019 /* Define variables and their attributes... */
+
6020 NC_DEF_VAR("time", NC_DOUBLE, 1, &obsid, "time",
+
6021 "seconds since 2000-01-01 00:00:00 UTC");
+
6022 NC_DEF_VAR("press", NC_DOUBLE, 1, &obsid, "pressure", "hPa");
+
6023 NC_DEF_VAR("lon", NC_DOUBLE, 1, &obsid, "longitude", "degrees_east");
+
6024 NC_DEF_VAR("lat", NC_DOUBLE, 1, &obsid, "latitude", "degrees_north");
+
6025 for (int iq = 0; iq < ctl->nq; iq++)
+
6026 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 1, &obsid,
+
6027 ctl->qnt_longname[iq], ctl->qnt_unit[iq]);
+
6028
+
6029 /* Define global attributes... */
+
6030 NC_PUT_ATT_GLOBAL("featureType", "point");
+
6031
+
6032 /* End definitions... */
+
6033 NC(nc_enddef(ncid));
+
6034
+
6035 /* Write data... */
+
6036 NC_PUT_DOUBLE("time", atm->time, 0);
+
6037 NC_PUT_DOUBLE("press", atm->p, 0);
+
6038 NC_PUT_DOUBLE("lon", atm->lon, 0);
+
6039 NC_PUT_DOUBLE("lat", atm->lat, 0);
+
6040 for (int iq = 0; iq < ctl->nq; iq++)
+
6041 NC_PUT_DOUBLE(ctl->qnt_name[iq], atm->q[iq], 0);
+
6042
+
6043 /* Close file... */
+
6044 NC(nc_close(ncid));
+
6045}
+
+
+
+ +

◆ write_csi()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_csi (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write CSI data.

+ +

Definition at line 6049 of file libtrac.c.

+
6053 {
+
6054
+
6055 static FILE *out;
+
6056
+
6057 static double *modmean, *obsmean, *rt, *rz, *rlon, *rlat, *robs, *area,
+
6058 dlon, dlat, dz, x[NCSI], y[NCSI], kz[EP], kw[EP];
+
6059
+
6060 static int *obscount, ct, cx, cy, cz, ip, ix, iy, iz, n, nobs, nk;
+
6061
+
6062 /* Set timer... */
+
6063 SELECT_TIMER("WRITE_CSI", "OUTPUT", NVTX_WRITE);
+
6064
+
6065 /* Init... */
+
6066 if (t == ctl->t_start) {
+
6067
+
6068 /* Check quantity index for mass... */
+
6069 if (ctl->qnt_m < 0)
+
6070 ERRMSG("Need quantity mass!");
+
6071
+
6072 /* Allocate... */
+
6073 ALLOC(area, double,
+
6074 ctl->csi_ny);
+
6075 ALLOC(rt, double,
+
6076 NOBS);
+
6077 ALLOC(rz, double,
+
6078 NOBS);
+
6079 ALLOC(rlon, double,
+
6080 NOBS);
+
6081 ALLOC(rlat, double,
+
6082 NOBS);
+
6083 ALLOC(robs, double,
+
6084 NOBS);
+
6085
+
6086 /* Read observation data... */
+
6087 read_obs(ctl->csi_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
6088
+
6089 /* Read kernel data... */
+
6090 if (ctl->csi_kernel[0] != '-')
+
6091 read_kernel(ctl->csi_kernel, kz, kw, &nk);
+
6092
+
6093 /* Create new file... */
+
6094 LOG(1, "Write CSI data: %s", filename);
+
6095 if (!(out = fopen(filename, "w")))
+
6096 ERRMSG("Cannot create file!");
+
6097
+
6098 /* Write header... */
+
6099 fprintf(out,
+
6100 "# $1 = time [s]\n"
+
6101 "# $2 = number of hits (cx)\n"
+
6102 "# $3 = number of misses (cy)\n"
+
6103 "# $4 = number of false alarms (cz)\n"
+
6104 "# $5 = number of observations (cx + cy)\n"
+
6105 "# $6 = number of forecasts (cx + cz)\n"
+
6106 "# $7 = bias (ratio of forecasts and observations) [%%]\n"
+
6107 "# $8 = probability of detection (POD) [%%]\n"
+
6108 "# $9 = false alarm rate (FAR) [%%]\n"
+
6109 "# $10 = critical success index (CSI) [%%]\n");
+
6110 fprintf(out,
+
6111 "# $11 = hits associated with random chance\n"
+
6112 "# $12 = equitable threat score (ETS) [%%]\n"
+
6113 "# $13 = Pearson linear correlation coefficient\n"
+
6114 "# $14 = Spearman rank-order correlation coefficient\n"
+
6115 "# $15 = column density mean error (F - O) [kg/m^2]\n"
+
6116 "# $16 = column density root mean square error (RMSE) [kg/m^2]\n"
+
6117 "# $17 = column density mean absolute error [kg/m^2]\n"
+
6118 "# $18 = number of data points\n\n");
+
6119
+
6120 /* Set grid box size... */
+
6121 dz = (ctl->csi_z1 - ctl->csi_z0) / ctl->csi_nz;
+
6122 dlon = (ctl->csi_lon1 - ctl->csi_lon0) / ctl->csi_nx;
+
6123 dlat = (ctl->csi_lat1 - ctl->csi_lat0) / ctl->csi_ny;
+
6124
+
6125 /* Set horizontal coordinates... */
+
6126 for (iy = 0; iy < ctl->csi_ny; iy++) {
+
6127 double lat = ctl->csi_lat0 + dlat * (iy + 0.5);
+
6128 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.) * cos(lat * M_PI / 180.);
+
6129 }
+
6130 }
+
6131
+
6132 /* Set time interval... */
+
6133 double t0 = t - 0.5 * ctl->dt_mod;
+
6134 double t1 = t + 0.5 * ctl->dt_mod;
+
6135
+
6136 /* Allocate... */
+
6137 ALLOC(modmean, double,
+
6138 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6139 ALLOC(obsmean, double,
+
6140 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6141 ALLOC(obscount, int,
+
6142 ctl->csi_nx * ctl->csi_ny * ctl->csi_nz);
+
6143
+
6144 /* Loop over observations... */
+
6145 for (int i = 0; i < nobs; i++) {
+
6146
+
6147 /* Check time... */
+
6148 if (rt[i] < t0)
+
6149 continue;
+
6150 else if (rt[i] >= t1)
+
6151 break;
+
6152
+
6153 /* Check observation data... */
+
6154 if (!isfinite(robs[i]))
+
6155 continue;
+
6156
+
6157 /* Calculate indices... */
+
6158 ix = (int) ((rlon[i] - ctl->csi_lon0) / dlon);
+
6159 iy = (int) ((rlat[i] - ctl->csi_lat0) / dlat);
+
6160 iz = (int) ((rz[i] - ctl->csi_z0) / dz);
+
6161
+
6162 /* Check indices... */
+
6163 if (ix < 0 || ix >= ctl->csi_nx ||
+
6164 iy < 0 || iy >= ctl->csi_ny || iz < 0 || iz >= ctl->csi_nz)
+
6165 continue;
+
6166
+
6167 /* Get mean observation index... */
+
6168 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6169 obsmean[idx] += robs[i];
+
6170 obscount[idx]++;
+
6171 }
+
6172
+
6173 /* Analyze model data... */
+
6174 for (ip = 0; ip < atm->np; ip++) {
+
6175
+
6176 /* Check time... */
+
6177 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
6178 continue;
+
6179
+
6180 /* Get indices... */
+
6181 ix = (int) ((atm->lon[ip] - ctl->csi_lon0) / dlon);
+
6182 iy = (int) ((atm->lat[ip] - ctl->csi_lat0) / dlat);
+
6183 iz = (int) ((Z(atm->p[ip]) - ctl->csi_z0) / dz);
+
6184
+
6185 /* Check indices... */
+
6186 if (ix < 0 || ix >= ctl->csi_nx ||
+
6187 iy < 0 || iy >= ctl->csi_ny || iz < 0 || iz >= ctl->csi_nz)
+
6188 continue;
+
6189
+
6190 /* Get total mass in grid cell... */
+
6191 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6192 modmean[idx] += kernel_weight(kz, kw, nk, atm->p[ip])
+
6193 * atm->q[ctl->qnt_m][ip];
+
6194 }
+
6195
+
6196 /* Analyze all grid cells... */
+
6197 for (ix = 0; ix < ctl->csi_nx; ix++)
+
6198 for (iy = 0; iy < ctl->csi_ny; iy++)
+
6199 for (iz = 0; iz < ctl->csi_nz; iz++) {
+
6200
+
6201 /* Calculate mean observation index... */
+
6202 int idx = ARRAY_3D(ix, iy, ctl->csi_ny, iz, ctl->csi_nz);
+
6203 if (obscount[idx] > 0)
+
6204 obsmean[idx] /= obscount[idx];
+
6205
+
6206 /* Calculate column density... */
+
6207 if (modmean[idx] > 0)
+
6208 modmean[idx] /= (1e6 * area[iy]);
+
6209
+
6210 /* Calculate CSI... */
+
6211 if (obscount[idx] > 0) {
+
6212 ct++;
+
6213 if (obsmean[idx] >= ctl->csi_obsmin &&
+
6214 modmean[idx] >= ctl->csi_modmin)
+
6215 cx++;
+
6216 else if (obsmean[idx] >= ctl->csi_obsmin &&
+
6217 modmean[idx] < ctl->csi_modmin)
+
6218 cy++;
+
6219 else if (obsmean[idx] < ctl->csi_obsmin &&
+
6220 modmean[idx] >= ctl->csi_modmin)
+
6221 cz++;
+
6222 }
+
6223
+
6224 /* Save data for other verification statistics... */
+
6225 if (obscount[idx] > 0
+
6226 && (obsmean[idx] >= ctl->csi_obsmin
+
6227 || modmean[idx] >= ctl->csi_modmin)) {
+
6228 x[n] = modmean[idx];
+
6229 y[n] = obsmean[idx];
+
6230 if ((++n) > NCSI)
+
6231 ERRMSG("Too many data points to calculate statistics!");
+
6232 }
+
6233 }
+
6234
+
6235 /* Write output... */
+
6236 if (fmod(t, ctl->csi_dt_out) == 0) {
+
6237
+
6238 /* Calculate verification statistics
+
6239 (https://www.cawcr.gov.au/projects/verification/) ... */
+
6240 static double work[2 * NCSI];
+
6241 int n_obs = cx + cy;
+
6242 int n_for = cx + cz;
+
6243 double bias = (n_obs > 0) ? 100. * n_for / n_obs : GSL_NAN;
+
6244 double pod = (n_obs > 0) ? (100. * cx) / n_obs : GSL_NAN;
+
6245 double far = (n_for > 0) ? (100. * cz) / n_for : GSL_NAN;
+
6246 double csi = (cx + cy + cz > 0) ? (100. * cx) / (cx + cy + cz) : GSL_NAN;
+
6247 double cx_rd = (ct > 0) ? (1. * n_obs * n_for) / ct : GSL_NAN;
+
6248 double ets = (cx + cy + cz - cx_rd > 0) ?
+
6249 (100. * (cx - cx_rd)) / (cx + cy + cz - cx_rd) : GSL_NAN;
+
6250 double rho_p =
+
6251 (n > 0) ? gsl_stats_correlation(x, 1, y, 1, (size_t) n) : GSL_NAN;
+
6252 double rho_s =
+
6253 (n > 0) ? gsl_stats_spearman(x, 1, y, 1, (size_t) n, work) : GSL_NAN;
+
6254 for (int i = 0; i < n; i++)
+
6255 work[i] = x[i] - y[i];
+
6256 double mean = (n > 0) ? gsl_stats_mean(work, 1, (size_t) n) : GSL_NAN;
+
6257 double rmse = (n > 0) ? gsl_stats_sd_with_fixed_mean(work, 1, (size_t) n,
+
6258 0.0) : GSL_NAN;
+
6259 double absdev =
+
6260 (n > 0) ? gsl_stats_absdev_m(work, 1, (size_t) n, 0.0) : GSL_NAN;
+
6261
+
6262 /* Write... */
+
6263 fprintf(out, "%.2f %d %d %d %d %d %g %g %g %g %g %g %g %g %g %g %g %d\n",
+
6264 t, cx, cy, cz, n_obs, n_for, bias, pod, far, csi, cx_rd, ets,
+
6265 rho_p, rho_s, mean, rmse, absdev, n);
+
6266
+
6267 /* Set counters to zero... */
+
6268 n = ct = cx = cy = cz = 0;
+
6269 }
+
6270
+
6271 /* Free... */
+
6272 free(modmean);
+
6273 free(obsmean);
+
6274 free(obscount);
+
6275
+
6276 /* Finalize... */
+
6277 if (t == ctl->t_stop) {
+
6278
+
6279 /* Close output file... */
+
6280 fclose(out);
+
6281
+
6282 /* Free... */
+
6283 free(area);
+
6284 free(rt);
+
6285 free(rz);
+
6286 free(rlon);
+
6287 free(rlat);
+
6288 free(robs);
+
6289 }
+
6290}
+
void read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk)
Read kernel data file.
Definition: libtrac.c:3058
+
void read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs)
Read observation data.
Definition: libtrac.c:5184
+
double kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p)
Get weighting factor from kernel function.
Definition: libtrac.c:1515
+
#define NCSI
Maximum number of data points for CSI calculation.
Definition: libtrac.h:177
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ write_ens()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_ens (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write ensemble data.

+ +

Definition at line 6294 of file libtrac.c.

+
6298 {
+
6299
+
6300 static FILE *out;
+
6301
+
6302 static double dummy, lat, lon, qm[NQ][NENS], qs[NQ][NENS], xm[NENS][3],
+
6303 x[3], zm[NENS];
+
6304
+
6305 static int n[NENS];
+
6306
+
6307 /* Set timer... */
+
6308 SELECT_TIMER("WRITE_ENS", "OUTPUT", NVTX_WRITE);
+
6309
+
6310 /* Check quantities... */
+
6311 if (ctl->qnt_ens < 0)
+
6312 ERRMSG("Missing ensemble IDs!");
+
6313
+
6314 /* Set time interval... */
+
6315 double t0 = t - 0.5 * ctl->dt_mod;
+
6316 double t1 = t + 0.5 * ctl->dt_mod;
+
6317
+
6318 /* Init... */
+
6319 for (int i = 0; i < NENS; i++) {
+
6320 for (int iq = 0; iq < ctl->nq; iq++)
+
6321 qm[iq][i] = qs[iq][i] = 0;
+
6322 xm[i][0] = xm[i][1] = xm[i][2] = zm[i] = 0;
+
6323 n[i] = 0;
+
6324 }
+
6325
+
6326 /* Loop over air parcels... */
+
6327 for (int ip = 0; ip < atm->np; ip++) {
+
6328
+
6329 /* Check time... */
+
6330 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
6331 continue;
+
6332
+
6333 /* Check ensemble ID... */
+
6334 if (atm->q[ctl->qnt_ens][ip] < 0 || atm->q[ctl->qnt_ens][ip] >= NENS)
+
6335 ERRMSG("Ensemble ID is out of range!");
+
6336
+
6337 /* Get means... */
+
6338 geo2cart(0, atm->lon[ip], atm->lat[ip], x);
+
6339 for (int iq = 0; iq < ctl->nq; iq++) {
+
6340 qm[iq][ctl->qnt_ens] += atm->q[iq][ip];
+
6341 qs[iq][ctl->qnt_ens] += SQR(atm->q[iq][ip]);
+
6342 }
+
6343 xm[ctl->qnt_ens][0] += x[0];
+
6344 xm[ctl->qnt_ens][1] += x[1];
+
6345 xm[ctl->qnt_ens][2] += x[2];
+
6346 zm[ctl->qnt_ens] += Z(atm->p[ip]);
+
6347 n[ctl->qnt_ens]++;
+
6348 }
+
6349
+
6350 /* Create file... */
+
6351 LOG(1, "Write ensemble data: %s", filename);
+
6352 if (!(out = fopen(filename, "w")))
+
6353 ERRMSG("Cannot create file!");
+
6354
+
6355 /* Write header... */
+
6356 fprintf(out,
+
6357 "# $1 = time [s]\n"
+
6358 "# $2 = altitude [km]\n"
+
6359 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
6360 for (int iq = 0; iq < ctl->nq; iq++)
+
6361 fprintf(out, "# $%d = %s (mean) [%s]\n", 5 + iq,
+
6362 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
6363 for (int iq = 0; iq < ctl->nq; iq++)
+
6364 fprintf(out, "# $%d = %s (sigma) [%s]\n", 5 + ctl->nq + iq,
+
6365 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
6366 fprintf(out, "# $%d = number of members\n\n", 5 + 2 * ctl->nq);
+
6367
+
6368 /* Write data... */
+
6369 for (int i = 0; i < NENS; i++)
+
6370 if (n[i] > 0) {
+
6371 cart2geo(xm[i], &dummy, &lon, &lat);
+
6372 fprintf(out, "%.2f %g %g %g", t, zm[i] / n[i], lon, lat);
+
6373 for (int iq = 0; iq < ctl->nq; iq++) {
+
6374 fprintf(out, " ");
+
6375 fprintf(out, ctl->qnt_format[iq], qm[iq][i] / n[i]);
+
6376 }
+
6377 for (int iq = 0; iq < ctl->nq; iq++) {
+
6378 fprintf(out, " ");
+
6379 double var = qs[iq][i] / n[i] - SQR(qm[iq][i] / n[i]);
+
6380 fprintf(out, ctl->qnt_format[iq], (var > 0 ? sqrt(var) : 0));
+
6381 }
+
6382 fprintf(out, " %d\n", n[i]);
+
6383 }
+
6384
+
6385 /* Close file... */
+
6386 fclose(out);
+
6387}
+
void cart2geo(const double *x, double *z, double *lon, double *lat)
Convert Cartesian coordinates to geolocation.
Definition: libtrac.c:44
+
#define NENS
Maximum number of data points for ensemble analysis.
Definition: libtrac.h:197
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ write_grid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_grid (const char * filename,
ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Write gridded data.

+ +

Definition at line 6391 of file libtrac.c.

+
6397 {
+
6398
+
6399 static double kz[EP], kw[EP];
+
6400
+
6401 static int nk;
+
6402
+
6403 double *cd, *mean[NQ], *vmr_impl, *z, *lon, *lat, *area, *press;
+
6404
+
6405 int *ixs, *iys, *izs, *np;
+
6406
+
6407 /* Set timer... */
+
6408 SELECT_TIMER("WRITE_GRID", "OUTPUT", NVTX_WRITE);
+
6409
+
6410 /* Write info... */
+
6411 LOG(1, "Write grid data: %s", filename);
+
6412
+
6413 /* Init... */
+
6414 if (t == ctl->t_start) {
+
6415
+
6416 /* Read kernel data... */
+
6417 if (ctl->grid_kernel[0] != '-')
+
6418 read_kernel(ctl->grid_kernel, kz, kw, &nk);
+
6419 }
+
6420
+
6421 /* Allocate... */
+
6422 ALLOC(cd, double,
+
6423 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6424 for (int iq = 0; iq < ctl->nq; iq++) {
+
6425 ALLOC(mean[iq], double,
+
6426 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6427 }
+
6428 ALLOC(vmr_impl, double,
+
6429 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6430 ALLOC(z, double,
+
6431 ctl->grid_nz);
+
6432 ALLOC(lon, double,
+
6433 ctl->grid_nx);
+
6434 ALLOC(lat, double,
+
6435 ctl->grid_ny);
+
6436 ALLOC(area, double,
+
6437 ctl->grid_ny);
+
6438 ALLOC(press, double,
+
6439 ctl->grid_nz);
+
6440 ALLOC(np, int,
+
6441 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6442 ALLOC(ixs, int,
+
6443 atm->np);
+
6444 ALLOC(iys, int,
+
6445 atm->np);
+
6446 ALLOC(izs, int,
+
6447 atm->np);
+
6448
+
6449 /* Set grid box size... */
+
6450 double dz = (ctl->grid_z1 - ctl->grid_z0) / ctl->grid_nz;
+
6451 double dlon = (ctl->grid_lon1 - ctl->grid_lon0) / ctl->grid_nx;
+
6452 double dlat = (ctl->grid_lat1 - ctl->grid_lat0) / ctl->grid_ny;
+
6453
+
6454 /* Set vertical coordinates... */
+
6455#pragma omp parallel for default(shared)
+
6456 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6457 z[iz] = ctl->grid_z0 + dz * (iz + 0.5);
+
6458 press[iz] = P(z[iz]);
+
6459 }
+
6460
+
6461 /* Set horizontal coordinates... */
+
6462 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6463 lon[ix] = ctl->grid_lon0 + dlon * (ix + 0.5);
+
6464#pragma omp parallel for default(shared)
+
6465 for (int iy = 0; iy < ctl->grid_ny; iy++) {
+
6466 lat[iy] = ctl->grid_lat0 + dlat * (iy + 0.5);
+
6467 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
6468 * cos(lat[iy] * M_PI / 180.);
+
6469 }
+
6470
+
6471 /* Set time interval for output... */
+
6472 double t0 = t - 0.5 * ctl->dt_mod;
+
6473 double t1 = t + 0.5 * ctl->dt_mod;
+
6474
+
6475 /* Get grid box indices... */
+
6476#pragma omp parallel for default(shared)
+
6477 for (int ip = 0; ip < atm->np; ip++) {
+
6478 ixs[ip] = (int) ((atm->lon[ip] - ctl->grid_lon0) / dlon);
+
6479 iys[ip] = (int) ((atm->lat[ip] - ctl->grid_lat0) / dlat);
+
6480 izs[ip] = (int) ((Z(atm->p[ip]) - ctl->grid_z0) / dz);
+
6481 if (atm->time[ip] < t0 || atm->time[ip] > t1
+
6482 || ixs[ip] < 0 || ixs[ip] >= ctl->grid_nx
+
6483 || iys[ip] < 0 || iys[ip] >= ctl->grid_ny
+
6484 || izs[ip] < 0 || izs[ip] >= ctl->grid_nz)
+
6485 izs[ip] = -1;
+
6486 }
+
6487
+
6488 /* Average data... */
+
6489 for (int ip = 0; ip < atm->np; ip++)
+
6490 if (izs[ip] >= 0) {
+
6491 int idx =
+
6492 ARRAY_3D(ixs[ip], iys[ip], ctl->grid_ny, izs[ip], ctl->grid_nz);
+
6493 double kernel = kernel_weight(kz, kw, nk, atm->p[ip]);
+
6494 np[idx]++;
+
6495 for (int iq = 0; iq < ctl->nq; iq++)
+
6496 mean[iq][idx] += kernel * atm->q[iq][ip];
+
6497 }
+
6498
+
6499 /* Calculate column density and vmr... */
+
6500#pragma omp parallel for default(shared)
+
6501 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6502 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6503 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6504
+
6505 /* Get grid index... */
+
6506 int idx = ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz);
+
6507
+
6508 /* Calculate column density... */
+
6509 cd[idx] = GSL_NAN;
+
6510 if (ctl->qnt_m >= 0)
+
6511 cd[idx] = mean[ctl->qnt_m][idx] / (1e6 * area[iy]);
+
6512
+
6513 /* Calculate volume mixing ratio (implicit)... */
+
6514 vmr_impl[idx] = GSL_NAN;
+
6515 if (ctl->qnt_m >= 0 && ctl->molmass > 0) {
+
6516 vmr_impl[idx] = 0;
+
6517 if (mean[ctl->qnt_m][idx] > 0) {
+
6518
+
6519 /* Get temperature... */
+
6520 double temp;
+ +
6522 intpol_met_time_3d(met0, met0->t, met1, met1->t, t, press[iz],
+
6523 lon[ix], lat[iy], &temp, ci, cw, 1);
+
6524
+
6525 /* Calculate volume mixing ratio... */
+
6526 vmr_impl[idx] = MA / ctl->molmass * mean[ctl->qnt_m][idx]
+
6527 / (RHO(press[iz], temp) * 1e6 * area[iy] * 1e3 * dz);
+
6528 }
+
6529 }
+
6530
+
6531 /* Calculate mean... */
+
6532 if (np[idx] > 0)
+
6533 for (int iq = 0; iq < ctl->nq; iq++)
+
6534 mean[iq][idx] /= np[idx];
+
6535 else
+
6536 for (int iq = 0; iq < ctl->nq; iq++)
+
6537 mean[iq][idx] = GSL_NAN;
+
6538
+
6539 }
+
6540
+
6541 /* Write ASCII data... */
+
6542 if (ctl->grid_type == 0)
+
6543 write_grid_asc(filename, ctl, cd, mean, vmr_impl, t, z, lon, lat, area,
+
6544 dz, np);
+
6545
+
6546 /* Write netCDF data... */
+
6547 else if (ctl->grid_type == 1)
+
6548 write_grid_nc(filename, ctl, cd, mean, vmr_impl, t, z, lon, lat, area, dz,
+
6549 np);
+
6550
+
6551 /* Error message... */
+
6552 else
+
6553 ERRMSG("Grid data format GRID_TYPE unknown!");
+
6554
+
6555 /* Free... */
+
6556 free(cd);
+
6557 for (int iq = 0; iq < ctl->nq; iq++)
+
6558 free(mean[iq]);
+
6559 free(vmr_impl);
+
6560 free(z);
+
6561 free(lon);
+
6562 free(lat);
+
6563 free(area);
+
6564 free(press);
+
6565 free(np);
+
6566 free(ixs);
+
6567 free(iys);
+
6568 free(izs);
+
6569}
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
void write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in ASCII format.
Definition: libtrac.c:6573
+
void write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in netCDF format.
Definition: libtrac.c:6666
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + +
+ +
+
+ +

◆ write_grid_asc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_grid_asc (const char * filename,
ctl_tctl,
double * cd,
double * mean[NQ],
double * vmr_impl,
double t,
double * z,
double * lon,
double * lat,
double * area,
double dz,
int * np 
)
+
+ +

Write gridded data in ASCII format.

+ +

Definition at line 6573 of file libtrac.c.

+
6585 {
+
6586
+
6587 FILE *in, *out;
+
6588
+
6589 char line[LEN];
+
6590
+
6591 /* Check if gnuplot output is requested... */
+
6592 if (ctl->grid_gpfile[0] != '-') {
+
6593
+
6594 /* Create gnuplot pipe... */
+
6595 if (!(out = popen("gnuplot", "w")))
+
6596 ERRMSG("Cannot create pipe to gnuplot!");
+
6597
+
6598 /* Set plot filename... */
+
6599 fprintf(out, "set out \"%s.png\"\n", filename);
+
6600
+
6601 /* Set time string... */
+
6602 double r;
+
6603 int year, mon, day, hour, min, sec;
+
6604 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
6605 fprintf(out, "timestr=\"%d-%02d-%02d, %02d:%02d UTC\"\n",
+
6606 year, mon, day, hour, min);
+
6607
+
6608 /* Dump gnuplot file to pipe... */
+
6609 if (!(in = fopen(ctl->grid_gpfile, "r")))
+
6610 ERRMSG("Cannot open file!");
+
6611 while (fgets(line, LEN, in))
+
6612 fprintf(out, "%s", line);
+
6613 fclose(in);
+
6614 }
+
6615
+
6616 else {
+
6617
+
6618 /* Create file... */
+
6619 if (!(out = fopen(filename, "w")))
+
6620 ERRMSG("Cannot create file!");
+
6621 }
+
6622
+
6623 /* Write header... */
+
6624 fprintf(out,
+
6625 "# $1 = time [s]\n"
+
6626 "# $2 = altitude [km]\n"
+
6627 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
6628 for (int iq = 0; iq < ctl->nq; iq++)
+
6629 fprintf(out, "# $%i = %s (mean) [%s]\n", 5 + iq, ctl->qnt_name[iq],
+
6630 ctl->qnt_unit[iq]);
+
6631 fprintf(out, "# $%d = number of particles [1]\n", 5 + ctl->nq);
+
6632 fprintf(out, "# $%d = surface area [km^2]\n", 6 + ctl->nq);
+
6633 fprintf(out, "# $%d = layer depth [km]\n", 7 + ctl->nq);
+
6634 fprintf(out, "# $%d = column density (implicit) [kg/m^2]\n", 8 + ctl->nq);
+
6635 fprintf(out, "# $%d = volume mixing ratio (implicit) [ppv]\n", 9 + ctl->nq);
+
6636 fprintf(out, "\n");
+
6637
+
6638 /* Write data... */
+
6639 for (int ix = 0; ix < ctl->grid_nx; ix++) {
+
6640 if (ix > 0 && ctl->grid_ny > 1 && !ctl->grid_sparse)
+
6641 fprintf(out, "\n");
+
6642 for (int iy = 0; iy < ctl->grid_ny; iy++) {
+
6643 if (iy > 0 && ctl->grid_nz > 1 && !ctl->grid_sparse)
+
6644 fprintf(out, "\n");
+
6645 for (int iz = 0; iz < ctl->grid_nz; iz++) {
+
6646 int idx = ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz);
+
6647 if (!ctl->grid_sparse || vmr_impl[idx] > 0) {
+
6648 fprintf(out, "%.2f %g %g %g", t, z[iz], lon[ix], lat[iy]);
+
6649 for (int iq = 0; iq < ctl->nq; iq++) {
+
6650 fprintf(out, " ");
+
6651 fprintf(out, ctl->qnt_format[iq], mean[iq][idx]);
+
6652 }
+
6653 fprintf(out, " %d %g %g %g %g\n", np[idx], area[iy], dz, cd[idx],
+
6654 vmr_impl[idx]);
+
6655 }
+
6656 }
+
6657 }
+
6658 }
+
6659
+
6660 /* Close file... */
+
6661 fclose(out);
+
6662}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_grid_nc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_grid_nc (const char * filename,
ctl_tctl,
double * cd,
double * mean[NQ],
double * vmr_impl,
double t,
double * z,
double * lon,
double * lat,
double * area,
double dz,
int * np 
)
+
+ +

Write gridded data in netCDF format.

+ +

Definition at line 6666 of file libtrac.c.

+
6678 {
+
6679
+
6680 double *help;
+
6681
+
6682 int *help2, ncid, dimid[10], varid;
+
6683
+
6684 size_t start[2], count[2];
+
6685
+
6686 /* Allocate... */
+
6687 ALLOC(help, double,
+
6688 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6689 ALLOC(help2, int,
+
6690 ctl->grid_nx * ctl->grid_ny * ctl->grid_nz);
+
6691
+
6692 /* Create file... */
+
6693 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
6694
+
6695 /* Define dimensions... */
+
6696 NC(nc_def_dim(ncid, "time", 1, &dimid[0]));
+
6697 NC(nc_def_dim(ncid, "z", (size_t) ctl->grid_nz, &dimid[1]));
+
6698 NC(nc_def_dim(ncid, "lat", (size_t) ctl->grid_ny, &dimid[2]));
+
6699 NC(nc_def_dim(ncid, "lon", (size_t) ctl->grid_nx, &dimid[3]));
+
6700 NC(nc_def_dim(ncid, "dz", 1, &dimid[4]));
+
6701
+
6702 /* Define variables and their attributes... */
+
6703 NC_DEF_VAR("time", NC_DOUBLE, 1, &dimid[0], "time",
+
6704 "seconds since 2000-01-01 00:00:00 UTC");
+
6705 NC_DEF_VAR("z", NC_DOUBLE, 1, &dimid[1], "altitude", "km");
+
6706 NC_DEF_VAR("lat", NC_DOUBLE, 1, &dimid[2], "latitude", "degrees_north");
+
6707 NC_DEF_VAR("lon", NC_DOUBLE, 1, &dimid[3], "longitude", "degrees_east");
+
6708 NC_DEF_VAR("dz", NC_DOUBLE, 1, &dimid[1], "layer depth", "km");
+
6709 NC_DEF_VAR("area", NC_DOUBLE, 1, &dimid[2], "surface area", "km**2");
+
6710 NC_DEF_VAR("cd", NC_FLOAT, 4, dimid, "column density", "kg m**-2");
+
6711 NC_DEF_VAR("vmr_impl", NC_FLOAT, 4, dimid,
+
6712 "volume mixing ratio (implicit)", "ppv");
+
6713 NC_DEF_VAR("np", NC_INT, 4, dimid, "number of particles", "1");
+
6714 for (int iq = 0; iq < ctl->nq; iq++)
+
6715 NC_DEF_VAR(ctl->qnt_name[iq], NC_DOUBLE, 4, dimid,
+
6716 ctl->qnt_longname[iq], ctl->qnt_unit[iq]);
+
6717
+
6718 /* End definitions... */
+
6719 NC(nc_enddef(ncid));
+
6720
+
6721 /* Write data... */
+
6722 NC_PUT_DOUBLE("time", &t, 0);
+
6723 NC_PUT_DOUBLE("lon", lon, 0);
+
6724 NC_PUT_DOUBLE("lat", lat, 0);
+
6725 NC_PUT_DOUBLE("z", z, 0);
+
6726 NC_PUT_DOUBLE("area", area, 0);
+
6727 NC_PUT_DOUBLE("dz", &dz, 0);
+
6728
+
6729 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6730 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6731 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6732 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6733 cd[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6734 NC_PUT_DOUBLE("cd", help, 0);
+
6735
+
6736 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6737 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6738 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6739 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6740 vmr_impl[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6741 NC_PUT_DOUBLE("vmr_impl", help, 0);
+
6742
+
6743 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6744 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6745 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6746 help2[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6747 np[ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6748 NC_PUT_INT("np", help2, 0);
+
6749
+
6750 for (int iq = 0; iq < ctl->nq; iq++) {
+
6751 for (int ix = 0; ix < ctl->grid_nx; ix++)
+
6752 for (int iy = 0; iy < ctl->grid_ny; iy++)
+
6753 for (int iz = 0; iz < ctl->grid_nz; iz++)
+
6754 help[ARRAY_3D(iz, iy, ctl->grid_ny, ix, ctl->grid_nx)] =
+
6755 mean[iq][ARRAY_3D(ix, iy, ctl->grid_ny, iz, ctl->grid_nz)];
+
6756 NC_PUT_DOUBLE(ctl->qnt_name[iq], help, 0);
+
6757 }
+
6758
+
6759 /* Close file... */
+
6760 NC(nc_close(ncid));
+
6761
+
6762 /* Free... */
+
6763 free(help);
+
6764 free(help2);
+
6765}
+
#define NC_PUT_INT(varname, ptr, hyperslab)
Write netCDF integer array.
Definition: libtrac.h:533
+
+
+
+ +

◆ write_met()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int write_met (char * filename,
ctl_tctl,
met_tmet 
)
+
+ +

Read meteo data file.

+ +

Definition at line 6769 of file libtrac.c.

+
6772 {
+
6773
+
6774 /* Set timer... */
+
6775 SELECT_TIMER("WRITE_MET", "OUTPUT", NVTX_WRITE);
+
6776
+
6777 /* Write info... */
+
6778 LOG(1, "Write meteo data: %s", filename);
+
6779
+
6780 /* Check compression flags... */
+
6781#ifndef ZFP
+
6782 if (ctl->met_type == 3)
+
6783 ERRMSG("MPTRAC was compiled without zfp compression!");
+
6784#endif
+
6785#ifndef ZSTD
+
6786 if (ctl->met_type == 4)
+
6787 ERRMSG("MPTRAC was compiled without zstd compression!");
+
6788#endif
+
6789
+
6790 /* Write binary data... */
+
6791 if (ctl->met_type >= 1 && ctl->met_type <= 4) {
+
6792
+
6793 /* Create file... */
+
6794 FILE *out;
+
6795 if (!(out = fopen(filename, "w")))
+
6796 ERRMSG("Cannot create file!");
+
6797
+
6798 /* Write type of binary data... */
+
6799 FWRITE(&ctl->met_type, int,
+
6800 1,
+
6801 out);
+
6802
+
6803 /* Write version of binary data... */
+
6804 int version = 101;
+
6805 FWRITE(&version, int,
+
6806 1,
+
6807 out);
+
6808
+
6809 /* Write grid data... */
+
6810 FWRITE(&met->time, double,
+
6811 1,
+
6812 out);
+
6813 FWRITE(&met->nx, int,
+
6814 1,
+
6815 out);
+
6816 FWRITE(&met->ny, int,
+
6817 1,
+
6818 out);
+
6819 FWRITE(&met->np, int,
+
6820 1,
+
6821 out);
+
6822 FWRITE(met->lon, double,
+
6823 (size_t) met->nx,
+
6824 out);
+
6825 FWRITE(met->lat, double,
+
6826 (size_t) met->ny,
+
6827 out);
+
6828 FWRITE(met->p, double,
+
6829 (size_t) met->np,
+
6830 out);
+
6831
+
6832 /* Write surface data... */
+
6833 write_met_bin_2d(out, met, met->ps, "PS");
+
6834 write_met_bin_2d(out, met, met->ts, "TS");
+
6835 write_met_bin_2d(out, met, met->zs, "ZS");
+
6836 write_met_bin_2d(out, met, met->us, "US");
+
6837 write_met_bin_2d(out, met, met->vs, "VS");
+
6838 write_met_bin_2d(out, met, met->lsm, "LSM");
+
6839 write_met_bin_2d(out, met, met->sst, "SST");
+
6840 write_met_bin_2d(out, met, met->pbl, "PBL");
+
6841 write_met_bin_2d(out, met, met->pt, "PT");
+
6842 write_met_bin_2d(out, met, met->tt, "TT");
+
6843 write_met_bin_2d(out, met, met->zt, "ZT");
+
6844 write_met_bin_2d(out, met, met->h2ot, "H2OT");
+
6845 write_met_bin_2d(out, met, met->pct, "PCT");
+
6846 write_met_bin_2d(out, met, met->pcb, "PCB");
+
6847 write_met_bin_2d(out, met, met->cl, "CL");
+
6848 write_met_bin_2d(out, met, met->plcl, "PLCL");
+
6849 write_met_bin_2d(out, met, met->plfc, "PLFC");
+
6850 write_met_bin_2d(out, met, met->pel, "PEL");
+
6851 write_met_bin_2d(out, met, met->cape, "CAPE");
+
6852 write_met_bin_2d(out, met, met->cin, "CIN");
+
6853
+
6854 /* Write level data... */
+
6855 write_met_bin_3d(out, ctl, met, met->z, "Z", 0, ctl->met_zfp_tol_z);
+
6856 write_met_bin_3d(out, ctl, met, met->t, "T", 0, ctl->met_zfp_tol_t);
+
6857 write_met_bin_3d(out, ctl, met, met->u, "U", ctl->met_zfp_prec, 0);
+
6858 write_met_bin_3d(out, ctl, met, met->v, "V", ctl->met_zfp_prec, 0);
+
6859 write_met_bin_3d(out, ctl, met, met->w, "W", ctl->met_zfp_prec, 0);
+
6860 write_met_bin_3d(out, ctl, met, met->pv, "PV", ctl->met_zfp_prec, 0);
+
6861 write_met_bin_3d(out, ctl, met, met->h2o, "H2O", ctl->met_zfp_prec, 0);
+
6862 write_met_bin_3d(out, ctl, met, met->o3, "O3", ctl->met_zfp_prec, 0);
+
6863 write_met_bin_3d(out, ctl, met, met->lwc, "LWC", ctl->met_zfp_prec, 0);
+
6864 write_met_bin_3d(out, ctl, met, met->iwc, "IWC", ctl->met_zfp_prec, 0);
+
6865 write_met_bin_3d(out, ctl, met, met->cc, "CC", ctl->met_zfp_prec, 0);
+
6866
+
6867 /* Write final flag... */
+
6868 int final = 999;
+
6869 FWRITE(&final, int,
+
6870 1,
+
6871 out);
+
6872
+
6873 /* Close file... */
+
6874 fclose(out);
+
6875 }
+
6876
+
6877 return 0;
+
6878}
+
void write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance)
Write 3-D meteo variable.
Definition: libtrac.c:6911
+
void write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname)
Write 2-D meteo variable.
Definition: libtrac.c:6882
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ write_met_bin_2d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_met_bin_2d (FILE * out,
met_tmet,
float var[EX][EY],
char * varname 
)
+
+ +

Write 2-D meteo variable.

+ +

Definition at line 6882 of file libtrac.c.

+
6886 {
+
6887
+
6888 float *help;
+
6889
+
6890 /* Allocate... */
+
6891 ALLOC(help, float,
+
6892 EX * EY);
+
6893
+
6894 /* Copy data... */
+
6895 for (int ix = 0; ix < met->nx; ix++)
+
6896 for (int iy = 0; iy < met->ny; iy++)
+
6897 help[ARRAY_2D(ix, iy, met->ny)] = var[ix][iy];
+
6898
+
6899 /* Write uncompressed data... */
+
6900 LOG(2, "Write 2-D variable: %s (uncompressed)", varname);
+
6901 FWRITE(help, float,
+
6902 (size_t) (met->nx * met->ny),
+
6903 out);
+
6904
+
6905 /* Free... */
+
6906 free(help);
+
6907}
+
+
+
+ +

◆ write_met_bin_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_met_bin_3d (FILE * out,
ctl_tctl,
met_tmet,
float var[EX][EY][EP],
char * varname,
int precision,
double tolerance 
)
+
+ +

Write 3-D meteo variable.

+ +

Definition at line 6911 of file libtrac.c.

+
6918 {
+
6919
+
6920 float *help;
+
6921
+
6922 /* Allocate... */
+
6923 ALLOC(help, float,
+
6924 EX * EY * EP);
+
6925
+
6926 /* Copy data... */
+
6927#pragma omp parallel for default(shared) collapse(2)
+
6928 for (int ix = 0; ix < met->nx; ix++)
+
6929 for (int iy = 0; iy < met->ny; iy++)
+
6930 for (int ip = 0; ip < met->np; ip++)
+
6931 help[ARRAY_3D(ix, iy, met->ny, ip, met->np)] = var[ix][iy][ip];
+
6932
+
6933 /* Write uncompressed data... */
+
6934 if (ctl->met_type == 1) {
+
6935 LOG(2, "Write 3-D variable: %s (uncompressed)", varname);
+
6936 FWRITE(help, float,
+
6937 (size_t) (met->nx * met->ny * met->np),
+
6938 out);
+
6939 }
+
6940
+
6941 /* Write packed data... */
+
6942 else if (ctl->met_type == 2)
+
6943 compress_pack(varname, help, (size_t) (met->ny * met->nx),
+
6944 (size_t) met->np, 0, out);
+
6945
+
6946 /* Write zfp data... */
+
6947#ifdef ZFP
+
6948 else if (ctl->met_type == 3) {
+
6949 FWRITE(&precision, int,
+
6950 1,
+
6951 out);
+
6952 FWRITE(&tolerance, double,
+
6953 1,
+
6954 out);
+
6955 compress_zfp(varname, help, met->np, met->ny, met->nx, precision,
+
6956 tolerance, 0, out);
+
6957 }
+
6958#endif
+
6959
+
6960 /* Write zstd data... */
+
6961#ifdef ZSTD
+
6962 else if (ctl->met_type == 4)
+
6963 compress_zstd(varname, help, (size_t) (met->np * met->ny * met->nx), 0,
+
6964 out);
+
6965#endif
+
6966
+
6967 /* Unknown method... */
+
6968 else {
+
6969 ERRMSG("MET_TYPE not supported!");
+
6970 LOG(3, "%d %g", precision, tolerance);
+
6971 }
+
6972
+
6973 /* Free... */
+
6974 free(help);
+
6975}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_prof()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_prof (const char * filename,
ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Write profile data.

+ +

Definition at line 6979 of file libtrac.c.

+
6985 {
+
6986
+
6987 static FILE *out;
+
6988
+
6989 static double *mass, *obsmean, *rt, *rz, *rlon, *rlat, *robs, *area,
+
6990 dz, dlon, dlat, *lon, *lat, *z, *press, temp, vmr, h2o, o3;
+
6991
+
6992 static int nobs, *obscount, ip, okay;
+
6993
+
6994 /* Set timer... */
+
6995 SELECT_TIMER("WRITE_PROF", "OUTPUT", NVTX_WRITE);
+
6996
+
6997 /* Init... */
+
6998 if (t == ctl->t_start) {
+
6999
+
7000 /* Check quantity index for mass... */
+
7001 if (ctl->qnt_m < 0)
+
7002 ERRMSG("Need quantity mass!");
+
7003
+
7004 /* Check molar mass... */
+
7005 if (ctl->molmass <= 0)
+
7006 ERRMSG("Specify molar mass!");
+
7007
+
7008 /* Allocate... */
+
7009 ALLOC(lon, double,
+
7010 ctl->prof_nx);
+
7011 ALLOC(lat, double,
+
7012 ctl->prof_ny);
+
7013 ALLOC(area, double,
+
7014 ctl->prof_ny);
+
7015 ALLOC(z, double,
+
7016 ctl->prof_nz);
+
7017 ALLOC(press, double,
+
7018 ctl->prof_nz);
+
7019 ALLOC(rt, double,
+
7020 NOBS);
+
7021 ALLOC(rz, double,
+
7022 NOBS);
+
7023 ALLOC(rlon, double,
+
7024 NOBS);
+
7025 ALLOC(rlat, double,
+
7026 NOBS);
+
7027 ALLOC(robs, double,
+
7028 NOBS);
+
7029
+
7030 /* Read observation data... */
+
7031 read_obs(ctl->prof_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
7032
+
7033 /* Create new output file... */
+
7034 LOG(1, "Write profile data: %s", filename);
+
7035 if (!(out = fopen(filename, "w")))
+
7036 ERRMSG("Cannot create file!");
+
7037
+
7038 /* Write header... */
+
7039 fprintf(out,
+
7040 "# $1 = time [s]\n"
+
7041 "# $2 = altitude [km]\n"
+
7042 "# $3 = longitude [deg]\n"
+
7043 "# $4 = latitude [deg]\n"
+
7044 "# $5 = pressure [hPa]\n"
+
7045 "# $6 = temperature [K]\n"
+
7046 "# $7 = volume mixing ratio [ppv]\n"
+
7047 "# $8 = H2O volume mixing ratio [ppv]\n"
+
7048 "# $9 = O3 volume mixing ratio [ppv]\n"
+
7049 "# $10 = observed BT index [K]\n"
+
7050 "# $11 = number of observations\n");
+
7051
+
7052 /* Set grid box size... */
+
7053 dz = (ctl->prof_z1 - ctl->prof_z0) / ctl->prof_nz;
+
7054 dlon = (ctl->prof_lon1 - ctl->prof_lon0) / ctl->prof_nx;
+
7055 dlat = (ctl->prof_lat1 - ctl->prof_lat0) / ctl->prof_ny;
+
7056
+
7057 /* Set vertical coordinates... */
+
7058 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7059 z[iz] = ctl->prof_z0 + dz * (iz + 0.5);
+
7060 press[iz] = P(z[iz]);
+
7061 }
+
7062
+
7063 /* Set horizontal coordinates... */
+
7064 for (int ix = 0; ix < ctl->prof_nx; ix++)
+
7065 lon[ix] = ctl->prof_lon0 + dlon * (ix + 0.5);
+
7066 for (int iy = 0; iy < ctl->prof_ny; iy++) {
+
7067 lat[iy] = ctl->prof_lat0 + dlat * (iy + 0.5);
+
7068 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
7069 * cos(lat[iy] * M_PI / 180.);
+
7070 }
+
7071 }
+
7072
+
7073 /* Set time interval... */
+
7074 double t0 = t - 0.5 * ctl->dt_mod;
+
7075 double t1 = t + 0.5 * ctl->dt_mod;
+
7076
+
7077 /* Allocate... */
+
7078 ALLOC(mass, double,
+
7079 ctl->prof_nx * ctl->prof_ny * ctl->prof_nz);
+
7080 ALLOC(obsmean, double,
+
7081 ctl->prof_nx * ctl->prof_ny);
+
7082 ALLOC(obscount, int,
+
7083 ctl->prof_nx * ctl->prof_ny);
+
7084
+
7085 /* Loop over observations... */
+
7086 for (int i = 0; i < nobs; i++) {
+
7087
+
7088 /* Check time... */
+
7089 if (rt[i] < t0)
+
7090 continue;
+
7091 else if (rt[i] >= t1)
+
7092 break;
+
7093
+
7094 /* Check observation data... */
+
7095 if (!isfinite(robs[i]))
+
7096 continue;
+
7097
+
7098 /* Calculate indices... */
+
7099 int ix = (int) ((rlon[i] - ctl->prof_lon0) / dlon);
+
7100 int iy = (int) ((rlat[i] - ctl->prof_lat0) / dlat);
+
7101
+
7102 /* Check indices... */
+
7103 if (ix < 0 || ix >= ctl->prof_nx || iy < 0 || iy >= ctl->prof_ny)
+
7104 continue;
+
7105
+
7106 /* Get mean observation index... */
+
7107 int idx = ARRAY_2D(ix, iy, ctl->prof_ny);
+
7108 obsmean[idx] += robs[i];
+
7109 obscount[idx]++;
+
7110 }
+
7111
+
7112 /* Analyze model data... */
+
7113 for (ip = 0; ip < atm->np; ip++) {
+
7114
+
7115 /* Check time... */
+
7116 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7117 continue;
+
7118
+
7119 /* Get indices... */
+
7120 int ix = (int) ((atm->lon[ip] - ctl->prof_lon0) / dlon);
+
7121 int iy = (int) ((atm->lat[ip] - ctl->prof_lat0) / dlat);
+
7122 int iz = (int) ((Z(atm->p[ip]) - ctl->prof_z0) / dz);
+
7123
+
7124 /* Check indices... */
+
7125 if (ix < 0 || ix >= ctl->prof_nx ||
+
7126 iy < 0 || iy >= ctl->prof_ny || iz < 0 || iz >= ctl->prof_nz)
+
7127 continue;
+
7128
+
7129 /* Get total mass in grid cell... */
+
7130 int idx = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7131 mass[idx] += atm->q[ctl->qnt_m][ip];
+
7132 }
+
7133
+
7134 /* Extract profiles... */
+
7135 for (int ix = 0; ix < ctl->prof_nx; ix++)
+
7136 for (int iy = 0; iy < ctl->prof_ny; iy++) {
+
7137 int idx2 = ARRAY_2D(ix, iy, ctl->prof_ny);
+
7138 if (obscount[idx2] > 0) {
+
7139
+
7140 /* Check profile... */
+
7141 okay = 0;
+
7142 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7143 int idx3 = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7144 if (mass[idx3] > 0) {
+
7145 okay = 1;
+
7146 break;
+
7147 }
+
7148 }
+
7149 if (!okay)
+
7150 continue;
+
7151
+
7152 /* Write output... */
+
7153 fprintf(out, "\n");
+
7154
+
7155 /* Loop over altitudes... */
+
7156 for (int iz = 0; iz < ctl->prof_nz; iz++) {
+
7157
+
7158 /* Get temperature, water vapor, and ozone... */
+ +
7160 intpol_met_time_3d(met0, met0->t, met1, met1->t, t, press[iz],
+
7161 lon[ix], lat[iy], &temp, ci, cw, 1);
+
7162 intpol_met_time_3d(met0, met0->h2o, met1, met1->h2o, t, press[iz],
+
7163 lon[ix], lat[iy], &h2o, ci, cw, 0);
+
7164 intpol_met_time_3d(met0, met0->o3, met1, met1->o3, t, press[iz],
+
7165 lon[ix], lat[iy], &o3, ci, cw, 0);
+
7166
+
7167 /* Calculate volume mixing ratio... */
+
7168 int idx3 = ARRAY_3D(ix, iy, ctl->prof_ny, iz, ctl->prof_nz);
+
7169 vmr = MA / ctl->molmass * mass[idx3]
+
7170 / (RHO(press[iz], temp) * area[iy] * dz * 1e9);
+
7171
+
7172 /* Write output... */
+
7173 fprintf(out, "%.2f %g %g %g %g %g %g %g %g %g %d\n",
+
7174 t, z[iz], lon[ix], lat[iy], press[iz], temp, vmr, h2o, o3,
+
7175 obsmean[idx2] / obscount[idx2], obscount[idx2]);
+
7176 }
+
7177 }
+
7178 }
+
7179
+
7180 /* Free... */
+
7181 free(mass);
+
7182 free(obsmean);
+
7183 free(obscount);
+
7184
+
7185 /* Finalize... */
+
7186 if (t == ctl->t_stop) {
+
7187
+
7188 /* Close output file... */
+
7189 fclose(out);
+
7190
+
7191 /* Free... */
+
7192 free(lon);
+
7193 free(lat);
+
7194 free(area);
+
7195 free(z);
+
7196 free(press);
+
7197 free(rt);
+
7198 free(rz);
+
7199 free(rlon);
+
7200 free(rlat);
+
7201 free(robs);
+
7202 }
+
7203}
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ write_sample()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_sample (const char * filename,
ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Write sample data.

+ +

Definition at line 7207 of file libtrac.c.

+
7213 {
+
7214
+
7215 static FILE *out;
+
7216
+
7217 static double area, dlat, rmax2, *rt, *rz, *rlon, *rlat, *robs, kz[EP],
+
7218 kw[EP];
+
7219
+
7220 static int nobs, nk;
+
7221
+
7222 /* Set timer... */
+
7223 SELECT_TIMER("WRITE_SAMPLE", "OUTPUT", NVTX_WRITE);
+
7224
+
7225 /* Init... */
+
7226 if (t == ctl->t_start) {
+
7227
+
7228 /* Allocate... */
+
7229 ALLOC(rt, double,
+
7230 NOBS);
+
7231 ALLOC(rz, double,
+
7232 NOBS);
+
7233 ALLOC(rlon, double,
+
7234 NOBS);
+
7235 ALLOC(rlat, double,
+
7236 NOBS);
+
7237 ALLOC(robs, double,
+
7238 NOBS);
+
7239
+
7240 /* Read observation data... */
+
7241 read_obs(ctl->sample_obsfile, rt, rz, rlon, rlat, robs, &nobs);
+
7242
+
7243 /* Read kernel data... */
+
7244 if (ctl->sample_kernel[0] != '-')
+
7245 read_kernel(ctl->sample_kernel, kz, kw, &nk);
+
7246
+
7247 /* Create output file... */
+
7248 LOG(1, "Write sample data: %s", filename);
+
7249 if (!(out = fopen(filename, "w")))
+
7250 ERRMSG("Cannot create file!");
+
7251
+
7252 /* Write header... */
+
7253 fprintf(out,
+
7254 "# $1 = time [s]\n"
+
7255 "# $2 = altitude [km]\n"
+
7256 "# $3 = longitude [deg]\n"
+
7257 "# $4 = latitude [deg]\n"
+
7258 "# $5 = surface area [km^2]\n"
+
7259 "# $6 = layer depth [km]\n"
+
7260 "# $7 = number of particles [1]\n"
+
7261 "# $8 = column density [kg/m^2]\n"
+
7262 "# $9 = volume mixing ratio [ppv]\n"
+
7263 "# $10 = observed BT index [K]\n\n");
+
7264
+
7265 /* Set latitude range, squared radius, and area... */
+
7266 dlat = DY2DEG(ctl->sample_dx);
+
7267 rmax2 = SQR(ctl->sample_dx);
+
7268 area = M_PI * rmax2;
+
7269 }
+
7270
+
7271 /* Set time interval for output... */
+
7272 double t0 = t - 0.5 * ctl->dt_mod;
+
7273 double t1 = t + 0.5 * ctl->dt_mod;
+
7274
+
7275 /* Loop over observations... */
+
7276 for (int i = 0; i < nobs; i++) {
+
7277
+
7278 /* Check time... */
+
7279 if (rt[i] < t0)
+
7280 continue;
+
7281 else if (rt[i] >= t1)
+
7282 break;
+
7283
+
7284 /* Calculate Cartesian coordinates... */
+
7285 double x0[3];
+
7286 geo2cart(0, rlon[i], rlat[i], x0);
+
7287
+
7288 /* Set pressure range... */
+
7289 double rp = P(rz[i]);
+
7290 double ptop = P(rz[i] + ctl->sample_dz);
+
7291 double pbot = P(rz[i] - ctl->sample_dz);
+
7292
+
7293 /* Init... */
+
7294 double mass = 0;
+
7295 int np = 0;
+
7296
+
7297 /* Loop over air parcels... */
+
7298#pragma omp parallel for default(shared) reduction(+:mass,np)
+
7299 for (int ip = 0; ip < atm->np; ip++) {
+
7300
+
7301 /* Check time... */
+
7302 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7303 continue;
+
7304
+
7305 /* Check latitude... */
+
7306 if (fabs(rlat[i] - atm->lat[ip]) > dlat)
+
7307 continue;
+
7308
+
7309 /* Check horizontal distance... */
+
7310 double x1[3];
+
7311 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
7312 if (DIST2(x0, x1) > rmax2)
+
7313 continue;
+
7314
+
7315 /* Check pressure... */
+
7316 if (ctl->sample_dz > 0)
+
7317 if (atm->p[ip] > pbot || atm->p[ip] < ptop)
+
7318 continue;
+
7319
+
7320 /* Add mass... */
+
7321 if (ctl->qnt_m >= 0)
+
7322 mass +=
+
7323 kernel_weight(kz, kw, nk, atm->p[ip]) * atm->q[ctl->qnt_m][ip];
+
7324 np++;
+
7325 }
+
7326
+
7327 /* Calculate column density... */
+
7328 double cd = mass / (1e6 * area);
+
7329
+
7330 /* Calculate volume mixing ratio... */
+
7331 double vmr = 0;
+
7332 if (ctl->molmass > 0 && ctl->sample_dz > 0) {
+
7333 if (mass > 0) {
+
7334
+
7335 /* Get temperature... */
+
7336 double temp;
+ +
7338 intpol_met_time_3d(met0, met0->t, met1, met1->t, rt[i], rp,
+
7339 rlon[i], rlat[i], &temp, ci, cw, 1);
+
7340
+
7341 /* Calculate volume mixing ratio... */
+
7342 vmr = MA / ctl->molmass * mass
+
7343 / (RHO(rp, temp) * 1e6 * area * 1e3 * ctl->sample_dz);
+
7344 }
+
7345 } else
+
7346 vmr = GSL_NAN;
+
7347
+
7348 /* Write output... */
+
7349 fprintf(out, "%.2f %g %g %g %g %g %d %g %g %g\n", rt[i], rz[i],
+
7350 rlon[i], rlat[i], area, ctl->sample_dz, np, cd, vmr, robs[i]);
+
7351 }
+
7352
+
7353 /* Finalize...... */
+
7354 if (t == ctl->t_stop) {
+
7355
+
7356 /* Close output file... */
+
7357 fclose(out);
+
7358
+
7359 /* Free... */
+
7360 free(rt);
+
7361 free(rz);
+
7362 free(rlon);
+
7363 free(rlat);
+
7364 free(robs);
+
7365 }
+
7366}
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + +
+ +
+
+ +

◆ write_station()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_station (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write station data.

+ +

Definition at line 7370 of file libtrac.c.

+
7374 {
+
7375
+
7376 static FILE *out;
+
7377
+
7378 static double rmax2, x0[3], x1[3];
+
7379
+
7380 /* Set timer... */
+
7381 SELECT_TIMER("WRITE_STATION", "OUTPUT", NVTX_WRITE);
+
7382
+
7383 /* Init... */
+
7384 if (t == ctl->t_start) {
+
7385
+
7386 /* Write info... */
+
7387 LOG(1, "Write station data: %s", filename);
+
7388
+
7389 /* Create new file... */
+
7390 if (!(out = fopen(filename, "w")))
+
7391 ERRMSG("Cannot create file!");
+
7392
+
7393 /* Write header... */
+
7394 fprintf(out,
+
7395 "# $1 = time [s]\n"
+
7396 "# $2 = altitude [km]\n"
+
7397 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
7398 for (int iq = 0; iq < ctl->nq; iq++)
+
7399 fprintf(out, "# $%i = %s [%s]\n", (iq + 5),
+
7400 ctl->qnt_name[iq], ctl->qnt_unit[iq]);
+
7401 fprintf(out, "\n");
+
7402
+
7403 /* Set geolocation and search radius... */
+
7404 geo2cart(0, ctl->stat_lon, ctl->stat_lat, x0);
+
7405 rmax2 = SQR(ctl->stat_r);
+
7406 }
+
7407
+
7408 /* Set time interval for output... */
+
7409 double t0 = t - 0.5 * ctl->dt_mod;
+
7410 double t1 = t + 0.5 * ctl->dt_mod;
+
7411
+
7412 /* Loop over air parcels... */
+
7413 for (int ip = 0; ip < atm->np; ip++) {
+
7414
+
7415 /* Check time... */
+
7416 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7417 continue;
+
7418
+
7419 /* Check time range for station output... */
+
7420 if (atm->time[ip] < ctl->stat_t0 || atm->time[ip] > ctl->stat_t1)
+
7421 continue;
+
7422
+
7423 /* Check station flag... */
+
7424 if (ctl->qnt_stat >= 0)
+
7425 if (atm->q[ctl->qnt_stat][ip])
+
7426 continue;
+
7427
+
7428 /* Get Cartesian coordinates... */
+
7429 geo2cart(0, atm->lon[ip], atm->lat[ip], x1);
+
7430
+
7431 /* Check horizontal distance... */
+
7432 if (DIST2(x0, x1) > rmax2)
+
7433 continue;
+
7434
+
7435 /* Set station flag... */
+
7436 if (ctl->qnt_stat >= 0)
+
7437 atm->q[ctl->qnt_stat][ip] = 1;
+
7438
+
7439 /* Write data... */
+
7440 fprintf(out, "%.2f %g %g %g",
+
7441 atm->time[ip], Z(atm->p[ip]), atm->lon[ip], atm->lat[ip]);
+
7442 for (int iq = 0; iq < ctl->nq; iq++) {
+
7443 fprintf(out, " ");
+
7444 fprintf(out, ctl->qnt_format[iq], atm->q[iq][ip]);
+
7445 }
+
7446 fprintf(out, "\n");
+
7447 }
+
7448
+
7449 /* Close file... */
+
7450 if (t == ctl->t_stop)
+
7451 fclose(out);
+
7452}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ write_vtk()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_vtk (const char * filename,
ctl_tctl,
atm_tatm,
double t 
)
+
+ +

Write VTK data.

+ +

Definition at line 7456 of file libtrac.c.

+
7460 {
+
7461
+
7462 FILE *out;
+
7463
+
7464 /* Set timer... */
+
7465 SELECT_TIMER("WRITE_VTK", "OUTPUT", NVTX_WRITE);
+
7466
+
7467 /* Write info... */
+
7468 LOG(1, "Write VTK data: %s", filename);
+
7469
+
7470 /* Set time interval for output... */
+
7471 double t0 = t - 0.5 * ctl->dt_mod;
+
7472 double t1 = t + 0.5 * ctl->dt_mod;
+
7473
+
7474 /* Create file... */
+
7475 if (!(out = fopen(filename, "w")))
+
7476 ERRMSG("Cannot create file!");
+
7477
+
7478 /* Count data points... */
+
7479 int np = 0;
+
7480 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7481 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7482 continue;
+
7483 np++;
+
7484 }
+
7485
+
7486 /* Write header... */
+
7487 fprintf(out,
+
7488 "# vtk DataFile Version 3.0\n"
+
7489 "vtk output\n" "ASCII\n" "DATASET POLYDATA\n");
+
7490
+
7491 /* Write point coordinates... */
+
7492 fprintf(out, "POINTS %d float\n", np);
+
7493 if (ctl->vtk_sphere) {
+
7494 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7495 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7496 continue;
+
7497 double radius = (RE + Z(atm->p[ip]) * ctl->vtk_scale
+
7498 + ctl->vtk_offset) / RE;
+
7499 double x = radius * cos(atm->lat[ip] / 180. * M_PI)
+
7500 * cos(atm->lon[ip] / 180. * M_PI);
+
7501 double y = radius * cos(atm->lat[ip] / 180. * M_PI)
+
7502 * sin(atm->lon[ip] / 180. * M_PI);
+
7503 double z = radius * sin(atm->lat[ip] / 180. * M_PI);
+
7504 fprintf(out, "%g %g %g\n", x, y, z);
+
7505 }
+
7506 } else
+
7507 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7508 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7509 continue;
+
7510 fprintf(out, "%g %g %g\n", atm->lon[ip], atm->lat[ip],
+
7511 Z(atm->p[ip]) * ctl->vtk_scale + ctl->vtk_offset);
+
7512 }
+
7513
+
7514 /* Write point data... */
+
7515 fprintf(out, "POINT_DATA %d\n", np);
+
7516 for (int iq = 0; iq < ctl->nq; iq++) {
+
7517 fprintf(out, "SCALARS %s float 1\n" "LOOKUP_TABLE default\n",
+
7518 ctl->qnt_name[iq]);
+
7519 for (int ip = 0; ip < atm->np; ip += ctl->vtk_stride) {
+
7520 if (atm->time[ip] < t0 || atm->time[ip] > t1)
+
7521 continue;
+
7522 fprintf(out, "%g\n", atm->q[iq][ip]);
+
7523 }
+
7524 }
+
7525
+
7526 /* Close file... */
+
7527 fclose(out);
+
7528}
+
+
+
+
+
+ + + + diff --git a/doxygen/libtrac_8h.js b/doxygen/libtrac_8h.js new file mode 100644 index 0000000000..a2e6cb1322 --- /dev/null +++ b/doxygen/libtrac_8h.js @@ -0,0 +1,207 @@ +var libtrac_8h = +[ + [ "ctl_t", "structctl__t.html", "structctl__t" ], + [ "atm_t", "structatm__t.html", "structatm__t" ], + [ "cache_t", "structcache__t.html", "structcache__t" ], + [ "clim_photo_t", "structclim__photo__t.html", "structclim__photo__t" ], + [ "clim_ts_t", "structclim__ts__t.html", "structclim__ts__t" ], + [ "clim_zm_t", "structclim__zm__t.html", "structclim__zm__t" ], + [ "clim_t", "structclim__t.html", "structclim__t" ], + [ "met_t", "structmet__t.html", "structmet__t" ], + [ "AVO", "libtrac_8h.html#a174754c04acfba9e1f66ba249e68643a", null ], + [ "CPD", "libtrac_8h.html#af48c8f42b5451a04703d55d62ea50a3e", null ], + [ "EPS", "libtrac_8h.html#a6ebf6899d6c1c8b7b9d09be872c05aae", null ], + [ "G0", "libtrac_8h.html#a6440afc9207bc5eba00d9161ff744e16", null ], + [ "H0", "libtrac_8h.html#a2091e935ef46727f066804a98a0d039f", null ], + [ "LV", "libtrac_8h.html#a60ac8f6cd3cf230202ce5aba9df2d6e1", null ], + [ "KB", "libtrac_8h.html#a1841fd1a462d245d8c73dce55e2f45da", null ], + [ "MA", "libtrac_8h.html#a11702dcb3f3ec928229185eb96686127", null ], + [ "MH2O", "libtrac_8h.html#a1c4cf7d6c3605ff72cd8b9a63379d4ea", null ], + [ "MO3", "libtrac_8h.html#aa5770de64e81ecf3f35d559357f67a76", null ], + [ "P0", "libtrac_8h.html#a1583b00a62bc1138f99bbfcd8ef81a6a", null ], + [ "RA", "libtrac_8h.html#a30a3f049b718d26a32f16ed72716d588", null ], + [ "RE", "libtrac_8h.html#a0600e3f227b6e9a3ae26f4d6e2a0581e", null ], + [ "RI", "libtrac_8h.html#a7e71def3baefc10ec36f1dd48da4050e", null ], + [ "T0", "libtrac_8h.html#ad41b89d4eb6d63a0def5e5fd2a5ab326", null ], + [ "LEN", "libtrac_8h.html#a05b49c662c073f89e86804f7856622a0", null ], + [ "NP", "libtrac_8h.html#ab04c88bedc6b2be8ddfe7aa8d3e93f06", null ], + [ "NQ", "libtrac_8h.html#a68c2775fc4d7385df9c7bb96d23b482b", null ], + [ "NCSI", "libtrac_8h.html#ad7d0bf1acdf6b0da23c3ccd8ce8f6caa", null ], + [ "EP", "libtrac_8h.html#adb5bf6fbe6405b09bad71e89e1da5850", null ], + [ "EX", "libtrac_8h.html#a6c2e35fdcd9091ccada629895fa1d034", null ], + [ "EY", "libtrac_8h.html#a423a96c51fa2ea8a6406113803acbbc1", null ], + [ "NENS", "libtrac_8h.html#a1dd69f988ec51453efc614485237c23a", null ], + [ "NOBS", "libtrac_8h.html#a4e6d37e546b0cac9bffdd01ec84f53dd", null ], + [ "NTHREADS", "libtrac_8h.html#a51ca9914034cd3e92903476fd4eebbd6", null ], + [ "CY", "libtrac_8h.html#ac5bc792e372b15e7a1d3efe6daac9aec", null ], + [ "CO3", "libtrac_8h.html#ae27556d9109b33480031038071c8b4b0", null ], + [ "CP", "libtrac_8h.html#a6594e57d1fff186da0a254a3742dcff7", null ], + [ "CSZA", "libtrac_8h.html#af7d97769fe58e5913e640ffed1d36fbf", null ], + [ "CT", "libtrac_8h.html#a7e463881fb9033a2fb65f3782d4e1c01", null ], + [ "CTS", "libtrac_8h.html#a9d9ce8cebc572a42e7b4ab9e92c3a350", null ], + [ "ALLOC", "libtrac_8h.html#a9aee3e5daf3b1051597d21ab093adbd0", null ], + [ "ARRAY_2D", "libtrac_8h.html#a56fa16148a574bac429287eb4612aa2e", null ], + [ "ARRAY_3D", "libtrac_8h.html#a0a81bdec7708d9599d0dcfa7a41caa26", null ], + [ "ARRHENIUS", "libtrac_8h.html#ad6fd608dae29bc65e5c4ad1480f7b891", null ], + [ "DEG2DX", "libtrac_8h.html#af32eb4cf0330afcdd3e0f3d195737a3c", null ], + [ "DEG2DY", "libtrac_8h.html#a6b3bf18cdd34775ace994db9a97474b1", null ], + [ "DP2DZ", "libtrac_8h.html#a5d2bccab2674c0b9fee6d3107952fc8a", null ], + [ "DX2DEG", "libtrac_8h.html#a6b22b78dc1239748a44cbd2db4862ef4", null ], + [ "DY2DEG", "libtrac_8h.html#af7f0e2b08c22c7da133b53aaad9861ff", null ], + [ "DZ2DP", "libtrac_8h.html#a8d7cc5a9d3263cea4b432e83ab58c286", null ], + [ "DIST", "libtrac_8h.html#ae733a5a3a9e9a85474da2105655a0dc4", null ], + [ "DIST2", "libtrac_8h.html#af003cf5f79f68880f39a9a95d69f19bb", null ], + [ "DOTP", "libtrac_8h.html#a2f872a4cdfaa577c03b9dea8201028e8", null ], + [ "FMOD", "libtrac_8h.html#aff4e721b49a057c4e4a3a6f56cc06469", null ], + [ "FREAD", "libtrac_8h.html#a68e3272a6f873b919d4f6d8982042a50", null ], + [ "FWRITE", "libtrac_8h.html#a1e67562ddd8fb52548a4ca02d3640bac", null ], + [ "INTPOL_INIT", "libtrac_8h.html#a3a1d95aec47889277a6bf1e25f366c24", null ], + [ "INTPOL_INIT_DIA", "libtrac_8h.html#ae581518400d6fc29114aa9def49df48b", null ], + [ "INTPOL_2D", "libtrac_8h.html#ab4d615b798ce84f6ee2eb42df3c90998", null ], + [ "INTPOL_3D", "libtrac_8h.html#a48e10ecee070acb7be2df6a8ca3d9764", null ], + [ "INTPOL_SPACE_ALL", "libtrac_8h.html#a2db66d3f79b89cb80d81f0ff4b8104be", null ], + [ "INTPOL_TIME_ALL", "libtrac_8h.html#a983e27f3f3845d3e6bc38716aab60cdd", null ], + [ "LAPSE", "libtrac_8h.html#a25d1c99b30b81c5705cff2f3dd224a1d", null ], + [ "LIN", "libtrac_8h.html#aebaef4a0f8136be064bf1d29ce1ced83", null ], + [ "MET_HEADER", "libtrac_8h.html#a7efc33e26d9ab0d99a61ade0e7f15893", null ], + [ "MOLEC_DENS", "libtrac_8h.html#a241767dd865cc665eeee896fb598eb9f", null ], + [ "NC", "libtrac_8h.html#a2678db26e1acda0cccd79553b9cc9b51", null ], + [ "NC_DEF_VAR", "libtrac_8h.html#aec634ca654ffa1341d4b6953dba3363e", null ], + [ "NC_GET_DOUBLE", "libtrac_8h.html#ad7d3c9758dc177ab607539de4625d6ca", null ], + [ "NC_INQ_DIM", "libtrac_8h.html#aaebb2a4e6e65eb5265d92673515b1587", null ], + [ "NC_PUT_DOUBLE", "libtrac_8h.html#ae8b2166768c41952fc7e05faef7bb593", null ], + [ "NC_PUT_INT", "libtrac_8h.html#a3ed28cecbf584b977168813e9e2e0e32", null ], + [ "NC_PUT_ATT", "libtrac_8h.html#a96e012265aff69f99407f69b8e1abb58", null ], + [ "NC_PUT_ATT_GLOBAL", "libtrac_8h.html#a218e2f27b530e30c0905d28be265e00f", null ], + [ "NC_PUT_FLOAT", "libtrac_8h.html#ac0e202b5cb2a0adea56392860c4ffb86", null ], + [ "NN", "libtrac_8h.html#a04481815cacab8fbbb9109b21b6f57ec", null ], + [ "NORM", "libtrac_8h.html#a7fa3afb5cf2625deb1e859cbb93d2943", null ], + [ "P", "libtrac_8h.html#a5e1d0f42ad38aba63907665ccdd43b86", null ], + [ "PSAT", "libtrac_8h.html#adc5ae7e10b1b021fb68397df5bad0a64", null ], + [ "PSICE", "libtrac_8h.html#a70eb939aa0b84d808a49a4a18111ae9f", null ], + [ "PW", "libtrac_8h.html#a1f71059c62f3f9c3db1f6eb5f94dd7a8", null ], + [ "RH", "libtrac_8h.html#ab72fd70a37f29f2192b751999b6c7cc2", null ], + [ "RHICE", "libtrac_8h.html#a9431567784929c9e462e16f393e04088", null ], + [ "RHO", "libtrac_8h.html#ae088e183d18a16fd6ab469d48ce3f06a", null ], + [ "ROETH_PHOTOL", "libtrac_8h.html#ab1f483c5a7b3474b849093de8cab4f5f", null ], + [ "SET_ATM", "libtrac_8h.html#a9c741a27b379cebf498901dc7d271296", null ], + [ "SET_QNT", "libtrac_8h.html#a83e28faf41ab5f04f2f81ea7008565ea", null ], + [ "SH", "libtrac_8h.html#a47b5bc0bd14e22c0329d967e3c6657bd", null ], + [ "SQR", "libtrac_8h.html#aa7866fa5e4e0ee9b034e9dab6599a9cc", null ], + [ "SWAP", "libtrac_8h.html#addce2bf4f1107168ab1a7564756aa155", null ], + [ "TDEW", "libtrac_8h.html#accf0b870a4ce9e19153c59f88898543a", null ], + [ "TICE", "libtrac_8h.html#a879f63fc7d15755d06ff79084410b6c9", null ], + [ "THETA", "libtrac_8h.html#a7d6c988afa363960f9cb5f3b589d2ae4", null ], + [ "THETAVIRT", "libtrac_8h.html#a8cbdab681e71d411200fb104480f4862", null ], + [ "TOK", "libtrac_8h.html#a8b61d1304377b77925b2802459ddae98", null ], + [ "TVIRT", "libtrac_8h.html#a068492d8c01b3b2d1aebf28ded97bb71", null ], + [ "Z", "libtrac_8h.html#a58b4f1573922a1f73dd4bf014fd441bf", null ], + [ "ZDIFF", "libtrac_8h.html#a8c73522db5d14433bd9ad2bd45d0de5f", null ], + [ "ZETA", "libtrac_8h.html#a90ee947c906d48ce71affad259ac991d", null ], + [ "LOGLEV", "libtrac_8h.html#aa0c49f3ada06708693de9e60b449964c", null ], + [ "LOG", "libtrac_8h.html#acaa1c3fa56061380a29889d703236251", null ], + [ "WARN", "libtrac_8h.html#a8f75b971030a39ef811d3526a62b36b8", null ], + [ "ERRMSG", "libtrac_8h.html#a3e0ae69dee4a8bb2e616526b5ebe6875", null ], + [ "PRINT", "libtrac_8h.html#a19e6b556dec9bcdb4e422d57633ce731", null ], + [ "NTIMER", "libtrac_8h.html#ab14495ae1f9667df5d198613bcc8d092", null ], + [ "PRINT_TIMERS", "libtrac_8h.html#ab84d08f557a59406c2b0969300937769", null ], + [ "SELECT_TIMER", "libtrac_8h.html#ab479249c111a29cf2c6366ce221cb0a0", null ], + [ "START_TIMERS", "libtrac_8h.html#aa8d58edbfeebbe667aafb0bb336cb9f9", null ], + [ "STOP_TIMERS", "libtrac_8h.html#adb7e367d2c732d58732d42f72bab25fa", null ], + [ "NVTX_PUSH", "libtrac_8h.html#a3e73ed25753a4ecef1b8c259ed923d5c", null ], + [ "NVTX_POP", "libtrac_8h.html#a754e582b0ae74bd2f7833d14db976c23", null ], + [ "thrustSortWrapper", "libtrac_8h.html#acc094ec0cb892f3f3f973710811696b2", null ], + [ "buoyancy_frequency", "libtrac_8h.html#ae6b1ba8f9877aeed2c68ae3109f1d234", null ], + [ "cart2geo", "libtrac_8h.html#aaf98f7230de0893b8dc4833d3c83c7a4", null ], + [ "check_finite", "libtrac_8h.html#a0e1b39fd2022cd0e895d28dc6c0ec6ca", null ], + [ "clim_oh", "libtrac_8h.html#a9ba00889eeb600010467d8b62de94a36", null ], + [ "clim_oh_diurnal_correction", "libtrac_8h.html#a40393f78fb69719a43e79b54dace29b5", null ], + [ "clim_photo", "libtrac_8h.html#afb5aaa2ee2de7b0625084e6a18503996", null ], + [ "clim_tropo", "libtrac_8h.html#a4531cb279e09061a6f34a73695c7b692", null ], + [ "clim_tropo_init", "libtrac_8h.html#aa9cf40c6960c5078d1ea9e12a2fb0872", null ], + [ "clim_ts", "libtrac_8h.html#acbf877af94269d0aa1c94b7c50121df8", null ], + [ "clim_zm", "libtrac_8h.html#a41f5ab8ff7acad400fe7332b6b53288a", null ], + [ "compress_pack", "libtrac_8h.html#abe573e8a40cd632144770a326361c8fc", null ], + [ "day2doy", "libtrac_8h.html#a0816a7fc51af1fbaf5146435baf29f82", null ], + [ "doy2day", "libtrac_8h.html#ab49cba44fc2caf4c419798b0ffc47f77", null ], + [ "geo2cart", "libtrac_8h.html#ae3aea782dfca9019f3f2d169f8cc0f6d", null ], + [ "get_met", "libtrac_8h.html#a7e748a53552146213c2716ca829d345f", null ], + [ "get_met_help", "libtrac_8h.html#adad9dec9d69ea6d2be2891eab7f6f67a", null ], + [ "get_met_replace", "libtrac_8h.html#ac54a92b848d49b96ef6091df37b552f2", null ], + [ "intpol_met_4d_coord", "libtrac_8h.html#acc3995f25d0dcba39704f2e5c5c93f16", null ], + [ "intpol_met_space_3d", "libtrac_8h.html#ab697dbe3b5a6fc59b5defc1b80c558aa", null ], + [ "intpol_met_space_2d", "libtrac_8h.html#adafd1410822189cadee393d5cec50a59", null ], + [ "intpol_met_time_3d", "libtrac_8h.html#a45e1b76bdf16030222665374ecc02e18", null ], + [ "intpol_met_time_2d", "libtrac_8h.html#a0306bc1616303cc969e103d6faca3593", null ], + [ "jsec2time", "libtrac_8h.html#acc0c1829ca7770d2dd6342f2cdf10bb9", null ], + [ "kernel_weight", "libtrac_8h.html#ae61cf973263fcc45574daa27d0dec8cd", null ], + [ "lapse_rate", "libtrac_8h.html#afa485eb277a5ced6dac0ed77665c976c", null ], + [ "level_definitions", "libtrac_8h.html#a51f61e053cfec3bdd62fa3a8110e046e", null ], + [ "locate_irr", "libtrac_8h.html#a4e1b87dc3c93a23c89f739adf10b60dc", null ], + [ "locate_reg", "libtrac_8h.html#a2a3c8ab98f21179741b274439786726d", null ], + [ "locate_vert", "libtrac_8h.html#af7c3d417479747cdf69cce6cae3599e5", null ], + [ "locate_irr_3d", "libtrac_8h.html#abe2fe1fe05e15b55bc4d4031a084490b", null ], + [ "nat_temperature", "libtrac_8h.html#a623b433e01381315e5d49fc4c2bc3548", null ], + [ "quicksort", "libtrac_8h.html#a2d35c49f4a1313a00a0b6da2f9bb877c", null ], + [ "quicksort_partition", "libtrac_8h.html#acae80df3d9e2a42d76476a8d223119a4", null ], + [ "read_atm", "libtrac_8h.html#a10ab9cbb20f7bacc7bad573191f7cabb", null ], + [ "read_atm_asc", "libtrac_8h.html#a324e0e62532d05f6711ce43bfebfa897", null ], + [ "read_atm_bin", "libtrac_8h.html#a69ed50f3a7f993df25260736697ae960", null ], + [ "read_atm_clams", "libtrac_8h.html#a66f35b5e3cd571f05c2430ebc9ba62a0", null ], + [ "read_atm_nc", "libtrac_8h.html#a099fcc594e7bb8ce70bb55be9cccb69e", null ], + [ "read_clim", "libtrac_8h.html#a28828a87a5a435af28435a7976e499e4", null ], + [ "read_clim_ts", "libtrac_8h.html#a4cede5e5a40493bb4b55605a64cbf567", null ], + [ "read_clim_zm", "libtrac_8h.html#a0a2bbd978da0bcd524e44647ff349a73", null ], + [ "read_clim_photo", "libtrac_8h.html#a898220b4fa13f36f4d91453fbe7d7ee5", null ], + [ "read_ctl", "libtrac_8h.html#ab8054000249eb04a88fc06bba77dd573", null ], + [ "read_kernel", "libtrac_8h.html#a7a3277ab872141360b876c25b5643ba6", null ], + [ "read_met", "libtrac_8h.html#adaf12f02099c61792e04447367f1c37d", null ], + [ "read_met_bin_2d", "libtrac_8h.html#ab9f57aa8f23c823ec63246ca950dbf0f", null ], + [ "read_met_bin_3d", "libtrac_8h.html#a1cafe18e5c051e7107cb918a1dbd0db8", null ], + [ "read_met_cape", "libtrac_8h.html#ae8d8e4969b972ebf2bfea8ad774b9822", null ], + [ "read_met_cloud", "libtrac_8h.html#a99a02172665504fa93b85dd442c850db", null ], + [ "read_met_detrend", "libtrac_8h.html#a95998555c31d67b672339a2332f7ee1c", null ], + [ "read_met_extrapolate", "libtrac_8h.html#a089d9c0099e3fc6944c2a48667362ca0", null ], + [ "read_met_geopot", "libtrac_8h.html#aeaaa3090b6f7f9f471fbd24392304341", null ], + [ "read_met_grid", "libtrac_8h.html#ad3b59a5ce89df2ef37437ed08f6ef77b", null ], + [ "read_met_levels", "libtrac_8h.html#a15081510cdc536f13a7179118ef21687", null ], + [ "read_met_monotonize", "libtrac_8h.html#a6e7c69ecd95581d555b8a6359f78a4ca", null ], + [ "read_met_ml2pl", "libtrac_8h.html#a3cdb424353dfdea020de7512894ef08f", null ], + [ "read_met_nc_2d", "libtrac_8h.html#ac1ca5ed33a24caef6d62d5e283052438", null ], + [ "read_met_nc_3d", "libtrac_8h.html#a1dd9f12ef11ed0a54d9e4337756e5da5", null ], + [ "read_met_pbl", "libtrac_8h.html#a5ea707d2282eb7750fd4e9b4de10c1e0", null ], + [ "read_met_periodic", "libtrac_8h.html#a38f91765df8eb0a66fb3a6408dca0600", null ], + [ "read_met_pv", "libtrac_8h.html#ac2c90884cb02bf90f095ff36f41e020a", null ], + [ "read_met_ozone", "libtrac_8h.html#a9ee63e8a6c82ac0dc569255455a50da2", null ], + [ "read_met_sample", "libtrac_8h.html#a6a49f49a3a974cda1f9b0ff261d34c81", null ], + [ "read_met_surface", "libtrac_8h.html#ab3e201b153aa01202bb286d650ef07c5", null ], + [ "read_met_tropo", "libtrac_8h.html#a66ef5f17dd5cbc26a4a456f7a0d6205c", null ], + [ "read_obs", "libtrac_8h.html#a8031d82ad41705d1a3662e25e87a3dff", null ], + [ "scan_ctl", "libtrac_8h.html#ad42c44913b360d00d45282d96dad493b", null ], + [ "sedi", "libtrac_8h.html#a1b580107362b559d90f6766d340cc370", null ], + [ "spline", "libtrac_8h.html#a62786d005ed312f3c9ba2fac7cd544fc", null ], + [ "stddev", "libtrac_8h.html#a87088b5ccf95f03d986f1bdd570b5b2f", null ], + [ "sza_calc", "libtrac_8h.html#ab0bfcf61833d71fb831d4faae03ce709", null ], + [ "time2jsec", "libtrac_8h.html#a578e7ebaa62304182de8fe7ddf144b8f", null ], + [ "timer", "libtrac_8h.html#a15d51008ea7a5446b5a532dc6cfaee2b", null ], + [ "time_from_filename", "libtrac_8h.html#a98e813ec34f6121b5fdd8652d29b10dc", null ], + [ "tropo_weight", "libtrac_8h.html#ae9583382a3025752eaaf56a1fcc3380f", null ], + [ "write_atm", "libtrac_8h.html#a6f8a7ad670fbfe7dd4ed81f66695db6f", null ], + [ "write_atm_asc", "libtrac_8h.html#a35d13994c6a0e753baf0e0df39bc8645", null ], + [ "write_atm_bin", "libtrac_8h.html#ac8f665b550ead41a8cc17da17132a63c", null ], + [ "write_atm_clams", "libtrac_8h.html#aa166d9de337fa3572477f102168b2907", null ], + [ "write_atm_clams_traj", "libtrac_8h.html#a56873d15f57e990c702ec46e5016abd8", null ], + [ "write_atm_nc", "libtrac_8h.html#ad5e5574adb44a2bb04fc21c3e20a9e2a", null ], + [ "write_csi", "libtrac_8h.html#a70ca26c59c2fca1fda54a29dfd3625b6", null ], + [ "write_ens", "libtrac_8h.html#af5d8dfa5fe43fa2bf192ee4a7b821b1f", null ], + [ "write_grid", "libtrac_8h.html#a59757e2569c3f96f57e291fdbe3ddc29", null ], + [ "write_grid_asc", "libtrac_8h.html#a8bdd741d54d2111b3341ef04d826b475", null ], + [ "write_grid_nc", "libtrac_8h.html#ace302042852c62c50d34e6b1ef672bb6", null ], + [ "write_met", "libtrac_8h.html#a044c272334c81fcf88f9f01c551c1bb1", null ], + [ "write_met_bin_2d", "libtrac_8h.html#a463d151fd69782a7f31f4d535f377cb0", null ], + [ "write_met_bin_3d", "libtrac_8h.html#a277456b731e2a0a531884a8390250b03", null ], + [ "write_prof", "libtrac_8h.html#af2d95b1eb426ead1c25fe5f198f476c9", null ], + [ "write_sample", "libtrac_8h.html#a684686ab1a1db21abc1c65b66d9db10a", null ], + [ "write_station", "libtrac_8h.html#a6afa769139ff29d1aa185e317f2f69c7", null ], + [ "write_vtk", "libtrac_8h.html#a2b06d8cbf3ebbe76a9c0e23db3eb5a41", null ] +]; \ No newline at end of file diff --git a/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.map b/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.map new file mode 100644 index 0000000000..bb5da78118 --- /dev/null +++ b/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.md5 b/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.md5 new file mode 100644 index 0000000000..77bb870357 --- /dev/null +++ b/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.md5 @@ -0,0 +1 @@ +639fafce9efe69c9febb4a69e135534c \ No newline at end of file diff --git a/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.png b/doxygen/libtrac_8h_a0306bc1616303cc969e103d6faca3593_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..434b5736940b967b8cbd6ab9cbc25cf3bfa425e9 GIT binary patch literal 4568 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 a*k?L4aBR|~75fT)h3MWwX%%bOhyE9Cd%ju# literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map b/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map new file mode 100644 index 0000000000..695654872e --- /dev/null +++ b/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 b/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 new file mode 100644 index 0000000000..76152fcb18 --- /dev/null +++ b/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.md5 @@ -0,0 +1 @@ +0a108ca4c2026af30905e31c6a1f9a4c \ No newline at end of file diff --git a/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.png b/doxygen/libtrac_8h_a044c272334c81fcf88f9f01c551c1bb1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..85aeb454ec27d89eb472ce03977773c3e1f1fab2 GIT binary patch literal 6659 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map b/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map new file mode 100644 index 0000000000..d5f3d3dd97 --- /dev/null +++ b/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 b/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 new file mode 100644 index 0000000000..9eda2f0fb2 --- /dev/null +++ b/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.md5 @@ -0,0 +1 @@ +591d5efa1233a24791cd252541de403f \ No newline at end of file diff --git a/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.png b/doxygen/libtrac_8h_a10ab9cbb20f7bacc7bad573191f7cabb_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7732a8195fdab3666fa3b45a5b31104be4446ec1 GIT binary patch literal 9759 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.map b/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.map new file mode 100644 index 0000000000..a15908a9da --- /dev/null +++ b/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.md5 b/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.md5 new file mode 100644 index 0000000000..214a083919 --- /dev/null +++ b/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.md5 @@ -0,0 +1 @@ +6c8c68a05b1384c86d96cd4d683282f8 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.png b/doxygen/libtrac_8h_a15081510cdc536f13a7179118ef21687_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..22954708694394960014017055f51c543382fd94 GIT binary patch literal 6472 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 W^QSK9!6Wc!1fs62qx1!875*PrS@vN7 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map b/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map new file mode 100644 index 0000000000..d0f7cd7088 --- /dev/null +++ b/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 b/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 new file mode 100644 index 0000000000..51cc62fcfa --- /dev/null +++ b/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.md5 @@ -0,0 +1 @@ +336be5e877de50edf516db5ff22ae61b \ No newline at end of file diff --git a/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.png b/doxygen/libtrac_8h_a1cafe18e5c051e7107cb918a1dbd0db8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..b09767e7b660ab879d243f0c23e95ba04308bcd7 GIT binary patch literal 3381 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 RIqWOxIiTYCLo_ + + + diff --git a/doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.md5 b/doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.md5 new file mode 100644 index 0000000000..1b8cdccb77 --- /dev/null +++ b/doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.md5 @@ -0,0 +1 @@ +d67a26df05ec6f86b23b5690565b4654 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.png b/doxygen/libtrac_8h_a277456b731e2a0a531884a8390250b03_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a3558c106c7f0c847797d3df54f7315cebd4fa GIT binary patch literal 3120 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 f-$(yv**%^cucIGcly%PQnMDzj{ literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.map b/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.map new file mode 100644 index 0000000000..192525094c --- /dev/null +++ b/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.md5 b/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.md5 new file mode 100644 index 0000000000..d306f4d006 --- /dev/null +++ b/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.md5 @@ -0,0 +1 @@ +55d6846df9c6806bfd85803a4de66999 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.png b/doxygen/libtrac_8h_a28828a87a5a435af28435a7976e499e4_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..c713c8033ee6d48a046794b0732ee7323ea921ea GIT binary patch literal 16160 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 + + + diff --git a/doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 b/doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 new file mode 100644 index 0000000000..e6f15fb336 --- /dev/null +++ b/doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.md5 @@ -0,0 +1 @@ +79939d42837247b411e0146fce6ae7f7 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png b/doxygen/libtrac_8h_a2d35c49f4a1313a00a0b6da2f9bb877c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a101af3f273281f62969928b8c2096d5268e239 GIT binary patch literal 4092 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 + + + diff --git a/doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 b/doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 new file mode 100644 index 0000000000..a3a2391a83 --- /dev/null +++ b/doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.md5 @@ -0,0 +1 @@ +c84d38b5eb76cab914f3433f04c4c209 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.png b/doxygen/libtrac_8h_a35d13994c6a0e753baf0e0df39bc8645_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b2c399380608260ad7e8b790ff079a1b486664 GIT binary patch literal 2640 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.map b/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.map new file mode 100644 index 0000000000..06c92a5c33 --- /dev/null +++ b/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 b/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 new file mode 100644 index 0000000000..510b9a70f1 --- /dev/null +++ b/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.md5 @@ -0,0 +1 @@ +67700b9833548241633b6d2a336dec7a \ No newline at end of file diff --git a/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.png b/doxygen/libtrac_8h_a3cdb424353dfdea020de7512894ef08f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..b3862960ea0caa338f0c5f5b9e7eae18c1733f09 GIT binary patch literal 2528 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.map b/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.map new file mode 100644 index 0000000000..7965067f13 --- /dev/null +++ b/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 b/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 new file mode 100644 index 0000000000..399469326c --- /dev/null +++ b/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.md5 @@ -0,0 +1 @@ +8e3cb09b485e940d41f7161bf3f07930 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.png b/doxygen/libtrac_8h_a40393f78fb69719a43e79b54dace29b5_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a6eb4c0612d6fd602d41dd65c1fd3fd3814be655 GIT binary patch literal 2686 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map b/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map new file mode 100644 index 0000000000..f561671d85 --- /dev/null +++ b/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 b/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 new file mode 100644 index 0000000000..6411f5239f --- /dev/null +++ b/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.md5 @@ -0,0 +1 @@ +7156a460489e661353a6fde0739e0c69 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.png b/doxygen/libtrac_8h_a41f5ab8ff7acad400fe7332b6b53288a_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f2c34b9ec5639fde15889f6fdbcc213d61b284 GIT binary patch literal 4216 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 eT>sV6G) + + + + diff --git a/doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 b/doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 new file mode 100644 index 0000000000..63b38e39af --- /dev/null +++ b/doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.md5 @@ -0,0 +1 @@ +682ff328b0172e5f53a65dafc9277afb \ No newline at end of file diff --git a/doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.png b/doxygen/libtrac_8h_a4531cb279e09061a6f34a73695c7b692_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..bdfe865d843095dd6665e14f2ee1c14c98714de1 GIT binary patch literal 4473 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.map b/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.map new file mode 100644 index 0000000000..66c4a8d60a --- /dev/null +++ b/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 b/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 new file mode 100644 index 0000000000..5a92f074cc --- /dev/null +++ b/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.md5 @@ -0,0 +1 @@ +380058c0605bbf2c94e2b73a1c05b878 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.png b/doxygen/libtrac_8h_a45e1b76bdf16030222665374ecc02e18_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e872e523a54d852ffc12293fd491158ae207340b GIT binary patch literal 7308 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 VSERj*K09SZD9dZe<;z;V{x1+ntvUbz literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.map b/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.map new file mode 100644 index 0000000000..f58516ed25 --- /dev/null +++ b/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 b/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 new file mode 100644 index 0000000000..1860b5d861 --- /dev/null +++ b/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.md5 @@ -0,0 +1 @@ +4da36f19be8bb5cd402c37dd196ee770 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.png b/doxygen/libtrac_8h_a56873d15f57e990c702ec46e5016abd8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..07d73e74c14f54ee0c366e34410ee9cb9c115fa9 GIT binary patch literal 2792 zcmVP) zm!M7uF>0yE`C#|MQ$fo_o)I8<44~DFA^$u*1RL1|X3CH(;nB5R8GLfSIW2 zYim+clD%CRAtfbcpTMx`!+2t z?dsL5mg!b#6O;Bf1?ubT zMIupdZtnBv&v)+J$>DI+YW2&PFA)S8AIBj4R`AZD5{X1|xf}q{-`~G(-MUMcE&%`r z1_mM{Behy>Yip}eC@d%_V6)jB9UbWOPb3m`baZ_C?YGs{)c}B&mX_VScgMxW2?PSA zQfWr3xVShWAt5FvX6x3iw{G2STruj$5>hSr5)#ta*JnobU3uqFu~@9%fBzi-pj0Yx zI9zjcGXUVhg9po(FGqXQ(b1vP=}JmU@OV7BiA*N*_xC?@<_w$7e(~bPp+kp~lanuB zzMPPdAdyIhhK7s^wY9a$UfPW}4puY5iqeSXTY6aYY_Qh9iIl$V!(_St7*v6w=k z$mMbxjaFP-Y|6h@tCdJ3+qP}{`RAXLlar-Vsp0<2sOYRh_wL=Rs;WA7?p#Gh1s;zt zDk?IiKFz;=ta^KUjp{B~#>XcCn9}J+E?sKmamTWe)%OcGqa?mefsIAd-v`I z031JlTtDDityZm8FI%<@-LH*}jrsZc8EO?3746%%ueY}sL69%L_(Cd`c6N3S4-Xd< z6qpjV0wYgUn1{(^78VvxOiU=1%J}&B>gwvr$;syCW)_QuHkh286bgloj*fr)@yE=~ zuV23&92~rM?OFgpbaZr0O^rgKh>D7u*^)w`R8>`>%S)Cl85|s(*#?itCnhEW0K&q; z8X6ilZrlg}2n`J_DJe1K|N8ao3XcC0MDNf{`6DBg$s4dmwWSg^xkAP{`{<(DiL z>*dRrMzucw{PT6|)&T$_BO?O>0>Z+=0080P;R6E$rbJ03(z}kyJBP~8&(F=xO{G#P zmCD1157*b%x3{-Hc<>-2BLi(fAP^iK9ZhZC*Vk8DTU%ROt6zhT(M;aFc_Ww0@87@Q z-QDf$>ua=)tE(%zfFQ^RAAF!+HsfET(U_`cM%27eNJvOzWTZeK`0&FI>2x}e$0HJn zW<2Q8kCi2zHBVzB$=7$E6&qs3*w_RBpsPzGll>b2qKC(umX@AXt7iX2ipAn@zWIhk zBGG6xHk-X?&mMPo_a{%D2!%qSP^fSA^y$;??rwj7|CtrET5WoIdTniOW@ct;YN{D6 zcXxMm!NI}7a2Z`NDr$>R0RWgx=B-<|v|25hOs3Ijb#-+bjb_!VRp__of74!GUa_&U zVzGEum7=1e#>U3<^z@Z0R}KseBqt|ZVRa@10-?RV9a~WZL3ZxknUGdr<b9I-Snl-CbYG3g-ZTh=_>d;$nqD!C)}% z-@h-FN-HWV%!|%iv#hMFy1M$*sZ;*`{wr3jXlrXT)7YqgQ=PTEUj)MNh7B~!+gpK~ zoAKL9XqJe?zwvm%Nl8q9f1k~pH(Oqo!{HDJgzW5WCX-1flhI)C`TP?nP6P!7EnT|w z!i5VmnXId;i_hn0W@fHgvxZD2pEz;i#*G^d4Glm3_#=%*JAL}JVNG;z)!*Omi6G&KQS>86%{3sNOE#=dU|>m zFJ3GXiHs%+0Knt%GBY#zd_Iv#+_h_0e}DgxBS+4iJEt#Y;S_5cBogW9(W5yzIZ~s6$73)Uetv!`mCAA_Mn$dY z5n{N@EG;cfOiY}4`wU_)Qc_YR63MLhf2C5Xx3~9vziM&w=6_RC&O13djE_&bxh>*y zgEnnquvlaVhv`{Dk5uOUsMYEfD^_52|JRNn2qKru6A}{iYpgj^VawgScMl#sICK4$ zEnBv4-@eew+ERUJXh^5iIXgRJYHd!qx;n?i{GG>RL_~bz>}>LKlqFaj#)upAS_I6<(jD+ggv17LP0huEU=LKPuJ9qA&&-MQWLE!(VfM^}7z0BEfnW>_6$FAYFjNo-#{3Vg$ow9yN@M8&0000 + + + + + + + + + + + diff --git a/doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 b/doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 new file mode 100644 index 0000000000..83b2d2456e --- /dev/null +++ b/doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.md5 @@ -0,0 +1 @@ +995e891f4c0c3f6ed9e274d1dde194b3 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.png b/doxygen/libtrac_8h_a59757e2569c3f96f57e291fdbe3ddc29_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..9b20c3d4d9518b30643de0a7cf0ec0fb61fe2b87 GIT binary patch literal 20057 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map b/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map new file mode 100644 index 0000000000..3b24d9bc0d --- /dev/null +++ b/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 b/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 new file mode 100644 index 0000000000..7ae214fc02 --- /dev/null +++ b/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.md5 @@ -0,0 +1 @@ +e56d555bef9a60e89eeac2edeb2fa946 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.png b/doxygen/libtrac_8h_a62786d005ed312f3c9ba2fac7cd544fc_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..01698e179d38c007550ca856e9def82fd61c7625 GIT binary patch literal 2036 zcmVbIZXrlt zM2IiMfF%+Y63VrNKtmv?Va-BvR}*qk3-VfsK?_>7NfT+JM&X7Ufq-2olot#2lHQG_ zo&7KymMtL6SXy!C_vy?tXP)yvC;yo_GiL?|K@h;eKnUL50x&ium~Sx9fcXXk4VZ5* z&_Gza(bLmYRaNCKDM)E)X>qrN|FF5n4IPIL9m>ngTipB~-;9oqwzjr%I2@O&LdNv; zv`(jUw~GG)j~k!Qcejv@LaWs}LP@ZiD4RLlAB;RAf1 z(rUFaF)<}2B_tB5ySsa_Y&M$_bpf$&UcY|*;K75NH*YEw3KEGVm&@V!z`(%N)Ko)5 zgG?rCZ*O1igwX5t27^H^mzS27*45P+jYgBnR9IM;mX_Am)+Q7RrBbQIVnM2Eqk$mE zX0t;O)Z6>dpMP%s;fJD(jN2_OFD;hONK=iBjHITf78MnZkB?uxcrh_CacXMHU@#;n zCl?nNfBg7SB9RD%LaWvK=FOYy*RLy;O0(H4kw`9FxBvi9sZ>lR^U0GZXV0EB8jXpG zi3J4(6B848d3i}mNuNG_T2nx8Z?DN@8Xg|@_4Qp^M$`+$zWMz5Gl4+x^zeQ*lGsXd{)ta51O(Kz4EY^-4JIrRYN~Ma5ii(YmB@&5o zadCV1?(OO6L8{7S*ldu^W?xvaX*2^@uG|j~FUrl8_xI1Pe`X6v~-1 zXQHB_IyyQU8XArqIg*l+LL?H?)6?hX=C*9v!eX&ZCe!}?`@Oupf`fxiCdX-3eSLj= ze0*wZDw#}9PfusF*`1x8YYMR2?NwD(G#bsJjEEK18NN(ROw8fKhqJP>wr}4a85w!v z#EG3dcLD%>eSN*Xz2Q26fq~Q0(<>fMrBXdTJ>fDAhXVjiPEM-TYPDLuScl1Et|`OE z=P$czJAt50SH7yp)jT<+fJ$v^4{rly60RVcvzPY)%xw&~UvYxd?8jVIE5SEt_f%q64 z4ws#seg6FU!NI|fj*fzYf_wMw0RYTqv&CY8tz$44wr$(C+TjinDwWFRatjIy5Xt!C zk9TtU-;s((icI!kety-d41s{R+3ZB3*MS4Rj~@M!lk*Qe-m!Pf2?z*y_3G8)=E%rM zR8$m^NPPSDtwYW7@^Yn8SyNLJ85ub_Il0trFfFVmLtgH+P2?-4i9UL5l<955frlv+L7LSjQ-@kwV+_`h>OvvGI#9}dr!(lR+eSLkU zrKQ!?)yv1o0jqU}$BRHJ9x0WTkCq2LJn(iqL?GZe9ELy;ose*#y}hlYV{|>H0RRYv z!m_e5g+dV@AK%v2_VVS+`uh6$`T6ql^3KlAxVX5dPoD~f!ik9q4-XGNKfgVD_UQHc zt5>f=5HveGOQlkAINa>)tle(s^Z9Hxo6qOR#>Q$i8j(n((P+ZM!<{`0D}dNHNl8fq z0|S|vnO3VcEG$eamBMj9KRq!_C6eN{OZ{NOcFc@ewT7G{1 znx=6JI2;a-$3YOpX46HYKXbX^WU?2EJajs}wY60uk(@q#n!#W^eE87c-yZgrl?Nk=M`mX(z`u_5R9X5YSjF1y&clBT8$G#auO8}20`A;C45J#3xf zOKdLFxDw1a7-+zJgMkLjHyCKZe1n086`rS-E){*7^!N9>Tfzz~T_^g^7#kZ43=CWv zS;05o;IB!W0+C4MZV4NR!(WBC@Axez#>RooZ!pk+`33_Gm~Sx9fcXXk4gUr(1Nf_c SwuJcr0000 + + + + + + + diff --git a/doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 b/doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 new file mode 100644 index 0000000000..be38abc780 --- /dev/null +++ b/doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.md5 @@ -0,0 +1 @@ +d96599d1f4f98d4c4225e620d1b4a10f \ No newline at end of file diff --git a/doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png b/doxygen/libtrac_8h_a66ef5f17dd5cbc26a4a456f7a0d6205c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..553ab043eef6f2cd50179b908a3286f2bf1f6108 GIT binary patch literal 13282 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 KsYt;z;Qs)J_k}tD literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map b/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map new file mode 100644 index 0000000000..bbed01041b --- /dev/null +++ b/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 b/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 new file mode 100644 index 0000000000..4339a0a0d3 --- /dev/null +++ b/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.md5 @@ -0,0 +1 @@ +d034a08e72f7561d001ff8fab6b58c0d \ No newline at end of file diff --git a/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.png b/doxygen/libtrac_8h_a684686ab1a1db21abc1c65b66d9db10a_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..338741d3ef28ac2a4935695d8b2fa38362be4162 GIT binary patch literal 18640 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map b/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map new file mode 100644 index 0000000000..6ac47c2fbe --- /dev/null +++ b/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 b/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 new file mode 100644 index 0000000000..b3c9108a0a --- /dev/null +++ b/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.md5 @@ -0,0 +1 @@ +0601da9765539f74eb043b47c7d0be78 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.png b/doxygen/libtrac_8h_a6afa769139ff29d1aa185e317f2f69c7_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..63ff3445b7b5932a5ff5727979defd5a92591ab3 GIT binary patch literal 3036 zcmY*bbyQT_9_9iU5Co(p1OZ70rMpBJL{L&1lo-0ZQE6ttiztZ1P(wJ<0usY0NDn17 zj5N~25JTrXzWc{pZ=H3{-fNw;_x{BfJIUawHZ3&=H3S&aixO5jK_j8uJHjZX;8YDqO9VjJzW|db8Y7vBg`3R zS_?-AIA04|?Pic>C3Ukqnt1%iUv-rjx;;h25fxgT+0tyQCi!nr!Nj^TSQaYs*W4O6 z|0ZSPjWxV2&hX!<-R}JBI_IIcd3jziOY)=M-d>5IYi~5=qrgu2tBucZB9X}6fdMVS zbd|J1@<G#oo7rPu; zPmb=?TT&A{^vkZF0zq0@kiD5;bpCh)d&|3o5>w93eNT)+G%hk=% z@eTrk5R~dlFY6wA|9-~t>`>$Uyn%tW0gAy~l^~X*VKx)hxL?1n(bGG3CbLM(%GP?% zsj6P=8>ez9NR}*xgoOC){qB|6^d7T=L81IgN}MkMY zISKZKA4yD@EGfzwbIeB>cPeUXJ}D`tm(QawSjtV3D=NfhXJ_MAspd=JQSBWaWL8#I z5s{I!n}cw*q2t}9scJhi`91?wu7ABt#)OBU%Fd(~v2vasZy>9De0}WzU;(uq#^L(9 zQaCNzA{0VHLxq{C8JU>Y@p!JnpcMIJ&u6@$K8U=BO~4rlzLYgal%*5Zq^TLX5;~`s*uGq!z*`Ehk6M z$w~0w;Gk$`09-n`xlWiU8eJE;Uj;75*d5|EO)F0Ga&j0iPd5qt2Ua#VDc1L#&knc7 z#>XYxCqPf(sOb2? z>zkY3Oi4)rz+_}>JX#u*0*)yv;tt4s43!3Y4u%#4lgp7nhHee`c^ zjl*)4fDDH=; z91+$HkX1Vi2^Ot;eNGcqX1?o2ob>+Y5D0{Uiwl$O-PQ}B*--SoUbZalT2>P|C1qW} zx{;vXhi`rF@1{LQFtf4(Js&tfAp+#W;&8Q20~`?%5vNbIuFi@2toLp8w6!S#DssvD zyv)zP4IsXzp}}dn@BMUhAdRlBuCj`XtEVSqFh>E#DMu$HBm~rzHgY{c@#pAhO=BZZ z`o(en1MdV*5#ZOKQ{Ue;190qt`;xS{XkTfIdJF&)F0S`c`WirKyE6|Lm-+qm(Ri~S zTLOXb&`U0uU`Hrpp;+<2jRbnsjCr>FNElYu#%6{j zASfs;bJ9P>)BEb))#Z^$VbK+hR9yj2bYP$iz_EC=79T@uYO4AWXlc0MA(vu6*^sPc z77T~8yu+viUuI1D;RD8RZ19PRrR?tq6c!f#5j$B~Srap}rNu?b7h<`&x%la(^yg70 zammTaQCs+}t(xkafsPb1f+}YxCk3WRS1&IxU)ub_!uKpGXBRg&`$POxd=S5i_!b^d zMN2Ed%ezppaU)4nQ(K#fom~e45ztQM;^pOi6?t}e;EpsZKi+DbJD!iB4_QZKy12VL zoa`-kq)LSDIf{yko`L`?>KGp%H|TJ=SXG1IXIdP_E?}lcKkab8t~eTU6fr<6 zeEiQS5@nEVdzZ`+6eYv#rXorJM{bEEMK%IypIEr=}Kw#y@;W7Ji6-P&GL^GV-dT!V}(b zL_}TDhyZY6RO*@nSe|WyNVNAPfY; z{L^cll(-{s=Qj%-&mg}V+DY>Pxq&cqadEMMfq}ZZI>}trnOJ>&eWE7cZ$Aa2a^@!M zR5V)6t^OmVKLhBgp)j+@TwCt>dBp3OnBM;WBEXX_&W?;tOf+3xMJ6k4Hl=j`N=!_= zEg%rr-mbASkgaWK$Uq(U8W3B|z(DBb$*ONq&}725{MD7ra@WVl=eD3=JmB389#id= zHZ7-LP*->YP+dPi$(G=4K_KS!(b77HZaTpyANLzWikyV`(x{}Q7=YfDo3z(LqGIEl zCG6V2Y7_jsVC;Xi~j{QUeeF_iSRzDr;}K0d(hc$Jj0 zlbD2Rqb|ZS?mth}+`!687jXUZ^70F}%wEUOmi5WuM}!m?QyH$27&P7F z8Os~v(x)lS{@*(`FR0&(oV&o`bIxO9U)Tpa-&R=i32 + + + + + + + + diff --git a/doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 b/doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 new file mode 100644 index 0000000000..5344195bb9 --- /dev/null +++ b/doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.md5 @@ -0,0 +1 @@ +1c674fae910ceb855ed8e8b30cc12422 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png b/doxygen/libtrac_8h_a6f8a7ad670fbfe7dd4ed81f66695db6f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e17a94e744720d5c637ba47ade428f5661c3307e GIT binary patch literal 19321 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 Rc$XHEw1k3qiI~3c{{e$>H#q + + + + + + diff --git a/doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 b/doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 new file mode 100644 index 0000000000..b509b6dc42 --- /dev/null +++ b/doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.md5 @@ -0,0 +1 @@ +7a9a41b6e2c5c0e0b47da045e574f682 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.png b/doxygen/libtrac_8h_a70ca26c59c2fca1fda54a29dfd3625b6_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..49caf23d8e2e6d2f16c4c4a7e34013fab57a411a GIT binary patch literal 8761 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.md5 b/doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.md5 new file mode 100644 index 0000000000..4abd8c1106 --- /dev/null +++ b/doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.md5 @@ -0,0 +1 @@ +9decb186f76d96343b23cd21dbea0161 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.png b/doxygen/libtrac_8h_a7e748a53552146213c2716ca829d345f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9ab9235837db2029835b5688dd702fad73e6b2 GIT binary patch literal 137220 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%0DKoz2wv?t>M~crrVZ5S1Jp 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

qo}FM$iz(=(8kb~tT8Mi?c+ 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 OgbQcYls+gL-~V3;wd}wE literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.map b/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.map new file mode 100644 index 0000000000..bd746a7af3 --- /dev/null +++ b/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 b/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 new file mode 100644 index 0000000000..16da279bb0 --- /dev/null +++ b/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.md5 @@ -0,0 +1 @@ +e2622a62bbabf216f3b3c14b9adfc047 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.png b/doxygen/libtrac_8h_a8bdd741d54d2111b3341ef04d826b475_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d670431708a0a99b0dcc2abfda2771a1be2e3142 GIT binary patch literal 2835 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 Z7jDG{GoQL;*MeOxfVOr-)tvQB{vQKOdvX8( literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.map b/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.map new file mode 100644 index 0000000000..6463092de1 --- /dev/null +++ b/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 b/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 new file mode 100644 index 0000000000..77e0ef1622 --- /dev/null +++ b/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.md5 @@ -0,0 +1 @@ +7551677443f2ac910445387fb2734c27 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.png b/doxygen/libtrac_8h_a95998555c31d67b672339a2332f7ee1c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d47e894ed96b7bb5bba81b7779d3130c711c2a83 GIT binary patch literal 2598 zcmY+Gc{p2X8^%w9FvPw@?PFg`ZG%*dh}c!tR#lbS*Q#}5uT;?#gHbg@Eum?Ou|#Mm zr9M-lwp5GK6t!=)bYicf-di*t-@al$Y?psE-Bb+R2+_={rt@dk^04d~Ia~m$#j+N1aZanMtb_+5((+q-scE z5FsH=*fwzIIY%OZnI@nB($C0 z+2|VFT3+_R;hMt4Cx@v1uf~Va!yH1N1QsDY@!bEb;Zh#=y?giS>g(NIjwbn>6KO*C z2;-2w>e{uYu`$z&6&>C_K9|}g06<+sgG!}ZkeqdNbS_q)E)lanzv3VgiNh6UlcBXg zNqwFZ-Q^aPJH8e~hl)`?G+znrnr_GE%b7`uiN$^0-_-u0USu{(68MEq=aR@l$fV@i z9$$8H^1nP$6~kJMdrqe#VHv)>Nu(Y%U(zmx`OifMA%*@Qq&DU;d7urg~VFdJ> z(NR7)Tt-%w3qYkD>MAQQmf+IB9aD39*xcM4a`PrP;NAXH9$FzJJUlr$Sx`U#3M{Xz z`1||w!{K0^eE}`IseZn`zF}cuQBlqH^;)nD2%sRuQ=6_$8al75tE(W96CNIpKp zE!EZ4Qc_Ziii#~X+RDlb?nM$Kh;|OwIW;xqNOmEYox6kajf{+pi;MI3SIWc`p0U(9 zIXP*^e_oC<3D8F>DRuYuW-)_Ik;r#rV*v1&LYY7W>i;%AJ`RUFOAFUh&jkGj3RT~}B4u`{)u9OT|NGNJ}_EiT@QoQdT7PD8cmmcPFIUtg-3!B6Vz z+tW^xTwO;8OU{8xAtXS4KwT+sL)zNfy1ToLjEwa3^ni3z{FWF35o;pzW93a>Utu{p z0ibVqIGE}=;#O2t1SNEhjI@wQg#G|oE-WmxRUYZ? z=Ez~dxVe=IZSi0CXS`F26|+y2fl*F=-~>7j7v9MRp~eQj+Gt0g4OeWe<^`90YXzW)KY0nwy*JtbU(J?BCsO-NhOkKl|ek6Y!^Vp}5yRMEhrxEMD#F#yP6?C- zV`TJG{G-}hjmqJYpUuG>Fft1A^HUTdqEILd2IKReH0`gm-E&b&N=o6pjGmrZc7jAs zV0ieTA2ne3nv~S!Uo}7L%N5KmEfqg}xUsZkr7V)1lmuGuUQW&rhK6rK3kS^ zE3#GgqaJn-g6P z+@HkJl9F-=1Sfm%BBp`)w@X_nCM}7TPYBR;CANHIqoBDQPqW zw+M-i-PzdK7#VRPIfn!U+<)-ET0sa7hldzS727lBq9{(~rKP0<{r&W$y)Yl2k9pF@ zjo$Q@;Nc3;51ZP&fPx6IMCaPk?%L>|8Qc?-PpT`)Z1{>N8SZxme ziHVFiQTXdst^tdk^0%fw%*!AU#`^m63k#sZdHMK|G6GP--TZucd3iw|9w8!DSp=le z&egTZo($$uW>(hgp&`&;Sy?bic<%z+%gf7Sre$w$FFHCJO!d>#Q}E z!0ftlLmNr}6ZnA5X3fD0at2V%H)lGVsIw{L)*1e60i>Ln{m9r<#kcm|)an;6PF}ve zotH0p4S5 zsVw44^>nX4gcH!tmoHPmRwWm$;Mtzx(86m})}ZJs1OP&Eayl$M+h@kNN`9xmu6&`E lmF{d=weqhn=ATaL7|}VF@{5@NYzpW~z|P7E+laY-`@c9!-Y5V7 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map b/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map new file mode 100644 index 0000000000..9a8ded73ed --- /dev/null +++ b/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 b/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 new file mode 100644 index 0000000000..0890fd92bc --- /dev/null +++ b/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.md5 @@ -0,0 +1 @@ +be15fe56407e06560a9fcff36bdad81e \ No newline at end of file diff --git a/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.png b/doxygen/libtrac_8h_a98e813ec34f6121b5fdd8652d29b10dc_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a139480f924d3023507d0a5c55723209ce7e31 GIT binary patch literal 2588 zcmY*bc{r4N8-DE?YhyiGvt=h7vX3Ivki%G~Y+1*#CVP{m(m13+F&s2@C4CGd%a9`! z$ubzbV~`;`S;k?$w{u3cYkC|Iz1Whv*SLLmB$1wBS76n`I|fPRRN(ag-u!NzoDun0q5R<^Xg-F;fUBJ;t? zL3496UZaB(9v|Oor&vZ_C2vBs)NO2Rrij~YKYsk+;o+&Rt)0@?W99$u#)1@^^4R}>u9oYX;&B1w-ft#7RZE9*dfJ*E3W?^9&K)wD{ z#(dYyD}1?6$i~%7NkbzuJ$-+FfAqapnw{d(PR!WYm|n9R|APl9OiT=;=-P$T zlgxZaUM{ZI$kh=a!TS38Dui+pEG#MttcM+NadYG4=OuFD!A~_lb##+3i6E1>N=b zj);hG??6kOKi}y`==R=O@*QKp=jrY3U1a)DQcMi#>N+_&snj7CghEjxn)UVdK?uyu z%nrBaZ{51(PnZKPHTL(h6k)={)AFYbV~XQNj~_jnX}N!su=h&-x^Mk?EN#9uy1224VHpr$YtdbN?V47Naz#Z2 z0EqKarl#_Xi#0mr45QXXbNhV>lVAuHr<(WoR-WbNieRlG@8928Tg&46GBD6cAZY9A z`qjDYdLkShk55kCxs&o?((5zLmu;?K!M)Q&JMCEL`_A7i<=v6Wp#A)+i`XA;0h9nEH;X@uVwsmya(c4QX*50 z$j`|UghFKmA$q@0gl+%b8ND@UU3VY$nZrn-ursO;gX_E;Haxx2T=1PBQUDJdygSXh8X zBb0x=azzvfJKFY2f+hB)byH*azTuNE+5SmeT@4HjjNPXVHwIDq`ulsyN-8Rgd&kSm z%Mub22L}i7hntR}5jqDs=`d+lHnxSGnCR$eEnFM=G|otJ>)W?+3WWoBk3MZ75D2NM z9Fm!b`}++|P0r!QBcDET=Jx-3`Eqq_ZB%$Tp1k_x$&Pg0@$SADlhh|q zWMpJGS(8gkWpQvcNk{ikYHE8^uheolCLE+iK1`>dQ_ar2=WoMIXTnR@BXQwBJ z^3ZbzL?Us#tLrYg!Up6V%#eeFgNK_NRK2RIs(V|^d47J)B3pNNcQ~9oV2DiC_Wvs0 zP<$01867=6F_F-!?vz6>vr|-1PypGOMlCjZpscQr273Vx$CA40ywslS1pRv@W7D!3 z+sAvFKk0X-?T-R9yB1T=j!LoJbVDZz8LVO`jYd-hFD4Ro)pProBZfCT+7kl3yoSkS z0U;rID8}C2o)|h`t0*cW(iDFf0!kVzPa(V6e^62eTZO13k!Huoh2JdH1*mGy_k8^L zvA6eWg|H?YMsJ#1Sg758zr8Wt z1ggRj`S5B@%^ZUsq*`&&eB|xt=j7%#H9zm+?3|mEvrp~*V}1Siasxrg@^XJ}wqCWZ zCqL`z_wQZ%y#OsT&c{ct(6(|oAR{9K?1Hv7xu@s)eKz)#@PqY9FeQCML(1r=j-H;B zL1YzyAkg~Yi^+?S>e5nhj$XyvwY0Q=)AYKfrDHQEB2+Rx!}RnYLW;pjsg`~9Ze>GD zi-Fc8?F)_$|2C2clWC^V70WhLAE?|4^bRj2)hEx?~T*j`no!68yiyWp5L82g==$m zqvt?o8AdEUg)1QIeK2X)zI`n$c>er(VWAq<3d9RcShJiBfZ^?8jNF}^#)nHS-`3RF zJ2+U&W%aO>j#iGa9f;|Lz^$#pD+D3Fl-fHa5($IBEG#UbXhBgTI?TM4D%lxd^6;%8 zvsoWtxnplc7Q$Ly^Id{sz*R^f64AR$n6*-3@bviD*z(E>1?(gVym8}3a&q!gF^^fhKvs74XP;e!MrG~|4iPnjr_z8KIIMg&rn(FC4CCX}hbavD zbLEb@@y%UyolBc%XL8`tI@IhrmFnG{y{0qUmA&!5Fi6&b>BmuaP*KTDy;BqEdCwhc_fKB~ni_EbPDSA*_>UM~ tpo2;}{ApDFjr8FIOjzErsz*w(s2G4FT;QU~OS*UVGIu`M=)L@N578 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.map b/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.map new file mode 100644 index 0000000000..28597b097f --- /dev/null +++ b/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 b/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 new file mode 100644 index 0000000000..9c93cacdd2 --- /dev/null +++ b/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.md5 @@ -0,0 +1 @@ +bb615cc8bdd0a88a7687e8d5632315f3 \ No newline at end of file diff --git a/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.png b/doxygen/libtrac_8h_a9ba00889eeb600010467d8b62de94a36_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..58aa184f29c53e80b4dbed668d9ffa4de748516c GIT binary patch literal 6921 zcmZu$WmpvL*Iy6;my|B)ZrmjVq$QP3=>|y&X;BdnacPi7gq7}IO1itGQ&PI5|F_SV z_se@T7c6_t%eJ#Bi$U$syDKiFZy(}C$7HVTDD}ujUTL`IjgAn=pm$p^#ie0jWOJi2IQE=(?UFNL zd@N;dKfdCcn{(ew5%;M(XFYG?Q|63E$Nm7ve>s6BMF?jybC!*=`A~-^o%~>32*aMW zF#q1WZ%Hv19!z$#K*_S@+r>w zY*dJfnwp*`HjIUz-!;{C`7QMaIB~xd_ULo|8U{sJ%UlTk0ERoYFY>hr4Q5bgevzJz z&O_{vl*u&UBlEr>5HHl!hHzityHkJo5n52NlP2Z`KEWLvys0Mavf$zAIWaYLesarsgURGNxYQ1BF) zanR5pE}F(0uk7&Z)q%IauP;iGSy@$ea%#%O-u@vpSdQ`V=yzXZW8=nP8jPQxf`Wpb zlan!8(c0SDqU`T@o)#-BYqvHpFK>;@VuCVKEnQpy4sY<-()98=uXEqP#lx#dp-7w? ztEeUh}2f8YJL%F=_coWS(F8y_E!=hDN(z}Vc`aam}XZfjf3 z$#{!$U2gqM$~9SJm{U+t|9Z7^a8Q+pheuer=Irc^t*xz-lM`mp$ijkzMgH-|(ACvd ziD`4X6uskI?MPoA7YufcL{nsrS?!8UNlHR^7s9;LNKMDHz`K_+3>@74JYG?>t8bG810s>zCTgi@Lk�x_xNG3HjA<>IxakLMbRMd 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.map b/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.map new file mode 100644 index 0000000000..d74e980f45 --- /dev/null +++ b/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 b/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 new file mode 100644 index 0000000000..fa38bf9d36 --- /dev/null +++ b/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.md5 @@ -0,0 +1 @@ +8a2aa92c346dd0a788746d632c2765b6 \ No newline at end of file diff --git a/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.png b/doxygen/libtrac_8h_ab3e201b153aa01202bb286d650ef07c5_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2862aeb776a9142eae3a703c13ced09b3d27b4c3 GIT binary patch literal 5281 zcmZu#bzGEPlzu^CKw@a6g&~v}1O$wjOlZG}k?M6LG(C9C7{ZYRrAM_citpNlAg0|x=erA&m(gaW87>Obm+ z+{>$fTGm248>v!VQORr=_c%(cUU&Pgp>ZrtomUC1D48y%hI{HciU`3=!3Kxnnai!6 z_8*T#Sx^WhURp@`lO{EdCjJ^)%oIPp%@_=4g~L`LhYbi0>$#Q*M6pK05K4Gm;s4d7 zk|zuh&;r-N;UOtgZ`kOpsXr4f?T2%!k$Bk1ul030YU*2$BFWzgS$@&c)pgyG6++1I zU@(|MjT{jdY8JtVj1@-Y8FwgP?6^dfZw1)mS^sB~pl@i12Z#T9}VA#;?` z9Y)^L(vqZ<|D!wX`s#Gqt1cQZ;?Ed7s`nwII!3dV>%!C1lZc3@xVZTE_*f;CKPDog zxT0bv)e)hDTApumUf-H7EmTdXq^8D$lvGp>kB%56Job7bsH%61bnaz|yH}K#mxqM( zhEuRJOZ$;P0r1~*)!p;+^9u`J(qfX#$-S6N19R zbrlt44DWwWefdHL$sj0sczEj5)s&RNqoUXol=%7i>5wKp=cl{NyIWhzoJsvL4E-zn zb&p+-x2B7=3uBojGf-@NCar0mFBY3!OV^*Y;fKpu1rDt`H5o6xOiWDV<>dvP7A7W~ z{$6?#1U)r2=B15#R&MyfW{MkTrmU>&;qfPm4vC?|fG zCW@917y7lfW>f26ZJnN!G&wc~r=&Eux4#;dzMh($y*NADS!|+`D;l@f)~14F_*1uG zUl$h6|Lm^-i-@~nUkIkdyTC~b+=^~--)*R?D>H6#`q>j9>6waROGr-Em6eqpP1+)c zSlQWEVzRS69+Sv;aeuCU*>AqHv9S?ENN#T5WUS7XP*Pf|%bu*f+F<`x>g*R4><5@a zTT83TF9Kz5V^bm@Klwqedm&TAK10-jc_ub4Zn?@VNTg7b0>SwlX6ETB7J&+ctG|2b zxZLjBe7K|V`gKKP<7rpOP48r#XH)nQ>IM|M!AVI}Gv5!-c=XCX{dn_`F;)rDP+w1k z7dSXL_~*|bfFAKjkI=7PnX!k+VOm7v$jHbZVT}w8%}FJgm+Q;Btu?yPg6T`D zy1KeeO-;uF+o?#?FWHjfA|h@}&8~{EjGOjakANq%Qk5WuV-$di^k@A~%*@Q3*M_Za zY#urOMA_Th`}jzRB&rum`~PLMZLF^^t{}JwP$-lX)AXe%e*gX@c`q+zL|0c=D9P=E z%QI&zmU;tu7oimFm-fI`PfKe80KV6JKU>oK-ws>TJh*Sa1N0PV-Mo1-DJco8mYTSC zvB?>qOw4mU?=k30K|ulT zj*gCB8yz%MRjFZk#{7-N#nyi>&tCS&PFHGEQ6+u)BtsjetEaby#V*QgAFhp15r-sk zs@Ygs!H9{w)KL!-b8>P3{9I!teb0~ROnoq^`ET0Jk%6}!s^&;BK>^GiUX|b9e2k8c zzAc0<@*2C#)3s-}_>rP80*ke~k>RWHbdz8t{ziCTUqf1&FJo*{4og4_j-siS7ssv3q%w@1I)!`9orD&ylFKYb(Yr$DkB{ zOM0Qi60nRsA2j~a@+SqhQUD-FhUVhtMk(j zh%D@-fSss)1~rpp**20i+;4?cR`1!frEJeU_T7IBd%Jgz z)^~MvMWfeRR)aT~9AF1CBpj%$ zY}kNToO9Ccz`~!LJfpBMC^J(s!lL9+!+ZI5$CdPo(`HrGJ&+Oh_j7uBV+0@gu3Ttp zY6i5EUqy#%>s_TFWRBu{dQiveA#w)VlL)x*-dW|S1b!gF+gu7cB?Kh^{qT!90{o`o zbgDj!1;JYlsvpWk3Gnzz-WH| zy)YN$(?i;f@WrD!Joqj?SCne6LimXcXy7AeCx?a-YlQ9%TSt9M*O5hGS@q; zas?3@ZHSYjmSqEl*&?Hu-sfo%kP4brVsj z*J>!G$-Fn%9^#ZUWtF9;V2tIKyc)Zh8ECNAJ{PHHJI6WdyhUMA)5?P8%U5{WCy+C; zIayd~(q;pnZ7V1%vl~j`hKMbG;ouax2my`5K=-UzE&q^mPkuV(l#_~cG;Zx{{2Nvii)yw zO-;?h!a^t+(xXeH(tmTVF9{j;mfV;5j6Z4?>y%K|H8#=_he!htOXN@q z3<`R%Ha#`va`0=Qq~snKSK-{8zCFdsiLU~Qs+XiZ2--^@9am15{o|segW>$9?Z%u* zYS|J7_mcbi`+1TFo12?QGDW?;ycA0M&F_e;kWS!9)d-f}-NrxjEG1$JO(8F`fe!HLF9ZU@49jX$Zzsij@=3fQ|$dwJ+^SA_N=x|(7zD>m`kk(=lJ0RdL-k4euomGq@;wHlr(w3 z0&oc*sg9Z&N+S^iZS9rq?I_ajA8)>W`v!8Rkr6q)FbsNOZZ3z>gyG@N^r>1qmx!-@ z|Neb=c-ZrB4WE#Z5D#yIxl*}`CnY6i%X9zC2Z==LnskSfZaW9V@HR48)l^MbUfI}e zZEg;%I_VWC#~wv4%cr$ynK8uDY5ppw%g7<^jYo4+>{Y68)F#D z(QFzzy28T39C7#8r@xn$`atw3!+`1N4+TX<`-x{eyumac{iX&taB%?%(C1C*=;(-w zQbD8906l7IYJfdq=WD^!*NY!<0PiEf$6spoto`tT0MdN=^r?l{$|L^in%Y|b z^Gz;y_tSJCOMa8qkHAFG3mcn-xw-JoJ%BW=Vx2J47*Bix0+3uqgoPo9o}QkPk}_Yb zI2J|$TWX#3{TwHCZq*e`1gHXLauc}wN?(k#qhmy5q+u<31aKt_!TGuBm*8X@9hTee zzcyG;e(3G(6%!X1eefV8ENpxBE)*b#$>Hw&CcuF%e=&>bn zz2=@C9>bZUaeyxr>r8(mp&w6q=Hha6d3Jc4L;-|*Rn_Q_kdOu#MR?3 z2ic!p>yZgcHa0d@QFUPF=jUF@=&7uR#>PVr34$QZLSg|!R#ujelqr9zxVX5Heyd*( zj@;*!{XLJ?sHmY@%h9Uxm(85|hK9<8lLHn9Mu$#s-c(grkMB2ZaNfV4pj?m_mQC=m zjW)lXn~(2mHPv+Lf=e|`0Pw7rLSM;QW!VC7a!&RR4i*4Ey{4;$p|1CS@Mg)gN^WwpA9Oe%iSZ5lEn9OVaTI#qD^A5pDeENfeTvlc^cZVx3oD|-YzZyL$gnyFx(YXBkDNWPh2%n0|w#hGIs;w64Cak&|z!G#yY zgkK2Xcqc`tytcn(WVFov56F8qJpW+V8ZcZTi9j&(~~Fu1s}d)8VgiSKqZ7gI!LwlsNk>?p}U(u ze{_qQv`th|@dQJ1+;Cyu=U&63aTPilhDJl@_f3G3ioZdMsWRwai-({BN=n$ri_=ml zH;>flf(7yUZEq6SQlka|l$HjcY7~}svy+armc*1b-!%s~o|WMl&wWrRf<#2)H9K2-Pfb0O=G=yuH0dLS*n zkmKR$Sx`{md%52qN|sN@O&vKgF%cU}rlFw`GrD{tb{Fv(2QNf!aOkVu2KP5{;t)0@ z(qXFT>4J!Zzamh1jJIz;0sPUb6iB4g9O@t;npWq^1IW(~H4#TIw+Z3^NL z_uX$hhOe|Snm{z>78MmWoyE8wuCA_vqHJo-|OiXMc($^eKL)^RbwGrsUmNplVvS()Wn4UiG@beu=tAGH9FzkoJQuAk2ld_^4Ay?=bnk)R}fxd(_F zLs<8n1SPO!xLk}nP&Y)-EiosM5vI^?oq_l`I5=c9jp!k83;@n-TlKt(BS{dKp?e;K#Z1!f!NGIK>-5Fo!~ZEIta0~)=_>)2+gX?A7?ZDH|Zdf4l~G-Aaa zirpSSpQ?8lzT`-=Ff*Iz>%*YjaVrq#B$ypeu=5ZUfjR&xIxrBoj1leTb~2dEQ{8N) zlEQ1y;nzlX@v<+vy0-QP5b3L&6P@iVPpUI0!x{< zb3>s}m5CEL=T8YSEOT}zfX`K$cKCs@uvn}^$JNZxkS&ne03qcS741G}PMVr~`oIfyvl(3PHYUZ)dgz+BtE+0`Q5-{4tV>44 zimXSj_Y#!yCpQ)2n0@zuKKApI${cBT-JY4RwHz88)Y8@_!s`P22aHVo_2NSY1_qEn zpSQS~Sz^3gBKucxAOMdn3D26QCeKkdv&^if=4R%HZ$1qU-s9y}UHMGKrA|#vU1rqy zWpVLxs#u$vm;-_686H+eKEd3k9CyD(5^AFm86N)7|L-NJ;(+;leS83ufgnP1X0R-4 zYioE{YinzKd^}LwV`F2$N2PuK?0rsP2jwDDzq5jdN{43`ph{CBIBzHNb$VJiQyXN` z;Nak8zYDdmOHmbQaE5GbY!Cz#^v5?px_}D<9(;?D@m)qn3Ewu@%t+e(6;MhdBx8Kz z=JsV|KhH}`wFZ5hQm zJ`pA6w*Ae1xL5Gds#|Gn%x`%%xB^~t=>IC<{bw!jk2Gi4P(S)J_is>hgq}QBM^(tZ G2>cHuR}-QD literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map b/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map new file mode 100644 index 0000000000..8d45d18849 --- /dev/null +++ b/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 b/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 new file mode 100644 index 0000000000..4ea60029b9 --- /dev/null +++ b/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.md5 @@ -0,0 +1 @@ +ce1662f31f2c56b82b0c7e326734d7b7 \ No newline at end of file diff --git a/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png b/doxygen/libtrac_8h_ab697dbe3b5a6fc59b5defc1b80c558aa_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5a702c8c47daeafc5f21ca9ad6e1c9e50b8f8965 GIT binary patch literal 6078 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 + + + + diff --git a/doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 b/doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 new file mode 100644 index 0000000000..40bc0c5fc7 --- /dev/null +++ b/doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.md5 @@ -0,0 +1 @@ +27300a6a8424cd3da389e812c307cae4 \ No newline at end of file diff --git a/doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.png b/doxygen/libtrac_8h_ab8054000249eb04a88fc06bba77dd573_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..0e624d31ec27c98d5649c2a4ed51c82d8ec6d878 GIT binary patch literal 4585 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 ba>JzH*Dk}VTXq2M-2l&&G!?59tit~Tb^hJP literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.map b/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.map new file mode 100644 index 0000000000..6a2746619b --- /dev/null +++ b/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 b/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 new file mode 100644 index 0000000000..c89464bc90 --- /dev/null +++ b/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.md5 @@ -0,0 +1 @@ +4e5a79f82059d4e5295ca1d926307b06 \ No newline at end of file diff --git a/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.png b/doxygen/libtrac_8h_acbf877af94269d0aa1c94b7c50121df8_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..1852d80f9fcf10ee3ced5c6fa0b27ebd9c2046af GIT binary patch literal 1991 zcmV;&2RQhNP)N80ORMrQg3*E{jYXgj z3j__|BSv>4xUCU`#UKVPtbe$hh)W`YMq6rw1k<9Rz1t{V1*Il7D`C4eT+BrGc`GrIxkvp_}1=MPFadEMyRm^4iJTDQ4!{N-y zLFZ2>NP_wa1xZjpp&$wBCln+>#!q^^{?MUA005)Wn4Fx9NX-8ev|4RgSeU0;@9yqi zw{9JR0Uf;GeF+2tL8(+C8*>?Q=FFYY(15fwT3FcMJgw!62oDdRoSZ~3;IbR<^78W9 z+uJ>@ViErMV^Az^ii^9Pm?*BS{KwFc$M;K)X~v#^ypCrgOQt? z+t$`*e`;`W&^q4f_4<=1Pu{w9i^*j2c)Yf@HnCXDVzDwZGG4!ay-?(Wf`WJN-km*r zR;5w_0II92*=%-la&kdI!RYAd5~O}jU;uz#-(OPFK&2KlnLqvd>u+OYUv#fGH8oKv z6klK89XobtG#YEBTCI+Xit_RCiHwYV`0$}M^U9Sgp`oGP-rf-r5ekI@06?eHbvj*Q zV&d)Fw*dgpo;{0>j`sESrO{}%Q1f~J{=Id)(`vObF)<>M2#?1%H8t7NCX;Koipzc) z9UUz!EX>Z%zJLEdpU)SGL}s(uVad+UPCq|Cxm><$*DirTuyyNJsZ>g#P$Uw`Lcz<+ z%Sj}XSS)5R813!t4Gj&~uU}Uv6nH$owzk$)scry~^Gp}6=ynOwwX|6Eu1 z;;+B{>1rs0!H}Mwe&ND}{{H?`r%o}M%;Di-qtTd>l2TMuG&VLS6biXq?##^0t5>hC zUAv}KDorMnP$)cc;sgMoxw)B4CO>-g=*W>HgM))iCQ~2~3=9n9=jXFntWTdlEh<2# z(~Xah_w@Am`}^CcUAhXF=TFVe%`_Tq_wL;Q06Lvcr_&cIiO1u4JRSfbE-vor)2AsZ zDFA@j*w{OF?l{xX^z<|qi(R{REe?mfbm@|-I^B%L0$ZP0zyIE&)xP`jM`?U~L`aAk zf-p`-kV>Wd_wTnZ&Ky2`xVpN!zP{dMGVR;9FEuq40FarPnVFdh0Emi;8Xq6G)(Q&? zv!!iFB$A}0r1bQ3Ypt4^n#RV)jEs!MF2Pb!QGvx`4F-cP?Lrp-0G8mVk&%($;9zG; z;&3=?0)ikPA0J!V$%bNLV)pLcd+gY;4I4I4snoQzv`w2fEn3UppB@~1#>pm@jJNmN zg-*@RS^xmk)3YrtdKdL?Y34NF);b`uaY8{752^=9HY8 zni7k}j~_pN`}XbpvjBkJ-d>qZCX>l*InJ!f1_cG#3}l~n376{x1O#+NYOZ~4ZDnQ3o}S@_&SEfL77Og{z2>{`{F|C8 zfB4~NEOzmE1%W`YpNtv|hV9$8<8Zi+j*dAcOG`_YO683kH>gzV(9n>*3#|kN1?A-A zR8>{Ea!tU?%gbTfC0zE?o;`ac5=m=oD~(2b`SPVmB(ly2kphCC&!0cTFf5nLRVr0k zSs95$3J(wO>gsZ)`pnGmfddo-^*H30U!Kg*#9$x*AP9ou`(5a!X1|6beOBQqsM9_g=hsA(2QXCnrlwOB)*->2!KaOAD9F9T*tEU@(D!fm^n0 z>Fw=3fBrlS!xIw|>({S`AZTJ@!eX(o+3e`(Xf~T2A0MyLXm~uHMx%+0j6}K{9N@B_ z2n0e=QBh@OrAQouXUg6<^ z9L|n|2dSZ<0iKq#I4YIO;W}7hVPQ#034#rI#!owU?p(P~K>$Ei)sdhe*FMa676yai zp2y^}TW?trtSmFR6Vy*ANP_wa1xZjpp&$wBCln-c@P4OOtKBXG8Q#2k<7o*FuwO@8 zW%Tv+g@lCI=Q!}wGTg$pqOtyDv09n4TNPTxUvE*|4?2HBK@!wYC`f|(2?a?|KcOJW ZzW~}v$w&LOiI)HX002ovPDHLkV1htW!xR7j literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.map b/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.map new file mode 100644 index 0000000000..bbe4d09c2c --- /dev/null +++ b/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.md5 b/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.md5 new file mode 100644 index 0000000000..0188e9cae1 --- /dev/null +++ b/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.md5 @@ -0,0 +1 @@ +cee17082bd2a98ed6a08df256966a11c \ No newline at end of file diff --git a/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.png b/doxygen/libtrac_8h_acc3995f25d0dcba39704f2e5c5c93f16_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..342e91dd64878fbe955a0b78f1406156c36f39f7 GIT binary patch literal 6795 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map b/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map new file mode 100644 index 0000000000..4fda715784 --- /dev/null +++ b/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 b/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 new file mode 100644 index 0000000000..d95e51b04c --- /dev/null +++ b/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.md5 @@ -0,0 +1 @@ +5b2c96d19f2250268004475f02319c33 \ No newline at end of file diff --git a/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png b/doxygen/libtrac_8h_ad3b59a5ce89df2ef37437ed08f6ef77b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..97cf832a3ae2caf11cc3b9c41c7194de9af81fa6 GIT binary patch literal 8687 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 DO^O=# literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map b/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map new file mode 100644 index 0000000000..d9b4484b7f --- /dev/null +++ b/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 b/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 new file mode 100644 index 0000000000..ecd5376a53 --- /dev/null +++ b/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.md5 @@ -0,0 +1 @@ +b5414a39c4fbae6f770e1983fa748859 \ No newline at end of file diff --git a/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png b/doxygen/libtrac_8h_adad9dec9d69ea6d2be2891eab7f6f67a_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..934875227d31f9075d0826b2ac12868b2de49e51 GIT binary patch literal 5043 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.md5 b/doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.md5 new file mode 100644 index 0000000000..f09e69baac --- /dev/null +++ b/doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.md5 @@ -0,0 +1 @@ +306342cea0233cae486344fc8b7d12c6 \ No newline at end of file diff --git a/doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.png b/doxygen/libtrac_8h_adaf12f02099c61792e04447367f1c37d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2b72ce63816b11a049b6e53599383cb6c52649 GIT binary patch literal 109838 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%0AD=RJSMcDP`e@~iZLzqe} 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.map b/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.map new file mode 100644 index 0000000000..d54ee7ed63 --- /dev/null +++ b/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.md5 b/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.md5 new file mode 100644 index 0000000000..5db71019a6 --- /dev/null +++ b/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.md5 @@ -0,0 +1 @@ +874248238b21e6119ec31a037caba5b9 \ No newline at end of file diff --git a/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.png b/doxygen/libtrac_8h_adafd1410822189cadee393d5cec50a59_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..109ab04bdb7a0a2ecfec9f533aa654e79bccd975 GIT binary patch literal 3454 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 MFfGL*1 + + + diff --git a/doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 b/doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 new file mode 100644 index 0000000000..ff44c96efa --- /dev/null +++ b/doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.md5 @@ -0,0 +1 @@ +0313833dc8cc631fb99288180678a50f \ No newline at end of file diff --git a/doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.png b/doxygen/libtrac_8h_ae61cf973263fcc45574daa27d0dec8cd_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..11ebdfc7697f9be04c83f362e12f8bc6e3316899 GIT binary patch literal 2491 zcmY*bX*kvg$d3fEO#~c2Ht)W-ZARkCwA?OAEkwn zslvxkIRz1s5k^X?$akrbY#+uwmweJ`e336^0^#~I`-uxP_cS5ks)^}%pak*>1VS5&RTvk6(1w3YP0X|$tKcN~Bh}(|I zhT-OL_>}w&IVID+uwY&kn}oS`?b_1gKi`LihyPVr_|k>x0hN&nz#z!4##{*mf`Or- z4C>hXb9#FE{(d+LMOVLG)ciHffNZt<3*uyPef@N6>(yyv-Q@lK{l31w+tw#CXtX+V zk~aM=#tn%?eqWomuTJXWkI5HQ|M>i0*Go#D^D*$#)lBQS9K`GPHn$r}d-!myDTeZuqy9-FgmLFw)LM+ zD=WFRRb^RmadA8zPh4$xndYn`B_%aeA5r|f%<+6j8r|CZc<=B#?c~Yh?vF3$Nc&z| z+a5*-n_Mvg9HGRaUd!PU!$GxZaB=jtTkOT4ovkeeMa8`zKj=nL&ski4Aj|+sHGTE+ z<=1cDB7W?sQ%(K+{SEGIdfD3ctxi^RzdI}pi%fdQ!O zJMqo+**m^|mu>R)voh>MLPG4#%#LfjI=K`ICCp&vKdbtkw6nSFmz?C ze|T6B*!{|ht*WZZ$;sJ_Au=$^%F0-51A`GT+Ym{*09;X!vQT)uw6v6)o7>f8$#CxW zuDt8-4-pePJUDQm(X9n%?C|)5>c2M~NhHz4%!qB@AP>4Tg%G+vqkjH;Nks(;2HRb& zp0%N4#Q`55pPQBA*4Ea>1%17}7xeVb0HnEg>e0~yWSa7+l+$ zfuW(_r=}2DEb$X3R@T;@c6zzFxvj0OS$Z|Sefzeiwl+K>VtIKP#QV>FpBlI8*H53~ zEiL&HiJPmFmt=S*>gGjSK(y`db~|+*3K^WFb$S~;&*^uMq+AYND=aGdInl(^bFQVO zB@Jb?v$Hc(OGfMHJh>vbGEw!au<#3~H35jW%DMo?;g$vr3b}pjmZqjABj4f1jWc;R z%2J8(@$vq;b(NL&a*|~#O|7lxbag{OYKVQ-VYD&6B|S8eKYjW%6fz9H0f9IHz+`3b z{(m@bos|>;IjE$hG%*p?Q^H_uq{?1q!?1d;7pyw_Fo@o!ru^#aEEd=M_U-!c?WJ$? zpHSHQHDMc{0|jLf2)47@DRk0R$++g5>@g5HGqXDlZ>k0cJ-u%QSWw!i{2@V6joCd9 z_;I|t(Br+u!G)v4Y#C`mem-Pcf~TROA(*jPx{;O^(bKasf1b^jqxJAenETk-uCA`W zJ`ygWpx`W=YWkuds@~e#>a6DUK6+2qY2^c=G#f@WEiNt&!XT6~?(KfPb?)3b5W=~R zv^!p2-Rtdh8@vc2!{{lCfYr~zKiJ#k?(SlcX`vw@4>mqC$HrhQLyBTaCh`~!9i79i zMQH?!yV>90&y6dWLBA?l9+e)wVWPJ_BmVTsp^Js^-Mi{J__c+HhewAmN*2?GF)$#S zNfZ_mVuyKqo2o#6b9TGCWL?TVOZG+Su3>6%~OD!(y=(78als;Qxcg<#D-BGBeAZ&8pP2 za=M9(+`PQABJxs+U3YF~$_!mU%CIE6GbU?qw6xXMPE=L~jf^Zjk|dgobWXr!;qco1Bruy!2(_|UtceMI zG@8}i+&nU(tE#GMWJEVEU~hyeWsHMmZe--I@^Wg&T))p2?b3fC5XjcnRw3cMfu2;N z*Qe)(c6N4nr9sfUfq_k456xdUf<&_2SeteLc^LEM%a@v(n&@Z%EFeO$c1})8k|G)~ zysxh+GR-5vy6W%031^c{uhIwoF)q+hQ1A*2d~95x zt*w1U68g(8Xei_-etre1L>g_f+@%@-1O)}>d-KpLD*3i5pe-sYy0^Edr>6&EoY1?zXaK;o&LI7PzDQ@__Cq?{>PTw`1oTH(X)cW(r#`6$sW+JmIr + + + + + + + diff --git a/doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 b/doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 new file mode 100644 index 0000000000..1ac769029c --- /dev/null +++ b/doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.md5 @@ -0,0 +1 @@ +8f7b876ee3a4fd5795d708016a31397b \ No newline at end of file diff --git a/doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.png b/doxygen/libtrac_8h_ae8d8e4969b972ebf2bfea8ad774b9822_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..671f7d6b45da0c3454d797dba3c35e330ace956e GIT binary patch literal 12186 zcmai)byQW+x9`Cs1OW*N0YOTn8!08FyIT;Dlx|QFX%G;Q?vU;{q*6*sBi-F0EpMLR zy??y>-gx8b(BttO_TFo)nV;_rQc{q@#w5i=K|#Tmekrbkf`Zxz{|-UF1AiZTNIi#_ zJFjG=#8Ix1ztb9Xqft;Ep-79rP;*P#p7zx1bG>fa9~(Ji_^8CVUP;~ME}oYZ&pf16 z+iPty+1q1W@0w^oiB(oM-D=(3E97XF$iyfnU6?ngy=UlMm$k;sst2lXS7EjaYcs-r9F`EvHs@^Gkhu@ zG*Y1HczJ5?96&|-K3TvuU*IFDJ-pW_F(}$$BMoixzBuR;*j1|y*IN(rSUlZd{1^~W zAb>USj+U0T%xa9qIY8N@SigQWFFcpWKOjJJJxjazNW5_{S20!6F_vXxCY)U0E1U5L zL~EY?0k3l1{$i)*8=<;Ed{OiP)0h8`7wpj-`9xxFOSR;f8m}{l9ED^Z^JR>;PEJcT zvp%Y>#MqK*^tw-_+ zQ6?rPXz1w5VVP!qNx$y0HoSZP9<{HpZ)>)h5+z&ZSH5~dX<1pi`{7C`g;0XkSh4!k z;;5?#63#n9LP8!VJH0{p^m~8*c8rgI74|-VyE)1{a-PUz^W*#X_ba`LoUhu@qoSg^ zLhGsHwAAcj;g9E78cgpSc&1crzKTZW3Nn1 z{30XqQc_adIy*H_EC0nw*@R z+r@Ux6Gq1TiGUd+g8n5Uvc#V9*Qidr|L`756&nxbm`pY59%>4s;ZS7h*4Pr0kquRt zEB^TLL#Ow8WdxxJ+Y1-AIZhYxDq!e>kP&z#oYrKC{YyLWHvPX!u^qM~A762D(u z+=E%~6LJ*a%YC#)&lBXzcc$y(7&8Tff`al_diVC;o*%8ZF0_ZRb8#)refP^YFgG3E z3VIJGY~gj-%j@Rm_V(hhje+;E`i$41Jj%{YzK1~}wonwZ+y`QPXUMeW8q+Var z3kwU=(9rBHMu?Q#PCs+mo{$g~y%8H5dwP1RCJ;;MbNZg&apmn|2Q~rbZLxrRulE<) zVZR)&|9Ow#bb#+@A)KDTN|(E0o{s`jQ2t<>Y7t1QKg&YZ-SdsFWFF2nYx=)EN1_ z&q*o0k2t3h%s)C;WnFecA3fdtt{NBl`Ev^xUke(gS4$WfuN!O=3BLmk^77}$o1x?a zu@WIfkx@}UKHR?Rw%`8XSAYL%N%Ox~u(Vru?nFgKen)Pdumk=FWJTUy*K&!`3+ajQ5HD)YKG;R+S}TkxtbD9Q8R;!(HTI9hY`TMtPzN1%Y z!>90xcb%Q?Yk7Z9ON$^)$wGL*2X?scced~Wj5DGN-M>8_0 zA$*6$#u8y*U}PJNaX}awC@n8nxoZ9-*&asB!^4wpFgZCH{pCyB@#dH;^U&B>E-X&n z65;u^tjzwK7KOL|0+?)162EH9XBoXlj~Me5_nfZf-c*rP?FutvTU!Mt6H`<1$!eQ|OOh|Y2iBio{B_K4)VHyknMxaU#=IMn=ok`=$?wE)C;R?H zrF)E`$W@H%3`uac%Lx8lrZY+K<_i^-`|IoL%RV*y{QQMFRl%(RIQV2_x;q|9dN?jy zfp(B$}RgfWVne{IDRESMRbN3}^bSAZuz$ z56)Hk;_tQCY|98*Z(f~1Oyi6=9He6$tUqeDhi+7($v&sVq!X7NwnKL zIiY7~-!H3uDzicR%LH8JXk+9q85!Bp@v(Y$x4_Kj&$!ms))vzUZhD0zBM2dDo13ai zN-b?c_}UOLcXoEh$H(`6(WkyW-81&NzB<8N932>V!mB_@NeO92ZP|Jn5mQ*m1TkRm z@X!RjPVi!@0wQdg(f1n%hld4M@kE5nY#vTEmUfzxP5;g<>bkkO2p9<3ukT=$nr~@o zN`}5QzW$f`r-rp`0t08R{ej_<;r00g&%ayWCnpmjIOF5teTSU)v#V3KKlF5FDx8zQEC=NX3>*2M&))D78R+VtaOBtNoi>j-+jQ6 z1@;0~Y$mJMHa0k{$Jt_;v@>)JX7-Eq>Z0BZ<&-%r%S=sA zBfmG4t7yJHn9XF+@D)s!!(r*Aii*nGp9=a}p9`C8dri~ri7E&P_)sq$92~5T7Li?? z?B+Uejy4<(%7Sqd!r8#8zjD0B^h3ibj>kbzs4xVVSOf=uaoV1EZ@-8*ygZzK^QU~{ z#NjEF7p+h=YLyzHM$;>H3=BkGU7Qpogx1(hcKqXy5SWct*{j>Uwo^t^we}xBed2gK_uRne>@_APrrUaU-06G(CGx7ss<5jo7@Le| zc=97!ni6A-j58Y5txG%0&l4$Us z&K-Y$iP~B%HXkoV$q1Khd9p>0ns5D`s!QiGY}yEv$`7oGl7_R4VTcF{H7nv<-ZHs^WzHj!$_`s zQScB^U%niT^Z5`4g>)}%mawK36+PG0g($*|g~c^6G9qedh_A0Ne{@{+dt~IfrY62n zW7J9TbwNRa^x?|0waxBSQF(-KGp_d)JsHEUvGP(+;OAV27nH}OmD=3(RflsGqau<7| z+S{)|&<162=uk~I*w;wrA7R8hR7?unk!D|!PobeoU%IYs=u->|G@^h1{!PWp`+jOF zWNCR?$@Qfrw}YwXjT?PmDk|L)(gWUDTBc=Z|5_U$KRsy{G3okZXeIJfGL3QQowSJ1 zz?^*QKi`LfZVKF@-mfdGxCcf@f6V&cFzG~$IylJ>?Jve*V1-h%?J@8?uQt#!o2M8eku(*0iEp|{Reg??)ZM9AuYvgt~3 zrEgkNS$SDqTUFJsFS++@qu`g8ZcV=5nz*$!2P$eV#=USV#tqWmM6$W{^^b9JoMNB& zjE$7`-IBxF9s7%DISyp}>CG|yZ?Lk`j}|9qA!g|wt%{C1oZ8{}|=jvjT-BL~S6ZYnZva%F}SRuQFgbej# ze09wR&El*yC5EoT+=K*D2wp_Yq^(EmH-~X;hNz?!x%j{v#H9@B`S=p%=7{@JyDJHOr6mz2Dxp^;NtKe@QP++*mgKi|!YBjV66{$4cQv@Ni>Q0JJMjxMHO zk9qj9kWj$foQ0_9D?TTNPg7G~2-lj9$;o)U$9ikyWmO0x@Bd*K7JH; z+!~h%r({i0o*Ws$w6imZm6X-k73iECtrvt6mq{M$$jai|*vJcCISC323vCFx>@UgC zM>?9Ct;8mZ57Rz=9AMJPa{u8&d80Y)o!S0ONAtUI4PxG60Un;$^y_xb*e3f6sY;9? z_%l+JVas;DjwOq0i9BFgGqt`V5wkuas>%EG^ya_wWAG>_!mn*89GFg06qO^RSoDP- zF*BoKV`J;-F=;jXaKy&uIC~Lf(8buY2=*4~#%pQEFRZWktPSX||EVx3lHa??`|^e9 z9;LA2^A-|OF;*qDthV0X;DO9~b`K}so}L7CLGU;Zc+ZJ+N5z@aXUO|_AGdI8QhVc_wv`T zXpCEEow&rr5?+_&6E${ybKm>(6oMM+%cvv-3BUbR;HS ztp0bQ_AzCHcH{Y@pWS*=MyCh~jJ_St5Y8_u#vN?Wu!kSDoSv@Ne#q~T^7%6{toZG&L2-Ui7Z{1K z_p^~x5`={gMH97W+ENSZ>*)a!f|(x6a#zv8&g0)DITrauJe62d3Im051sIQtO8Mzxge*LF z!6)x1mfIOk?zN8RCC!qNpOvl!a#vSY4tqFvqvJGx7Ha#&i}-%TN=P${I!Z{3T1i@< zXU^nz=fEQ;m-jd>H*P`k{B&>oLy--cbHEdEKgv&AbKf2168~b$&{|k9KvZ7XEXf_L zE~<>p3!!PGqo$`X8D_c-`S&-Xiv1?qvpI+wNU(bzf|Q_DlYA)Bhs>R1OcBw;^MNpmv4sbgS+mc^22ut<(au0 zOvgNgy1f+?D5S!Z=pl(vQL#gi$%XGUG$v~|3xC<#LdzayJxfgF=}ndh>G)aX_l!=u z1n*aGFFiH&dk72;b1m8|hE4JzM4yg!?E-Rh@n>fGILzbncu6m4%02&zN5#hK?;s#( z*CKSv>=y~%>=cT@Gu2v+sqlMn#ll%2t-G)gEuZD~%{${mH6=w;d=HK#r8mX2_3uI^ zP}vz)#vbt8-CpRVY^97JujPVEc)}&VmUmPQ4-Mr=;aDM~H~*l&%XUJ6fE<+?#rBQg z8UE0m3J&F&GecqJw0%zHx;s+5ZwsT2mYpAQRkMi|nuu?4rZROmIQe5!N5`w3_F$KE^(^a*(Ky&co%xFqiW1DPTP zqdcUfzZ*TJcx;oXy^XB~Or-5P!^!2ovc1sX59C1LS);c(da^HKDGBxFfiK)`9 zHwINVG-#vtAF)%1FA`o`2}ElYO?=C?df~lS;=8>#doBDSHnzj$G0~HluIq4&{H(OJ zwKAKKV278AA}xMsnwxavl7)q{tqy2O|MpsOtb`sZb4y4lY2}IQ*56k0sc)vK&#m#k zaB&X!Jy)b%@u}Kox7>9%ZsVSW4O9{CXUoDUTvj;|qUp~K4axNNnJX)~)H4xZzY;{K zTR~X{F|GN^B@}u@v{WC&Lq|uks`gppLhXv2o|A5Q4+;v3D#DOF+Vu4FjeF_eJ)wyk zAs6-2^g1{`C6rSwH~Jn(Ke4mYJG8Vq3&^l}$3<%D=zj+A0Mi3-FEP%Yxw|*JYdmF%gcLt{I5Oa z!LP0^59>rSURzvzd@&iBE|YF(CHQ>*3D(usjj)KYu!KWTazjZ?P29^%@Yk&3;AEBJop#j!WmR6try-P?&#)Ha*+Ki*FQ|t0VN~jO}#!xoK&E;86!B&DVhy zhazsrBiD;9?<J_pz}!yXLFdrKKg6i?G1Jw9-B7myC00Q-Z>q`UbO`=T`pW^$XR+Qu<=iKYpC6(OtB5QIOYU(Bu`rx3{O# zEE_Rebsy-1xTIw4*`#Ld!G?vzMIE4MJUqOm)m2A8oE*O0sp554NBNBG?2-M#7g&!U zKZd3avb_-WW~;!Ga=kD9>eai1HD7Jpg;I*7eE4u<#&cKb{{8y^avxJsyYb0BL)wyuCCbG*{J{|o}RjSd3*EQFWkcP{{TCC2viJu zOJWqDqUvVWz;tQ2xnrR9dj$ngi9sVH(@7_#?-KmU0y2th5Dg6t0i!Sqc0_4~g@!_B zP0h_s2<>Dni+(U1SzTGs##0gt29f5^X=w}m{YOWY#KKel>?V37Tx;>U6oH2_|GG#eP#fjQCf^T$IYzqqv}cev6U&uv8n?^dA+7Z(>VwH#qYGPLAma(jDw zFX$?Jk_9vg#o&vuJ@owiBtSdn(*8IU0@w%)`~)G{sZ} zxv#%Npx{&^AF&dZm^E}i=4NG$P|lQuj1`uhO}pBcY%*G?4QskAL-0U%E_|`YDSW>6 z_?hzt^af18Y4LU&4i)_E+uPa%HKcfLCe(I(kYBjGx+<%xTK?{b2HM7c2bmq4^Tu%Q zztEIt>!@w*?PV4N)OWB+#r52>JpbQEZ6X%eG_LvT>Hak{Oj5)U--o94-su zg7fon@w|2dH}CKvX~HLLPegxh#;y=AZ_U&>>4OIWAhH0xTU%ShB_Rn42tWhR@+~X| zj&6v=-$}yWq)(qdU07IHo37^t2;`N0LPS}dNw~cVXu43pKKAQZVxVq(9!CuD1P!q9 zipOVP@*=a$jf`5-UihH^iQsc_ahYmxR~;F)c>P+!)RgA2RJbVwP7nm%E_V?sB=LbA zwV&ug+#+E!LLnj|LIM2tJ5wrxF~-i)QU;C$b?tZhO^_ry`}!1)5n1lv%E$9JfYu%D z&ZdI3pcok&e+OWUT3TJrazc#iaz_YWn zgN{ZHzA^xhveFZeLQG0}0En{Oeo+!IR@ZbfLYnolSdH|USlW*#{xZe?4h}FuuZaEp z`H+|dcvuL=vu8vEgik2RDk?Y#y?2qUc~sNf+#Fm+4D>IEj*x&Hu6_RaN}-~nf^~tC z@*Gqm6a@tZ&=c6a&yO${J!``?DpNPdN;rY&tFs_w3HW&AoQYB8v2_3Vsc*E9nW-uA zG@34U1V%g)5)z=?gye;-QKZwp+#Od|S*b?L$j}rw0(FAQh4+!Odu3%MqnCcnc>ZHf z&Wd4nk-`ju*0so3*x_ig#@N;QbtQpwm)Gtt7(;(lTU*Ra>e)FM3PDi_7Bh- zLt*!Hng@b5a88Z-9;xR34WH&^cfQ!rP^<)AR-s0<5F%!^ll-u-uz}&r*}{i8IXPK5 zIT{FkXBxT$t}_p<5wq^73tesPx`!euvLQsRe`@y`IL)vMH5LliE@TxIS!@22&om9a zWAgGC9+H#0gDBI@ya>Fqt*x!pZU5DXC*aDp4Go_{oH)Y)9|#I;>`#Qc+cGY18)h)fa8x;Y-KJUm3euzgPF(Lk#lud;f8)J|z=N=-WNrJV+E&2uhCp_#~(d)sts zkb@QH7j)iNR#t|tq}04W#UTPuXZu z$#)WhTq(??xtE*S09vwNk?9LQrbeND}dF(zz&k8Rn|JcW|(9d3I<$ zUiuz1Q6Af=pO7;dn3&q8rjoL{e-NDkbpTh3%SI;PCGNTSrDmw}M!SLcm*gaeiKI-cNya z6WB1f)nr%3X@y}dd3mHHJ263u^>D2vft%I-@0QAFktd1yDv{v2(KMmAFX4zL7#2j< z@p@NQs60(OLP-b+3GwdVzwxEm3LYzo&mJUAqEg>$A0igLz?vG~+qXwNIS?6Faw&rG zP-pJJU_`0itS|_4@Su`m^76;S(*3`Gm#TRdl$EiAx6?zqPxUzu+S;;iI$gLcCod1x z2^NUzw{G9IKRb9We7Pq^r;zj$bUQXSwz-0mCQ(`0kW}A)B(k!yX1xjO>oE%2%L31y zLt+c)ibc2RrP zLAYSoK&DhsNXR0H7#;2H*@NS4(F4OwDgAO%Qqjh(h`p(a{l##aJT1tw-+IoyHp@zyX<(Z>W2y_A&85v#rwvco?!$*7< z2!f^dU?Qc+A+?2Gd9XL<$(R@eD2?`yZ~EVunqq>Q20-<+#h>y^_k#^pp~CQl!ixXa z-)j+w8=q5CBjV#pq{1H}<#qM&Zw($=izi2x6G#nLXlkFq&Tf}f(W6RzB~vpyV+B-0 zVzw60U8ay#v{^6djCvQ8CozF)whN*WHj@V74pIBk_Z5zZB+6I@R_!kycv8vGHh z-_*Ia%{e(Zh`B6qyJMMK0d2#I2VtJUlC~ju_#$g{ZSALds`n^ES7mwmtAUIz%5q%A zzTx3On@Prjgf*;x?3&|4*6BFca$e`s!l;?V$~|L+&&9X}>QAs@yK4dZkoe*RuIwx7>c zD=zVLV7v$Nsu8*5=;=>21w~dtK|O?oAnmsR#gYb(Q?0>GC}Cip!}5$CN&j$jx2Lek>#@i4+E{d)kN3+hY^k0-1pMXH#)RdZ( z6jM*XXz#B}2Ou<0&v-WtbSes306s6}do}cL-?=Rj9q&&0^r`C9^!EONgW243G$$w1 zhc~D`e$E>ENkBw|NA8^rY5Rkp37;nqhLDiW`AJP{cQ??qlyv?2gv8Iv=v1Wlr9Hx? zs;s^}6e5)cs)*#dE`M)sZBH%$-Fk=m_h{QHBsTU)4^NZ}8!*~uAmh~3_t7zfSLVJ~ z(9mWN0NVkjU>=l+ni@_zx;q>9RMDv{!vL6Vb;W$S=JAt6PBB1%+t;@OlyiQ0SuT!+ zh?_^Z3?|LcqK_LNS?~H zMGf#BsZfN6(=~ehVKaIs)cVOeT{V~IKR3>o2d=6nBSRE`lS)rR^C?q`6$+b>n3yLi zDSd990-##b19SP$h1CE<=EZ*aK&_B0L-T*2$l!W$cvxdIvy2@!f7}eYsG~Mj5Iq4~ zhrmfX9$7HmzU}X{W4%8czOMjUIvzH*JFz6XvIvZ*aj*Ql5=1t33=9b^Eey6(FQLm1 zG*7K+9~ufu7ZVsNjBf%)E6QaIVnxvt63V0TvXFchJX_oLMLz^+6$^terl~Ng5{QA@ zD`aKAKAg0(zxJj+dI;X#Iym?R_2$;Kz_ZYs2n2_49&UyU3@11j7w*4scCG>e_OXFM z9~R}zZO20*#k$1N>;P7A#$<^*2emg#8wlD)-@bisaBqc1 zm@OfJqqG`VJ{frdp($EwuA>{E0m1etub-wF`g(t%mGwz4Ek(!1zCB&9dpM#Q{btr6 zNBw@r6QJs(p#hy}*cd@n{QQ0zMWGP*+rZ$#4no6@QTF!Fq82+@RaF|RDv=taX?rk6 zDA{UGUn{O?9z5{CqbD&k85vRN7(w%U^Td5gbH0c(2&bQea#Gy$N<+Q5vS665^Y z>h$T+&^|F~7s`Yv7dLEvCMZQk2u#7Za}WRgsr#Z?QB}naQwAiPV~RjB-G531=7__% zgA*un9mV?ezxr93T**PT1sYXh?#by{T_dAy%=S(?>~r>$jUNRf8!176!O$L z?DzGsUmyIV6JETI?1!L(RCgs76_kWas`Vw;hu56sTiRxWQtG#~l=`c;QSGTcH#dZw zt*JWIX=C(#;x|KhVO{BB?9cay5$Xp=G==rd zaYgPPh2YOx`$d?`SR5}i$=^oKOhBhd!fi=#eLmLgwm0|QQrps!@h%aQ5jYxfl{f*{ z9W~O<*5$B={85k-983~n+6t(F$wcLwhkS46g1QMZs9;v2O%>s=j0t^d4)A6`8E7DR z!ad$EnEi(2yx;Hp4_`z?L{CqT7&^Gl2ugZJ#$fx!4p_-|=qCGMW3-#R_)&oH9qmjf zCM7*I@Z9F+;N)DNZ5HwOUyh*HQJF!02?h*cDgpRV-PAapVu~C*O1z*u2QUxM1rC3U zmszPPxQf4E><}7hXp?bJV1DDQ`T9a+k)QgqchjkLwOA zf^-jp%5j!uKCL+JJXq^rMU9)@@c0s{o~`rFt&(f35LE` z5^vwK0Tx?;9XN_?%$)!zt0M>qvR zsd@-_lHK$tF0?b)&y|(&l)QXxTR$zZ3pqMCoI*RXcXVV5B}oI!M3I4;{hUL0T@6H zPGsv(6^V$6Av7~HgDx)sibf#cP$kj=oCQt}O-yxlHE8lE5cuG9saRQYfPaRDg~`S^ zp6uu^EH17i(ac0ufr}nt`^wzha}5n5cqCX{BoVWYpmKZ!DNNJ6>&d0xpoQa9y2{d2 zhaG}Z;Ha-(wH{ww0OA5&&8M#W>hjWUIY!emtB{@+G;Z^QM>i58@rDH0 zZ`ihCV2y%>p&(u?YV_fM E0r$yPR{#J2 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map b/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map new file mode 100644 index 0000000000..dad6d54a57 --- /dev/null +++ b/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 b/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 new file mode 100644 index 0000000000..f7363db1b4 --- /dev/null +++ b/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.md5 @@ -0,0 +1 @@ +f5a6621b8626ec6e507a9c77c62a9192 \ No newline at end of file diff --git a/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.png b/doxygen/libtrac_8h_ae9583382a3025752eaaf56a1fcc3380f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4648a288f58a3de8fa6829f04f2196cee6ad4528 GIT binary patch literal 6255 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 + + + diff --git a/doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 b/doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 new file mode 100644 index 0000000000..f67fff7e9e --- /dev/null +++ b/doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.md5 @@ -0,0 +1 @@ +6e79a3f13f15e9bbbfd7bb0ccb1a49da \ No newline at end of file diff --git a/doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.png b/doxygen/libtrac_8h_aeaaa3090b6f7f9f471fbd24392304341_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..34d59f7243116059cd9b5d9b89da2caec89f9423 GIT binary patch literal 2727 zcmY*bc{r47AAZMZ&ZJTyM-o{ZV+qruhNu{fF`PNJht*|+RWe6R11@4CL{eXsX=pX+*_-}C&I`@VnCW_W``0^$My030$h)FS`@ z1pEc$;e6m%29~imf!#JX&;xe&o{ZZ3BmfYwHPX9c9`I@|%?&5~O|->7>=|38_i?TW z@<%`h-#S6hwIQY_O29B!+8j9^DwOc_T2yG1%vE{pQS6g|A0z{FyDa@Dw|_tr-&jjI zAH)iC1>oHT?7s1sQ{?Z5eb`pkM?$`42i5@`B$jAtl zZ}@%_;#pNxG&9~tNwi$5ZMdb@jOjcF#NbKdfPVg!L!nvh|6b;)x-JHTv9ptuDgLYO zXqfI135h4>>$9`&Qc~$I%26Fa{pGm0n2e0KN>;B!b~ur=6i@lHXK8QWx{Dv!xdekB zIuyLayV!*UHWHsVyfG(@k3Xy5L3(*IUs_b;HoJBG`t_N<(g`oko}Qkmsi_m^-AC@zUv9}#F$MB(h?UJ2LNqtZ7s>K-Q6MyEvQu7#_BMK?gIg=mERQ<><6BvrI}>2elk-> z=jMh62QS&MeI_~@Z-(*nU2$+2`xJNL_`y$|0Tov2$;U@PZ-<74^!4?FgM+=jy&({Y zyuAF*&d$=(5_rby>MDc5C@3hnaE}8zzxZ9C!2IR&=d|GMwXQCLzrTN+5{+PGb%D6% zo@n^dLF3MyJ09-tF|n~}uU-iVfY6b;{7`Jb93i4=`>&d|_7I!>w_E$#+Sbrlh2#P$+Kg z5?1>wR@M){>6w20y0ovPmN%LpaYIIf0Rs6EY$aYiet?d0VB~*-)T!c-Yg!Bl!2$>e$#= zR#uk(!uNsxetsAXuczzh_pY?mQ(vD^7C^u;01}DB<#P38%0GPIFc^0kF~>9|I+~lC zJ38>nqTl-aZEO5I8XxboR_^6+cj*T~h-AY^d=?^sKBV(E8@D@c^yMr%r|H$;4Ssf3GDTgpnAx zxl0>h!Lpobk%y)DfNs|Z4h}ix6wk`BPYUbaoaeCj?g9&H6|GSXoi1)DtI9n&h+N;^I&!lqct32+&{Y zWNKk?EERWNL!+XsY-5qzTt;yE`Z_K)*2m9J;RyU{W?6N$4Kg`isiCLm90KvVzdyiQ zOOfVI76VTZ25SolwN)*ByEnQY>gBVyx3<74x%nZ0)zx*|-X4;ml#E3t7aE-qPvDPi zZiK){jiXC1#RO^RPg?m9iD>dw)^nMpFWJciWU}}G$g|`uGsG#l%n`V_x;fG!)6Cb` z_X$(N>Wi9Ptwv>8KWd;d?`X0s0Ce`QO)b=-dIq;{dM9M&Sx15Lob(+suc+WjKFRSvXh#; z##k?6AZNeIBpR;#`V|uwcXG=GkMBr2Z7L%x>*3*nMx&v8piamM6})?AnY6s~ds|Vd zchJ`sXJRrlGsCqmwrm^!#ljvF6|DrdOV!Fx^ zFQ8Opdh{qON!yL^*+DAlSxJ0iC}Vnk{V+4#^O9!&EyuOHGNw8}LswTtdHK5s#%hjV)ga;2T}QeN#CtRSpyghW?5>d{Y%-{ zxD8zUcRv1suW#9a`(F7#Ni6KrCJ*J*A)y`A-P($jmuGzZm{VNb&SWw<94$FHexSjz z63mXe81pmJJNZ<6SXdqQoU?<&C*}ds@E$%4h~kA zl&ETITB}mFH#QI=0!~g76%`e!fm;yZMP}QsF-6r|^A&M@z8&Yu&-Ky-a+dH`S6+@`Ol%AOxMxl(RsB|bmqUI&m{isooQY~lkn+)#$gyBbh^_2`y_?45|F=;8?dNu(2P`t}aEBB0T;GExBvhE literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map b/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map new file mode 100644 index 0000000000..3f232cb9ad --- /dev/null +++ b/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 b/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 new file mode 100644 index 0000000000..fb9430f4cd --- /dev/null +++ b/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.md5 @@ -0,0 +1 @@ +700719c7b63053311c06c56d0ac47966 \ No newline at end of file diff --git a/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.png b/doxygen/libtrac_8h_af2d95b1eb426ead1c25fe5f198f476c9_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..13e47d1050f6a3009506caff02e38125e8d9b4ac GIT binary patch literal 10452 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 WF|XH-lQ)4DA|ym)go{wR@BRmlE`+}T literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map b/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map new file mode 100644 index 0000000000..ca1dbe6bf3 --- /dev/null +++ b/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 b/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 new file mode 100644 index 0000000000..142a41be0c --- /dev/null +++ b/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.md5 @@ -0,0 +1 @@ +238d4b3b9deba88a0de89601247ea186 \ No newline at end of file diff --git a/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png b/doxygen/libtrac_8h_af5d8dfa5fe43fa2bf192ee4a7b821b1f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8e95359baa2d1b69353a2300b16ad907bd13b518 GIT binary patch literal 4724 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 literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.map b/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.map new file mode 100644 index 0000000000..337d64ff99 --- /dev/null +++ b/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.md5 b/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.md5 new file mode 100644 index 0000000000..717405e5f5 --- /dev/null +++ b/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.md5 @@ -0,0 +1 @@ +d38aa7c0628739d611326aae11b4be1f \ No newline at end of file diff --git a/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.png b/doxygen/libtrac_8h_af7c3d417479747cdf69cce6cae3599e5_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4af15da98c6d36d0350362cf192231e15b89af57 GIT binary patch literal 2628 zcmZuzc|26>|3B7bn=BW}PKe3Q*lx&J$~KlO#I-LOl0k!v5VB8njmS30z9fw7vMU;6 zjQLs1mMkgDMI;J2J7{z!@?c*eB4KdFNv;Ag!fo zZyON%H}w&mf6(urzqroIgGkf&Sd2Q~JbLx`>?Di``}0q7y5S{8H@C`5{wbCKgJ;S+ zwRF6{Tiy^tUCF|;Qc%!SFtCRjP`)W>fhEYV|!ZA1BPr%#<7 z-y{bH21Z0gWMpKh7G`scUt-}c=;Qwp-kFlZ`smRkBbkyiJ3Bj5M>Q|`V9os85hF+I zzMZ+bxlf%Dwj@W{YmW|hvfsFE-DCfYfvlET9eYpEkkb1bNK|V%6Mbw>4mGqaP8`A-ayQ=XU`H76DKAnP7c2_ z0RKjv;|-rWySP9^bTw!HfpT$iRaI5_wN+FM&&*s-Tnb)bqNht8ylrL{5*&Pyon7dP zS+4%^iQf8`?lMxngHxe)SoP<@)FDx=vs5wDs3_fB^Jy|UBqRihL>hj}QFN7lKB}#) z{qf_+^z?KfCN`Fi`HAx5^QgeUZ(&>0c(PQiJ^=Xn`)j~p41kS|4HODJI5+_DB-~tr z8;~a_Ct6Gb0s;_-iF%ig?d|O$+%PRABO`imH90o+UA|U`1Jph&jQ07nSezJ%L`vnm zK1reciCP^Q8A%d)BGyyxE^q^LtoG#H$cGOhXtZARX}Fb@m9MYN%kiHyS{LSo(Ao-n z+Mj7E6&4nzrKPq0u|Qr#)8gafJ3Bke%cVU%Jq6R5fe|8c9o5Ff#H7Toc$cvKW2qmADJv@* z8Z!P*K8;aFsL+b4rY0UhNlnem!vl4=vrt)C2`-1j@u{k+ii#GEN<9Ph=}RnJUiPTk zgNw0Dl1Q029KoL=rz=uaSQx$bKKmss2;A|*!$T^CGOEn7vMp(um6gSNIF9z{vq*)Ux!GC&fB04-~GmysS%ApD$dL5hou+uPd%G4b(?%{~u) zml6ONT;fiinwpZL*r8A;IGk~oH|GO|OhyI;xq>D^<$2xOdPt*XU$=rsMz;6#=!swz zWn}@t%iB94Apw7ZPQj)9pX_Y)(G09nv<3R%!z|M>k{L_ffJd;a>n8`v_v^%>5EQDq zx_WkY*6T47kOVK8{I9IpA{o3$)6;)9`B*qQ=BB2aVK8Sy=~rY>PsL1KU0rV&^hA1_ zN-%v`()^1Z0$~91@&=rD7=$<{DQC{M`>t$k{XyEG{GN|`HP^m+#boddAsc{1s;aAJ zSI^APkFB91bPEx(@FJScA5KnA4p6?-LBW=00wLO#>?t4BqyqF3iCD{uPaSBiap~?+ zltAM6*w{o-XlN)qN6&({<0@4xR=={U>T*}S`~UUzfqqG)Qq3r1V`H_owd|~{Dlpjh zogEzJ$_rS~A|Y@tLs&;6_pPO+CG7tE#N?z?PjnX!Hx1vRj|HCgkCK&vk=4Ra(QKJS zbk^w^+RVda%seDyAB1pl5L(5`%*^cW?#|Ba`NjndrQ-5(jr&LPpd0MWx7oV7_7Diu zBO`uxdS_>65}98+N=io>?#akhq@|_3d7}cV4%9ehYARnhVsB*_3mToS2ytkryt+E2 ze`&rw%*?_faIrJu5@RyFq~=b81k2>yoDO=&S%{N5HgnFmz$fLrMNF@Yr43&u<=2Q$s5Yb$~E?NDk>_sEiBeh zZR6wP;kwb)#xcgF8=IRY_@<_&ljCDqUe+h?SlHM?z_XyL$_9aekg`g>kJLE~5MEwh zHa3$pO}?P@dU|*q&}ei(g;fzq@RtXgQrsJ3xvHS1MMOlbt*t|~h2x5Qdwc8a>uoD6 zT{^=_@88R5Ye$BMhwpzG575xj(rWAKTIlT+lalh107>>4&ue-3&FMx_P~aJMoA0`l z)RqFRD3X^R#iu2b7QgUI8(bsN9Rk7b?A({j&MPXy_AfYd7E{8Q9bPgXX>E!PFl=9yoSju~z!}y<_XD!hXmV7nkb`3xSn(Asp#N zZiX-kiRJmWkT*X~up)TTx8)OCCI}k~FqNHJMEN;6%@(`QsM|AnDVD1`Ngze(=>?Y? zL=A4K*X@1XxF@g8l)WYszUuB4#s8vQ*^a}UEKto{4z?(s`RIYh3o_>ruGB%egf+=A zDi$F-Ha`9r*bJp0WYttuj{D-%#ARem43e+$s|j*g3r_5p2)G(-Mq?VWNwIkP|F6?I Zh0O7dve}r<@_=n2aLdRNUVqaq?tkx!{AK_E literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map b/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map new file mode 100644 index 0000000000..2c70a17fb3 --- /dev/null +++ b/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 b/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 new file mode 100644 index 0000000000..26432847ae --- /dev/null +++ b/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.md5 @@ -0,0 +1 @@ +543ac5c4ae1f4e89b4c5687d93f7842b \ No newline at end of file diff --git a/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.png b/doxygen/libtrac_8h_afb5aaa2ee2de7b0625084e6a18503996_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..1cec145baa5983807beb87bb48c5637714221dd0 GIT binary patch literal 5022 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 M=_#UI!8GW900^py^#A|> literal 0 HcmV?d00001 diff --git a/doxygen/libtrac_8h_source.html b/doxygen/libtrac_8h_source.html new file mode 100644 index 0000000000..baa8c8af93 --- /dev/null +++ b/doxygen/libtrac_8h_source.html @@ -0,0 +1,2688 @@ + + + + + + + +MPTRAC: libtrac.h Source File + + + + + + + + + + + + + + +

+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
libtrac.h
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
37#ifndef LIBTRAC_H
+
38#define LIBTRAC_H
+
39
+
40/* ------------------------------------------------------------
+
41 Includes...
+
42 ------------------------------------------------------------ */
+
43
+
44#include <ctype.h>
+
45#include <gsl/gsl_fft_complex.h>
+
46#include <gsl/gsl_math.h>
+
47#include <gsl/gsl_randist.h>
+
48#include <gsl/gsl_rng.h>
+
49#include <gsl/gsl_spline.h>
+
50#include <gsl/gsl_statistics.h>
+
51#include <math.h>
+
52#include <netcdf.h>
+
53#include <omp.h>
+
54#include <stdio.h>
+
55#include <stdlib.h>
+
56#include <string.h>
+
57#include <time.h>
+
58#include <sys/time.h>
+
59
+
60#ifdef MPI
+
61#include "mpi.h"
+
62#endif
+
63
+
64#ifdef _OPENACC
+
65#include "openacc.h"
+
66#include "curand.h"
+
67#endif
+
68
+
69#ifdef ZFP
+
70#include "zfp.h"
+
71#endif
+
72
+
73#ifdef ZSTD
+
74#include "zstd.h"
+
75#endif
+
76
+
77/* ------------------------------------------------------------
+
78 Constants...
+
79 ------------------------------------------------------------ */
+
80
+
82#ifndef AVO
+
83#define AVO 6.02214076e23
+
84#endif
+
85
+
87#ifndef CPD
+
88#define CPD 1003.5
+
89#endif
+
90
+
92#ifndef EPS
+
93#define EPS (MH2O / MA)
+
94#endif
+
95
+
97#ifndef G0
+
98#define G0 9.80665
+
99#endif
+
100
+
102#ifndef H0
+
103#define H0 7.0
+
104#endif
+
105
+
107#ifndef LV
+
108#define LV 2501000.
+
109#endif
+
110
+
112#ifndef KB
+
113#define KB 1.3806504e-23
+
114#endif
+
115
+
117#ifndef MA
+
118#define MA 28.9644
+
119#endif
+
120
+
122#ifndef MH2O
+
123#define MH2O 18.01528
+
124#endif
+
125
+
127#ifndef MO3
+
128#define MO3 48.00
+
129#endif
+
130
+
132#ifndef P0
+
133#define P0 1013.25
+
134#endif
+
135
+
137#ifndef RA
+
138#define RA (1e3 * RI / MA)
+
139#endif
+
140
+
142#ifndef RE
+
143#define RE 6367.421
+
144#endif
+
145
+
147#ifndef RI
+
148#define RI 8.3144598
+
149#endif
+
150
+
152#ifndef T0
+
153#define T0 273.15
+
154#endif
+
155
+
156/* ------------------------------------------------------------
+
157 Dimensions...
+
158 ------------------------------------------------------------ */
+
159
+
161#ifndef LEN
+
162#define LEN 5000
+
163#endif
+
164
+
166#ifndef NP
+
167#define NP 10000000
+
168#endif
+
169
+
171#ifndef NQ
+
172#define NQ 15
+
173#endif
+
174
+
176#ifndef NCSI
+
177#define NCSI 1000000
+
178#endif
+
179
+
181#ifndef EP
+
182#define EP 140
+
183#endif
+
184
+
186#ifndef EX
+
187#define EX 1201
+
188#endif
+
189
+
191#ifndef EY
+
192#define EY 601
+
193#endif
+
194
+
196#ifndef NENS
+
197#define NENS 2000
+
198#endif
+
199
+
201#ifndef NOBS
+
202#define NOBS 10000000
+
203#endif
+
204
+
206#ifndef NTHREADS
+
207#define NTHREADS 512
+
208#endif
+
209
+
211#ifndef CY
+
212#define CY 250
+
213#endif
+
214
+
216#ifndef CO3
+
217#define CO3 30
+
218#endif
+
219
+
221#ifndef CP
+
222#define CP 60
+
223#endif
+
224
+
226#ifndef CSZA
+
227#define CSZA 50
+
228#endif
+
229
+
231#ifndef CT
+
232#define CT 12
+
233#endif
+
234
+
236#ifndef CTS
+
237#define CTS 1000
+
238#endif
+
239
+
240/* ------------------------------------------------------------
+
241 Macros...
+
242 ------------------------------------------------------------ */
+
243
+
245#ifdef _OPENACC
+
246#define ALLOC(ptr, type, n) \
+
247 if(acc_get_num_devices(acc_device_nvidia) <= 0) \
+
248 ERRMSG("Not running on a GPU device!"); \
+
249 if((ptr=calloc((size_t)(n), sizeof(type)))==NULL) \
+
250 ERRMSG("Out of memory!");
+
251#else
+
252#define ALLOC(ptr, type, n) \
+
253 if((ptr=calloc((size_t)(n), sizeof(type)))==NULL) \
+
254 ERRMSG("Out of memory!");
+
255#endif
+
256
+
258#define ARRAY_2D(ix, iy, ny) \
+
259 ((ix) * (ny) + (iy))
+
260
+
262#define ARRAY_3D(ix, iy, ny, iz, nz) \
+
263 (((ix)*(ny) + (iy)) * (nz) + (iz))
+
264
+
266#define ARRHENIUS(a, b, t) \
+
267 ((a) * exp( -(b) / (t)))
+
268
+
270#define DEG2DX(dlon, lat) \
+
271 ((dlon) * M_PI * RE / 180. * cos((lat) / 180. * M_PI))
+
272
+
274#define DEG2DY(dlat) \
+
275 ((dlat) * M_PI * RE / 180.)
+
276
+
278#define DP2DZ(dp, p) \
+
279 (- (dp) * H0 / (p))
+
280
+
282#define DX2DEG(dx, lat) \
+
283 (((lat) < -89.999 || (lat) > 89.999) ? 0 \
+
284 : (dx) * 180. / (M_PI * RE * cos((lat) / 180. * M_PI)))
+
285
+
287#define DY2DEG(dy) \
+
288 ((dy) * 180. / (M_PI * RE))
+
289
+
291#define DZ2DP(dz, p) \
+
292 (-(dz) * (p) / H0)
+
293
+
295#define DIST(a, b) \
+
296 sqrt(DIST2(a, b))
+
297
+
299#define DIST2(a, b) \
+
300 ((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])+(a[2]-b[2])*(a[2]-b[2]))
+
301
+
303#define DOTP(a, b) \
+
304 (a[0]*b[0]+a[1]*b[1]+a[2]*b[2])
+
305
+
307#define FMOD(x, y) \
+
308 ((x) - (int) ((x) / (y)) * (y))
+
309
+
311#define FREAD(ptr, type, size, in) { \
+
312 if(fread(ptr, sizeof(type), size, in)!=size) \
+
313 ERRMSG("Error while reading!"); \
+
314 }
+
315
+
317#define FWRITE(ptr, type, size, out) { \
+
318 if(fwrite(ptr, sizeof(type), size, out)!=size) \
+
319 ERRMSG("Error while writing!"); \
+
320 }
+
321
+
323#define INTPOL_INIT \
+
324 double cw[3] = {0.0, 0.0, 0.0}; int ci[3] = {0, 0, 0};
+
325
+
327#define INTPOL_INIT_DIA \
+
328 int ci[3] = {0, 0, 0}; double cw[4] = {0.0, 0.0, 0.0, 0.0};
+
329
+
331#define INTPOL_2D(var, init) \
+
332 intpol_met_time_2d(met0, met0->var, met1, met1->var, \
+
333 atm->time[ip], atm->lon[ip], atm->lat[ip], \
+
334 &var, ci, cw, init);
+
335
+
337#define INTPOL_3D(var, init) \
+
338 intpol_met_time_3d(met0, met0->var, met1, met1->var, \
+
339 atm->time[ip], atm->p[ip], \
+
340 atm->lon[ip], atm->lat[ip], \
+
341 &var, ci, cw, init);
+
342
+
344#define INTPOL_SPACE_ALL(p, lon, lat) { \
+
345 intpol_met_space_3d(met, met->z, p, lon, lat, &z, ci, cw, 1); \
+
346 intpol_met_space_3d(met, met->t, p, lon, lat, &t, ci, cw, 0); \
+
347 intpol_met_space_3d(met, met->u, p, lon, lat, &u, ci, cw, 0); \
+
348 intpol_met_space_3d(met, met->v, p, lon, lat, &v, ci, cw, 0); \
+
349 intpol_met_space_3d(met, met->w, p, lon, lat, &w, ci, cw, 0); \
+
350 intpol_met_space_3d(met, met->pv, p, lon, lat, &pv, ci, cw, 0); \
+
351 intpol_met_space_3d(met, met->h2o, p, lon, lat, &h2o, ci, cw, 0); \
+
352 intpol_met_space_3d(met, met->o3, p, lon, lat, &o3, ci, cw, 0); \
+
353 intpol_met_space_3d(met, met->lwc, p, lon, lat, &lwc, ci, cw, 0); \
+
354 intpol_met_space_3d(met, met->iwc, p, lon, lat, &iwc, ci, cw, 0); \
+
355 intpol_met_space_3d(met, met->cc, p, lon, lat, &cc, ci, cw, 0); \
+
356 intpol_met_space_2d(met, met->ps, lon, lat, &ps, ci, cw, 0); \
+
357 intpol_met_space_2d(met, met->ts, lon, lat, &ts, ci, cw, 0); \
+
358 intpol_met_space_2d(met, met->zs, lon, lat, &zs, ci, cw, 0); \
+
359 intpol_met_space_2d(met, met->us, lon, lat, &us, ci, cw, 0); \
+
360 intpol_met_space_2d(met, met->vs, lon, lat, &vs, ci, cw, 0); \
+
361 intpol_met_space_2d(met, met->lsm, lon, lat, &lsm, ci, cw, 0); \
+
362 intpol_met_space_2d(met, met->sst, lon, lat, &sst, ci, cw, 0); \
+
363 intpol_met_space_2d(met, met->pbl, lon, lat, &pbl, ci, cw, 0); \
+
364 intpol_met_space_2d(met, met->pt, lon, lat, &pt, ci, cw, 0); \
+
365 intpol_met_space_2d(met, met->tt, lon, lat, &tt, ci, cw, 0); \
+
366 intpol_met_space_2d(met, met->zt, lon, lat, &zt, ci, cw, 0); \
+
367 intpol_met_space_2d(met, met->h2ot, lon, lat, &h2ot, ci, cw, 0); \
+
368 intpol_met_space_2d(met, met->pct, lon, lat, &pct, ci, cw, 0); \
+
369 intpol_met_space_2d(met, met->pcb, lon, lat, &pcb, ci, cw, 0); \
+
370 intpol_met_space_2d(met, met->cl, lon, lat, &cl, ci, cw, 0); \
+
371 intpol_met_space_2d(met, met->plcl, lon, lat, &plcl, ci, cw, 0); \
+
372 intpol_met_space_2d(met, met->plfc, lon, lat, &plfc, ci, cw, 0); \
+
373 intpol_met_space_2d(met, met->pel, lon, lat, &pel, ci, cw, 0); \
+
374 intpol_met_space_2d(met, met->cape, lon, lat, &cape, ci, cw, 0); \
+
375 intpol_met_space_2d(met, met->cin, lon, lat, &cin, ci, cw, 0); \
+
376 intpol_met_space_2d(met, met->o3c, lon, lat, &o3c, ci, cw, 0); \
+
377 }
+
378
+
380#define INTPOL_TIME_ALL(time, p, lon, lat) { \
+
381 intpol_met_time_3d(met0, met0->z, met1, met1->z, time, p, lon, lat, &z, ci, cw, 1); \
+
382 intpol_met_time_3d(met0, met0->t, met1, met1->t, time, p, lon, lat, &t, ci, cw, 0); \
+
383 intpol_met_time_3d(met0, met0->u, met1, met1->u, time, p, lon, lat, &u, ci, cw, 0); \
+
384 intpol_met_time_3d(met0, met0->v, met1, met1->v, time, p, lon, lat, &v, ci, cw, 0); \
+
385 intpol_met_time_3d(met0, met0->w, met1, met1->w, time, p, lon, lat, &w, ci, cw, 0); \
+
386 intpol_met_time_3d(met0, met0->pv, met1, met1->pv, time, p, lon, lat, &pv, ci, cw, 0); \
+
387 intpol_met_time_3d(met0, met0->h2o, met1, met1->h2o, time, p, lon, lat, &h2o, ci, cw, 0); \
+
388 intpol_met_time_3d(met0, met0->o3, met1, met1->o3, time, p, lon, lat, &o3, ci, cw, 0); \
+
389 intpol_met_time_3d(met0, met0->lwc, met1, met1->lwc, time, p, lon, lat, &lwc, ci, cw, 0); \
+
390 intpol_met_time_3d(met0, met0->iwc, met1, met1->iwc, time, p, lon, lat, &iwc, ci, cw, 0); \
+
391 intpol_met_time_3d(met0, met0->cc, met1, met1->cc, time, p, lon, lat, &cc, ci, cw, 0); \
+
392 intpol_met_time_2d(met0, met0->ps, met1, met1->ps, time, lon, lat, &ps, ci, cw, 0); \
+
393 intpol_met_time_2d(met0, met0->ts, met1, met1->ts, time, lon, lat, &ts, ci, cw, 0); \
+
394 intpol_met_time_2d(met0, met0->zs, met1, met1->zs, time, lon, lat, &zs, ci, cw, 0); \
+
395 intpol_met_time_2d(met0, met0->us, met1, met1->us, time, lon, lat, &us, ci, cw, 0); \
+
396 intpol_met_time_2d(met0, met0->vs, met1, met1->vs, time, lon, lat, &vs, ci, cw, 0); \
+
397 intpol_met_time_2d(met0, met0->lsm, met1, met1->lsm, time, lon, lat, &lsm, ci, cw, 0); \
+
398 intpol_met_time_2d(met0, met0->sst, met1, met1->sst, time, lon, lat, &sst, ci, cw, 0); \
+
399 intpol_met_time_2d(met0, met0->pbl, met1, met1->pbl, time, lon, lat, &pbl, ci, cw, 0); \
+
400 intpol_met_time_2d(met0, met0->pt, met1, met1->pt, time, lon, lat, &pt, ci, cw, 0); \
+
401 intpol_met_time_2d(met0, met0->tt, met1, met1->tt, time, lon, lat, &tt, ci, cw, 0); \
+
402 intpol_met_time_2d(met0, met0->zt, met1, met1->zt, time, lon, lat, &zt, ci, cw, 0); \
+
403 intpol_met_time_2d(met0, met0->h2ot, met1, met1->h2ot, time, lon, lat, &h2ot, ci, cw, 0); \
+
404 intpol_met_time_2d(met0, met0->pct, met1, met1->pct, time, lon, lat, &pct, ci, cw, 0); \
+
405 intpol_met_time_2d(met0, met0->pcb, met1, met1->pcb, time, lon, lat, &pcb, ci, cw, 0); \
+
406 intpol_met_time_2d(met0, met0->cl, met1, met1->cl, time, lon, lat, &cl, ci, cw, 0); \
+
407 intpol_met_time_2d(met0, met0->plcl, met1, met1->plcl, time, lon, lat, &plcl, ci, cw, 0); \
+
408 intpol_met_time_2d(met0, met0->plfc, met1, met1->plfc, time, lon, lat, &plfc, ci, cw, 0); \
+
409 intpol_met_time_2d(met0, met0->pel, met1, met1->pel, time, lon, lat, &pel, ci, cw, 0); \
+
410 intpol_met_time_2d(met0, met0->cape, met1, met1->cape, time, lon, lat, &cape, ci, cw, 0); \
+
411 intpol_met_time_2d(met0, met0->cin, met1, met1->cin, time, lon, lat, &cin, ci, cw, 0); \
+
412 intpol_met_time_2d(met0, met0->o3c, met1, met1->o3c, time, lon, lat, &o3c, ci, cw, 0); \
+
413 }
+
414
+
416#define LAPSE(p1, t1, p2, t2) \
+
417 (1e3 * G0 / RA * ((t2) - (t1)) / ((t2) + (t1)) \
+
418 * ((p2) + (p1)) / ((p2) - (p1)))
+
419
+
421#define LIN(x0, y0, x1, y1, x) \
+
422 ((y0)+((y1)-(y0))/((x1)-(x0))*((x)-(x0)))
+
423
+
425#define MET_HEADER \
+
426 fprintf(out, \
+
427 "# $1 = time [s]\n" \
+
428 "# $2 = altitude [km]\n" \
+
429 "# $3 = longitude [deg]\n" \
+
430 "# $4 = latitude [deg]\n" \
+
431 "# $5 = pressure [hPa]\n" \
+
432 "# $6 = temperature [K]\n" \
+
433 "# $7 = zonal wind [m/s]\n" \
+
434 "# $8 = meridional wind [m/s]\n" \
+
435 "# $9 = vertical velocity [hPa/s]\n" \
+
436 "# $10 = H2O volume mixing ratio [ppv]\n"); \
+
437 fprintf(out, \
+
438 "# $11 = O3 volume mixing ratio [ppv]\n" \
+
439 "# $12 = geopotential height [km]\n" \
+
440 "# $13 = potential vorticity [PVU]\n" \
+
441 "# $14 = surface pressure [hPa]\n" \
+
442 "# $15 = surface temperature [K]\n" \
+
443 "# $16 = surface geopotential height [km]\n" \
+
444 "# $17 = surface zonal wind [m/s]\n" \
+
445 "# $18 = surface meridional wind [m/s]\n" \
+
446 "# $19 = land-sea mask [1]\n" \
+
447 "# $20 = sea surface temperature [K]\n"); \
+
448 fprintf(out, \
+
449 "# $21 = tropopause pressure [hPa]\n" \
+
450 "# $22 = tropopause geopotential height [km]\n" \
+
451 "# $23 = tropopause temperature [K]\n" \
+
452 "# $24 = tropopause water vapor [ppv]\n" \
+
453 "# $25 = cloud liquid water content [kg/kg]\n" \
+
454 "# $26 = cloud ice water content [kg/kg]\n" \
+
455 "# $27 = cloud cover [1]\n" \
+
456 "# $28 = total column cloud water [kg/m^2]\n" \
+
457 "# $29 = cloud top pressure [hPa]\n" \
+
458 "# $30 = cloud bottom pressure [hPa]\n"); \
+
459 fprintf(out, \
+
460 "# $31 = pressure at lifted condensation level (LCL) [hPa]\n" \
+
461 "# $32 = pressure at level of free convection (LFC) [hPa]\n" \
+
462 "# $33 = pressure at equilibrium level (EL) [hPa]\n" \
+
463 "# $34 = convective available potential energy (CAPE) [J/kg]\n" \
+
464 "# $35 = convective inhibition (CIN) [J/kg]\n" \
+
465 "# $36 = relative humidity over water [%%]\n" \
+
466 "# $37 = relative humidity over ice [%%]\n" \
+
467 "# $38 = dew point temperature [K]\n" \
+
468 "# $39 = frost point temperature [K]\n" \
+
469 "# $40 = NAT temperature [K]\n"); \
+
470 fprintf(out, \
+
471 "# $41 = HNO3 volume mixing ratio [ppv]\n" \
+
472 "# $42 = OH concentration [ppv]\n" \
+
473 "# $43 = H2O2 concentration [ppv]\n" \
+
474 "# $44 = HO2 concentration [ppv]\n" \
+
475 "# $45 = O1D concentration [ppv]\n" \
+
476 "# $46 = boundary layer pressure [hPa]\n" \
+
477 "# $47 = number of data points\n" \
+
478 "# $48 = number of tropopause data points\n" \
+
479 "# $49 = number of CAPE data points\n"); \
+
480
+
482#define MOLEC_DENS(p,t) \
+
483 (AVO * 1e-6 * ((p) * 100) / (RI * (t)))
+
484
+
486#define NC(cmd) { \
+
487 int nc_result=(cmd); \
+
488 if(nc_result!=NC_NOERR) \
+
489 ERRMSG("%s", nc_strerror(nc_result)); \
+
490 }
+
491
+
493#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units) { \
+
494 NC(nc_def_var(ncid, varname, type, ndims, dims, &varid)); \
+
495 NC(nc_put_att_text(ncid, varid, "long_name", strlen(long_name), long_name)); \
+
496 NC(nc_put_att_text(ncid, varid, "units", strlen(units), units)); \
+
497 }
+
498
+
500#define NC_GET_DOUBLE(varname, ptr, force) { \
+
501 if(force) { \
+
502 NC(nc_inq_varid(ncid, varname, &varid)); \
+
503 NC(nc_get_var_double(ncid, varid, ptr)); \
+
504 } else { \
+
505 if(nc_inq_varid(ncid, varname, &varid) == NC_NOERR) { \
+
506 NC(nc_get_var_double(ncid, varid, ptr)); \
+
507 } else \
+
508 WARN("netCDF variable %s is missing!", varname); \
+
509 } \
+
510 }
+
511
+
513#define NC_INQ_DIM(dimname, ptr, min, max) { \
+
514 int dimid; size_t naux; \
+
515 NC(nc_inq_dimid(ncid, dimname, &dimid)); \
+
516 NC(nc_inq_dimlen(ncid, dimid, &naux)); \
+
517 *ptr = (int)naux; \
+
518 if ((*ptr) < (min) || (*ptr) > (max)) \
+
519 ERRMSG("Dimension %s is out of range!", dimname); \
+
520 }
+
521
+
523#define NC_PUT_DOUBLE(varname, ptr, hyperslab) { \
+
524 NC(nc_inq_varid(ncid, varname, &varid)); \
+
525 if(hyperslab) { \
+
526 NC(nc_put_vara_double(ncid, varid, start, count, ptr)); \
+
527 } else { \
+
528 NC(nc_put_var_double(ncid, varid, ptr)); \
+
529 } \
+
530 }
+
531
+
533#define NC_PUT_INT(varname, ptr, hyperslab) { \
+
534 NC(nc_inq_varid(ncid, varname, &varid)); \
+
535 if(hyperslab) { \
+
536 NC(nc_put_vara_int(ncid, varid, start, count, ptr)); \
+
537 } else { \
+
538 NC(nc_put_var_int(ncid, varid, ptr)); \
+
539 } \
+
540 }
+
541
+
543#define NC_PUT_ATT(varname, attname, text) { \
+
544 NC(nc_inq_varid(ncid, varname, &varid)); \
+
545 NC(nc_put_att_text(ncid, varid, attname, strlen(text), text)); \
+
546 }
+
547
+
549#define NC_PUT_ATT_GLOBAL(attname, text) \
+
550 NC(nc_put_att_text(ncid, NC_GLOBAL, attname, strlen(text), text));
+
551
+
553#define NC_PUT_FLOAT(varname, ptr, hyperslab) { \
+
554 NC(nc_inq_varid(ncid, varname, &varid)); \
+
555 if(hyperslab) { \
+
556 NC(nc_put_vara_float(ncid, varid, start, count, ptr)); \
+
557 } else { \
+
558 NC(nc_put_var_float(ncid, varid, ptr)); \
+
559 } \
+
560 }
+
561
+
563#define NN(x0, y0, x1, y1, x) \
+
564 (fabs((x) - (x0)) <= fabs((x) - (x1)) ? (y0) : (y1))
+
565
+
567#define NORM(a) \
+
568 sqrt(DOTP(a, a))
+
569
+
571#define P(z) \
+
572 (P0 * exp(-(z) / H0))
+
573
+
575#define PSAT(t) \
+
576 (6.112 * exp(17.62 * ((t) - T0) / (243.12 + (t) - T0)))
+
577
+
579#define PSICE(t) \
+
580 (6.112 * exp(22.46 * ((t) - T0) / (272.62 + (t) - T0)))
+
581
+
583#define PW(p, h2o) \
+
584 ((p) * GSL_MAX((h2o), 0.1e-6) \
+
585 / (1. + (1. - EPS) * GSL_MAX((h2o), 0.1e-6)))
+
586
+
588#define RH(p, t, h2o) \
+
589 (PW(p, h2o) / PSAT(t) * 100.)
+
590
+
592#define RHICE(p, t, h2o) \
+
593 (PW(p, h2o) / PSICE(t) * 100.)
+
594
+
596#define RHO(p, t) \
+
597 (100. * (p) / (RA * (t)))
+
598
+
600#define ROETH_PHOTOL(a, b, c, sza) \
+
601 ((c)*(sza) < M_PI/2. ? (a) * exp((b) * (1 - 1/cos((c) * (sza)))) : 0)
+
602
+
604#define SET_ATM(qnt, val) \
+
605 if (ctl->qnt >= 0) \
+
606 atm->q[ctl->qnt][ip] = val;
+
607
+
609#define SET_QNT(qnt, name, longname, unit) \
+
610 if (strcasecmp(ctl->qnt_name[iq], name) == 0) { \
+
611 ctl->qnt = iq; \
+
612 sprintf(ctl->qnt_longname[iq], longname); \
+
613 sprintf(ctl->qnt_unit[iq], unit); \
+
614 } else
+
615
+
617#define SH(h2o) \
+
618 (EPS * GSL_MAX((h2o), 0.1e-6))
+
619
+
621#define SQR(x) \
+
622 ((x)*(x))
+
623
+
625#define SWAP(x, y, type) \
+
626 do {type tmp = x; x = y; y = tmp;} while(0);
+
627
+
629#define TDEW(p, h2o) \
+
630 (T0 + 243.12 * log(PW((p), (h2o)) / 6.112) \
+
631 / (17.62 - log(PW((p), (h2o)) / 6.112)))
+
632
+
634#define TICE(p, h2o) \
+
635 (T0 + 272.62 * log(PW((p), (h2o)) / 6.112) \
+
636 / (22.46 - log(PW((p), (h2o)) / 6.112)))
+
637
+
639#define THETA(p, t) \
+
640 ((t) * pow(1000. / (p), 0.286))
+
641
+
643#define THETAVIRT(p, t, h2o) \
+
644 (TVIRT(THETA((p), (t)), GSL_MAX((h2o), 0.1e-6)))
+
645
+
647#define TOK(line, tok, format, var) { \
+
648 if(((tok)=strtok((line), " \t"))) { \
+
649 if(sscanf(tok, format, &(var))!=1) continue; \
+
650 } else ERRMSG("Error while reading!"); \
+
651 }
+
652
+
654#define TVIRT(t, h2o) \
+
655 ((t) * (1. + (1. - EPS) * GSL_MAX((h2o), 0.1e-6)))
+
656
+
658#define Z(p) \
+
659 (H0 * log(P0 / (p)))
+
660
+
662#define ZDIFF(lnp0, t0, h2o0, lnp1, t1, h2o1) \
+
663 (RI / MA / G0 * 0.5 * (TVIRT((t0), (h2o0)) + TVIRT((t1), (h2o1))) \
+
664 * ((lnp0) - (lnp1)))
+
665
+
667#define ZETA(ps, p, t) \
+
668 (((p) / (ps) <= 0.3 ? 1. : \
+
669 sin(M_PI / 2. * (1. - (p) / (ps)) / (1. - 0.3))) \
+
670 * THETA((p), (t)))
+
671
+
672/* ------------------------------------------------------------
+
673 Log messages...
+
674 ------------------------------------------------------------ */
+
675
+
677#ifndef LOGLEV
+
678#define LOGLEV 2
+
679#endif
+
680
+
682#define LOG(level, ...) { \
+
683 if(level >= 2) \
+
684 printf(" "); \
+
685 if(level <= LOGLEV) { \
+
686 printf(__VA_ARGS__); \
+
687 printf("\n"); \
+
688 } \
+
689 }
+
690
+
692#define WARN(...) { \
+
693 printf("\nWarning (%s, %s, l%d): ", __FILE__, __func__, __LINE__); \
+
694 LOG(0, __VA_ARGS__); \
+
695 }
+
696
+
698#define ERRMSG(...) { \
+
699 printf("\nError (%s, %s, l%d): ", __FILE__, __func__, __LINE__); \
+
700 LOG(0, __VA_ARGS__); \
+
701 exit(EXIT_FAILURE); \
+
702 }
+
703
+
705#define PRINT(format, var) \
+
706 printf("Print (%s, %s, l%d): %s= "format"\n", \
+
707 __FILE__, __func__, __LINE__, #var, var);
+
708
+
709/* ------------------------------------------------------------
+
710 Timers...
+
711 ------------------------------------------------------------ */
+
712
+
714#define NTIMER 100
+
715
+
717#define PRINT_TIMERS \
+
718 timer("END", "END", 1);
+
719
+
721#define SELECT_TIMER(id, group, color) { \
+
722 NVTX_POP; \
+
723 NVTX_PUSH(id, color); \
+
724 timer(id, group, 0); \
+
725 }
+
726
+
728#define START_TIMERS \
+
729 NVTX_PUSH("START", NVTX_CPU);
+
730
+
732#define STOP_TIMERS \
+
733 NVTX_POP;
+
734
+
735/* ------------------------------------------------------------
+
736 NVIDIA Tools Extension (NVTX)...
+
737 ------------------------------------------------------------ */
+
738
+
739#ifdef NVTX
+
740#include "nvToolsExt.h"
+
741
+
743#define NVTX_CPU 0xFFADD8E6
+
744
+
746#define NVTX_GPU 0xFF00008B
+
747
+
749#define NVTX_H2D 0xFFFFFF00
+
750
+
752#define NVTX_D2H 0xFFFF8800
+
753
+
755#define NVTX_READ 0xFFFFCCCB
+
756
+
758#define NVTX_WRITE 0xFF8B0000
+
759
+
761#define NVTX_PUSH(range_title, range_color) { \
+
762 nvtxEventAttributes_t eventAttrib = {0}; \
+
763 eventAttrib.version = NVTX_VERSION; \
+
764 eventAttrib.size = NVTX_EVENT_ATTRIB_STRUCT_SIZE; \
+
765 eventAttrib.messageType = NVTX_MESSAGE_TYPE_ASCII; \
+
766 eventAttrib.colorType = NVTX_COLOR_ARGB; \
+
767 eventAttrib.color = range_color; \
+
768 eventAttrib.message.ascii = range_title; \
+
769 nvtxRangePushEx(&eventAttrib); \
+
770 }
+
771
+
773#define NVTX_POP { \
+
774 nvtxRangePop(); \
+
775 }
+
776#else
+
777
+
778/* Empty definitions of NVTX_PUSH and NVTX_POP... */
+
779#define NVTX_PUSH(range_title, range_color) {}
+
780#define NVTX_POP {}
+
781#endif
+
782
+
783
+
784/* ------------------------------------------------------------
+
785 Thrust...
+
786 ------------------------------------------------------------ */
+
787
+ +
790 double *__restrict__ c,
+
791 int n,
+
792 int *__restrict__ index);
+
793
+
794/* ------------------------------------------------------------
+
795 Structs...
+
796 ------------------------------------------------------------ */
+
797
+
799typedef struct {
+
800
+ +
803
+ +
807
+ +
810
+ +
813
+ +
816
+ +
819
+ +
822
+ +
825
+
827 int nq;
+
828
+
830 char qnt_name[NQ][LEN];
+
831
+
833 char qnt_longname[NQ][LEN];
+
834
+
836 char qnt_unit[NQ][LEN];
+
837
+
839 char qnt_format[NQ][LEN];
+
840
+ +
843
+ +
846
+ +
849
+
851 int qnt_m;
+
852
+ +
855
+ +
858
+ +
861
+ +
864
+ +
867
+ +
870
+ +
873
+ +
876
+ +
879
+ +
882
+ +
885
+ +
888
+ +
891
+ +
894
+ +
897
+ +
900
+
902 int qnt_p;
+
903
+
905 int qnt_t;
+
906
+ +
909
+
911 int qnt_u;
+
912
+
914 int qnt_v;
+
915
+
917 int qnt_w;
+
918
+ +
921
+ +
924
+ +
927
+ +
930
+ +
933
+ +
936
+ +
939
+ +
942
+ +
945
+ +
948
+ +
951
+ +
954
+ +
957
+ +
960
+ +
963
+ +
966
+ +
969
+ +
972
+ +
975
+ +
978
+ +
981
+ +
984
+ +
987
+ +
990
+ +
993
+ +
996
+ +
999
+ +
1002
+ +
1005
+ +
1008
+ +
1011
+ +
1014
+ +
1017
+ +
1020
+ +
1023
+ +
1026
+ +
1029
+ +
1032
+ +
1035
+ +
1038
+ +
1041
+ +
1044
+ +
1047
+ +
1050
+ +
1053
+ +
1056
+ +
1059
+ +
1062
+ +
1065
+ +
1068
+ +
1071
+ +
1074
+ +
1077
+ +
1080
+ +
1083
+ +
1086
+ +
1089
+ +
1092
+ +
1095
+
1097 double t_start;
+
1098
+
1100 double t_stop;
+
1101
+
1103 double dt_mod;
+
1104
+
1106 char metbase[LEN];
+
1107
+
1109 double dt_met;
+
1110
+ +
1113
+ +
1116
+ +
1119
+ +
1122
+ +
1125
+ +
1128
+ +
1131
+ +
1134
+ +
1137
+ +
1140
+ +
1143
+ +
1146
+ +
1149
+ +
1152
+
1154 double met_p[EP];
+
1155
+ +
1158
+ +
1161
+ +
1164
+ +
1168
+ +
1171
+ +
1174
+ +
1177
+ +
1180
+ +
1183
+ +
1186
+ +
1189
+ +
1192
+ +
1195
+ +
1198
+ +
1201
+
1203 double sort_dt;
+
1204
+ +
1208
+
1210 char balloon[LEN];
+
1211
+ +
1214
+ +
1217
+ +
1220
+ +
1223
+ +
1226
+ +
1229
+ +
1232
+ +
1235
+ +
1238
+
1240 double conv_cin;
+
1241
+
1243 double conv_dt;
+
1244
+ +
1247
+ +
1250
+ +
1253
+ +
1256
+ +
1259
+ +
1262
+ +
1265
+ +
1268
+ +
1271
+
1273 double bound_p0;
+
1274
+
1276 double bound_p1;
+
1277
+ +
1280
+ +
1283
+ +
1286
+ +
1289
+
1291 char species[LEN];
+
1292
+
1294 double molmass;
+
1295
+ +
1298
+ +
1301
+ +
1304
+
1306 char clim_hno3_filename[LEN];
+
1307
+
1309 char clim_oh_filename[LEN];
+
1310
+
1312 char clim_h2o2_filename[LEN];
+
1313
+
1315 char clim_ho2_filename[LEN];
+
1316
+
1318 char clim_o1d_filename[LEN];
+
1319
+
1321 char clim_o3_filename[LEN];
+
1322
+
1324 char clim_ccl4_timeseries[LEN];
+
1325
+
1327 char clim_ccl3f_timeseries[LEN];
+
1328
+
1330 char clim_ccl2f2_timeseries[LEN];
+
1331
+
1333 char clim_n2o_timeseries[LEN];
+
1334
+
1336 char clim_sf6_timeseries[LEN];
+
1337
+ +
1340
+ +
1343
+ +
1346
+ +
1349
+ +
1352
+ +
1355
+ +
1358
+ +
1361
+ +
1364
+ +
1367
+ +
1370
+ +
1373
+ +
1376
+ +
1379
+ +
1382
+ +
1385
+ +
1388
+ +
1391
+ +
1394
+ +
1397
+ +
1400
+ +
1403
+
1405 double oh_chem[4];
+
1406
+ +
1409
+ +
1412
+ +
1415
+ +
1418
+
1420 double wet_depo_pre[2];
+
1421
+ +
1424
+ +
1427
+ +
1430
+ +
1433
+
1435 double wet_depo_ic_h[3];
+
1436
+
1438 double wet_depo_bc_h[2];
+
1439
+ +
1442
+ +
1445
+ +
1448
+ +
1451
+
1453 double psc_h2o;
+
1454
+
1456 double psc_hno3;
+
1457
+
1459 char atm_basename[LEN];
+
1460
+
1462 char atm_gpfile[LEN];
+
1463
+ +
1466
+ +
1469
+ +
1472
+ +
1476
+
1478 char csi_basename[LEN];
+
1479
+
1481 char csi_kernel[LEN];
+
1482
+ +
1485
+
1487 char csi_obsfile[LEN];
+
1488
+ +
1491
+ +
1494
+ +
1497
+
1499 double csi_z0;
+
1500
+
1502 double csi_z1;
+
1503
+ +
1506
+
1508 double csi_lon0;
+
1509
+
1511 double csi_lon1;
+
1512
+ +
1515
+
1517 double csi_lat0;
+
1518
+
1520 double csi_lat1;
+
1521
+
1523 char ens_basename[LEN];
+
1524
+ +
1527
+
1529 char grid_basename[LEN];
+
1530
+
1532 char grid_kernel[LEN];
+
1533
+
1535 char grid_gpfile[LEN];
+
1536
+ +
1539
+ +
1542
+ +
1545
+
1547 double grid_z0;
+
1548
+
1550 double grid_z1;
+
1551
+ +
1554
+ +
1557
+ +
1560
+ +
1563
+ +
1566
+ +
1569
+ +
1572
+
1574 char prof_basename[LEN];
+
1575
+
1577 char prof_obsfile[LEN];
+
1578
+ +
1581
+
1583 double prof_z0;
+
1584
+
1586 double prof_z1;
+
1587
+ +
1590
+ +
1593
+ +
1596
+ +
1599
+ +
1602
+ +
1605
+
1607 char sample_basename[LEN];
+
1608
+
1610 char sample_kernel[LEN];
+
1611
+
1613 char sample_obsfile[LEN];
+
1614
+ +
1617
+ +
1620
+
1622 char stat_basename[LEN];
+
1623
+
1625 double stat_lon;
+
1626
+
1628 double stat_lat;
+
1629
+
1631 double stat_r;
+
1632
+
1634 double stat_t0;
+
1635
+
1637 double stat_t1;
+
1638
+
1640 char vtk_basename[LEN];
+
1641
+ +
1644
+ +
1647
+ +
1650
+ +
1653
+ +
1656
+
1657} ctl_t;
+
1658
+
1660typedef struct {
+
1661
+
1663 int np;
+
1664
+
1666 double time[NP];
+
1667
+
1669 double p[NP];
+
1670
+
1672 double lon[NP];
+
1673
+
1675 double lat[NP];
+
1676
+
1678 double q[NQ][NP];
+
1679
+
1680} atm_t;
+
1681
+
1683typedef struct {
+
1684
+
1686 double iso_var[NP];
+
1687
+
1689 double iso_ps[NP];
+
1690
+
1692 double iso_ts[NP];
+
1693
+ +
1696
+
1698 float uvwp[NP][3];
+
1699
+
1700} cache_t;
+
1701
+
1703typedef struct {
+
1704
+
1706 int np;
+
1707
+
1709 int nsza;
+
1710
+
1712 int no3c;
+
1713
+
1715 double p[CP];
+
1716
+
1718 double sza[CSZA];
+
1719
+
1721 double o3c[CO3];
+
1722
+
1724 double n2o[CP][CSZA][CO3];
+
1725
+
1727 double ccl4[CP][CSZA][CO3];
+
1728
+
1730 double ccl3f[CP][CSZA][CO3];
+
1731
+
1733 double ccl2f2[CP][CSZA][CO3];
+
1734
+
1735} clim_photo_t;
+
1736
+
1738typedef struct {
+
1739
+ +
1742
+
1744 double time[CTS];
+
1745
+
1747 double vmr[CTS];
+
1748
+
1749} clim_ts_t;
+
1750
+
1752typedef struct {
+
1753
+ +
1756
+
1758 int nlat;
+
1759
+
1761 int np;
+
1762
+
1764 double time[CT];
+
1765
+
1767 double lat[CY];
+
1768
+
1770 double p[CP];
+
1771
+
1773 double vmr[CT][CP][CY];
+
1774
+
1775} clim_zm_t;
+
1776
+
1778typedef struct {
+
1779
+ +
1782
+ +
1785
+
1787 double tropo_time[12];
+
1788
+
1790 double tropo_lat[73];
+
1791
+
1793 double tropo[12][73];
+
1794
+ +
1797
+ +
1800
+ +
1803
+ +
1806
+ +
1809
+ +
1812
+ +
1815
+ +
1818
+ +
1821
+ +
1824
+ +
1827
+
1828} clim_t;
+
1829
+
1831typedef struct {
+
1832
+
1834 double time;
+
1835
+
1837 int nx;
+
1838
+
1840 int ny;
+
1841
+
1843 int np;
+
1844
+
1846 int npl;
+
1847
+
1849 double lon[EX];
+
1850
+
1852 double lat[EY];
+
1853
+
1855 double p[EP];
+
1856
+
1858 float ps[EX][EY];
+
1859
+
1861 float ts[EX][EY];
+
1862
+
1864 float zs[EX][EY];
+
1865
+
1867 float us[EX][EY];
+
1868
+
1870 float vs[EX][EY];
+
1871
+
1873 float lsm[EX][EY];
+
1874
+
1876 float sst[EX][EY];
+
1877
+
1879 float pbl[EX][EY];
+
1880
+
1882 float pt[EX][EY];
+
1883
+
1885 float tt[EX][EY];
+
1886
+
1888 float zt[EX][EY];
+
1889
+
1891 float h2ot[EX][EY];
+
1892
+
1894 float pct[EX][EY];
+
1895
+
1897 float pcb[EX][EY];
+
1898
+
1900 float cl[EX][EY];
+
1901
+
1903 float plcl[EX][EY];
+
1904
+
1906 float plfc[EX][EY];
+
1907
+
1909 float pel[EX][EY];
+
1910
+
1912 float cape[EX][EY];
+
1913
+
1915 float cin[EX][EY];
+
1916
+
1918 float o3c[EX][EY];
+
1919
+
1921 float z[EX][EY][EP];
+
1922
+
1924 float t[EX][EY][EP];
+
1925
+
1927 float u[EX][EY][EP];
+
1928
+
1930 float ul[EX][EY][EP];
+
1931
+
1933 float v[EX][EY][EP];
+
1934
+
1936 float vl[EX][EY][EP];
+
1937
+
1939 float w[EX][EY][EP];
+
1940
+
1942 float pv[EX][EY][EP];
+
1943
+
1945 float h2o[EX][EY][EP];
+
1946
+
1948 float o3[EX][EY][EP];
+
1949
+
1951 float lwc[EX][EY][EP];
+
1952
+
1954 float iwc[EX][EY][EP];
+
1955
+
1957 float cc[EX][EY][EP];
+
1958
+
1960 float pl[EX][EY][EP];
+
1961
+
1963 float patp[EX][EY][EP];
+
1964
+
1966 float zeta[EX][EY][EP];
+
1967
+
1969 float zeta_dot[EX][EY][EP];
+
1970
+
1972 float zetal[EX][EY][EP];
+
1973
+
1975 float zeta_dotl[EX][EY][EP];
+
1976
+
1978 double hybrid[EP];
+
1979
+
1980#ifdef UVW
+
1982 float uvw[EX][EY][EP][3];
+
1983#endif
+
1984
+
1985} met_t;
+
1986
+
1987/* ------------------------------------------------------------
+
1988 Functions...
+
1989 ------------------------------------------------------------ */
+
1990
+
1992double buoyancy_frequency(
+
1993 const double p0,
+
1994 const double t0,
+
1995 const double p1,
+
1996 const double t1);
+
1997
+
1999void cart2geo(
+
2000 const double *x,
+
2001 double *z,
+
2002 double *lon,
+
2003 double *lat);
+
2004
+
2006#ifdef _OPENACC
+
2007#pragma acc routine (check_finite)
+
2008#endif
+ +
2010 const double x);
+
2011
+
2013#ifdef _OPENACC
+
2014#pragma acc routine (clim_oh)
+
2015#endif
+
2016double clim_oh(
+
2017 const ctl_t * ctl,
+
2018 const clim_t * clim,
+
2019 const double t,
+
2020 const double lon,
+
2021 const double lat,
+
2022 const double p);
+
2023
+ +
2026 ctl_t * ctl,
+
2027 clim_t * clim);
+
2028
+
2030#ifdef _OPENACC
+
2031#pragma acc routine (clim_photo)
+
2032#endif
+
2033double clim_photo(
+
2034 double rate[CP][CSZA][CO3],
+
2035 clim_photo_t * photo,
+
2036 double p,
+
2037 double sza,
+
2038 double o3c);
+
2039
+
2041#ifdef _OPENACC
+
2042#pragma acc routine (clim_tropo)
+
2043#endif
+
2044double clim_tropo(
+
2045 const clim_t * clim,
+
2046 const double t,
+
2047 const double lat);
+
2048
+
2050void clim_tropo_init(
+
2051 clim_t * clim);
+
2052
+
2054#ifdef _OPENACC
+
2055#pragma acc routine (clim_ts)
+
2056#endif
+
2057double clim_ts(
+
2058 const clim_ts_t * ts,
+
2059 const double t);
+
2060
+
2062#ifdef _OPENACC
+
2063#pragma acc routine (clim_zm)
+
2064#endif
+
2065double clim_zm(
+
2066 const clim_zm_t * zm,
+
2067 const double t,
+
2068 const double lat,
+
2069 const double p);
+
2070
+
2072void compress_pack(
+
2073 char *varname,
+
2074 float *array,
+
2075 size_t nxy,
+
2076 size_t nz,
+
2077 int decompress,
+
2078 FILE * inout);
+
2079
+
2081#ifdef ZFP
+
2082void compress_zfp(
+
2083 char *varname,
+
2084 float *array,
+
2085 int nx,
+
2086 int ny,
+
2087 int nz,
+
2088 int precision,
+
2089 double tolerance,
+
2090 int decompress,
+
2091 FILE * inout);
+
2092#endif
+
2093
+
2095#ifdef ZSTD
+
2096void compress_zstd(
+
2097 char *varname,
+
2098 float *array,
+
2099 size_t n,
+
2100 int decompress,
+
2101 FILE * inout);
+
2102#endif
+
2103
+
2105void day2doy(
+
2106 const int year,
+
2107 const int mon,
+
2108 const int day,
+
2109 int *doy);
+
2110
+
2112void doy2day(
+
2113 const int year,
+
2114 const int doy,
+
2115 int *mon,
+
2116 int *day);
+
2117
+
2119void geo2cart(
+
2120 const double z,
+
2121 const double lon,
+
2122 const double lat,
+
2123 double *x);
+
2124
+
2126void get_met(
+
2127 ctl_t * ctl,
+
2128 clim_t * clim,
+
2129 double t,
+
2130 met_t ** met0,
+
2131 met_t ** met1);
+
2132
+
2134void get_met_help(
+
2135 ctl_t * ctl,
+
2136 double t,
+
2137 int direct,
+
2138 char *metbase,
+
2139 double dt_met,
+
2140 char *filename);
+
2141
+
2143void get_met_replace(
+
2144 char *orig,
+
2145 char *search,
+
2146 char *repl);
+
2147
+
2149#ifdef _OPENACC
+
2150#pragma acc routine (intpol_met_4d_coord)
+
2151#endif
+ +
2153 met_t * met0,
+
2154 float height0[EX][EY][EP],
+
2155 float array0[EX][EY][EP],
+
2156 met_t * met1,
+
2157 float height1[EX][EY][EP],
+
2158 float array1[EX][EY][EP],
+
2159 double ts,
+
2160 double height,
+
2161 double lon,
+
2162 double lat,
+
2163 double *var,
+
2164 int *ci,
+
2165 double *cw,
+
2166 int init);
+
2167
+
2168#ifdef UVW
+
2169#ifdef _OPENACC
+
2170#pragma acc routine (intpol_met_4d_coord_uvw)
+
2171#endif
+
2172void intpol_met_4d_coord_uvw(
+
2173 met_t * met0,
+
2174 float heights0[EX][EY][EP],
+
2175 float uvw0[EX][EY][EP][3],
+
2176 met_t * met1,
+
2177 float heights1[EX][EY][EP],
+
2178 float uvw1[EX][EY][EP][3],
+
2179 double ts,
+
2180 double height,
+
2181 double lon,
+
2182 double lat,
+
2183 double *u,
+
2184 double *v,
+
2185 double *zeta_dot,
+
2186 int *ci,
+
2187 double *cw,
+
2188 int init);
+
2189#endif
+
2190
+
2192#ifdef _OPENACC
+
2193#pragma acc routine (intpol_met_space_3d)
+
2194#endif
+ +
2196 met_t * met,
+
2197 float array[EX][EY][EP],
+
2198 double p,
+
2199 double lon,
+
2200 double lat,
+
2201 double *var,
+
2202 int *ci,
+
2203 double *cw,
+
2204 int init);
+
2205
+
2207#ifdef _OPENACC
+
2208#pragma acc routine (intpol_met_space_2d)
+
2209#endif
+ +
2211 met_t * met,
+
2212 float array[EX][EY],
+
2213 double lon,
+
2214 double lat,
+
2215 double *var,
+
2216 int *ci,
+
2217 double *cw,
+
2218 int init);
+
2219
+
2221#ifdef UVW
+
2222#ifdef _OPENACC
+
2223#pragma acc routine (intpol_met_space_uvw)
+
2224#endif
+
2225void intpol_met_space_uvw(
+
2226 met_t * met,
+
2227 double p,
+
2228 double lon,
+
2229 double lat,
+
2230 double *u,
+
2231 double *v,
+
2232 double *w,
+
2233 int *ci,
+
2234 double *cw,
+
2235 int init);
+
2236#endif
+
2237
+
2239#ifdef _OPENACC
+
2240#pragma acc routine (intpol_met_time_3d)
+
2241#endif
+ +
2243 met_t * met0,
+
2244 float array0[EX][EY][EP],
+
2245 met_t * met1,
+
2246 float array1[EX][EY][EP],
+
2247 double ts,
+
2248 double p,
+
2249 double lon,
+
2250 double lat,
+
2251 double *var,
+
2252 int *ci,
+
2253 double *cw,
+
2254 int init);
+
2255
+
2257#ifdef _OPENACC
+
2258#pragma acc routine (intpol_met_time_2d)
+
2259#endif
+ +
2261 met_t * met0,
+
2262 float array0[EX][EY],
+
2263 met_t * met1,
+
2264 float array1[EX][EY],
+
2265 double ts,
+
2266 double lon,
+
2267 double lat,
+
2268 double *var,
+
2269 int *ci,
+
2270 double *cw,
+
2271 int init);
+
2272
+
2274#ifdef UVW
+
2275#ifdef _OPENACC
+
2276#pragma acc routine (intpol_met_time_uvw)
+
2277#endif
+
2278void intpol_met_time_uvw(
+
2279 met_t * met0,
+
2280 met_t * met1,
+
2281 double ts,
+
2282 double p,
+
2283 double lon,
+
2284 double lat,
+
2285 double *u,
+
2286 double *v,
+
2287 double *w);
+
2288#endif
+
2289
+
2291void jsec2time(
+
2292 const double jsec,
+
2293 int *year,
+
2294 int *mon,
+
2295 int *day,
+
2296 int *hour,
+
2297 int *min,
+
2298 int *sec,
+
2299 double *remain);
+
2300
+
2302#ifdef _OPENACC
+
2303#pragma acc routine (kernel_weight)
+
2304#endif
+
2305double kernel_weight(
+
2306 const double kz[EP],
+
2307 const double kw[EP],
+
2308 const int nk,
+
2309 const double p);
+
2310
+
2312#ifdef _OPENACC
+
2313#pragma acc routine (lapse_rate)
+
2314#endif
+
2315double lapse_rate(
+
2316 const double t,
+
2317 const double h2o);
+
2318
+ +
2321 ctl_t * ctl);
+
2322
+
2324#ifdef _OPENACC
+
2325#pragma acc routine (locate_irr)
+
2326#endif
+
2327int locate_irr(
+
2328 const double *xx,
+
2329 const int n,
+
2330 const double x);
+
2331
+
2333#ifdef _OPENACC
+
2334#pragma acc routine (locate_reg)
+
2335#endif
+
2336int locate_reg(
+
2337 const double *xx,
+
2338 const int n,
+
2339 const double x);
+
2340
+
2342#ifdef _OPENACC
+
2343#pragma acc routine (locate_vert)
+
2344#endif
+
2345void locate_vert(
+
2346 float profiles[EX][EY][EP],
+
2347 int np,
+
2348 int lon_ap_ind,
+
2349 int lat_ap_ind,
+
2350 double alt_ap,
+
2351 int *ind);
+
2352
+
2354#ifdef _OPENACC
+
2355#pragma acc routine (locate_irr_3d)
+
2356#endif
+
2357int locate_irr_3d(
+
2358 float profiles[EX][EY][EP],
+
2359 int np,
+
2360 int ind_lon,
+
2361 int ind_lat,
+
2362 double x);
+
2363
+
2365#ifdef _OPENACC
+
2366#pragma acc routine (nat_temperature)
+
2367#endif
+
2368double nat_temperature(
+
2369 const double p,
+
2370 const double h2o,
+
2371 const double hno3);
+
2372
+
2374void quicksort(
+
2375 double arr[],
+
2376 int brr[],
+
2377 const int low,
+
2378 const int high);
+
2379
+ +
2382 double arr[],
+
2383 int brr[],
+
2384 const int low,
+
2385 const int high);
+
2386
+
2388int read_atm(
+
2389 const char *filename,
+
2390 ctl_t * ctl,
+
2391 atm_t * atm);
+
2392
+
2394int read_atm_asc(
+
2395 const char *filename,
+
2396 ctl_t * ctl,
+
2397 atm_t * atm);
+
2398
+
2400int read_atm_bin(
+
2401 const char *filename,
+
2402 ctl_t * ctl,
+
2403 atm_t * atm);
+
2404
+
2406int read_atm_clams(
+
2407 const char *filename,
+
2408 ctl_t * ctl,
+
2409 atm_t * atm);
+
2410
+
2412int read_atm_nc(
+
2413 const char *filename,
+
2414 ctl_t * ctl,
+
2415 atm_t * atm);
+
2416
+
2418void read_clim(
+
2419 ctl_t * ctl,
+
2420 clim_t * clim);
+
2421
+
2423int read_clim_ts(
+
2424 char *filename,
+
2425 clim_ts_t * ts);
+
2426
+
2428void read_clim_zm(
+
2429 char *filename,
+
2430 char *varname,
+
2431 clim_zm_t * zm);
+
2432
+
2434void read_clim_photo(
+
2435 char *filename,
+
2436 clim_photo_t * photo);
+
2437
+
2439void read_ctl(
+
2440 const char *filename,
+
2441 int argc,
+
2442 char *argv[],
+
2443 ctl_t * ctl);
+
2444
+
2446void read_kernel(
+
2447 const char *filename,
+
2448 double kz[EP],
+
2449 double kw[EP],
+
2450 int *nk);
+
2451
+
2453int read_met(
+
2454 char *filename,
+
2455 ctl_t * ctl,
+
2456 clim_t * clim,
+
2457 met_t * met);
+
2458
+
2460void read_met_bin_2d(
+
2461 FILE * out,
+
2462 met_t * met,
+
2463 float var[EX][EY],
+
2464 char *varname);
+
2465
+
2467void read_met_bin_3d(
+
2468 FILE * in,
+
2469 ctl_t * ctl,
+
2470 met_t * met,
+
2471 float var[EX][EY][EP],
+
2472 char *varname);
+
2473
+
2475void read_met_cape(
+
2476 clim_t * clim,
+
2477 met_t * met);
+
2478
+
2480void read_met_cloud(
+
2481 ctl_t * ctl,
+
2482 met_t * met);
+
2483
+
2485void read_met_detrend(
+
2486 ctl_t * ctl,
+
2487 met_t * met);
+
2488
+ +
2491 met_t * met);
+
2492
+
2494void read_met_geopot(
+
2495 ctl_t * ctl,
+
2496 met_t * met);
+
2497
+
2499void read_met_grid(
+
2500 char *filename,
+
2501 int ncid,
+
2502 ctl_t * ctl,
+
2503 met_t * met);
+
2504
+
2506void read_met_levels(
+
2507 int ncid,
+
2508 ctl_t * ctl,
+
2509 met_t * met);
+
2510
+ +
2513 met_t * met);
+
2514
+
2516void read_met_ml2pl(
+
2517 ctl_t * ctl,
+
2518 met_t * met,
+
2519 float var[EX][EY][EP]);
+
2520
+
2522int read_met_nc_2d(
+
2523 int ncid,
+
2524 char *varname,
+
2525 char *varname2,
+
2526 ctl_t * ctl,
+
2527 met_t * met,
+
2528 float dest[EX][EY],
+
2529 float scl,
+
2530 int init);
+
2531
+
2533int read_met_nc_3d(
+
2534 int ncid,
+
2535 char *varname,
+
2536 char *varname2,
+
2537 ctl_t * ctl,
+
2538 met_t * met,
+
2539 float dest[EX][EY][EP],
+
2540 float scl,
+
2541 int init);
+
2542
+
2544void read_met_pbl(
+
2545 met_t * met);
+
2546
+ +
2549 met_t * met);
+
2550
+
2552void read_met_pv(
+
2553 met_t * met);
+
2554
+
2556void read_met_ozone(
+
2557 met_t * met);
+
2558
+
2560void read_met_sample(
+
2561 ctl_t * ctl,
+
2562 met_t * met);
+
2563
+
2565void read_met_surface(
+
2566 int ncid,
+
2567 met_t * met,
+
2568 ctl_t * ctl);
+
2569
+
2571void read_met_tropo(
+
2572 ctl_t * ctl,
+
2573 clim_t * clim,
+
2574 met_t * met);
+
2575
+
2577void read_obs(
+
2578 char *filename,
+
2579 double *rt,
+
2580 double *rz,
+
2581 double *rlon,
+
2582 double *rlat,
+
2583 double *robs,
+
2584 int *nobs);
+
2585
+
2587double scan_ctl(
+
2588 const char *filename,
+
2589 int argc,
+
2590 char *argv[],
+
2591 const char *varname,
+
2592 int arridx,
+
2593 const char *defvalue,
+
2594 char *value);
+
2595
+
2597#ifdef _OPENACC
+
2598#pragma acc routine (sedi)
+
2599#endif
+
2600double sedi(
+
2601 const double p,
+
2602 const double T,
+
2603 const double rp,
+
2604 const double rhop);
+
2605
+
2607void spline(
+
2608 const double *x,
+
2609 const double *y,
+
2610 const int n,
+
2611 const double *x2,
+
2612 double *y2,
+
2613 const int n2,
+
2614 const int method);
+
2615
+
2617#ifdef _OPENACC
+
2618#pragma acc routine (stddev)
+
2619#endif
+
2620float stddev(
+
2621 const float *data,
+
2622 const int n);
+
2623
+
2625#ifdef _OPENACC
+
2626#pragma acc routine (sza_calc)
+
2627#endif
+
2628double sza_calc(
+
2629 const double sec,
+
2630 const double lon,
+
2631 const double lat);
+
2632
+
2634void time2jsec(
+
2635 const int year,
+
2636 const int mon,
+
2637 const int day,
+
2638 const int hour,
+
2639 const int min,
+
2640 const int sec,
+
2641 const double remain,
+
2642 double *jsec);
+
2643
+
2645void timer(
+
2646 const char *name,
+
2647 const char *group,
+
2648 int output);
+
2649
+
2651double time_from_filename(
+
2652 const char *filename,
+
2653 int offset);
+
2654
+
2656#ifdef _OPENACC
+
2657#pragma acc routine (tropo_weight)
+
2658#endif
+
2659double tropo_weight(
+
2660 const clim_t * clim,
+
2661 const double t,
+
2662 const double lat,
+
2663 const double p);
+
2664
+
2666void write_atm(
+
2667 const char *filename,
+
2668 ctl_t * ctl,
+
2669 atm_t * atm,
+
2670 double t);
+
2671
+
2673void write_atm_asc(
+
2674 const char *filename,
+
2675 ctl_t * ctl,
+
2676 atm_t * atm,
+
2677 double t);
+
2678
+
2680void write_atm_bin(
+
2681 const char *filename,
+
2682 ctl_t * ctl,
+
2683 atm_t * atm);
+
2684
+
2686void write_atm_clams(
+
2687 const char *filename,
+
2688 ctl_t * ctl,
+
2689 atm_t * atm);
+
2690
+ +
2693 const char *dirname,
+
2694 ctl_t * ctl,
+
2695 atm_t * atm,
+
2696 double t);
+
2697
+
2699void write_atm_nc(
+
2700 const char *filename,
+
2701 ctl_t * ctl,
+
2702 atm_t * atm);
+
2703
+
2705void write_csi(
+
2706 const char *filename,
+
2707 ctl_t * ctl,
+
2708 atm_t * atm,
+
2709 double t);
+
2710
+
2712void write_ens(
+
2713 const char *filename,
+
2714 ctl_t * ctl,
+
2715 atm_t * atm,
+
2716 double t);
+
2717
+
2719void write_grid(
+
2720 const char *filename,
+
2721 ctl_t * ctl,
+
2722 met_t * met0,
+
2723 met_t * met1,
+
2724 atm_t * atm,
+
2725 double t);
+
2726
+
2728void write_grid_asc(
+
2729 const char *filename,
+
2730 ctl_t * ctl,
+
2731 double *cd,
+
2732 double *mean[NQ],
+
2733 double *vmr_impl,
+
2734 double t,
+
2735 double *z,
+
2736 double *lon,
+
2737 double *lat,
+
2738 double *area,
+
2739 double dz,
+
2740 int *np);
+
2741
+
2743void write_grid_nc(
+
2744 const char *filename,
+
2745 ctl_t * ctl,
+
2746 double *cd,
+
2747 double *mean[NQ],
+
2748 double *vmr_impl,
+
2749 double t,
+
2750 double *z,
+
2751 double *lon,
+
2752 double *lat,
+
2753 double *area,
+
2754 double dz,
+
2755 int *np);
+
2756
+
2758int write_met(
+
2759 char *filename,
+
2760 ctl_t * ctl,
+
2761 met_t * met);
+
2762
+
2764void write_met_bin_2d(
+
2765 FILE * out,
+
2766 met_t * met,
+
2767 float var[EX][EY],
+
2768 char *varname);
+
2769
+
2771void write_met_bin_3d(
+
2772 FILE * out,
+
2773 ctl_t * ctl,
+
2774 met_t * met,
+
2775 float var[EX][EY][EP],
+
2776 char *varname,
+
2777 int precision,
+
2778 double tolerance);
+
2779
+
2781void write_prof(
+
2782 const char *filename,
+
2783 ctl_t * ctl,
+
2784 met_t * met0,
+
2785 met_t * met1,
+
2786 atm_t * atm,
+
2787 double t);
+
2788
+
2790void write_sample(
+
2791 const char *filename,
+
2792 ctl_t * ctl,
+
2793 met_t * met0,
+
2794 met_t * met1,
+
2795 atm_t * atm,
+
2796 double t);
+
2797
+
2799void write_station(
+
2800 const char *filename,
+
2801 ctl_t * ctl,
+
2802 atm_t * atm,
+
2803 double t);
+
2804
+
2806void write_vtk(
+
2807 const char *filename,
+
2808 ctl_t * ctl,
+
2809 atm_t * atm,
+
2810 double t);
+
2811
+
2812#endif /* LIBTRAC_H */
+
void intpol_met_time_2d(met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init)
Temporal interpolation of meteo data.
Definition: libtrac.c:1366
+
int write_met(char *filename, ctl_t *ctl, met_t *met)
Read meteo data file.
Definition: libtrac.c:6769
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
void day2doy(const int year, const int mon, const int day, int *doy)
Compress or decompress array with zfp.
Definition: libtrac.c:654
+
void read_met_extrapolate(met_t *met)
Extrapolate meteo data at lower boundary.
Definition: libtrac.c:3692
+
int read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in netCDF format.
Definition: libtrac.c:1984
+
void read_clim_zm(char *filename, char *varname, clim_zm_t *zm)
Read climatological zonal means.
Definition: libtrac.c:2202
+
int check_finite(const double x)
Check if x is finite.
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void read_met_levels(int ncid, ctl_t *ctl, met_t *met)
Read meteo data on vertical levels.
Definition: libtrac.c:3969
+
void timer(const char *name, const char *group, int output)
Measure wall-clock time.
Definition: libtrac.c:5480
+
double sedi(const double p, const double T, const double rp, const double rhop)
Calculate sedimentation velocity.
Definition: libtrac.c:5305
+
void read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname)
Read 3-D meteo variable.
Definition: libtrac.c:3359
+
int read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init)
Read and convert 3D variable from meteo data file.
Definition: libtrac.c:4367
+
void write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance)
Write 3-D meteo variable.
Definition: libtrac.c:6911
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
void write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write VTK data.
Definition: libtrac.c:7456
+
void quicksort(double arr[], int brr[], const int low, const int high)
Parallel quicksort.
Definition: libtrac.c:1715
+
int read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in ASCII format.
Definition: libtrac.c:1830
+
void write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in ASCII format.
Definition: libtrac.c:5667
+
void read_met_periodic(met_t *met)
Create meteo data with periodic boundary conditions.
Definition: libtrac.c:4576
+
void read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP])
Convert meteo data from model levels to pressure levels.
Definition: libtrac.c:4133
+
void clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim)
Initialization function for OH climatology.
Definition: libtrac.c:82
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
double clim_tropo(const clim_t *clim, const double t, const double lat)
Climatology of tropopause pressure.
Definition: libtrac.c:163
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
void write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname)
Write 2-D meteo variable.
Definition: libtrac.c:6882
+
int read_clim_ts(char *filename, clim_ts_t *ts)
Read climatological time series.
Definition: libtrac.c:2148
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
void level_definitions(ctl_t *ctl)
Get predefined pressure levels.
Definition: libtrac.c:1559
+
void write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data in CLaMS position file and trajectory format.
Definition: libtrac.c:5799
+
void time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
Convert date to seconds.
Definition: libtrac.c:5449
+
void write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write gridded data.
Definition: libtrac.c:6391
+
void read_met_pbl(met_t *met)
Calculate pressure of the boundary layer.
Definition: libtrac.c:4505
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
void spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
Spline interpolation.
Definition: libtrac.c:5338
+
#define CP
Maximum number of pressure levels for climatological data.
Definition: libtrac.h:222
+
void read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met)
Calculate tropopause data.
Definition: libtrac.c:5009
+
int read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in CLaMS format.
Definition: libtrac.c:1928
+
void write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write sample data.
Definition: libtrac.c:7207
+
#define NQ
Maximum number of quantities per data point.
Definition: libtrac.h:172
+
int read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data in binary format.
Definition: libtrac.c:1872
+
void read_met_sample(ctl_t *ctl, met_t *met)
Downsampling of meteo data.
Definition: libtrac.c:4763
+
void write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write station data.
Definition: libtrac.c:7370
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
void read_met_monotonize(met_t *met)
Smooth vertical zeta and pressure profiles.
Definition: libtrac.c:4174
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write CSI data.
Definition: libtrac.c:6049
+
void read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk)
Read kernel data file.
Definition: libtrac.c:3058
+
#define CT
Maximum number of time steps for climatological data.
Definition: libtrac.h:232
+
void get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
Get meteo data for given time step.
Definition: libtrac.c:717
+
void read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs)
Read observation data.
Definition: libtrac.c:5184
+
float stddev(const float *data, const int n)
Calculate standard deviation.
Definition: libtrac.c:5387
+
void read_clim_photo(char *filename, clim_photo_t *photo)
Read climatological photolysis rates.
Definition: libtrac.c:2077
+
void write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in ASCII format.
Definition: libtrac.c:6573
+
void read_met_detrend(ctl_t *ctl, met_t *met)
Apply detrending method to temperature and winds.
Definition: libtrac.c:3588
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_met_cloud(ctl_t *ctl, met_t *met)
Calculate cloud properties.
Definition: libtrac.c:3538
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
#define CTS
Maximum number of data points of climatological time series.
Definition: libtrac.h:237
+
void read_met_ozone(met_t *met)
Calculate total column ozone.
Definition: libtrac.c:4735
+
void write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in CLaMS position file format.
Definition: libtrac.c:5950
+
void clim_tropo_init(clim_t *clim)
Initialize tropopause climatology.
Definition: libtrac.c:191
+
void cart2geo(const double *x, double *z, double *lon, double *lat)
Convert Cartesian coordinates to geolocation.
Definition: libtrac.c:44
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
double sza_calc(const double sec, const double lon, const double lat)
Calculate solar zenith angle.
Definition: libtrac.c:5408
+
void read_met_surface(int ncid, met_t *met, ctl_t *ctl)
Read surface data.
Definition: libtrac.c:4903
+
void doy2day(const int year, const int doy, int *mon, int *day)
Get date from day of year.
Definition: libtrac.c:673
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
void read_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname)
Read 2-D meteo variable.
Definition: libtrac.c:3330
+
int locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x)
locate the index in a column of a three dimensional array.
Definition: libtrac.c:1463
+
void compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout)
Pack or unpack array.
Definition: libtrac.c:413
+
int read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init)
Read and convert 2D variable from meteo data file.
Definition: libtrac.c:4249
+
void read_met_pv(met_t *met)
Calculate potential vorticity.
Definition: libtrac.c:4629
+
void get_met_replace(char *orig, char *search, char *repl)
Replace template strings in filename.
Definition: libtrac.c:918
+
#define CY
Maximum number of latitudes for climatological data.
Definition: libtrac.h:212
+
void write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in binary format.
Definition: libtrac.c:5749
+
int quicksort_partition(double arr[], int brr[], const int low, const int high)
Partition function for quicksort.
Definition: libtrac.c:1736
+
double clim_ts(const clim_ts_t *ts, const double t)
Interpolate time series.
Definition: libtrac.c:346
+
void thrustSortWrapper(double *__restrict__ c, int n, int *__restrict__ index)
Wrapper to Thrust sorting function.
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
void intpol_met_4d_coord(met_t *met0, float height0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float height1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatiotemporal interpolation of meteo data.
Definition: libtrac.c:942
+
void write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np)
Write gridded data in netCDF format.
Definition: libtrac.c:6666
+
void read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met)
Read coordinates of meteo data.
Definition: libtrac.c:3850
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
void write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm)
Write atmospheric data in netCDF format.
Definition: libtrac.c:6004
+
void get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename)
Get meteo data for time step.
Definition: libtrac.c:855
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
void intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1177
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define CO3
Maximum number of total column ozone data for climatological data.
Definition: libtrac.h:217
+
void geo2cart(const double z, const double lon, const double lat, double *x)
Convert geolocation to Cartesian coordinates.
Definition: libtrac.c:703
+
double kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p)
Get weighting factor from kernel function.
Definition: libtrac.c:1515
+
double buoyancy_frequency(const double p0, const double t0, const double p1, const double t1)
Calculate buoyancy frequency.
Definition: libtrac.c:29
+
void read_met_cape(clim_t *clim, met_t *met)
Calculate convective available potential energy.
Definition: libtrac.c:3428
+
double tropo_weight(const clim_t *clim, const double t, const double lat, const double p)
Get weighting factor based on tropopause distance.
Definition: libtrac.c:5583
+
void read_met_geopot(ctl_t *ctl, met_t *met)
Calculate geopotential heights.
Definition: libtrac.c:3730
+
void write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write profile data.
Definition: libtrac.c:6979
+
void write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write ensemble data.
Definition: libtrac.c:6294
+
void locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double alt_ap, int *ind)
Locate the four vertical indizes of a box for a given height value.
Definition: libtrac.c:1497
+
#define CSZA
Maximum number of solar zenith angles for climatological data.
Definition: libtrac.h:227
+
double lapse_rate(const double t, const double h2o)
Calculate moist adiabatic lapse rate.
Definition: libtrac.c:1541
+
double clim_photo(double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c)
Interpolate photolysis rate data.
Definition: libtrac.c:112
+
Atmospheric data.
Definition: libtrac.h:1660
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
Cache data.
Definition: libtrac.h:1683
+
int iso_n
Isosurface balloon number of data points.
Definition: libtrac.h:1695
+
Climatological data in form of photolysis rates.
Definition: libtrac.h:1703
+
int nsza
Number of solar zenith angles.
Definition: libtrac.h:1709
+
int np
Number of pressure levels.
Definition: libtrac.h:1706
+
int no3c
Number of total ozone columns.
Definition: libtrac.h:1712
+
Climatological data.
Definition: libtrac.h:1778
+
clim_ts_t ccl2f2
CFC-12 time series.
Definition: libtrac.h:1820
+
clim_photo_t photo
Photolysis rates.
Definition: libtrac.h:1796
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
int tropo_ntime
Number of tropopause timesteps.
Definition: libtrac.h:1781
+
clim_ts_t sf6
SF6 time series.
Definition: libtrac.h:1826
+
clim_ts_t ccl4
CFC-10 time series.
Definition: libtrac.h:1814
+
clim_ts_t ccl3f
CFC-11 time series.
Definition: libtrac.h:1817
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
int tropo_nlat
Number of tropopause latitudes.
Definition: libtrac.h:1784
+
clim_zm_t oh
OH zonal means.
Definition: libtrac.h:1802
+
clim_ts_t n2o
N2O time series.
Definition: libtrac.h:1823
+
Climatological data in form of time series.
Definition: libtrac.h:1738
+
int ntime
Number of timesteps.
Definition: libtrac.h:1741
+
Climatological data in form of zonal means.
Definition: libtrac.h:1752
+
int np
Number of pressure levels.
Definition: libtrac.h:1761
+
int ntime
Number of timesteps.
Definition: libtrac.h:1755
+
int nlat
Number of latitudes.
Definition: libtrac.h:1758
+
Control parameters.
Definition: libtrac.h:799
+
double grid_z0
Lower altitude of gridded data [km].
Definition: libtrac.h:1547
+
int qnt_o3
Quantity array index for ozone vmr.
Definition: libtrac.h:923
+
double csi_lat1
Upper latitude of gridded CSI data [deg].
Definition: libtrac.h:1520
+
int qnt_Coh
Quantity array index for OH concentration.
Definition: libtrac.h:1058
+
int vert_coord_ap
Vertical coordinate of air parcels (0=pressure, 1=zeta).
Definition: libtrac.h:812
+
double wet_depo_ic_a
Coefficient A for wet deposition in cloud (exponential form).
Definition: libtrac.h:1429
+
int met_nc_scale
Check netCDF scaling factors (0=no, 1=yes).
Definition: libtrac.h:1118
+
int qnt_pel
Quantity array index for pressure at equilibrium level (EL).
Definition: libtrac.h:950
+
int csi_nz
Number of altitudes of gridded CSI data.
Definition: libtrac.h:1496
+
double molmass
Molar mass [g/mol].
Definition: libtrac.h:1294
+
int qnt_p
Quantity array index for pressure.
Definition: libtrac.h:902
+
int qnt_Cccl2f2
Quantity array index for CFC-12 concentration.
Definition: libtrac.h:1082
+
int mixing_nx
Number of longitudes of mixing grid.
Definition: libtrac.h:1357
+
double chemgrid_z1
Upper altitude of chemistry grid [km].
Definition: libtrac.h:1381
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
int qnt_rhop
Quantity array index for particle density.
Definition: libtrac.h:860
+
double csi_obsmin
Minimum observation index to trigger detection.
Definition: libtrac.h:1490
+
int qnt_pcb
Quantity array index for cloud bottom pressure.
Definition: libtrac.h:938
+
double bound_dzs
Boundary conditions surface layer depth [km].
Definition: libtrac.h:1282
+
double csi_lon1
Upper longitude of gridded CSI data [deg].
Definition: libtrac.h:1511
+
int qnt_u
Quantity array index for zonal wind.
Definition: libtrac.h:911
+
double stat_lon
Longitude of station [deg].
Definition: libtrac.h:1625
+
int clams_met_data
Read MPTRAC or CLaMS meteo data (0=MPTRAC, 1=CLaMS).
Definition: libtrac.h:818
+
double mixing_trop
Interparcel exchange parameter for mixing in the troposphere.
Definition: libtrac.h:1342
+
double sort_dt
Time step for sorting of particle data [s].
Definition: libtrac.h:1203
+
double mixing_z1
Upper altitude of mixing grid [km].
Definition: libtrac.h:1354
+
double stat_r
Search radius around station [km].
Definition: libtrac.h:1631
+
double wet_depo_bc_a
Coefficient A for wet deposition below cloud (exponential form).
Definition: libtrac.h:1423
+
int csi_ny
Number of latitudes of gridded CSI data.
Definition: libtrac.h:1514
+
int vtk_sphere
Spherical projection for VTK data (0=no, 1=yes).
Definition: libtrac.h:1655
+
double chemgrid_z0
Lower altitude of chemistry grid [km].
Definition: libtrac.h:1378
+
int qnt_iwc
Quantity array index for cloud ice water content.
Definition: libtrac.h:929
+
double chemgrid_lat0
Lower latitude of chemistry grid [deg].
Definition: libtrac.h:1396
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
int qnt_Co1d
Quantity array index for O(1D) concentration.
Definition: libtrac.h:1070
+
int qnt_pw
Quantity array index for partial water vapor pressure.
Definition: libtrac.h:998
+
double grid_z1
Upper altitude of gridded data [km].
Definition: libtrac.h:1550
+
int direction
Direction flag (1=forward calculation, -1=backward calculation).
Definition: libtrac.h:1094
+
int qnt_Cccl4
Quantity array index for CFC-10 concentration.
Definition: libtrac.h:1076
+
int met_dp
Stride for pressure levels.
Definition: libtrac.h:1136
+
double met_dt_out
Time step for sampling of meteo data along trajectories [s].
Definition: libtrac.h:1197
+
int qnt_h2o2
Quantity array index for hydrogen peroxide number concentrations.
Definition: libtrac.h:968
+
int qnt_vh
Quantity array index for horizontal wind.
Definition: libtrac.h:1025
+
int csi_nx
Number of longitudes of gridded CSI data.
Definition: libtrac.h:1505
+
double csi_lat0
Lower latitude of gridded CSI data [deg].
Definition: libtrac.h:1517
+
double turb_dz_trop
Vertical turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1225
+
int qnt_lwc
Quantity array index for cloud liquid water content.
Definition: libtrac.h:926
+
double turb_mesoz
Vertical scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1234
+
int vert_coord_met
Vertical coordinate of input meteo data (0=automatic, 1=eta).
Definition: libtrac.h:815
+
int grid_nx
Number of longitudes of gridded data.
Definition: libtrac.h:1553
+
int atm_type
Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).
Definition: libtrac.h:1475
+
double bound_mass
Boundary conditions mass per particle [kg].
Definition: libtrac.h:1255
+
double grid_lat0
Lower latitude of gridded data [deg].
Definition: libtrac.h:1565
+
int qnt_ts
Quantity array index for surface temperature.
Definition: libtrac.h:866
+
int qnt_plfc
Quantity array index for pressure at level of free convection (LCF).
Definition: libtrac.h:947
+
double grid_lon0
Lower longitude of gridded data [deg].
Definition: libtrac.h:1556
+
int qnt_o1d
Quantity array index for atomic oxygen number concentrations.
Definition: libtrac.h:974
+
int met_tropo_spline
Tropopause interpolation method (0=linear, 1=spline).
Definition: libtrac.h:1188
+
int qnt_tvirt
Quantity array index for virtual temperature.
Definition: libtrac.h:1019
+
double dt_met
Time step of meteo data [s].
Definition: libtrac.h:1109
+
double chemgrid_lat1
Upper latitude of chemistry grid [deg].
Definition: libtrac.h:1399
+
int met_geopot_sy
Latitudinal smoothing of geopotential heights.
Definition: libtrac.h:1160
+
double turb_dx_strat
Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1222
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
int qnt_lsm
Quantity array index for land-sea mask.
Definition: libtrac.h:878
+
int qnt_theta
Quantity array index for potential temperature.
Definition: libtrac.h:1010
+
int met_tropo_nlev_sep
WMO tropopause separation layer depth (number of levels).
Definition: libtrac.h:1179
+
double bound_lat1
Boundary conditions maximum longitude [deg].
Definition: libtrac.h:1270
+
double stat_t1
Stop time for station output [s].
Definition: libtrac.h:1637
+
double turb_dx_trop
Horizontal turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1219
+
int grid_type
Type of grid data files (0=ASCII, 1=netCDF).
Definition: libtrac.h:1571
+
double csi_lon0
Lower longitude of gridded CSI data [deg].
Definition: libtrac.h:1508
+
int qnt_pbl
Quantity array index for boundary layer pressure.
Definition: libtrac.h:884
+
int qnt_psice
Quantity array index for saturation pressure over ice.
Definition: libtrac.h:995
+
double chemgrid_lon0
Lower longitude of chemistry grid [deg].
Definition: libtrac.h:1387
+
int bound_pbl
Boundary conditions planetary boundary layer (0=no, 1=yes).
Definition: libtrac.h:1288
+
int qnt_mloss_wet
Quantity array index for total mass loss due to wet deposition.
Definition: libtrac.h:983
+
int met_geopot_sx
Longitudinal smoothing of geopotential heights.
Definition: libtrac.h:1157
+
int met_sy
Smoothing for latitudes.
Definition: libtrac.h:1142
+
int qnt_ps
Quantity array index for surface pressure.
Definition: libtrac.h:863
+
int isosurf
Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon).
Definition: libtrac.h:1207
+
double bound_p1
Boundary conditions top pressure [hPa].
Definition: libtrac.h:1276
+
int qnt_zs
Quantity array index for surface geopotential height.
Definition: libtrac.h:869
+
int prof_nz
Number of altitudes of gridded profile data.
Definition: libtrac.h:1580
+
double csi_dt_out
Time step for CSI output [s].
Definition: libtrac.h:1484
+
double csi_modmin
Minimum column density to trigger detection [kg/m^2].
Definition: libtrac.h:1493
+
int met_sx
Smoothing for longitudes.
Definition: libtrac.h:1139
+
double chemgrid_lon1
Upper longitude of chemistry grid [deg].
Definition: libtrac.h:1390
+
double turb_mesox
Horizontal scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1231
+
int conv_mix_bot
Lower level for mixing (0=particle pressure, 1=surface).
Definition: libtrac.h:1249
+
int met_zfp_prec
ZFP compression precision (for all variables, except z and T).
Definition: libtrac.h:1121
+
double prof_z0
Lower altitude of gridded profile data [km].
Definition: libtrac.h:1583
+
int qnt_w
Quantity array index for vertical velocity.
Definition: libtrac.h:917
+
double bound_vmr
Boundary conditions volume mixing ratio [ppv].
Definition: libtrac.h:1261
+
double met_tropo_pv
Dyanmical tropopause potential vorticity threshold [PVU].
Definition: libtrac.h:1182
+
int prof_nx
Number of longitudes of gridded profile data.
Definition: libtrac.h:1589
+
int qnt_stat
Quantity array index for station flag.
Definition: libtrac.h:848
+
int met_tropo
Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical).
Definition: libtrac.h:1167
+
int qnt_rp
Quantity array index for particle radius.
Definition: libtrac.h:857
+
double mixing_strat
Interparcel exchange parameter for mixing in the stratosphere.
Definition: libtrac.h:1345
+
int qnt_vz
Quantity array index for vertical velocity.
Definition: libtrac.h:1028
+
int qnt_ho2
Quantity array index for hydroperoxyl radical number concentrations.
Definition: libtrac.h:971
+
double csi_z1
Upper altitude of gridded CSI data [km].
Definition: libtrac.h:1502
+
double stat_t0
Start time for station output [s].
Definition: libtrac.h:1634
+
double oh_chem_beta
Beta parameter for diurnal variablity of OH.
Definition: libtrac.h:1408
+
double mixing_z0
Lower altitude of mixing grid [km].
Definition: libtrac.h:1351
+
int qnt_mloss_decay
Quantity array index for total mass loss due to exponential decay.
Definition: libtrac.h:989
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
double dry_depo_dp
Dry deposition surface layer [hPa].
Definition: libtrac.h:1447
+
int qnt_vs
Quantity array index for surface meridional wind.
Definition: libtrac.h:875
+
int qnt_Cco
Quantity array index for CO concentration.
Definition: libtrac.h:1055
+
double vtk_dt_out
Time step for VTK data output [s].
Definition: libtrac.h:1643
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
double conv_dt
Time interval for convection module [s].
Definition: libtrac.h:1243
+
int qnt_hno3
Quantity array index for nitric acid vmr.
Definition: libtrac.h:962
+
int qnt_h2ot
Quantity array index for tropopause water vapor vmr.
Definition: libtrac.h:896
+
int qnt_rh
Quantity array index for relative humidity over water.
Definition: libtrac.h:1004
+
double bound_lat0
Boundary conditions minimum longitude [deg].
Definition: libtrac.h:1267
+
int met_dx
Stride for longitudes.
Definition: libtrac.h:1130
+
int mixing_ny
Number of latitudes of mixing grid.
Definition: libtrac.h:1366
+
int met_convention
Convention of the data layout.
Definition: libtrac.h:1112
+
int qnt_zeta_d
Quantity array index for diagnosed zeta vertical coordinate.
Definition: libtrac.h:1016
+
int cpl_zeta_and_press_modules
Coupled use of pressure based modules and diabatic advection.
Definition: libtrac.h:806
+
int tracer_chem
Switch for first order tracer chemistry module (0=off, 1=on).
Definition: libtrac.h:1417
+
double dt_mod
Time step of simulation [s].
Definition: libtrac.h:1103
+
int qnt_tnat
Quantity array index for T_NAT.
Definition: libtrac.h:1043
+
int qnt_tice
Quantity array index for T_ice.
Definition: libtrac.h:1037
+
int qnt_zg
Quantity array index for geopotential height.
Definition: libtrac.h:899
+
double vtk_offset
Vertical offset for VTK data [km].
Definition: libtrac.h:1652
+
int qnt_v
Quantity array index for meridional wind.
Definition: libtrac.h:914
+
int qnt_mloss_dry
Quantity array index for total mass loss due to dry deposition.
Definition: libtrac.h:986
+
int read_mode
Read mode for nc__open.
Definition: libtrac.h:824
+
double bound_vmr_trend
Boundary conditions volume mixing ratio trend [ppv/s].
Definition: libtrac.h:1264
+
int met_cache
Preload meteo data into disk cache (0=no, 1=yes).
Definition: libtrac.h:1200
+
int met_cloud
Cloud data (0=none, 1=LWC+IWC, 2=RWC+SWC, 3=all).
Definition: libtrac.h:1191
+
int qnt_oh
Quantity array index for hydroxyl number concentrations.
Definition: libtrac.h:965
+
int qnt_Ch
Quantity array index for H concentration.
Definition: libtrac.h:1061
+
int oh_chem_reaction
Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular).
Definition: libtrac.h:1402
+
int qnt_h2o
Quantity array index for water vapor vmr.
Definition: libtrac.h:920
+
int prof_ny
Number of latitudes of gridded profile data.
Definition: libtrac.h:1598
+
int qnt_rhice
Quantity array index for relative humidity over ice.
Definition: libtrac.h:1007
+
int qnt_rho
Quantity array index for density of air.
Definition: libtrac.h:908
+
double sample_dz
Layer depth for sample output [km].
Definition: libtrac.h:1619
+
double tdec_strat
Life time of particles in the stratosphere [s].
Definition: libtrac.h:1300
+
int qnt_us
Quantity array index for surface zonal wind.
Definition: libtrac.h:872
+
double grid_lon1
Upper longitude of gridded data [deg].
Definition: libtrac.h:1559
+
int conv_mix_top
Upper level for mixing (0=particle pressure, 1=EL).
Definition: libtrac.h:1252
+
int qnt_Cn2o
Quantity array index for N2O concentration.
Definition: libtrac.h:1085
+
int qnt_Cccl3f
Quantity array index for CFC-11 concentration.
Definition: libtrac.h:1079
+
double met_cloud_min
Minimum cloud ice water content [kg/kg].
Definition: libtrac.h:1194
+
double mixing_lat0
Lower latitude of mixing grid [deg].
Definition: libtrac.h:1369
+
int qnt_pt
Quantity array index for tropopause pressure.
Definition: libtrac.h:887
+
int qnt_cl
Quantity array index for total column cloud water.
Definition: libtrac.h:941
+
int advect
Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta).
Definition: libtrac.h:1213
+
double prof_z1
Upper altitude of gridded profile data [km].
Definition: libtrac.h:1586
+
int reflect
Reflection of particles at top and bottom boundary (0=no, 1=yes).
Definition: libtrac.h:1216
+
int qnt_t
Quantity array index for temperature.
Definition: libtrac.h:905
+
int atm_filter
Time filter for atmospheric data output (0=none, 1=missval, 2=remove).
Definition: libtrac.h:1468
+
int kpp_chem
Switch for KPP chemistry module (0=off, 1=on).
Definition: libtrac.h:1414
+
int qnt_zeta
Quantity array index for zeta vertical coordinate.
Definition: libtrac.h:1013
+
double met_tropo_lapse
WMO tropopause lapse rate [K/km].
Definition: libtrac.h:1170
+
double csi_z0
Lower altitude of gridded CSI data [km].
Definition: libtrac.h:1499
+
int qnt_lapse
Quantity array index for lapse rate.
Definition: libtrac.h:1022
+
double stat_lat
Latitude of station [deg].
Definition: libtrac.h:1628
+
int qnt_Cho2
Quantity array index for HO2 concentration.
Definition: libtrac.h:1064
+
int grid_ny
Number of latitudes of gridded data.
Definition: libtrac.h:1562
+
int qnt_Csf6
Quantity array index for SF6 concentration.
Definition: libtrac.h:1088
+
int qnt_Ch2o
Quantity array index for H2O concentration.
Definition: libtrac.h:1049
+
double met_detrend
FWHM of horizontal Gaussian used for detrending [km].
Definition: libtrac.h:1148
+
int press_level_def
Use predefined pressure levels or not.
Definition: libtrac.h:809
+
double bound_dps
Boundary conditions surface layer depth [hPa].
Definition: libtrac.h:1279
+
int chemgrid_nz
Number of altitudes of chemistry grid.
Definition: libtrac.h:1375
+
int qnt_cape
Quantity array index for convective available potential energy (CAPE).
Definition: libtrac.h:953
+
double bound_mass_trend
Boundary conditions mass per particle trend [kg/s].
Definition: libtrac.h:1258
+
int mixing_nz
Number of altitudes of mixing grid.
Definition: libtrac.h:1348
+
int qnt_o3c
Quantity array index for total column ozone.
Definition: libtrac.h:959
+
double bound_p0
Boundary conditions bottom pressure [hPa].
Definition: libtrac.h:1273
+
double mixing_lon0
Lower longitude of mixing grid [deg].
Definition: libtrac.h:1360
+
int qnt_Co3
Quantity array index for O3 concentration.
Definition: libtrac.h:1052
+
int qnt_tsts
Quantity array index for T_STS.
Definition: libtrac.h:1040
+
int grid_nz
Number of altitudes of gridded data.
Definition: libtrac.h:1544
+
double ens_dt_out
Time step for ensemble output [s].
Definition: libtrac.h:1526
+
int atm_stride
Particle index stride for atmospheric data files.
Definition: libtrac.h:1471
+
int met_relhum
Try to read relative humidity (0=no, 1=yes).
Definition: libtrac.h:1163
+
double mixing_lat1
Upper latitude of mixing grid [deg].
Definition: libtrac.h:1372
+
double atm_dt_out
Time step for atmospheric data output [s].
Definition: libtrac.h:1465
+
double prof_lat1
Upper latitude of gridded profile data [deg].
Definition: libtrac.h:1604
+
double psc_h2o
H2O volume mixing ratio for PSC analysis.
Definition: libtrac.h:1453
+
int met_sp
Smoothing for pressure levels.
Definition: libtrac.h:1145
+
double prof_lon0
Lower longitude of gridded profile data [deg].
Definition: libtrac.h:1592
+
double met_tropo_lapse_sep
WMO tropopause separation layer lapse rate [K/km].
Definition: libtrac.h:1176
+
int chemgrid_nx
Number of longitudes of chemistry grid.
Definition: libtrac.h:1384
+
int qnt_pct
Quantity array index for cloud top pressure.
Definition: libtrac.h:935
+
int qnt_psat
Quantity array index for saturation pressure over water.
Definition: libtrac.h:992
+
double prof_lat0
Lower latitude of gridded profile data [deg].
Definition: libtrac.h:1601
+
int qnt_cin
Quantity array index for convective inhibition (CIN).
Definition: libtrac.h:956
+
size_t chunkszhint
Chunk size hint for nc__open.
Definition: libtrac.h:821
+
double psc_hno3
HNO3 volume mixing ratio for PSC analysis.
Definition: libtrac.h:1456
+
double prof_lon1
Upper longitude of gridded profile data [deg].
Definition: libtrac.h:1595
+
int h2o2_chem_reaction
Reaction type for H2O2 chemistry (0=none, 1=SO2).
Definition: libtrac.h:1411
+
int qnt_Co3p
Quantity array index for O(3P) concentration.
Definition: libtrac.h:1073
+
double wet_depo_bc_ret_ratio
Coefficients for wet deposition below cloud: retention ratio.
Definition: libtrac.h:1444
+
int chemgrid_ny
Number of latitudes of chemistry grid.
Definition: libtrac.h:1393
+
int grid_sparse
Sparse output in grid data files (0=no, 1=yes).
Definition: libtrac.h:1541
+
double dry_depo_vdep
Dry deposition velocity [m/s].
Definition: libtrac.h:1450
+
int qnt_tt
Quantity array index for tropopause temperature.
Definition: libtrac.h:890
+
int met_np
Number of target pressure levels.
Definition: libtrac.h:1151
+
int qnt_ens
Quantity array index for ensemble IDs.
Definition: libtrac.h:845
+
double met_zfp_tol_t
ZFP compression tolerance (for temperature).
Definition: libtrac.h:1124
+
double mixing_dt
Time interval for mixing [s].
Definition: libtrac.h:1339
+
int qnt_mloss_h2o2
Quantity array index for total mass loss due to H2O2 chemistry.
Definition: libtrac.h:980
+
double met_zfp_tol_z
ZFP compression tolerance (for geopotential height).
Definition: libtrac.h:1127
+
double vtk_scale
Vertical scaling factor for VTK data.
Definition: libtrac.h:1649
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
int qnt_pv
Quantity array index for potential vorticity.
Definition: libtrac.h:1031
+
int qnt_mloss_oh
Quantity array index for total mass loss due to OH chemistry.
Definition: libtrac.h:977
+
int qnt_Ch2o2
Quantity array index for H2O2 concentration.
Definition: libtrac.h:1067
+
int qnt_sst
Quantity array index for sea surface temperature.
Definition: libtrac.h:881
+
double mixing_lon1
Upper longitude of mixing grid [deg].
Definition: libtrac.h:1363
+
double wet_depo_ic_ret_ratio
Coefficients for wet deposition in cloud: retention ratio.
Definition: libtrac.h:1441
+
int qnt_sh
Quantity array index for specific humidity.
Definition: libtrac.h:1001
+
double wet_depo_ic_b
Coefficient B for wet deposition in cloud (exponential form).
Definition: libtrac.h:1432
+
double wet_depo_bc_b
Coefficient B for wet deposition below cloud (exponential form).
Definition: libtrac.h:1426
+
int met_dy
Stride for latitudes.
Definition: libtrac.h:1133
+
int qnt_Cx
Quantity array index for trace species x concentration.
Definition: libtrac.h:1046
+
double turb_dz_strat
Vertical turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1228
+
double bound_zetas
Boundary conditions surface layer zeta [K].
Definition: libtrac.h:1285
+
int met_tropo_nlev
WMO tropopause layer depth (number of levels).
Definition: libtrac.h:1173
+
int qnt_idx
Quantity array index for air parcel IDs.
Definition: libtrac.h:842
+
double met_tropo_theta
Dynamical tropopause potential temperature threshold [K].
Definition: libtrac.h:1185
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
double tdec_trop
Life time of particles in the troposphere [s].
Definition: libtrac.h:1297
+
double sample_dx
Horizontal radius for sample output [km].
Definition: libtrac.h:1616
+
int vtk_stride
Particle index stride for VTK data.
Definition: libtrac.h:1646
+
double grid_lat1
Upper latitude of gridded data [deg].
Definition: libtrac.h:1568
+
int qnt_zt
Quantity array index for tropopause geopotential height.
Definition: libtrac.h:893
+
int conv_mix
Type of vertical mixing (0=pressure, 1=density).
Definition: libtrac.h:1246
+
int met_type
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:1115
+
int qnt_cc
Quantity array index for cloud cover.
Definition: libtrac.h:932
+
int qnt_plcl
Quantity array index for pressure at lifted condensation level (LCL).
Definition: libtrac.h:944
+
double grid_dt_out
Time step for gridded data output [s].
Definition: libtrac.h:1538
+
int qnt_tdew
Quantity array index for dew point temperature.
Definition: libtrac.h:1034
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
int npl
Number of model levels.
Definition: libtrac.h:1846
+
double time
Time [s].
Definition: libtrac.h:1834
+
+
+ + + + diff --git a/doxygen/met__conv_8c.html b/doxygen/met__conv_8c.html new file mode 100644 index 0000000000..7c1984ceb2 --- /dev/null +++ b/doxygen/met__conv_8c.html @@ -0,0 +1,257 @@ + + + + + + + +MPTRAC: met_conv.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_conv.c File Reference
+
+
+ +

Convert file format of meteo data files. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Convert file format of meteo data files.

+ +

Definition in file met_conv.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file met_conv.c.

+
29 {
+
30
+
31 ctl_t ctl;
+
32
+
33 clim_t *clim;
+
34
+
35 met_t *met;
+
36
+
37 /* Check arguments... */
+
38 if (argc < 6)
+
39 ERRMSG("Give parameters: <ctl> <met_in> <met_in_type>"
+
40 " <met_out> <met_out_type>");
+
41
+
42 /* Allocate... */
+
43 ALLOC(clim, clim_t, 1);
+
44 ALLOC(met, met_t, 1);
+
45
+
46 /* Read control parameters... */
+
47 read_ctl(argv[1], argc, argv, &ctl);
+
48
+
49 /* Read climatological data... */
+
50 read_clim(&ctl, clim);
+
51
+
52 /* Read meteo data... */
+
53 ctl.met_type = atoi(argv[3]);
+
54 if (!read_met(argv[2], &ctl, clim, met))
+
55 ERRMSG("Cannot open file!");
+
56
+
57 /* Write meteo data... */
+
58 ctl.met_type = atoi(argv[5]);
+
59 write_met(argv[4], &ctl, met);
+
60
+
61 /* Free... */
+
62 free(clim);
+
63 free(met);
+
64
+
65 return EXIT_SUCCESS;
+
66}
+
int write_met(char *filename, ctl_t *ctl, met_t *met)
Read meteo data file.
Definition: libtrac.c:6769
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
int met_type
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:1115
+
Meteo data.
Definition: libtrac.h:1831
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__conv_8c.js b/doxygen/met__conv_8c.js new file mode 100644 index 0000000000..1e6d349e98 --- /dev/null +++ b/doxygen/met__conv_8c.js @@ -0,0 +1,4 @@ +var met__conv_8c = +[ + [ "main", "met__conv_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..ea705a5eeb --- /dev/null +++ b/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..da8aee551b --- /dev/null +++ b/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +7f47b815fc6a9220d9d181e167f40bd7 \ No newline at end of file diff --git a/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__conv_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e6df4fa49edb317867931e3a568cba018f0aeda3 GIT binary patch literal 178778 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

aOCoPr;&igPf`cKYsiW>yc6Nl(~S%XON0?*ZStq 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 JVucF<{{#0%XZQdB literal 0 HcmV?d00001 diff --git a/doxygen/met__conv_8c_source.html b/doxygen/met__conv_8c_source.html new file mode 100644 index 0000000000..f0b5cee292 --- /dev/null +++ b/doxygen/met__conv_8c_source.html @@ -0,0 +1,180 @@ + + + + + + + +MPTRAC: met_conv.c Source File + + + + + + + + + + + + + + +

+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
met_conv.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 ctl_t ctl;
+
32
+
33 clim_t *clim;
+
34
+
35 met_t *met;
+
36
+
37 /* Check arguments... */
+
38 if (argc < 6)
+
39 ERRMSG("Give parameters: <ctl> <met_in> <met_in_type>"
+
40 " <met_out> <met_out_type>");
+
41
+
42 /* Allocate... */
+
43 ALLOC(clim, clim_t, 1);
+
44 ALLOC(met, met_t, 1);
+
45
+
46 /* Read control parameters... */
+
47 read_ctl(argv[1], argc, argv, &ctl);
+
48
+
49 /* Read climatological data... */
+
50 read_clim(&ctl, clim);
+
51
+
52 /* Read meteo data... */
+
53 ctl.met_type = atoi(argv[3]);
+
54 if (!read_met(argv[2], &ctl, clim, met))
+
55 ERRMSG("Cannot open file!");
+
56
+
57 /* Write meteo data... */
+
58 ctl.met_type = atoi(argv[5]);
+
59 write_met(argv[4], &ctl, met);
+
60
+
61 /* Free... */
+
62 free(clim);
+
63 free(met);
+
64
+
65 return EXIT_SUCCESS;
+
66}
+
int write_met(char *filename, ctl_t *ctl, met_t *met)
Read meteo data file.
Definition: libtrac.c:6769
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
int main(int argc, char *argv[])
Definition: met_conv.c:27
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
int met_type
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:1115
+
Meteo data.
Definition: libtrac.h:1831
+
+
+ + + + diff --git a/doxygen/met__lapse_8c.html b/doxygen/met__lapse_8c.html new file mode 100644 index 0000000000..aa803a490f --- /dev/null +++ b/doxygen/met__lapse_8c.html @@ -0,0 +1,487 @@ + + + + + + + +MPTRAC: met_lapse.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_lapse.c File Reference
+
+
+ +

Calculate lapse rate statistics. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Macros

#define LAPSEMIN   -20.0
 Lapse rate minimum [K/km. More...
 
#define DLAPSE   0.1
 Lapse rate bin size [K/km]. More...
 
#define IDXMAX   400
 Maximum number of histogram bins. More...
 
+ + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Calculate lapse rate statistics.

+ +

Definition in file met_lapse.c.

+

Macro Definition Documentation

+ +

◆ LAPSEMIN

+ +
+
+ + + + +
#define LAPSEMIN   -20.0
+
+ +

Lapse rate minimum [K/km.

+ +

Definition at line 32 of file met_lapse.c.

+ +
+
+ +

◆ DLAPSE

+ +
+
+ + + + +
#define DLAPSE   0.1
+
+ +

Lapse rate bin size [K/km].

+ +

Definition at line 35 of file met_lapse.c.

+ +
+
+ +

◆ IDXMAX

+ +
+
+ + + + +
#define IDXMAX   400
+
+ +

Maximum number of histogram bins.

+ +

Definition at line 38 of file met_lapse.c.

+ +
+
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 44 of file met_lapse.c.

+
46 {
+
47
+
48 ctl_t ctl;
+
49
+
50 clim_t *clim;
+
51
+
52 met_t *met;
+
53
+
54 FILE *out;
+
55
+
56 static double p2[1000], t[1000], t2[1000], z[1000], z2[1000], lat_mean,
+
57 z_mean;
+
58
+
59 static int hist_max[1000], hist_min[1000], hist_mean[1000], hist_sig[1000],
+
60 nhist_max, nhist_min, nhist_mean, nhist_sig, np;
+
61
+
62 /* Allocate... */
+
63 ALLOC(clim, clim_t, 1);
+
64 ALLOC(met, met_t, 1);
+
65
+
66 /* Check arguments... */
+
67 if (argc < 4)
+
68 ERRMSG("Give parameters: <ctl> <lapse.tab> <met0> [ <met1> ... ]");
+
69
+
70 /* Read control parameters... */
+
71 read_ctl(argv[1], argc, argv, &ctl);
+
72 int dz = (int) scan_ctl(argv[1], argc, argv, "LAPSE_DZ", -1, "20", NULL);
+
73 double lat0 =
+
74 (int) scan_ctl(argv[1], argc, argv, "LAPSE_LAT0", -1, "-90", NULL);
+
75 double lat1 =
+
76 (int) scan_ctl(argv[1], argc, argv, "LAPSE_LAT1", -1, "90", NULL);
+
77 double z0 = (int) scan_ctl(argv[1], argc, argv, "LAPSE_Z0", -1, "0", NULL);
+
78 double z1 =
+
79 (int) scan_ctl(argv[1], argc, argv, "LAPSE_Z1", -1, "100", NULL);
+
80 int intpol =
+
81 (int) scan_ctl(argv[1], argc, argv, "LAPSE_INTPOL", -1, "1", NULL);
+
82
+
83 /* Read climatological data... */
+
84 read_clim(&ctl, clim);
+
85
+
86 /* Loop over files... */
+
87 for (int i = 3; i < argc; i++) {
+
88
+
89 /* Read meteorological data... */
+
90 if (!read_met(argv[i], &ctl, clim, met))
+
91 continue;
+
92
+
93 /* Get altitude and pressure profiles... */
+
94 for (int iz = 0; iz < met->np; iz++)
+
95 z[iz] = Z(met->p[iz]);
+
96 for (int iz = 0; iz <= 250; iz++) {
+
97 z2[iz] = 0.0 + 0.1 * iz;
+
98 p2[iz] = P(z2[iz]);
+
99 }
+
100
+
101 /* Loop over grid points... */
+
102 for (int ix = 0; ix < met->nx; ix++)
+
103 for (int iy = 0; iy < met->ny; iy++) {
+
104
+
105 /* Check latitude range... */
+
106 if (met->lat[iy] < lat0 || met->lat[iy] > lat1)
+
107 continue;
+
108
+
109 /* Interpolate temperature profile... */
+
110 for (int iz = 0; iz < met->np; iz++)
+
111 t[iz] = met->t[ix][iy][iz];
+
112 if (intpol == 1)
+
113 spline(z, t, met->np, z2, t2, 251, ctl.met_tropo_spline);
+
114 else
+
115 for (int iz = 0; iz <= 250; iz++) {
+
116 int idx = locate_irr(z, met->np, z2[iz]);
+
117 t2[iz] = LIN(z[idx], t[idx], z[idx + 1], t[idx + 1], z2[iz]);
+
118 }
+
119
+
120 /* Loop over vertical levels... */
+
121 for (int iz = 0; iz <= 250; iz++) {
+
122
+
123 /* Check height range... */
+
124 if (z2[iz] < z0 || z2[iz] > z1)
+
125 continue;
+
126
+
127 /* Check surface pressure... */
+
128 if (p2[iz] > met->ps[ix][iy])
+
129 continue;
+
130
+
131 /* Get mean latitude and height... */
+
132 lat_mean += met->lat[iy];
+
133 z_mean += z2[iz];
+
134 np++;
+
135
+
136 /* Get lapse rates within a vertical layer... */
+
137 int nlapse = 0;
+
138 double lapse_max = -1e99, lapse_min = 1e99, lapse_mean =
+
139 0, lapse_sig = 0;
+
140 for (int iz2 = iz + 1; iz2 <= iz + dz; iz2++) {
+
141 lapse_max =
+
142 GSL_MAX(LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]), lapse_max);
+
143 lapse_min =
+
144 GSL_MIN(LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]), lapse_min);
+
145 lapse_mean += LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]);
+
146 lapse_sig += SQR(LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]));
+
147 nlapse++;
+
148 }
+
149 lapse_mean /= nlapse;
+
150 lapse_sig = sqrt(GSL_MAX(lapse_sig / nlapse - SQR(lapse_mean), 0));
+
151
+
152 /* Get histograms... */
+
153 int idx = (int) ((lapse_max - LAPSEMIN) / DLAPSE);
+
154 if (idx >= 0 && idx < IDXMAX) {
+
155 hist_max[idx]++;
+
156 nhist_max++;
+
157 }
+
158
+
159 idx = (int) ((lapse_min - LAPSEMIN) / DLAPSE);
+
160 if (idx >= 0 && idx < IDXMAX) {
+
161 hist_min[idx]++;
+
162 nhist_min++;
+
163 }
+
164
+
165 idx = (int) ((lapse_mean - LAPSEMIN) / DLAPSE);
+
166 if (idx >= 0 && idx < IDXMAX) {
+
167 hist_mean[idx]++;
+
168 nhist_mean++;
+
169 }
+
170
+
171 idx = (int) ((lapse_sig - LAPSEMIN) / DLAPSE);
+
172 if (idx >= 0 && idx < IDXMAX) {
+
173 hist_sig[idx]++;
+
174 nhist_sig++;
+
175 }
+
176 }
+
177 }
+
178 }
+
179
+
180 /* Create output file... */
+
181 LOG(1, "Write lapse rate data: %s", argv[2]);
+
182 if (!(out = fopen(argv[2], "w")))
+
183 ERRMSG("Cannot create file!");
+
184
+
185 /* Write header... */
+
186 fprintf(out,
+
187 "# $1 = mean altitude [km]\n"
+
188 "# $2 = mean latitude [deg]\n"
+
189 "# $3 = lapse rate [K/km]\n"
+
190 "# $4 = counts of maxima per bin\n"
+
191 "# $5 = total number of maxima\n"
+
192 "# $6 = normalized frequency of maxima\n"
+
193 "# $7 = counts of minima per bin\n"
+
194 "# $8 = total number of minima\n"
+
195 "# $9 = normalized frequency of minima\n"
+
196 "# $10 = counts of means per bin\n"
+
197 "# $11 = total number of means\n"
+
198 "# $12 = normalized frequency of means\n"
+
199 "# $13 = counts of sigmas per bin\n"
+
200 "# $14 = total number of sigmas\n"
+
201 "# $15 = normalized frequency of sigmas\n\n");
+
202
+
203 /* Write data... */
+
204 double nmax_max = 0, nmax_min = 0, nmax_mean = 0, nmax_sig = 0;
+
205 for (int idx = 0; idx < IDXMAX; idx++) {
+
206 nmax_max = GSL_MAX(hist_max[idx], nmax_max);
+
207 nmax_min = GSL_MAX(hist_min[idx], nmax_min);
+
208 nmax_mean = GSL_MAX(hist_mean[idx], nmax_mean);
+
209 nmax_sig = GSL_MAX(hist_sig[idx], nmax_sig);
+
210 }
+
211 for (int idx = 0; idx < IDXMAX; idx++)
+
212 fprintf(out,
+
213 "%g %g %g %d %d %g %d %d %g %d %d %g %d %d %g\n",
+
214 z_mean / np, lat_mean / np, (idx + .5) * DLAPSE + LAPSEMIN,
+
215 hist_max[idx], nhist_max,
+
216 (double) hist_max[idx] / (double) nmax_max, hist_min[idx],
+
217 nhist_min, (double) hist_min[idx] / (double) nmax_min,
+
218 hist_mean[idx], nhist_mean,
+
219 (double) hist_mean[idx] / (double) nmax_mean, hist_sig[idx],
+
220 nhist_sig, (double) hist_sig[idx] / (double) nmax_sig);
+
221
+
222 /* Close file... */
+
223 fclose(out);
+
224
+
225 /* Free... */
+
226 free(clim);
+
227 free(met);
+
228
+
229 return EXIT_SUCCESS;
+
230}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
void spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
Spline interpolation.
Definition: libtrac.c:5338
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define LAPSE(p1, t1, p2, t2)
Calculate lapse rate between pressure levels.
Definition: libtrac.h:416
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
#define LAPSEMIN
Lapse rate minimum [K/km.
Definition: met_lapse.c:32
+
#define IDXMAX
Maximum number of histogram bins.
Definition: met_lapse.c:38
+
#define DLAPSE
Lapse rate bin size [K/km].
Definition: met_lapse.c:35
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
int met_tropo_spline
Tropopause interpolation method (0=linear, 1=spline).
Definition: libtrac.h:1188
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__lapse_8c.js b/doxygen/met__lapse_8c.js new file mode 100644 index 0000000000..6da777233d --- /dev/null +++ b/doxygen/met__lapse_8c.js @@ -0,0 +1,7 @@ +var met__lapse_8c = +[ + [ "LAPSEMIN", "met__lapse_8c.html#a27069898611a6a4b297781982df6a797", null ], + [ "DLAPSE", "met__lapse_8c.html#a634cf0f62ec764b71d39792e77c864aa", null ], + [ "IDXMAX", "met__lapse_8c.html#a28df7bf370f4ca686c3c5fb27aa7782f", null ], + [ "main", "met__lapse_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..83a3d0f764 --- /dev/null +++ b/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..d2983db8f9 --- /dev/null +++ b/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +1f36f48b429f13ee32d383dcb2c45adf \ No newline at end of file diff --git a/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__lapse_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa0d6fabbb2f62b52f3d7ad0be764ea5a41b6c9 GIT binary patch literal 164917 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�#A#!bN`AW|9Nkiw?CmJ*G8tQ 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ⅆ%)z);iR+jR$fuZ5* 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 + + + + + + +MPTRAC: met_lapse.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ + + + diff --git a/doxygen/met__map_8c.html b/doxygen/met__map_8c.html new file mode 100644 index 0000000000..fe68a68388 --- /dev/null +++ b/doxygen/met__map_8c.html @@ -0,0 +1,507 @@ + + + + + + + +MPTRAC: met_map.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_map.c File Reference
+
+
+ +

Extract map from meteorological data. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + + + + +

+Macros

#define NX   1441
 Maximum number of longitudes. More...
 
#define NY   721
 Maximum number of latitudes. More...
 
+ + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Extract map from meteorological data.

+ +

Definition in file met_map.c.

+

Macro Definition Documentation

+ +

◆ NX

+ +
+
+ + + + +
#define NX   1441
+
+ +

Maximum number of longitudes.

+ +

Definition at line 32 of file met_map.c.

+ +
+
+ +

◆ NY

+ +
+
+ + + + +
#define NY   721
+
+ +

Maximum number of latitudes.

+ +

Definition at line 35 of file met_map.c.

+ +
+
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 41 of file met_map.c.

+
43 {
+
44
+
45 ctl_t ctl;
+
46
+
47 clim_t *clim;
+
48
+
49 met_t *met;
+
50
+
51 FILE *out;
+
52
+
53 static double timem[NX][NY], p0, ps, psm[NX][NY], ts, tsm[NX][NY], zs,
+
54 zsm[NX][NY], us, usm[NX][NY], vs, vsm[NX][NY], lsm, lsmm[NX][NY],
+
55 sst, sstm[NX][NY], pbl, pblm[NX][NY], pt, ptm[NX][NY], t,
+
56 pm[NX][NY], tm[NX][NY], u, um[NX][NY], v, vm[NX][NY],
+
57 w, wm[NX][NY], h2o, h2om[NX][NY], h2ot, h2otm[NX][NY], o3, o3m[NX][NY],
+
58 hno3m[NX][NY], ohm[NX][NY], h2o2m[NX][NY], ho2m[NX][NY], o1dm[NX][NY],
+
59 tdewm[NX][NY], ticem[NX][NY],
+
60 tnatm[NX][NY], lwc, lwcm[NX][NY], iwc, iwcm[NX][NY], cc, ccm[NX][NY],
+
61 z, zm[NX][NY], pv, pvm[NX][NY], zt, ztm[NX][NY], tt, ttm[NX][NY],
+
62 pct, pctm[NX][NY], pcb, pcbm[NX][NY], cl, clm[NX][NY], plcl,
+
63 plclm[NX][NY], plfc, plfcm[NX][NY], pel, pelm[NX][NY], cape,
+
64 capem[NX][NY], cin, cinm[NX][NY], o3c, o3cm[NX][NY], rhm[NX][NY],
+
65 rhicem[NX][NY], theta, ptop, pbot, t0, lon, lon0, lon1, lons[NX], dlon,
+
66 lat, lat0, lat1, lats[NY], dlat, cw[3];
+
67
+
68 static int i, ix, iy, np[NX][NY], npc[NX][NY], npt[NX][NY], nx, ny, ci[3];
+
69
+
70 /* Allocate... */
+
71 ALLOC(clim, clim_t, 1);
+
72 ALLOC(met, met_t, 1);
+
73
+
74 /* Check arguments... */
+
75 if (argc < 4)
+
76 ERRMSG("Give parameters: <ctl> <map.tab> <met0> [ <met1> ... ]");
+
77
+
78 /* Read control parameters... */
+
79 read_ctl(argv[1], argc, argv, &ctl);
+
80 p0 = P(scan_ctl(argv[1], argc, argv, "MAP_Z0", -1, "10", NULL));
+
81 lon0 = scan_ctl(argv[1], argc, argv, "MAP_LON0", -1, "-180", NULL);
+
82 lon1 = scan_ctl(argv[1], argc, argv, "MAP_LON1", -1, "180", NULL);
+
83 dlon = scan_ctl(argv[1], argc, argv, "MAP_DLON", -1, "-999", NULL);
+
84 lat0 = scan_ctl(argv[1], argc, argv, "MAP_LAT0", -1, "-90", NULL);
+
85 lat1 = scan_ctl(argv[1], argc, argv, "MAP_LAT1", -1, "90", NULL);
+
86 dlat = scan_ctl(argv[1], argc, argv, "MAP_DLAT", -1, "-999", NULL);
+
87 theta = scan_ctl(argv[1], argc, argv, "MAP_THETA", -1, "-999", NULL);
+
88
+
89 /* Read climatological data... */
+
90 read_clim(&ctl, clim);
+
91
+
92 /* Loop over files... */
+
93 for (i = 3; i < argc; i++) {
+
94
+
95 /* Read meteorological data... */
+
96 if (!read_met(argv[i], &ctl, clim, met))
+
97 continue;
+
98
+
99 /* Set horizontal grid... */
+
100 if (dlon <= 0)
+
101 dlon = fabs(met->lon[1] - met->lon[0]);
+
102 if (dlat <= 0)
+
103 dlat = fabs(met->lat[1] - met->lat[0]);
+
104 if (lon0 < -360 && lon1 > 360) {
+
105 lon0 = gsl_stats_min(met->lon, 1, (size_t) met->nx);
+
106 lon1 = gsl_stats_max(met->lon, 1, (size_t) met->nx);
+
107 }
+
108 nx = ny = 0;
+
109 for (lon = lon0; lon <= lon1; lon += dlon) {
+
110 lons[nx] = lon;
+
111 if ((++nx) > NX)
+
112 ERRMSG("Too many longitudes!");
+
113 }
+
114 if (lat0 < -90 && lat1 > 90) {
+
115 lat0 = gsl_stats_min(met->lat, 1, (size_t) met->ny);
+
116 lat1 = gsl_stats_max(met->lat, 1, (size_t) met->ny);
+
117 }
+
118 for (lat = lat0; lat <= lat1; lat += dlat) {
+
119 lats[ny] = lat;
+
120 if ((++ny) > NY)
+
121 ERRMSG("Too many latitudes!");
+
122 }
+
123
+
124 /* Average... */
+
125 for (ix = 0; ix < nx; ix++)
+
126 for (iy = 0; iy < ny; iy++) {
+
127
+
128 /* Find pressure level for given theta level... */
+
129 if (theta > 0) {
+
130 ptop = met->p[met->np - 1];
+
131 pbot = met->p[0];
+
132 do {
+
133 p0 = 0.5 * (ptop + pbot);
+
134 intpol_met_space_3d(met, met->t, p0, lons[ix], lats[iy],
+
135 &t0, ci, cw, 1);
+
136 if (THETA(p0, t0) > theta)
+
137 ptop = p0;
+
138 else
+
139 pbot = p0;
+
140 } while (fabs(ptop - pbot) > 1e-5);
+
141 }
+
142
+
143 /* Interpolate meteo data... */
+
144 INTPOL_SPACE_ALL(p0, lons[ix], lats[iy]);
+
145
+
146 /* Averaging... */
+
147 timem[ix][iy] += met->time;
+
148 zm[ix][iy] += z;
+
149 pm[ix][iy] += p0;
+
150 tm[ix][iy] += t;
+
151 um[ix][iy] += u;
+
152 vm[ix][iy] += v;
+
153 wm[ix][iy] += w;
+
154 pvm[ix][iy] += pv;
+
155 h2om[ix][iy] += h2o;
+
156 o3m[ix][iy] += o3;
+
157 lwcm[ix][iy] += lwc;
+
158 iwcm[ix][iy] += iwc;
+
159 ccm[ix][iy] += cc;
+
160 psm[ix][iy] += ps;
+
161 tsm[ix][iy] += ts;
+
162 zsm[ix][iy] += zs;
+
163 usm[ix][iy] += us;
+
164 vsm[ix][iy] += vs;
+
165 lsmm[ix][iy] += lsm;
+
166 sstm[ix][iy] += sst;
+
167 pblm[ix][iy] += pbl;
+
168 pctm[ix][iy] += pct;
+
169 pcbm[ix][iy] += pcb;
+
170 clm[ix][iy] += cl;
+
171 if (gsl_finite(plfc) && gsl_finite(pel) && cape >= ctl.conv_cape
+
172 && (ctl.conv_cin <= 0 || cin < ctl.conv_cin)) {
+
173 plclm[ix][iy] += plcl;
+
174 plfcm[ix][iy] += plfc;
+
175 pelm[ix][iy] += pel;
+
176 capem[ix][iy] += cape;
+
177 cinm[ix][iy] += cin;
+
178 npc[ix][iy]++;
+
179 }
+
180 if (gsl_finite(pt)) {
+
181 ptm[ix][iy] += pt;
+
182 ztm[ix][iy] += zt;
+
183 ttm[ix][iy] += tt;
+
184 h2otm[ix][iy] += h2ot;
+
185 npt[ix][iy]++;
+
186 }
+
187 o3cm[ix][iy] += o3c;
+
188 hno3m[ix][iy] += clim_zm(&clim->hno3, met->time, lats[iy], p0);
+
189 tnatm[ix][iy] +=
+
190 nat_temperature(p0, h2o,
+
191 clim_zm(&clim->hno3, met->time, lats[iy], p0));
+
192 ohm[ix][iy] += clim_oh(&ctl, clim, met->time, lons[ix], lats[iy], p0);
+
193 h2o2m[ix][iy] += clim_zm(&clim->h2o2, met->time, lats[iy], p0);
+
194 ho2m[ix][iy] += clim_zm(&clim->ho2, met->time, lats[iy], p0);
+
195 o1dm[ix][iy] += clim_zm(&clim->o1d, met->time, lats[iy], p0);
+
196 rhm[ix][iy] += RH(p0, t, h2o);
+
197 rhicem[ix][iy] += RHICE(p0, t, h2o);
+
198 tdewm[ix][iy] += TDEW(p0, h2o);
+
199 ticem[ix][iy] += TICE(p0, h2o);
+
200 np[ix][iy]++;
+
201 }
+
202 }
+
203
+
204 /* Create output file... */
+
205 LOG(1, "Write meteorological data file: %s", argv[2]);
+
206 if (!(out = fopen(argv[2], "w")))
+
207 ERRMSG("Cannot create file!");
+
208
+
209 /* Write header... */
+ +
211
+
212 /* Write data... */
+
213 for (iy = 0; iy < ny; iy++) {
+
214 fprintf(out, "\n");
+
215 for (ix = 0; ix < nx; ix++)
+
216 fprintf(out,
+
217 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
218 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
219 " %g %g %g %g %g %g %g %g %g %g %g %g %d %d %d\n",
+
220 timem[ix][iy] / np[ix][iy], Z(pm[ix][iy] / np[ix][iy]),
+
221 lons[ix], lats[iy], pm[ix][iy] / np[ix][iy],
+
222 tm[ix][iy] / np[ix][iy], um[ix][iy] / np[ix][iy],
+
223 vm[ix][iy] / np[ix][iy], wm[ix][iy] / np[ix][iy],
+
224 h2om[ix][iy] / np[ix][iy], o3m[ix][iy] / np[ix][iy],
+
225 zm[ix][iy] / np[ix][iy], pvm[ix][iy] / np[ix][iy],
+
226 psm[ix][iy] / np[ix][iy], tsm[ix][iy] / np[ix][iy],
+
227 zsm[ix][iy] / np[ix][iy], usm[ix][iy] / np[ix][iy],
+
228 vsm[ix][iy] / np[ix][iy], lsmm[ix][iy] / np[ix][iy],
+
229 sstm[ix][iy] / np[ix][iy], ptm[ix][iy] / npt[ix][iy],
+
230 ztm[ix][iy] / npt[ix][iy], ttm[ix][iy] / npt[ix][iy],
+
231 h2otm[ix][iy] / npt[ix][iy], lwcm[ix][iy] / np[ix][iy],
+
232 iwcm[ix][iy] / np[ix][iy], ccm[ix][iy] / np[ix][iy],
+
233 clm[ix][iy] / np[ix][iy], pctm[ix][iy] / np[ix][iy],
+
234 pcbm[ix][iy] / np[ix][iy], plclm[ix][iy] / npc[ix][iy],
+
235 plfcm[ix][iy] / npc[ix][iy], pelm[ix][iy] / npc[ix][iy],
+
236 capem[ix][iy] / npc[ix][iy], cinm[ix][iy] / npc[ix][iy],
+
237 rhm[ix][iy] / np[ix][iy], rhicem[ix][iy] / np[ix][iy],
+
238 tdewm[ix][iy] / np[ix][iy], ticem[ix][iy] / np[ix][iy],
+
239 tnatm[ix][iy] / np[ix][iy], hno3m[ix][iy] / np[ix][iy],
+
240 ohm[ix][iy] / np[ix][iy], h2o2m[ix][iy] / np[ix][iy],
+
241 ho2m[ix][iy] / np[ix][iy], o1dm[ix][iy] / np[ix][iy],
+
242 pblm[ix][iy] / np[ix][iy],
+
243 np[ix][iy], npt[ix][iy], npc[ix][iy]);
+
244 }
+
245
+
246 /* Close file... */
+
247 fclose(out);
+
248
+
249 /* Free... */
+
250 free(clim);
+
251 free(met);
+
252
+
253 return EXIT_SUCCESS;
+
254}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define INTPOL_SPACE_ALL(p, lon, lat)
Spatial interpolation of all meteo data.
Definition: libtrac.h:344
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define THETA(p, t)
Compute potential temperature.
Definition: libtrac.h:639
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
#define NX
Maximum number of longitudes.
Definition: met_map.c:32
+
#define NY
Maximum number of latitudes.
Definition: met_map.c:35
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__map_8c.js b/doxygen/met__map_8c.js new file mode 100644 index 0000000000..f5ca395eaa --- /dev/null +++ b/doxygen/met__map_8c.js @@ -0,0 +1,6 @@ +var met__map_8c = +[ + [ "NX", "met__map_8c.html#a4a9d32ff035c82119003134767948ebf", null ], + [ "NY", "met__map_8c.html#a652e87ecc9140879666ae9d6bf4ca893", null ], + [ "main", "met__map_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..3776235172 --- /dev/null +++ b/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..fcff7a5203 --- /dev/null +++ b/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +8f4f1eadf91c02db7c6ff96e6db5f9a7 \ No newline at end of file diff --git a/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__map_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2bf7346a1a63a7987931e3378cbee3823d4bee5f GIT binary patch literal 201655 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∋52}?*GtF*f<7V#kTMk|9h_QavU=GPy-EL`_ zTFps6Yws`z;!CNC7T9hA#8)E9pu0ayQ>)&Kx=?3W3FhdqEW=dmp1yoM+xtG{;(b*W z9tTHx@5`M2+`jdu=H?*jk9vKUrg)#Rqc$hqUxS3uU!biX$3hxhT@9BLL{}i(TuT|{ z<>(TTdcWS{UYGb?S`zcPsqw31WRI@%`SQOJ^zJFO==IFZTyS)tlN~KOM94rxc|yG# zCPtr{CMIHFR|X2SxsX-vDW9YwM2ifA7)FcMBrd8_gx*3;A&&D1=#VEh7gxl5v!=t* zOKKACcVCpV7$9I=T=)e=L|!};@JNIY!Xfh`0Ez;u9AY>9cd*<_9Ta1o!bpDCt0-XS z&sNaHkyu#l+1`vn5+iJ8K)rL)!?@q$k`u>u)!dji_)sQG2E0Ec% z{q({DLvlchN2Vt`-2bwI3UG>D;(-B*L-Q};Vi(FVcefs~ZWSNL0N*zdN z3T$TqKRd_f6o$WjCwLy#=|sUwCt9B_qS%`jhln}zdd{NFV{NB<_tc0@sl5utga;(Bg<-{{OdsUUIg6ev)AMZ zVI@kq2YALa*bySOABi=to3Suj`>nTc^Uz8EK9`bWvKgr&Sf8~L4NXCWD9fKiFQIFn zd&%6XM#Bv56P3kx;SyY zIJIDtjmKP0b)Qj#`%07oA}0DCLWHA{jV!T@Ceg1Q(d1W1dkPrFb^QXdqhewhf?k|0 z-G#AJf%2jEpXCqlj$0(}?xHTm8=eg``a2_XFW#eY|9jB^+GR(j9=k96&TSn^8Bp%y zs*YFf-nJPfqvbpR#b15Cjof>%-djv2J}w(Ah>o6ieA?v29~8tqPszppn3-NRZ>i%e<|crzV%U zClnW#y?bzxdUAr-aFThCA$Dp>F7(5{urRvx@<(LghO3&p0e35v_pN|+ zWbO*Bx-kqB6EVcML|b5`_s2PlxG5qLf(M^OS*zMRH&LoEdyn%K1n>qt$WMO;X~VR zoO1u`1sHd!H|Wg}YXbT0HXPQW0;}eod0PipTguM2XcPw0AadQh%ko8qhLQUvVMJ^! zIuBlE6+#ZU4trZI3CM3@&Zs*W!-P)#tEF7ECkTg#WBPL3P_NN18A=OJKtcswSoSe0 zjHaumCg6L{@>z{utggPz7@?>@dKW?zgdb5*1f>bCX7%TeH~5N1C-{&+{`(?NyR*kH z;p4*rA!j;Og*jBDFTG|d8fv`K8gcvVNIy`g5RS5=T7hLAVkCsh8smXQ{$;T7+8Az} z@rrd5z=1K5F@-xjwFvTsL2{Fgo!#^Yl7-MkiTv9Os?Ej4ESKBS5kOWLNJW-1CM!Sw znf1q^r;pm%C6bI~0CAQ&uw6_AFZ8~A{xG}s5W~%zqEJMkvL4F)-!VXqZp=^dS!Q=kL@@v&si6)F4cT|T2(5nJ^$@;C?0ZV z%fR}f&)!?C$;$Mflip17$r|eX15e;m3&GSkpQ#H-5h4`Jm_qh-M zwv`o8f#J4dGPf|h&xzBY#%CD@cUiU;Xhq9GH`a(0Rd=TX%RFN$?(`yD2I{&(yq z8c$v(5aet4N`WBvZ)(UKY}zq|^YiXR?8eBOlZ}W1jtZx&xcEcWoU^{K!&nb_9io9p zU=yCufY`!{EP`_YMMnfL8ntfz^(zRp4MIi&Jqz@Yke~%gbQnaWhE$m zRvoeP2Cwz#v1vqA2AT^{Ya1`Q2`h9GvzdzZ-kQOVZ%lax{~cyzbKiPa<8B}N`t{K2 z^KlTN_&@`&sc<~_qf92`gYskP_eZGScZXYw;-P@@v%iW3qH07{wP&e$M6Dh>q=V?p zXL#O#`lhBeowf}a{4dzw4rJf+)4zWIp6~(7#mCJ_MWDsVD_um0+r|u^Vps1U*nNY| zDxakcMhYaPU`+j+A;Y3K4dJmE%u%$kB>`a!bQX{6 z%VQ!oBP6JqcX_dJap5Z}D%QBH{cL%QTkU;pS9Avdwg6g=FvIZh@BoRwn%X=&-cIN8 zX@~W8UhRQf_L0}o#_v*-HWU;Tqd$Eaa1Y-T7H)ia4wc#*{aUwPpJnxPQGuf>wm(zV zWMUyKZN1w`2>4n}ElHE9rCYV52v@Jg{7(u_%Q+>ZOM@Dh0Km!nTeVLRw>y);#^Ybl zC>&tvB_bb6hhUQCDremRmCy{tvv-8-Z$J#`%MiO;q~9qJx;B)D%Mcs(`y=fjgny0u zHkcw3*Gv83_62nd#ogVVK`r-3xz(W4@HN!Wd0qZsQ%OdC22r=}`szF|Bt*DO|JgGn z&{DM%1qB2gTwQ-PHN6Ij459US9dF4)Xu%J=OAVhqc>-cwSp&j<5zMgs9G-B^@dYqL zec(bLem)D$6lE1>cZD0KzW&nm@&k<|T0!qeTCqbryUv4H2KfQ^O@2-PxgXE#6>=C$ zu4IXyZEtR-u5W^4BO7$eT7%-z^Z~3GBYvB!N(k`e^u*G7x3g*Uj-R(aQ)EBS4Jj`tS_Cvi&`qo@r)<>AvtHHtoLY7kg@Yuuzhy9EIi(b`_U*QDOQc}-~N1Zn(xZqVf z-S00){CawN0)v9gChZ*@*g#kL2?%`M0vrw<>gL|w-bnA>y-PdSDjr?^nhLrXT#$4} z8{=ZxGOgzb%p7R00Apqmr%HlHU1RJ#>sj6lgrvb3|O%g6?=2iD$C24 zK(pd~`V{fG2=N-UC8_hH%^M}(zdxp+n9uXwnr%!sX*4%Cr>3P{?GE=q1}P_7GK#D# zi7Om5C&oCj7$ztc8~T&BNRpd9xB~*~XR}UXaY@>~{81mfnL0@|wTDn?Ox#=Uj*Vm# zfBQHf`FSbgu4oE~e_^f>Mk5=%GO3c@7O9`DTUmXu!Iv%>HL$x&1Y1uoEus|2X*ZSd z`7<>qF$T!&S+npR4m9r!ewQ|aShDXAmnudxyf+#Xg*V2MU{vl@* z!W04HK^*1v7fN!U_5CR5EnqoTGWVE`Kr-VEssQ=`KIN(AV9F)4Kb6+>dwEb2OL2zu2; zlESRV8))A!-n8_4hWfG4BPy}GU|ESY>x|^^yLcMLM8q7}PW}8f9k<_wBadWcV2S5G z??ckgWvfZppXHqNBZn=$A^-5#(#SPQ%8o}nFZeM?{GO-sA931kNCn)9wd(tE<7q92 z=gjEqTX%C|<|B*Xfg8+IrF|0+z|O;yqfvNWm`8?(*8=sOZ((nShSU%*aC3iwkOGrq zz}%eC#>NI47gx8V!VS|Rou!2ZQ8+gm8X7~nyN$cUispbHaTOF4dN1@qvpw0FFYtu= zl=(v;AKtdoYlL-gXTG`jqE0jjt=if!v=00J{pL7k5dn|)aq8FtaY;$RmF|y#x@yp+ zVvA^9MMs)q*4~3eG7w_*T~lPY{(CcX;4HtJKD@w+PjvPl?61g z4C-c~Zam~fg4%}kwzjqqxDJ=SZkE$sfvbUt(-IYn-2Bt<-!xByY!y&)XkNcI?D*C# zN+(`~7fQLkx15Ynu0WPw(H4Qq=WQs{cIn82`wx}(sb=rT@4w0ba<0tO--X;)=H~{A zD<(N+Q|~shm6gu3sEP`D3=)kDk$?^$fJ7BFF-{rRzuMbF;kt>bY6xnF3sck4Syw_L zc&i%uhAC$6yNLQWpzYwIG`K;FC;AHDX{fA})O<6RW?z*fe#6DLbDK&6SY3$tG4P@Q zgKKKDcnCPGE8sKbQ!eWCi8^?s+^-q}Q0{d3Qm-Rw(YxCnVVE;5;jObac+@34@%$tiiQBwclaq$G${DQ_^UN z$`B6Kgu~w$T0{ToTa1h!2{5q+)(*gP^jt})XWtntjbI0Zn)-UN|LRa4ir=*_rCDdg zgvbkU>@;3^y$6V^RPTlSfY~X_X7nsq4Y~Hdf}{KO)h$ZO1@Hn;ad2$qZBtP#_OBo2 z4)fu=G7MSMY4)U`;?6X67t&duD*uAiTcj(Metfyq! zz*NtV)8sA0rU}0=!++kBr;6iqmWKtSh#hZX7+TL(RhfdR=1u&lAt-k}$Fs+o0N+pD zK9(&|^H`kU0If|mTSgoFpt3m%hu<39VMfaxBfa(HO%Wuhy%*@u3N=h#M0;Y-Z(V)I zyCsT;Yi^!+ZHPrU*Yz{V|C`S#J7_+DWQVM|WaF=XfgMGe{|h!v*hLWj^A526yn9&v z;Q{m4{k5D_r~28;bF2j6Yivf%vlmuYZ*nXY?_j#L_OZDyj>*39CqHOwee87ZMu~&t zs8>(i2^I^a7zVRvzrx~pc}>YSDs6Qc*UyQ$UK*^eh=B#`h0&+qI=)g_$}g<6iLtN< z?qJ0+!UQ!(M!sCE3QrSqeI;$YTUVZ0AE)tklH=e= zf-eUIld|u=doQmSZ(X&`KIPR~?QG03?`{As;Wg+G`@3x{Rn-+OV`FTSzG0n>>kD6b zFZ`*}dWVN&nRUM}dDap~5Sg3Hv$K1KFD*U$@KJHelN?$8N*McjP>LU;2wall;AD-7 zjFxO|I3V*9%vED;Xd2vydKtn-9ls?@KaR0m?MOvoGqv^6;(UF$EJwHUO#ALN+&*2q zMgqd%S&8tw>|pnD@$Tw!a=*S|Z@=xM02B`gZ0b;2+socOIgz}5TW!AnSRib}_~!G? z?GS9I>`#Goa_)Z2GH8>j+GWC%{vjaFB7sQ)s_0%TOpOr{$Z+j}vZ^t!Nf}7j@&6e< z(TaZ_9gBsg{44k-ZuA^UO46E6;~e~^5VD;ZGKP`^%+Aft%yh3D(N^%!%Yg>v@;mJ8 z$LZeRg*gx0M)ZZReZOD-My&_A6TA}|C$R{tXJ!?s5TQQrr^m0r*5^`V5x;$LJnrXx z&fzqB8(|g2LqW)Z$Wdfw*d*r{WtULmS%4zRqw}&$I2~pw}Wq06*RZ1aN_BkPY(V zwSKYizN}pV7?r@kqY!D{;!FxQ0`N2A-oGyj#lcd5c+AWZo$;)y4L+W5>!wXy!K;8( zmA}X(TJ%hS10DC_Lm0AI)=WxXo`#o~P*zs$Kn#6+{p3$qCyWfD<5Nm$rbC#Xj* zw7h*eRTYgv!u@I3nuyoo5m?MA85qLAlw4vr&5w?Oar!sEI6>H7$i8m(4x&eZkI!-L z#|^;UW8ZB_nn8Dky6#ksYj`jQ$;#JjFgLJy>=-csW&$W_IZ{BRTWR;JZ)Yvp`fz(T z9gb2T7}LR!KnRfI>gq~dTpU67ptO*YkpYEDVF1`cFq@^eNmzPH65u)+{~MP^oEaFL zH=sqqMi-h`5O$9{;I{_o4PdAhFd$&I61Pnqpt6a!hR}{-4DNoAy&pb(`V^WGz^_3C z#ZWTvhE!WWspSr&D>Ajh-4(?m6L`eI@d3<09H#Bqam>1{V6H*EcaMsbGX|g`xRiMv z7jD0PjTkBg@G^^GLl+>iD*tOCa=#M_*?5-ascPrIz(DK=58_N3>FMbatsaQ}j=w|n zVB=up;8*|v%eSRl?PS)ICK#TcPCohF76HpsgnW}=?b_wtAmAwOJz)9)g!~=>i^Jhx zbwtw&pi?9;3vozBKAZ=G2*_1Y;D`s<>2Y;+ZjX3)zf{%|+(Rc4Oe=OFs zV-rXY$oBsyPsi;?;8_B+S?YCY4Z)8513-Bqm}qu)cZUjf2}npt?%%)fw82>0NKtLO z?|Oxas;u^Vhax%)v<#z{FS}qJ%UE{3JU!XXy9kfAXM5+HLm-LGAFK^toUIps&NeIR z-(Fg30jEGH*x{|$L9gLE(gbn?QiX(!jLb+c@Z)E4a&j|`yfD+#EnuAoThoXRDunGn z2n`>ss`jtCD6#~-4t_K@2Y`*pV)KdZ1Sf2xsEZ3H9E>ch!7tT+^Z$ogb=mUw^3a{j&aWM7R9q_y-V!Iovk1zyWr$5YCD)SwV_n z_@v1U$GezG`&%IJ_WfT3hLC??Q8El0{g6P{x*sd^97Kt-;M_P?!!%e(2T;DiE7A&m zGTPr?5)nrP!x=aAwg(`ARpYiPlgMF~t5HadI5|Imz5)N0>7=>cBqBfxd{%z)LgLq7#J8pvs?%WT)V@XhNWQgP=FE$oC^>k=Aoj~ z)Y%yh4LNi04(JDR-tdQW3&g+7W7insb~`8REo~X!)2AkOc2`}!>J0eyjhAjCI~2EW z-J0<`-xTnTf@8hZ^S?8J;62(uu7I#xf+jKk?f; z2jiG>zB*bCzG&z|_vk3kq<0TO`T!Fjfe|G|*j;)w@z+l{I68=Vbnu|(D-oCW2z!t&Ft0k<;B;fb*B@-hBDn-jWLbvM!+c+J7Trqau+u>^%==t+$iE0n~WF9il!Grw52EoBdW)b zWjhCe*d;;5T6kaYKM8gXPv7?BYXzhv%Sq3gPQbR3+-=VDN#;n(lcB!UV77$Y@_APi7;{{k-&6&cqz zgJuJ#{gwJv12e6%6-;Sqtk)aG9Dvmxz3{xM0!#^; z;vZzK=|F7Ce?fG&o#h7rN(|~(EM+?NXBOa)YmKmpf)0$XZf6!uvf^l#usbv(-v~}S z0X#zr2Upd8oo&6r^Optm$6G}Ett9UIb(e2c)UN$PKgfo?xu5w7E0ausZE0`WNxU1hY8c4Ge&_bK#DsP@dufvAh&$5(FjE&m^QMWma#YwulWa=G+X~Oh&_m)28o+LrZ z4>F+V#216&g%M^|N~&&Y#nHJXJjrUOJicwMcKpgl^2`&sUzVy73Wwu@7nxwkj~~yv z57!4_2k1z{=jM{TQoY}U!C(OF5n$qy%h%wFiB$h%YWgQMTy|lkux0fD2CyUT$%d`& zDTUOqPax7MUdm-DtJaj`WJ%O_=PGZec`turo6gX!OPK0cUjhjsl37<_uanig+V?3= zDkg(Q`6IR+Mk0P{@f#obkSTkiO8tO|w?$ES^9Bdj9jLaj;vwJoL1I4!Ee1*w5njn_ zgU1VhYhH2NTC>~g5d5qA8)N|aYHe-358mKag;#!1S{xf&Wi6{Q{>2P!R>f!_?J4CA z>_hbBYutdg262hj42}G68rpBVJi&~Ng(y~a#$Enuk7i|oK9T3~3OP`Ka0W{~3v_RM z^ZU}DOC;P7fOlIIj|~oWnv{ZHOCahxINHQlq(uZJB$7n=nySDz1x362goGUjYyN%J z`wu6|^M1t}x~&#gruheO>1@NjsrvKAY8s$135l^F z>1GXDrLWOaiAfqSEH2E^0d;N;#j#~$_pGOo6-6`=-2GJ$L*(+v-nz>jo6Ac5ye4gP3u;C<5M>Q5L%p|V-){#P7xTF|_FG`Y+XOf|( z?l6(R0vE0wC4PhG&;7YzqzQnA3Z3shZk8G{9aNN5i_ktv3qBAi0tp}5uXu8V2dI5f zybhT4JO7A^%l}E`cQFe^Sf)u^(cZA;WVIL9g9@DpgI?9xfL@#LbH1qnaP_TDVTTUK=`6Sd zKp#`d`=E|cr`lf$?#ht$k`wX|g%1rKtUkE?{kz8V%tx=f-sY1&9hv{}T2ZUKJwi6# zZs%xH_=)RRtkTls*htNnK_M26Q=cTVB(nNVeGSXLVA$C)ODi1Zc)7}QCXHU>o4AQwFW;+s}pm(eDd?XJLAby1Pj3peRzz4{oLT||3)(t8M0(Gs=FpXJgiIiZvWrKL)*_3F z)z}G>L%mmK$+>E#wR(CI!9_}n z96iibRJSDFSvK!3UWbH)+#}(>-B)+&?sI)vl+)uB9&Z6j^6&6g%F|cX=y0|&IPy@Q_%=+ z{q>Q;X5g|g!qn81l#I;HcDKfji*qihqmToqm6Ml8G|mG0^s%m8t-nKI5Em50p3D=~ zJYId~T)YD^X98PBz|G%**ilf)Hb68~Hk^K;y^HB13XNdb^?bu+Jh|XTdBrnR!hG`T z6gqc9p*PK8p(P$6Q-8M;eE#wAYe6X{qlO1)1^fX;?d%$T9r+aAXduB*=MfwH zBJX*1aT(AUbb@_#mBGtb_{`8SK9=!r-xqmT7ncv$5|*57=5mn1j*DNh1h(r{Zx_g$ zCXS8W1{C?zB3*rDzc(N0_bu1Mg9GSd&3CHlg0l`yyAjYwqw9Ay{#G?-tG{GkP9o}x zd6>vmd}QzVI0tkM`ZB`okhjuKjIHY*yzsbr;BX$g#FJYSqs zy8G%4as(92zjx3FVRQ6p`IH3RivrlzT%bK&QqH;frysr(;*WxqlxZZHX$sldSq(4$ zNRDhg|Hh2(+vnkt0|ny`!A#XXR(ce}tSi15>S=&5)1#w{=MS4Ff1DZRlZl~gT5OAw z213f$bPNpMWA}R7>v(5g4EXhJ>L{wd(a{{}vq8j^ldFd5mshXY9zOJI>S7Y!+M;6P zVMU_uRjRa9wtx3-Px-4_29Hj15cc18GJlHaVD(mD%h&Yg@N~M%#N3T!IsBC&M^Uk9 zyxOyf5N2B(eoL{p`1I6*mPOx7eDI4fhtJ7lG69dTZgm2M2K8Q`IUqXZ4H|rY7wT4m zeF_f>V%;AWZ8(V`aY@N|c{4`=yHzeR5&>~X0#ceqPs$4@8G??&x-1A6HG*G+J{7e9`Ww@w~MVfiNTW5GuI@qCPNo^LJJV5hCb})P~KDcG7w(4 zeY_ScZX%;6a2Gy#@W9i#qi6Kj>-bSqjeP{5j?nY3q_lCPT zIX~?^+0`Adbw_vo8>8SGARw2o4qrKt+?DJen#>abouLfSL=1iz*{`I`l7p6s!LHZysTQ00DJ(e5|Nl_@07<_wS`9%C&#Ix?yv=UfgEghD%P*&HW%kV!vk+ zzI7uhXFs$~5(-UDELLT>YaBKse(-j=lrfD>I=(Q8k9rTwUup+YN!pb-%;QW{8j5$u zsS^s;n57XVq)rkN6Py24-x)MzjJ0@l$NDa(<8MvZLQVk8ge+JC*0M#xTfnv%j zEjPsBnE4cgI0jr>I@WE!ccHM(tgG>2wxM)m<`TcPHTYn?GB}QTwbXVJ`95xiwIrTs zC?_=B(PLtE(y6s;A)X8Ykdq2@SAR{{HeDR3VkM3W1dNZznhk!Tc=(k2^;dOSHoprE zp;OZbHltoRxVXh`&?oPaL&9@&ZNim)WF!cb*TDbINi8T)9J*ld8u|`@*jo<&N=iHW z6+%)r?f~>9`mssP#Wr#*BMY8@(|s&lGP1&dV>J)wUmg4@eFMDF(Umm#?c0nAaPW|e zgx!q(ny2cnQu2u%##7m(^MvLE2BLh{Ao**OBg-4-A z%eF6=EuUpgW#F%YFey?P9a-TRAEj3H=yY0r)%t8ePdAX%HKCv#psdL}6u=1k#) z3((Nt>tu&0-IqI_UX`EC#qvqTVyOGhp>ONiVa~}W4J@V@$Sux21w! zhq?(zasHOp$0feCST>`Niy8ZKmHF;qSc@ie4`*)|V^dCpJGiGn`<#fU2s(l*H4x+A z0-l<|CP{u)X6_8WjECU_$MEwLXhRe>ov!%^eymv0pm%GNmC�CzB!CYAuN?YU&)8 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 literal 0 HcmV?d00001 diff --git a/doxygen/met__map_8c_source.html b/doxygen/met__map_8c_source.html new file mode 100644 index 0000000000..bde0a6b99b --- /dev/null +++ b/doxygen/met__map_8c_source.html @@ -0,0 +1,395 @@ + + + + + + + +MPTRAC: met_map.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ + + + diff --git a/doxygen/met__prof_8c.html b/doxygen/met__prof_8c.html new file mode 100644 index 0000000000..11b0d74e9e --- /dev/null +++ b/doxygen/met__prof_8c.html @@ -0,0 +1,458 @@ + + + + + + + +MPTRAC: met_prof.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_prof.c File Reference
+
+
+ +

Extract vertical profile from meteorological data. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + +

+Macros

#define NZ   1000
 Maximum number of altitudes. More...
 
+ + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Extract vertical profile from meteorological data.

+ +

Definition in file met_prof.c.

+

Macro Definition Documentation

+ +

◆ NZ

+ +
+
+ + + + +
#define NZ   1000
+
+ +

Maximum number of altitudes.

+ +

Definition at line 32 of file met_prof.c.

+ +
+
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 38 of file met_prof.c.

+
40 {
+
41
+
42 ctl_t ctl;
+
43
+
44 clim_t *clim;
+
45
+
46 met_t *met;
+
47
+
48 FILE *out;
+
49
+
50 static double timem[NZ], z, z0, z1, dz, lon, lon0, lon1, dlon, lonm[NZ],
+
51 lat, lat0, lat1, dlat, latm[NZ], t, tm[NZ], u, um[NZ], v, vm[NZ], w,
+
52 wm[NZ], h2o, h2om[NZ], h2ot, h2otm[NZ], o3, o3m[NZ], lwc, lwcm[NZ],
+
53 iwc, iwcm[NZ], cc, ccm[NZ], ps, psm[NZ], ts, tsm[NZ], zs, zsm[NZ],
+
54 us, usm[NZ], vs, vsm[NZ], lsm, lsmm[NZ], sst, sstm[NZ], pbl, pblm[NZ],
+
55 pt, ptm[NZ], pct, pctm[NZ], pcb, pcbm[NZ], cl, clm[NZ], plcl, plclm[NZ],
+
56 plfc, plfcm[NZ], pel, pelm[NZ], cape, capem[NZ], cin, cinm[NZ],
+
57 o3c, o3cm[NZ], tt, ttm[NZ], zm[NZ], zt, ztm[NZ], pv, pvm[NZ], plev[NZ],
+
58 rhm[NZ], rhicem[NZ], tdewm[NZ], ticem[NZ], tnatm[NZ], hno3m[NZ],
+
59 ohm[NZ], h2o2m[NZ], ho2m[NZ], o1dm[NZ], cw[3];
+
60
+
61 static int i, iz, np[NZ], npc[NZ], npt[NZ], nz, ci[3];
+
62
+
63 /* Allocate... */
+
64 ALLOC(clim, clim_t, 1);
+
65 ALLOC(met, met_t, 1);
+
66
+
67 /* Check arguments... */
+
68 if (argc < 4)
+
69 ERRMSG("Give parameters: <ctl> <prof.tab> <met0> [ <met1> ... ]");
+
70
+
71 /* Read control parameters... */
+
72 read_ctl(argv[1], argc, argv, &ctl);
+
73 z0 = scan_ctl(argv[1], argc, argv, "PROF_Z0", -1, "-999", NULL);
+
74 z1 = scan_ctl(argv[1], argc, argv, "PROF_Z1", -1, "-999", NULL);
+
75 dz = scan_ctl(argv[1], argc, argv, "PROF_DZ", -1, "-999", NULL);
+
76 lon0 = scan_ctl(argv[1], argc, argv, "PROF_LON0", -1, "0", NULL);
+
77 lon1 = scan_ctl(argv[1], argc, argv, "PROF_LON1", -1, "0", NULL);
+
78 dlon = scan_ctl(argv[1], argc, argv, "PROF_DLON", -1, "-999", NULL);
+
79 lat0 = scan_ctl(argv[1], argc, argv, "PROF_LAT0", -1, "0", NULL);
+
80 lat1 = scan_ctl(argv[1], argc, argv, "PROF_LAT1", -1, "0", NULL);
+
81 dlat = scan_ctl(argv[1], argc, argv, "PROF_DLAT", -1, "-999", NULL);
+
82
+
83 /* Read climatological data... */
+
84 read_clim(&ctl, clim);
+
85
+
86 /* Loop over input files... */
+
87 for (i = 3; i < argc; i++) {
+
88
+
89 /* Read meteorological data... */
+
90 if (!read_met(argv[i], &ctl, clim, met))
+
91 continue;
+
92
+
93 /* Set vertical grid... */
+
94 if (z0 < 0)
+
95 z0 = Z(met->p[0]);
+
96 if (z1 < 0)
+
97 z1 = Z(met->p[met->np - 1]);
+
98 nz = 0;
+
99 if (dz < 0) {
+
100 for (iz = 0; iz < met->np; iz++)
+
101 if (Z(met->p[iz]) >= z0 && Z(met->p[iz]) <= z1) {
+
102 plev[nz] = met->p[iz];
+
103 if ((++nz) > NZ)
+
104 ERRMSG("Too many pressure levels!");
+
105 }
+
106 } else
+
107 for (z = z0; z <= z1; z += dz) {
+
108 plev[nz] = P(z);
+
109 if ((++nz) > NZ)
+
110 ERRMSG("Too many pressure levels!");
+
111 }
+
112
+
113 /* Set horizontal grid... */
+
114 if (dlon <= 0)
+
115 dlon = fabs(met->lon[1] - met->lon[0]);
+
116 if (dlat <= 0)
+
117 dlat = fabs(met->lat[1] - met->lat[0]);
+
118
+
119 /* Average... */
+
120 for (iz = 0; iz < nz; iz++)
+
121 for (lon = lon0; lon <= lon1; lon += dlon)
+
122 for (lat = lat0; lat <= lat1; lat += dlat) {
+
123
+
124 /* Interpolate meteo data... */
+
125 INTPOL_SPACE_ALL(plev[iz], lon, lat);
+
126
+
127 /* Averaging... */
+
128 if (gsl_finite(t) && gsl_finite(u)
+
129 && gsl_finite(v) && gsl_finite(w)) {
+
130 timem[iz] += met->time;
+
131 lonm[iz] += lon;
+
132 latm[iz] += lat;
+
133 zm[iz] += z;
+
134 tm[iz] += t;
+
135 um[iz] += u;
+
136 vm[iz] += v;
+
137 wm[iz] += w;
+
138 pvm[iz] += pv;
+
139 h2om[iz] += h2o;
+
140 o3m[iz] += o3;
+
141 lwcm[iz] += lwc;
+
142 iwcm[iz] += iwc;
+
143 ccm[iz] += cc;
+
144 psm[iz] += ps;
+
145 tsm[iz] += ts;
+
146 zsm[iz] += zs;
+
147 usm[iz] += us;
+
148 vsm[iz] += vs;
+
149 lsmm[iz] += lsm;
+
150 sstm[iz] += sst;
+
151 pblm[iz] += pbl;
+
152 pctm[iz] += pct;
+
153 pcbm[iz] += pcb;
+
154 clm[iz] += cl;
+
155 if (gsl_finite(plfc) && gsl_finite(pel) && cape >= ctl.conv_cape
+
156 && (ctl.conv_cin <= 0 || cin < ctl.conv_cin)) {
+
157 plclm[iz] += plcl;
+
158 plfcm[iz] += plfc;
+
159 pelm[iz] += pel;
+
160 capem[iz] += cape;
+
161 cinm[iz] += cin;
+
162 npc[iz]++;
+
163 }
+
164 if (gsl_finite(pt)) {
+
165 ptm[iz] += pt;
+
166 ztm[iz] += zt;
+
167 ttm[iz] += tt;
+
168 h2otm[iz] += h2ot;
+
169 npt[iz]++;
+
170 }
+
171 o3cm[iz] += o3c;
+
172 rhm[iz] += RH(plev[iz], t, h2o);
+
173 rhicem[iz] += RHICE(plev[iz], t, h2o);
+
174 tdewm[iz] += TDEW(plev[iz], h2o);
+
175 ticem[iz] += TICE(plev[iz], h2o);
+
176 hno3m[iz] += clim_zm(&clim->hno3, met->time, lat, plev[iz]);
+
177 tnatm[iz] +=
+
178 nat_temperature(plev[iz], h2o,
+
179 clim_zm(&clim->hno3, met->time, lat, plev[iz]));
+
180 ohm[iz] += clim_oh(&ctl, clim, met->time, lon, lat, plev[iz]);
+
181 h2o2m[iz] += clim_zm(&clim->h2o2, met->time, lat, plev[iz]);
+
182 ho2m[iz] += clim_zm(&clim->ho2, met->time, lat, plev[iz]);
+
183 o1dm[iz] += clim_zm(&clim->o1d, met->time, lat, plev[iz]);
+
184 np[iz]++;
+
185 }
+
186 }
+
187 }
+
188
+
189 /* Create output file... */
+
190 LOG(1, "Write meteorological data file: %s", argv[2]);
+
191 if (!(out = fopen(argv[2], "w")))
+
192 ERRMSG("Cannot create file!");
+
193
+
194 /* Write header... */
+ +
196
+
197 /* Write data... */
+
198 fprintf(out, "\n");
+
199 for (iz = 0; iz < nz; iz++)
+
200 fprintf(out,
+
201 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
202 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
203 " %g %g %g %g %g %g %g %g %g %g %d %d %d\n",
+
204 timem[iz] / np[iz], Z(plev[iz]), lonm[iz] / np[iz],
+
205 latm[iz] / np[iz], plev[iz], tm[iz] / np[iz], um[iz] / np[iz],
+
206 vm[iz] / np[iz], wm[iz] / np[iz], h2om[iz] / np[iz],
+
207 o3m[iz] / np[iz], zm[iz] / np[iz], pvm[iz] / np[iz],
+
208 psm[iz] / np[iz], tsm[iz] / np[iz], zsm[iz] / np[iz],
+
209 usm[iz] / np[iz], vsm[iz] / np[iz], lsmm[iz] / np[iz],
+
210 sstm[iz] / np[iz], ptm[iz] / npt[iz], ztm[iz] / npt[iz],
+
211 ttm[iz] / npt[iz], h2otm[iz] / npt[iz],
+
212 lwcm[iz] / np[iz], iwcm[iz] / np[iz], ccm[iz] / np[iz],
+
213 clm[iz] / np[iz], pctm[iz] / np[iz], pcbm[iz] / np[iz],
+
214 plclm[iz] / npc[iz], plfcm[iz] / npc[iz], pelm[iz] / npc[iz],
+
215 capem[iz] / npc[iz], cinm[iz] / npc[iz], rhm[iz] / np[iz],
+
216 rhicem[iz] / np[iz], tdewm[iz] / np[iz], ticem[iz] / np[iz],
+
217 tnatm[iz] / np[iz], hno3m[iz] / np[iz], ohm[iz] / np[iz],
+
218 h2o2m[iz] / np[iz], ho2m[iz] / np[iz], o1dm[iz] / np[iz],
+
219 pblm[iz] / np[iz], np[iz], npt[iz], npc[iz]);
+
220
+
221 /* Close file... */
+
222 fclose(out);
+
223
+
224 /* Free... */
+
225 free(clim);
+
226 free(met);
+
227
+
228 return EXIT_SUCCESS;
+
229}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define INTPOL_SPACE_ALL(p, lon, lat)
Spatial interpolation of all meteo data.
Definition: libtrac.h:344
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
#define NZ
Maximum number of altitudes.
Definition: met_prof.c:32
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
Meteo data.
Definition: libtrac.h:1831
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__prof_8c.js b/doxygen/met__prof_8c.js new file mode 100644 index 0000000000..f8b055c278 --- /dev/null +++ b/doxygen/met__prof_8c.js @@ -0,0 +1,5 @@ +var met__prof_8c = +[ + [ "NZ", "met__prof_8c.html#a693aee47b2103d0a7fcd3a0a0dd4fb57", null ], + [ "main", "met__prof_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..5635ed5b79 --- /dev/null +++ b/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..a95131da68 --- /dev/null +++ b/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +74f4ef2cb2f21644845c495d254b4617 \ No newline at end of file diff --git a/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__prof_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbfa1237b009c8b2f903326fcfad81cf6d25d2c GIT binary patch literal 195037 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

o6*03JcshZMKq2G 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

w0(;&B<|dtJR#B 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

0jGMw7A`s1sC|F22=mbbiJ1xy=?LkOw^ltiriu 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 hpAkQZ_yCjh>MOH(X} + + + + + + +MPTRAC: met_prof.c Source File + + + + + + + + + + + + + + +

+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
met_prof.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Dimensions...
+
29 ------------------------------------------------------------ */
+
30
+
32#define NZ 1000
+
33
+
34/* ------------------------------------------------------------
+
35 Main...
+
36 ------------------------------------------------------------ */
+
37
+
38int main(
+
39 int argc,
+
40 char *argv[]) {
+
41
+
42 ctl_t ctl;
+
43
+
44 clim_t *clim;
+
45
+
46 met_t *met;
+
47
+
48 FILE *out;
+
49
+
50 static double timem[NZ], z, z0, z1, dz, lon, lon0, lon1, dlon, lonm[NZ],
+
51 lat, lat0, lat1, dlat, latm[NZ], t, tm[NZ], u, um[NZ], v, vm[NZ], w,
+
52 wm[NZ], h2o, h2om[NZ], h2ot, h2otm[NZ], o3, o3m[NZ], lwc, lwcm[NZ],
+
53 iwc, iwcm[NZ], cc, ccm[NZ], ps, psm[NZ], ts, tsm[NZ], zs, zsm[NZ],
+
54 us, usm[NZ], vs, vsm[NZ], lsm, lsmm[NZ], sst, sstm[NZ], pbl, pblm[NZ],
+
55 pt, ptm[NZ], pct, pctm[NZ], pcb, pcbm[NZ], cl, clm[NZ], plcl, plclm[NZ],
+
56 plfc, plfcm[NZ], pel, pelm[NZ], cape, capem[NZ], cin, cinm[NZ],
+
57 o3c, o3cm[NZ], tt, ttm[NZ], zm[NZ], zt, ztm[NZ], pv, pvm[NZ], plev[NZ],
+
58 rhm[NZ], rhicem[NZ], tdewm[NZ], ticem[NZ], tnatm[NZ], hno3m[NZ],
+
59 ohm[NZ], h2o2m[NZ], ho2m[NZ], o1dm[NZ], cw[3];
+
60
+
61 static int i, iz, np[NZ], npc[NZ], npt[NZ], nz, ci[3];
+
62
+
63 /* Allocate... */
+
64 ALLOC(clim, clim_t, 1);
+
65 ALLOC(met, met_t, 1);
+
66
+
67 /* Check arguments... */
+
68 if (argc < 4)
+
69 ERRMSG("Give parameters: <ctl> <prof.tab> <met0> [ <met1> ... ]");
+
70
+
71 /* Read control parameters... */
+
72 read_ctl(argv[1], argc, argv, &ctl);
+
73 z0 = scan_ctl(argv[1], argc, argv, "PROF_Z0", -1, "-999", NULL);
+
74 z1 = scan_ctl(argv[1], argc, argv, "PROF_Z1", -1, "-999", NULL);
+
75 dz = scan_ctl(argv[1], argc, argv, "PROF_DZ", -1, "-999", NULL);
+
76 lon0 = scan_ctl(argv[1], argc, argv, "PROF_LON0", -1, "0", NULL);
+
77 lon1 = scan_ctl(argv[1], argc, argv, "PROF_LON1", -1, "0", NULL);
+
78 dlon = scan_ctl(argv[1], argc, argv, "PROF_DLON", -1, "-999", NULL);
+
79 lat0 = scan_ctl(argv[1], argc, argv, "PROF_LAT0", -1, "0", NULL);
+
80 lat1 = scan_ctl(argv[1], argc, argv, "PROF_LAT1", -1, "0", NULL);
+
81 dlat = scan_ctl(argv[1], argc, argv, "PROF_DLAT", -1, "-999", NULL);
+
82
+
83 /* Read climatological data... */
+
84 read_clim(&ctl, clim);
+
85
+
86 /* Loop over input files... */
+
87 for (i = 3; i < argc; i++) {
+
88
+
89 /* Read meteorological data... */
+
90 if (!read_met(argv[i], &ctl, clim, met))
+
91 continue;
+
92
+
93 /* Set vertical grid... */
+
94 if (z0 < 0)
+
95 z0 = Z(met->p[0]);
+
96 if (z1 < 0)
+
97 z1 = Z(met->p[met->np - 1]);
+
98 nz = 0;
+
99 if (dz < 0) {
+
100 for (iz = 0; iz < met->np; iz++)
+
101 if (Z(met->p[iz]) >= z0 && Z(met->p[iz]) <= z1) {
+
102 plev[nz] = met->p[iz];
+
103 if ((++nz) > NZ)
+
104 ERRMSG("Too many pressure levels!");
+
105 }
+
106 } else
+
107 for (z = z0; z <= z1; z += dz) {
+
108 plev[nz] = P(z);
+
109 if ((++nz) > NZ)
+
110 ERRMSG("Too many pressure levels!");
+
111 }
+
112
+
113 /* Set horizontal grid... */
+
114 if (dlon <= 0)
+
115 dlon = fabs(met->lon[1] - met->lon[0]);
+
116 if (dlat <= 0)
+
117 dlat = fabs(met->lat[1] - met->lat[0]);
+
118
+
119 /* Average... */
+
120 for (iz = 0; iz < nz; iz++)
+
121 for (lon = lon0; lon <= lon1; lon += dlon)
+
122 for (lat = lat0; lat <= lat1; lat += dlat) {
+
123
+
124 /* Interpolate meteo data... */
+
125 INTPOL_SPACE_ALL(plev[iz], lon, lat);
+
126
+
127 /* Averaging... */
+
128 if (gsl_finite(t) && gsl_finite(u)
+
129 && gsl_finite(v) && gsl_finite(w)) {
+
130 timem[iz] += met->time;
+
131 lonm[iz] += lon;
+
132 latm[iz] += lat;
+
133 zm[iz] += z;
+
134 tm[iz] += t;
+
135 um[iz] += u;
+
136 vm[iz] += v;
+
137 wm[iz] += w;
+
138 pvm[iz] += pv;
+
139 h2om[iz] += h2o;
+
140 o3m[iz] += o3;
+
141 lwcm[iz] += lwc;
+
142 iwcm[iz] += iwc;
+
143 ccm[iz] += cc;
+
144 psm[iz] += ps;
+
145 tsm[iz] += ts;
+
146 zsm[iz] += zs;
+
147 usm[iz] += us;
+
148 vsm[iz] += vs;
+
149 lsmm[iz] += lsm;
+
150 sstm[iz] += sst;
+
151 pblm[iz] += pbl;
+
152 pctm[iz] += pct;
+
153 pcbm[iz] += pcb;
+
154 clm[iz] += cl;
+
155 if (gsl_finite(plfc) && gsl_finite(pel) && cape >= ctl.conv_cape
+
156 && (ctl.conv_cin <= 0 || cin < ctl.conv_cin)) {
+
157 plclm[iz] += plcl;
+
158 plfcm[iz] += plfc;
+
159 pelm[iz] += pel;
+
160 capem[iz] += cape;
+
161 cinm[iz] += cin;
+
162 npc[iz]++;
+
163 }
+
164 if (gsl_finite(pt)) {
+
165 ptm[iz] += pt;
+
166 ztm[iz] += zt;
+
167 ttm[iz] += tt;
+
168 h2otm[iz] += h2ot;
+
169 npt[iz]++;
+
170 }
+
171 o3cm[iz] += o3c;
+
172 rhm[iz] += RH(plev[iz], t, h2o);
+
173 rhicem[iz] += RHICE(plev[iz], t, h2o);
+
174 tdewm[iz] += TDEW(plev[iz], h2o);
+
175 ticem[iz] += TICE(plev[iz], h2o);
+
176 hno3m[iz] += clim_zm(&clim->hno3, met->time, lat, plev[iz]);
+
177 tnatm[iz] +=
+
178 nat_temperature(plev[iz], h2o,
+
179 clim_zm(&clim->hno3, met->time, lat, plev[iz]));
+
180 ohm[iz] += clim_oh(&ctl, clim, met->time, lon, lat, plev[iz]);
+
181 h2o2m[iz] += clim_zm(&clim->h2o2, met->time, lat, plev[iz]);
+
182 ho2m[iz] += clim_zm(&clim->ho2, met->time, lat, plev[iz]);
+
183 o1dm[iz] += clim_zm(&clim->o1d, met->time, lat, plev[iz]);
+
184 np[iz]++;
+
185 }
+
186 }
+
187 }
+
188
+
189 /* Create output file... */
+
190 LOG(1, "Write meteorological data file: %s", argv[2]);
+
191 if (!(out = fopen(argv[2], "w")))
+
192 ERRMSG("Cannot create file!");
+
193
+
194 /* Write header... */
+ +
196
+
197 /* Write data... */
+
198 fprintf(out, "\n");
+
199 for (iz = 0; iz < nz; iz++)
+
200 fprintf(out,
+
201 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
202 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
203 " %g %g %g %g %g %g %g %g %g %g %d %d %d\n",
+
204 timem[iz] / np[iz], Z(plev[iz]), lonm[iz] / np[iz],
+
205 latm[iz] / np[iz], plev[iz], tm[iz] / np[iz], um[iz] / np[iz],
+
206 vm[iz] / np[iz], wm[iz] / np[iz], h2om[iz] / np[iz],
+
207 o3m[iz] / np[iz], zm[iz] / np[iz], pvm[iz] / np[iz],
+
208 psm[iz] / np[iz], tsm[iz] / np[iz], zsm[iz] / np[iz],
+
209 usm[iz] / np[iz], vsm[iz] / np[iz], lsmm[iz] / np[iz],
+
210 sstm[iz] / np[iz], ptm[iz] / npt[iz], ztm[iz] / npt[iz],
+
211 ttm[iz] / npt[iz], h2otm[iz] / npt[iz],
+
212 lwcm[iz] / np[iz], iwcm[iz] / np[iz], ccm[iz] / np[iz],
+
213 clm[iz] / np[iz], pctm[iz] / np[iz], pcbm[iz] / np[iz],
+
214 plclm[iz] / npc[iz], plfcm[iz] / npc[iz], pelm[iz] / npc[iz],
+
215 capem[iz] / npc[iz], cinm[iz] / npc[iz], rhm[iz] / np[iz],
+
216 rhicem[iz] / np[iz], tdewm[iz] / np[iz], ticem[iz] / np[iz],
+
217 tnatm[iz] / np[iz], hno3m[iz] / np[iz], ohm[iz] / np[iz],
+
218 h2o2m[iz] / np[iz], ho2m[iz] / np[iz], o1dm[iz] / np[iz],
+
219 pblm[iz] / np[iz], np[iz], npt[iz], npc[iz]);
+
220
+
221 /* Close file... */
+
222 fclose(out);
+
223
+
224 /* Free... */
+
225 free(clim);
+
226 free(met);
+
227
+
228 return EXIT_SUCCESS;
+
229}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define INTPOL_SPACE_ALL(p, lon, lat)
Spatial interpolation of all meteo data.
Definition: libtrac.h:344
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
int main(int argc, char *argv[])
Definition: met_prof.c:38
+
#define NZ
Maximum number of altitudes.
Definition: met_prof.c:32
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
Meteo data.
Definition: libtrac.h:1831
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+
+ + + + diff --git a/doxygen/met__sample_8c.html b/doxygen/met__sample_8c.html new file mode 100644 index 0000000000..f145be398a --- /dev/null +++ b/doxygen/met__sample_8c.html @@ -0,0 +1,379 @@ + + + + + + + +MPTRAC: met_sample.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_sample.c File Reference
+
+
+ +

Sample meteorological data at given geolocations. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Sample meteorological data at given geolocations.

+ +

Definition in file met_sample.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 31 of file met_sample.c.

+
33 {
+
34
+
35 ctl_t ctl;
+
36
+
37 clim_t *clim;
+
38
+
39 atm_t *atm;
+
40
+
41 met_t *met0, *met1;
+
42
+
43 FILE *out;
+
44
+
45 double h2o, h2ot, o3, lwc, iwc, cc, p0, p1, ps, ts, zs, us, vs, lsm, sst,
+
46 pbl, pt, pct, pcb, cl, plcl, plfc, pel, cape, cin, o3c, pv, t, tt, u, v,
+
47 w, z, zm, zref, zt, cw[3], time_old = -999, p_old = -999, lon_old = -999,
+
48 lat_old = -999;
+
49
+
50 int geopot, grid_time, grid_z, grid_lon, grid_lat, ip, it, ci[3];
+
51
+
52 /* Check arguments... */
+
53 if (argc < 3)
+
54 ERRMSG("Give parameters: <ctl> <sample.tab> <atm_in>");
+
55
+
56 /* Allocate... */
+
57 ALLOC(clim, clim_t, 1);
+
58 ALLOC(atm, atm_t, 1);
+
59 ALLOC(met0, met_t, 1);
+
60 ALLOC(met1, met_t, 1);
+
61
+
62 /* Read control parameters... */
+
63 read_ctl(argv[1], argc, argv, &ctl);
+
64 geopot =
+
65 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GEOPOT", -1, "0", NULL);
+
66 grid_time =
+
67 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_TIME", -1, "0", NULL);
+
68 grid_z =
+
69 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_Z", -1, "0", NULL);
+
70 grid_lon =
+
71 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_LON", -1, "0", NULL);
+
72 grid_lat =
+
73 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_LAT", -1, "0", NULL);
+
74
+
75 /* Read climatological data... */
+
76 read_clim(&ctl, clim);
+
77
+
78 /* Read atmospheric data... */
+
79 if (!read_atm(argv[3], &ctl, atm))
+
80 ERRMSG("Cannot open file!");
+
81
+
82 /* Create output file... */
+
83 LOG(1, "Write meteorological data file: %s", argv[2]);
+
84 if (!(out = fopen(argv[2], "w")))
+
85 ERRMSG("Cannot create file!");
+
86
+
87 /* Write header... */
+ +
89
+
90 /* Loop over air parcels... */
+
91 for (ip = 0; ip < atm->np; ip++) {
+
92
+
93 /* Get meteorological data... */
+
94 get_met(&ctl, clim, atm->time[ip], &met0, &met1);
+
95
+
96 /* Set reference pressure for interpolation... */
+
97 double pref = atm->p[ip];
+
98 if (geopot) {
+
99 zref = Z(pref);
+
100 p0 = met0->p[0];
+
101 p1 = met0->p[met0->np - 1];
+
102 for (it = 0; it < 24; it++) {
+
103 pref = 0.5 * (p0 + p1);
+
104 intpol_met_time_3d(met0, met0->z, met1, met1->z, atm->time[ip], pref,
+
105 atm->lon[ip], atm->lat[ip], &zm, ci, cw, 1);
+
106 if (zref > zm || !gsl_finite(zm))
+
107 p0 = pref;
+
108 else
+
109 p1 = pref;
+
110 }
+
111 pref = 0.5 * (p0 + p1);
+
112 }
+
113
+
114 /* Interpolate meteo data... */
+
115 INTPOL_TIME_ALL(atm->time[ip], pref, atm->lon[ip], atm->lat[ip]);
+
116
+
117 /* Make blank lines... */
+
118 if (ip == 0 || (grid_time && atm->time[ip] != time_old)
+
119 || (grid_z && atm->p[ip] != p_old)
+
120 || (grid_lon && atm->lon[ip] != lon_old)
+
121 || (grid_lat && atm->lat[ip] != lat_old))
+
122 fprintf(out, "\n");
+
123 time_old = atm->time[ip];
+
124 p_old = atm->p[ip];
+
125 lon_old = atm->lon[ip];
+
126 lat_old = atm->lat[ip];
+
127
+
128 /* Write data... */
+
129 fprintf(out,
+
130 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
131 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
132 " %g %g %g %g %g %g %g %g %g %g %g 1 1 1\n",
+
133 atm->time[ip], Z(atm->p[ip]), atm->lon[ip], atm->lat[ip],
+
134 atm->p[ip], t, u, v, w, h2o, o3, z, pv, ps, ts, zs, us, vs, lsm,
+
135 sst, pt, zt, tt, h2ot, lwc, iwc, cc, cl, pct, pcb, plcl, plfc,
+
136 pel, cape, cin, RH(atm->p[ip], t, h2o), RHICE(atm->p[ip], t, h2o),
+
137 TDEW(atm->p[ip], h2o), TICE(atm->p[ip], h2o),
+
138 nat_temperature(atm->p[ip], h2o,
+
139 clim_zm(&clim->hno3, atm->time[ip], atm->lat[ip],
+
140 atm->p[ip])),
+
141 clim_zm(&clim->hno3, atm->time[ip], atm->lat[ip],
+
142 atm->p[ip]),
+
143 clim_oh(&ctl, clim, atm->time[ip], atm->lon[ip],
+
144 atm->lat[ip], atm->p[ip]),
+
145 clim_zm(&clim->h2o2, atm->time[ip], atm->lat[ip],
+
146 atm->p[ip]),
+
147 clim_zm(&clim->ho2, atm->time[ip], atm->lat[ip],
+
148 atm->p[ip]),
+
149 clim_zm(&clim->o1d, atm->time[ip], atm->lat[ip],
+
150 atm->p[ip]), pbl);
+
151 }
+
152
+
153 /* Close file... */
+
154 fclose(out);
+
155
+
156 /* Free... */
+
157 free(clim);
+
158 free(atm);
+
159 free(met0);
+
160 free(met1);
+
161
+
162 return EXIT_SUCCESS;
+
163}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
void get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
Get meteo data for given time step.
Definition: libtrac.c:717
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define INTPOL_TIME_ALL(time, p, lon, lat)
Temporal interpolation of all meteo data.
Definition: libtrac.h:380
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float z[EX][EY][EP]
Geopotential height [km].
Definition: libtrac.h:1921
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__sample_8c.js b/doxygen/met__sample_8c.js new file mode 100644 index 0000000000..001437ec24 --- /dev/null +++ b/doxygen/met__sample_8c.js @@ -0,0 +1,4 @@ +var met__sample_8c = +[ + [ "main", "met__sample_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..e1cc1ca91b --- /dev/null +++ b/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..fa5af2fc9a --- /dev/null +++ b/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +b5125b5fa9796aa7027eee4642b1dde7 \ No newline at end of file diff --git a/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e973bb4c27e101e84353207acee019cf47ae5dd0 GIT binary patch literal 230634 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

`?|6{h&kieuB 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∓*R7NNg-*D&`em_Y>NJ7X~mg>+9X)eSvlo;J@4Ce%;XC&>f=& z`+3%R_yFY#^Y~{^pVm8Cp5om~;88p{-kPHnyehNS#k+SBKkOg4@8ZN195N$lo4tK? ziQC)TU^#s{GTAxcwSk9Xje#Nri8WkI%$640tLy1E`y#JUSx#^;D-sf=ii-BlD1;W! zIo;I3zHOLrZoYFQN zkqg2rG2kbJy#&614Fv^B-`Wv2Hq3m4gi?|cgT;*JUr7a1{b!k!b+qHnMK1RC?Gyfn zo}b$IM|aiKwwTnmk8*zlUlF`-35bb7Yev8xf0aMgBh?DMMWgF{boBbITi$M%Z?lac zPK=C$qv>Nft%5DWBRKdu6YpHpH6(o&tI+U<1qInc5v+s2Ltp5LNrbAwNEQg%w-JAq zmI~^DwsRlxBYtCvajy=Y)cXIv4-8ZSdSJF)R}&XDbb9L+-$%YG&=0jQ@`t)jO&C4E z7|M8Z2LaJr>AAU8CyO%_0(?#RK{jWH2Wg^Q`hjgQkDsgWocJDYY~Q<q=#s~) z2Kr~{5901?Lz09L0{nNg7=IX)y&=arF;f)auUoEUoae+{5P`uW zp-e=}TX$=DX&@E03SefMK(R7(3VX}D$m^Bm1ebX=R3z#s#N#0}0-gNv+y z4c)mj>V`>o3-Q?p0^t&DHT+?qvs$-?ATXyM8cs z3J#d$MiJWdbawDTKCodYZH-qn0!-Q0?IL%5b#-Xa6DFy0KpESa)ejMKYT1Spi-W^% ztUDp$cTnIJQ8>%}CI%YcQ^@g$&U+yWreG60ucVH9S z4rfyn_BaDy8)he=0h63gWjsv0hCYkm@K8cTueF%lS$Oe$O^l3a@jgB$R_gIoVWBgM z1*p%8D>yzLr5xF_E!e|@SYG}L$UkECgx1!cv*+(CD)j*@885!J&@U|?2E%sgH&0fr zmwMuWV&(;w=-Y;v1eo^wnFnE1im>3RY#`jr#M85>$t|hWLIYtM{Wub!F!=xNVRe8@ zKxzH~SP7jG1li+GpQ(*{(u!gh_lOP9f60Y}m>1Lpp#G>&WP;7y*hpf*D)Go14O_*~ zP+3BvJ|W?sQIo+d(c29NHqdo_`}WcKtjVb+Jv}!t@N{FGzq;&0>1xzdrk&Xk2$$J0 zB)orr&;0kMOp050#M{Y!{mb$axdwN44LiHgy7LfFK745>Q3USjN<&ugTf3NVwzzYLgSi;v?QjO{420X0SpKd-rv3rs@IT{17`pg|I|A$^#1!-oF7`J$f#DC6o=Puc>XRMoQ-Q0V`1Y`aor?v z1x#8C;k69$@OB~)Lou;8Z~`6`b=~@pF|ML=38j+KaNY3G*I77fN_G1I%k#Zg9v|Q0jZOxP z(xfD2puzaD5g_{q+^sS%mz3iB4$}-hJpfq70UbRTe0)a;k3Qp>|A*&^qg$D!cW=-D z7!s$+<$_Q!e~O~Tz+(0SL^#GK-+DZ1KnV}?E)5OIu=dJ|Okk;LHD0Jq<9Q1KGamp~ z=N%!y%>a`x);K@yUaK;TOG~AO$`hjyV{sri*I&@BK2Bou{r6pAef>o%UmdJlo-pU` z+}lH!NwNXvYDL+;O5F=;UYFInEqG?i%@=!IVx!~DKuwQ?st>sFUS5o6Uf%ED02Lpk z4_#5w!N%B6=^&i?aJCB^hYt_+>Q(?-hE4kOXRoufk>M8J1(;oq%Of=6Os@bKK%4qSeVk9`*CacV?jj3AiQ4v$r@iH-Wu!L+O!6eHRMmf zghNo(aTknuqopHY)3Nyf6hihFK-mJ&o{))Eug6YD=K|p|ORIuF`1%I&$0JE6eG3rF zm~F}#{xjSoC90)$b#|o197jgnQLM@T4`{kjiHn4sQ7tTd9vHv|5G*v*t$CWPSpw>m z&d$}Dx}>YCCa_58OK@}ph9l4$t(G5n|{*;uEf!JS3>C65_uN%;?}CP62}jJQ*M`ckZ>m zq+?iGJ5wCDwhCHXFy`ke)6+jg?_g*UjqCo>S13&mh{`|@pyJ#8v$CREy5L*5wN_H{ z$|L~X^|=U-WbH!VbiaON1CaT2`z;n>TU!@vYl=-UZEHC{nL9Yh2cD1NMDTw{1IP#d zWxft1!2BAmG<5kB*rzaYNdG-)ILn6&8zsm}+_)bDssOmm?`jp<$4*krS4oh{7Im?BgPFYz#Fd1uE2Zt;u3i@LA z{bvFK295u{);G!>SY*g4C@2BoO-oHBm)}=d*lkeP-vk&x)6?H)>Zq_@e5i%PCS{J* z&@iLY6d9;VWZ^6%vg(O{=2@5ou71G9tZ%4ks6XqEwdP@9aG<`FE-&li-W}&gDWzg3 zMZMBu3Ks#2Ap*`|n2v@tLM^1BK@#dLf=Np1er@!>vx}IoI5zgBmQ#(VP=7r+;<;^h z-@(e&vXPA$g&19Hd8$`;BjndP21IVGhOP_vvwbC?!@ zud`-j=G*0ZPCzRGH$L9MrRp#qMB3ktU0$l(ohX&C-03K7bTc!`{kS$%_W3h%cXXWJ z=SQ&#E+FNA1e3~>tEx38+OYY~Wphe&x;jhNBp+x%8qiXGOzzxxL! z&aQBlKr~(?prCt;+TpKOi6{kSpwY9n=g_|xfiMBrC`Jf!ZC)(pkM60g)Ca6Bgi?eqm^|4@c}h$Bca4P4i~I1KqS8uV&40w312^UIV&!d>M4%o6ZrIuB zw=<^&N`i9hMGC+~pv^MSzf^MvPS_)I91*&=K)=e7=DkmG=^cP1g2zry9vj2SUQxD5 zM~HxV?Ea#-zPLCMW81Au07Gu912Z$J7jvS&;sfkMkI(DujuF;wVk&tu+ofY!Ohytn zrcBqM?JW%)H-uycaGm;-Y(v8O4^F~J%>G_lS;Yc~)aCC#0$R7p#jOwQr26_ z??7=x@&N&KK{8GmUgtw&n0R_*Tyelb;BqnsQQnN2pR!6z?NP)Hp54BU1lna5mhFw=b-@B)u-SdogR7=ysC>Pj5V`IlD!=K@bK%(Yqu8)K; zn_|D5sVlIYTczJ_aB}V&8Tc|?GT+y+9G;#11QLC~gS)(1kk^;g3kQWXB%W1t5xDMJ zjpWcsw(7VfGm7Kkk;a!;&HFUs90}vK#FxBh|5I|b4_5^!zk&E5Jv219A6M_4Wwo`9 z!Bc_yEl#mQT*4px2DIdbu2)xpasLRv#?hDGG! z4y(93W)62Z8VLkv!NJqe<1@dvy4o23sx|j~?9bi=jOuHDuYx=ZFm$K~zlqy2V0gVJ zAtI`zyo0{9#KG}OULN+?kj9=K8*_8GoOMV%-6O^_8GIl@*GB#L@r1G{fs@l+P>tEx z^cONh?REeDsDWPO5l6P4UvIggF)AwZOniDaU8$~LL-9_~UD*ea8A2&AotyEn&SN z1jbtMzP8ljq1?s{w6|fU!}}gb>|0S`rIiJP4Ky^&$B+3BY><(iR8-~-`_IgZxLu9` zhYpvFK`Xs#a40;2L(Bcbx;R7kGp7;+D*QVy)~x8TTIx!G!5CcAGUn}oou;qYaZ&&i zCUDO2f^;)<{oO4gT>@NOBA5+3-yIoYhiZn@9)>?~6iVJHiV<;jK6#d(n(92s%C_uF z!!%=<_X_a?o>aqlw>-nh=Hxx#J)G6v@fNb2_;8Oj{`v0IUnBPQ%}H7?A_4sb)gLBg zzt(iwM60Q?Rv;vmlxj|qAGyCTc=_qm)yw2NUev%JCA_cUA!eJF`qRqBM(4+PWDVqu z#$6g4sEK^MlpF8nrf1$+T?OFRaLG31y#YERBpAvqAPgZP85DU7Gd`oHZW~gNe)~4C zMq2{xWzWY}LJ2_OOO;|sOKT6bomxQwm#W#(d@A7YR8*|C@BG!XJKoGE;}oFaVR!ck z@8}L9hhKn16RL=ZZg_+~!sfpX=%4ah0A!FNm;m)MNu6O?wb`VOfq@v^!wTtKCMNzl zz16G1>*1v(d%U}zf{|$OrOSJ8Jgs3;8%uGkj$~>BJxFwMZ(>Y|r_yv%L0Xy(@$wZ4 zRMHIHJ)ivq(yo9}4`Yx^VE%#R94G)uhl0csCy$khK%$HJb}wgM^!B+ZgB5y zaNf^*+s|npFJM7Fhw!$x=KuxBaPwjx2uDy*#T(NLgMvz9iM3%K2$x)>VQaXJlTHJ& zWLpOZ0|$alW=6)~Nt)+4pF~5x(=@q#blOWS*VKF~f`a(r$~chQ-NE3OB#`C?opMkh zzCq7`wgdG`RaKDXRA%{H?Sp$2$8$OVklu|wE=-@Y>hU0eI#nMaJ^)$R!eV;s_aHJZ znvZZ2Z#Bxz&3mDm?+D5ZTq+BImTh4DgL*fE{SJ!Iz<|{|O_{=_uCDX=AA5yW9qcMvO2((|@kYpe@O4Ffg~m$M=G?lVqTKcYb{e-{ybc`NLfd zbr9SGtx?FtE<+3)qksM61E;LAU(@ zy8U9RTu_C2V?9isCziU4ZTm<^nNk0XyH5HU0Z3#_^s(8qjlX{*A!vL8EE+*uzId>| zy4iF~%Gn_pB#(w#w~XWf*m|d^Nb({HNE=|>+MKOh6i=G&j{*Dzc|dEkGmvpzg%4+H z?`J{F2lkJfFRy6nIg2tgn}ipEveyvib_*dT9R(f2C39R*&^>aBkY}KNt=9M?NI>uk zy0{uAHt^m%gh%!MV3`Ec6~Mvx*?X(TlqT6!?XKQlCI$xLO$`990sir>g(OC%`1p8m zhAOS7NEC1dR-fNh%?)a>EHwwahoT|}I5imI!2%>DKhy-?QZ7mPtrJ-pP$~~(z4^e z>*eJIyy3n+_jUQ3pl(jiVLHe`l9rM(Gu^P|Cz)A zl4)rC1r-c5egSFo^8k0Fp|^8#V4L2rYHSpsp_yOlzpfWlg6=0VaeCsk-w{#@hJhOb zgkAVIxW6GG^jQCai8)YqW|$!W9!ztNebKgxT3TL#36Sd}Ztj}2dBJv70GPq?5hDMX zsWv^gGXd#y0s<{uN7JWlSTBkrF*<_7*b%AJmLkY21u^AzP_7|frm{e~gA~}=C@FEn z#Or-{%A6Wtx6;z)Jve^_E#^YUhNgb^qrTFqtG}qCmsN0fXW*`pgWs>JYJL6IY>rY# z&n~mP+_a?hZon2H;VcdgQKw$lhaHLn06AcdKYe0>d;2x~INs`fwX_^BrL%;<9>qEE=0KvKW+FM)8gP)(G zVpK##2Hhn*Xn6i3VU)ZMV6(3QIHZyi&^PR;Q=SWlJSEI>G{m+T4!Z|Gefk82Mo35qDhdja;c{^)dF=dOQcERr zg}R|4y+FWWMpLcH6x+RzkU5FRB%uO6dl6E*bI88@dIEb zLGC@cPz{cZm|0i|xEvS2eMw8B5fp4HE@t+khV=)wgYe)XFBd34K>-148$z|KGE;+t zkPHJubaNAvuKxZeNKI}`hIXa^f+)SHfd&CgkP-TQNfEb8aQ}9LmRsbzHRI5@AZU!m zp$esnjR|uCbsr|?Z@(|@FU`W>txWhoG@S=D)&Kv;Z)7B-k}@(2$%slsl*|&5tc=Pm zGD0?`tgIv}tFj|ABO@7+Yz^5fD|>JLPv779cfRNJJ*RZ<{oMC>jmPWxbe`@!+&FR3 z$!VVRGQNKU19x}6`qy^GO|hqnSaLp!KN@Y0-%94@`*7p>A7ULKqC}jH?UJTu zA>;ygz!#=lw;=P`2!0Xo56YRlFQMTM!ZF4227&M{K7Rl1Pte~deX4+}4$WUIdwgr; z9@hm#APVWh3X^%b+}73kt=+b=n%VwS+*FwKa{5kRi0t%*1wAR1G1lkoMXVkqhj?js zIbZJ1ds|%e?|qtCc{L9OH+RY(8j@XmWk_fl-*S_azdf8v#8x}czCN>@O!JbaP$6R4 zM8B}VCz9Crp^&JJmux)FgW9^fAKsfQv+-E&(5`cFDS7f_7lct-On0CNmz7fivWzq3 zyQoBvfI;2GX3X*mv~D5YCH%+!N>d$h5Xjw)Jw5ewvaRV?n!v(BezrA7(_7WlfB$Y- z^tuJuvig6SmvGdB7)J2^SjIKg%Uzs&AF|TZ`&$zU3B;@WOK-CK{^Vs79Q{l#Cf5D& zqsOkYGbVwKYHGt7y3CprZ$ce-cv}7FzGwa9_Ry~*YTWTICMa$?)w#+O0S3wm)6z!EqKOqoF63LgR>>RB~z~yKpbSloYxjk z?06P)!m*;J23i`Cvhkte;Uhysc?AXTFti0xfMc|$r-wj*NEwi#goI?hvC=g%B& z^11&0nkFU?N@PjfR+~fbgI_4JV#toyWsAw5B#VCUnTV7WMKZDr#Kgz36oQM2cqu$# z;wdb|a7LgY?-vZ^Y9C+tAbx=_@aWaX?`wZYznQx0S z!b!aX{_`j9`m1qI`w@7%*&Lp(%8{$bvuMqQJW-CA1R zs;U`>1&nu-QWs6byJdBRMcd5GY-txPqt{vAu$Z zC*p?9OcuzEa&wy+7}!j9--9E2hGbbH4v>%RGd+7N*=1RVvdZ%Kamkk?|WrqnnRdD`8@(d_>B$f&g5 zqQ%$NdKoF)pB%C$eGi_{)B7zYMZA%3ObC#T5gj~jP~EaPZUE~7xjSv?fq@m9>*eL; z8l|O8*tGae_c$&L%ENgY$j22WB|2K#-2@0OLTwScr(DXhknF<&b%XmA{LTrFpFFvQ zAjVzwWlT&%yFz3Mz)}rtK*EdA(BlFEO{(llZCzbDs;YM%Jh-;44}c3SboOR?dthx*u=n#~U}FiBp|P>B+r|ngFV17fAPtULz4r+T zuyq(gT#In!GjtD%i=FN5?eE`z|M~OQ&(s@G1%^|73^5t?f{9G@YtVDD@i=*|Vko7n z7(W3R4e<8v-Mc6LWIqjPAB$QAhxY2_OE?xK;)hmNR}rIG|0^E62ZGE~s^7{~PVQ;e zDdt z>YuT(vi8A`9_Jn8rI{t&TtHk()`!N#l)|^Zs;Ua&>Ig345kiTHb+)t!a&mH>J-Y~G zX-C2K@h%oaH&rMsB8TYy?79v<{iJ&O8`V_&B6dsOd{F}sux6A>I76j?(~1ThO<`9vV#;*yY9N>)nDv45WI={dY3j&k%0Q=YmPH|>4w zpKt*I~0n1V2A^i}mF|#Cc3dkB<57rSsd->(ubx7C(Vb*oWiD zIm)xJ5l@^r0Y~!Mo*vRe zV#2BI?pYRuTjg(BOkV{AEcqVv^QkJsNdMH7MC_`2Ad&!3qs~rFP*#U4U;&0c?q+L3 z+Zj6yeN14N^z@O)hbW*GA}{|3`)2xOSlCokD8@`iJwX|WGrQ09mBU`-v*SD`8`~X- zT1j@vSb93*B15zVxB9`^6&XLeqas$U5)wNr7m;>LOUusp%~anMlA)baD`_@cE36TI40xVUk(iFOS&_A;9Rx$^{ZH)NZeeHpBsS9U+)$u-l|p=rdb-c|+SQHGmavwM zJCNli-K~RFCu!fpKcetBi-L{;dtySw3Fd|2^pkIz0asead> z&vBvQurz( zR!~FWQ88K5)^f^`#lcaBZ}p+CTYt9688zSdS}lvSHtLqJfmdyle$2V1yNK7=_F3MzPP4om z=P<0;(VFu%G=lE|EIBrCB=OptrlDAzZfg%^%-6LV0_RVvp-(^a>7(Ssm@NnLKj zJi)&!fdjJlF1$ap(Lb|swB9N8WO5u(@S|&IJxWrg+f%YSw=@|pxfQV!(3;-=jsffg zsWO)@Kgu%0nMg@FBcS(+IwHKdFygrn`LSaqROAs=4jFl7$-1BB#D#>+7XPK1KjY!# zbl58CP1oWIVsb>=o{^CwOHNvvmA8JmI-u)8r-it?-oxQ~RSUQHvo6S87i7J=ME`sH zxIcrb?+_4{AsTx|T9BVV9HaqBU}@J2+ap87!Yc#9E}sdNy&WB&Z{E!NaxJcT-@A80 zRFtpMKjgiDUK1amDB+@`=;`Cb#BGoE?&)`1{krh`L)+!X;~X6Srl+lj6}9DRXx634 z3=9)W+_$@aB>!NR*!a>zZhkB4%fFt|fU{>mAeLg0_!-MyQ#<4D9+`Kx|ct~`GgN)>~7y95}G?J7HO87rfw zCv)%K=8GQ?)(BNhl9tUWvqw9j({t|!;Ri+PDuNx(g4Yz)UWOEioM%{B(fL!lzVtY` z04@7$m|NX7|2rgpeMb|9IV?{3Wf&bsXGena+0>ye9kA1zG+NR*1li!)(C~AoK39WW zmyM_T9ct8i%=P&3S~2@MuV@r3&YZHE`(&fs(MhH>8)-e-OhiT1{^iTn2|IgwYTSrF zlEY&~vPV1e!fl3U6yxZ~JsdoM#=E+T^`0ZTci&@ts9Bzeo3;Gw!%=57p2@kP5j{QO zyLUb0YlP15@qJ=zt4mCj2?)5^`a_a>514~>M}K21039K>?iZMF5IZR*k1C#PhtUUmDn2Jq%@Eh#q_IbJZm!0+$2f*OK#a=x0_I*R^ZJEDGN!v6&2N=w#%|e1hD+F0od=O-_!8D7@Dr zzSn)*FDnVf;K1wGX~+mO%fFjCIw0-79Dd}B8*j;T#Uz(CwE|U7_B z!S5iKD#)?AM}JP6y#AmA^Y(EnSJ&gx5<92sWal~iE|I*WVipqEBWnvUgC(>kkUN)j zszrI1z}lwZ^*9w-X}fUMrAo)mZ*`D9{WspZxIin)KzkVD7$gKMca4*UdW~t|KWhys z%&UnO(^5>G);@mgb!W%B#pp;zK|#=#<#FQQzdNL)3jO_`Tm|%DGosy9yzCVjYQVb8G7iJ)dU+!PmNOY34PlF33(ufj{$(0fY~tt@L1fB$-diLUjboj2(t zjg_G;C%0?tBCCb<>cg;-lB$KVYI(8>-Ukmz2wz5;7T>>brQ|Nojv-nRmRVpUr$lecJz{Fgn;uMT)amXB2Qm6X%yd2OH0pErhbtS z=`Np_H#FVVJ_AXCrD^3t_ibI%(F3FneeI+g-`OB_llxSF#{#N=GY+Zm-y0*=ykuwh z08xqQ84Y_LVyn_<`~AMhI5>t>#9V0x9{w+|k(6|1qJC=2TmLe6e`xT2z7zCCb^U*9 z*XZe4$Zj2|9!%s^`so+YU~H@kR>!sYmQ+P&TV|cs^ChyEFWFU8F2zawvgmel6&a*F zNaqLN8Ew_p;lRLH`qP23a%C4!9l>UV`GMlin|oVT{NG?bP6^xv0XCv5&Ax{&`{L$Q zk1Hm38*IGG{{7<#d-apbu^qc0AmAv3FQ4jWnFcq6aCs`Khi=UI`IeS8J|SM#BDZBN zDxw%^T>V;8_SqqLlUac2j$y(^Upc3KuWx5TujXfQ=Fg&@3Tqai5m+B- zjP;D3XD5fzh|==JL{n-iNj>R#pVS*v1r~PQxg-1oT+jf!ds)i3`*W#;WZC`iuPz5M z4{vNZ6Ptjys;^;w(8mT(?#YyJGn<8x*U{*$NE>bw6%+zoYwl#l~$dbS4c|A@*yE2 zJT`07gV2kpO?@!+v!hrq2xIDB<@C*};tBcJ6_%EMnC^D2beXM2_@t|Qp}(K$PhM&Y zw`0GDySjR9OT0oQO902Q<1$-Y&iw(5X6SdLHO#~u+gKBK9h8OQl`Aiah&0{0*A%8H z2yM88rH;KM-wn3>@s&ix92IqSUUHJ+|LMm(tWO67nWS{qFgo1XNgGywRaN$ijbO*~ z9}c~`k*vzdC>BxTxohv<1`atoFR!GYPa)?vT139~=$$*eSTIy~ba}G)oc&a45Q|xG zASBf-p2^0)3Qb(GE5#%i72!?7nJ;f!x=4qIN|N*P(u&s7vITkhz0nFS4;Q$0HGFP{ z{)uA#mE8mpQTotVKQ+`Si=sJ>A0HUF`(1V4^v$#+6r%B}r`-1v@1@fuAyw+gIX+eC z%@auZZ9fiTzFRskUkWcTsw6?ar|-*VPtT>g1;ik^KYtqXoLtTIbkx;N%gTEE>={k# z6G|$)i;+sQ0|By68#Gx77uD2$Cn&7pp<_)-T)2>=jl9_0+!owp+y%yuC-)L=kE!k) zKEBciLUR3l$jy5;uBxfgB^RY`Y^}rpfKR`7Z`UI!@8IBvQc^Qdh+|b$B5x#b#f0AU zu$2Zvc-YRa{ri=zbc6m-PG16E99Ffp-=ELwB;WTL{9eZxC&4$jY>%7zPRoxQ=_#g$ z#w3R!CDS=B$Zr%WqN053*4Dq9NsU_xw@Ut~U%iSfgRH){fVyXWx02snAn{tRN5co zIJR5V;J?T7RqMZ7-tkQ#6o{h_BR265xT7cW+s-~@aNwb<%S5(j&(^K<4<8f*G9RHTbv_j^`$`(bR1m2kmGMf$uy@Pv3)R78n6iqv~ZMHNQL-} zzT&(fhW4tb=PyOQiNA(bg;h+1EZbC9gv@Rdxy5K?V=<$_In^82+|!tST5NK{Rw-7; zWocsYYPgWdS!+JmgH9rIz3B*rcyb9NtozexhT~a!j8~2tiwiYz^ zf@ji~LH^f1pldwDr91XTZ3d4&U8POkFRE0^kUM@OyT z+E>oYJz2E1IYuG2wzSktg-xxxm)GW-Fk?aL=GHGB+<1We`}Wp&`0KT_*w}%jYi*p$ z5-54S&73ZCjdOK<)zKkrzkG1ISA(4qZW&C;@s$%#4u~fd70IZnU6+zNGIlWnNs^va zd<(_iv^~2ubtIB>i6CX!`7c_rOieMpkA>DyS0ls|iUNlp zvOXE<-7f+?4X$&)`uth-4qL9{>c@Msczy=Z7iL-^7(T~T0Jzoae~ouBW5Lx^IihK0maYH~7hW!+m&E?2#3-zA!JKU!4Y zsNPd#<}N=ee+>5|$5Z)Zm{`1gS-kbhMIVK$CsWeRm*%5$R51C^LVS%*KB&MG1XPk|SZEXRS(npX1MmcIKDi0s5)6t%i|`>_;obzkeO~ zi0y7Cx1gl{VEp$ulfe2DR`L@a9dnwzMF|PiSgEN=UM8=@iE#jgL64M=&k->%_8QGW z`pB`qH~1bcsT^?zNVDhec=AmhvM!vY-lva7K(vWz%EqFZhOTZDB&|-jDaToCwCOMR ze%{1za&2GEC!2n6UM@Ob7oN1R5TwRK6(IX|=Mj-$e#{gZ^t!$D8HUM!zryn@{TkO9eaOG$F%R?V z_}K0iPl8R`s?Bfey@MF5zmJB$kK%`TjwTbndb9fuseu@^D0wD-Y*v34aaBo53a&f_ z6BAU$`^7mp#0hY5^QtZB`f^d>#*L{K4)(zkor{F=AtRfi@AHe}G1elK^Rwi8`e8FL zIPGrT!hQ?=s9{S(ucuGlG$W>;9}3RNxqBsqNsjZbXu%|jXCL0U+v(D4dAnLJ~( z?1ZFIM#dLjdUA5aoR-#)I1>_R>?f=YTq4W1tB}wuD6n*O*W}W+`qOh_TTge`ojg9I z5%$o@xUevS`NF@_dq2)Xkpf{CK9W*!7+uU61@~qF{W9v3t=+x9V(sliRJdtro|UN| zDRMjNpSbZd*OYk5u1{<)9q&b}M@Nr(rfKN6nto(q5S&f<_b(IG)>xB&nkzGh#mm?a zC=dw11+?s^{@OiSg3z#^Eh~rT#p_9B-y+W#cv-8cTytEdaV1t$ONfct6CBJty|tUb zB+`dj%bnP^y7aPkAx0n!e}8se&d_f<>N_hJ_ku==2I7oWgE%B%TRcAAi7WCn&&jA= zg!k`-c2Z*OBY#XJqe;anIpn>fjF>N7>wkBtVM4^~_iiiKziuoF3!gu5KPoU=JZ^IH zW^Q`=k$rY_UXG$okGWg}jWYE$kZXN1r{9jAT|Is9;IEf2iyD<=lSy3nc~>gN+{aOU z=i5oHYprc9DuuSbF~{do53H^Ao$hgs3UH3hhC28v}aaPPV^!TlZ-q>TZONDv9Emn?_U@7X(LtnZ@erl#f#(d-V@(oAasTT z!Hk64-;k1$oSYruu#v^3rO>e7l_3%}N&maTHcB`^HbW@GfapwBptsRMoUYnD^@d(L+|U?dgd?nL$^U3`(TwLI%=z{ zNy3`LqZw|@LnIyS#Ng=g|11C)F-1i+376Y<#*fiV&9wCPIaH-qo z>&Z@_U|iQ;SCuvyx@(kw<+ABX1@z@1Wn{!Tw2P=+kU@uyFAj~)r1J7?LM-+)5C|u;Vz2aQSeqD+A%x(`rkjNm6@QUp0I}%Y~yn5XQ;KaOn_JE=nh2TZb8!tm7 zca!R|(@1$d%``G}+1R?MHSD@wkA_ie9LJL0F<>L?!SWgzI@b91_w1QnSnx-r*83|P zUUpE|alo5H3w|12&*so~K+_OyG2_PQPj@Q4VDn13o_v;JYx|O=c$uM+(WV7L22RLyNd4a?*GXEAx2r6XeVG`N8QY99Ha}77s!46n15Sd9TX5y`f%tw+=uXd z0YAWPu+Y4Hr$3BfjO&KM!1@9%G>fr#A)9{rC9n!WJFR^zeTTw5$H zEd>hGx6x#=``b64@8E(D{bE1*&1zO>{vn}h{qG*sjk2;;K2h&-d6|QFxcYP(8whwJ5W?yi*%@3<8@@J)-5wAbl0P$P&xy7=p`h; zCXHtpKY7SdlDZC5v7^pEXwzRovW=Wu&h%XiST0a>cDUX^47^WCi9T;fL4ZvgFWioS z65%5Oa?sS)CL+KslY^a|K-gL2kTu!2FIhh_B&7282ELMS-{heMg6L>`9DJJZ*SoM0 z4}{+ruvp`xOM`651?CaNSn;`&Y zQr^Br(HMmvG?4*jk}-Nqv!e+fBkp*BFjFT`W@u=*u()_9Tl|F+{gFODKSv3H%=h;Z zUK~1jQ2IO#-OLw1;`fOBEvLQ4hYYT(sfE3KnUH%L39;-Rh5&XNwYhn%lY()gKg`=Q zRu&cp=uazpl{kE*s2Qr`xO#QGeVzR7rqc)#rj4b}#WW3#9BZ)0Z7#$UGG zumQ>lf{j23mghZjB2vhRVsmzfnjW|dg(v8ZU2tBa{qI-vVL3_HwKLWO(rd7w=;(N@ zqQnUsVaVzcXlQ7ztE#>;5#Q;)y(Nu$WnGWsb)kTQKmg&)!4c2$Ioyrcvm=v)F?ssokEi5utQA9GHo6~m_RM80c_4x*S zLT1MPJrs9?SoFnBluUJWs6)&gCSUp`n+S05PH!_X8?^)9-e6E#Duz9BY^JY$IdXo zJG@7emy?@&;BW0$o8gF{E}i%B? z@R(}qPpDM_n|lV%0s^QbBUnABKT$XQO;`{R{1Xpr`H8WyPjK)&bSTuMDR#f_)7a%I zy_DCle!Fik8Vq*!OG>kkwdW4(Dtq?z9cpr$cDy7cT6%h9ky^YacFU8G1zuvk0*JwK zrTlYf2T8$}J9EYs?R(g-gFrcA&IB+SYzMr!<+QXu6%}=~wJpP}T)d^_Ycox6d;1No z_Vf&Xv4vkW@lTl5pr@MMF=f4==;si&lkI{=VP(MUK`4bU#qIXmsn}cL5nFWI;1qbd$Nn!Q)<@97tR!?Ezc^z(~_ZTkyCMHaA8a> zA^x!}u0|sV7b}Y?6Rf}ov=le>-Pecew9gH$OvDBR-usus*Vpz4N(hv6yj z%JQX2K)7Su-LqN$Z+!$ZS`a>wB@TZzwI->ku3b7$u>>JL?vs{Rl(rt*vZg<=IiGnYF`qvZ7fBTH<%`0d zJIVtCIpKT;^MCil3NG>LBpkE3lz!s$G_a%@{-7&%O-;=dH%C}l#)}tP92brzLoX9# zklVHoi0sk^8A+JYZ*}a$0Dz<8D$5oxCnxM421m|a?Dq}|Qoengb+ZY=ubYe$ZV^Kx z3RtE8Q|TLxnRB~+`*w3jhZCTDapt)2@MUZ}+^%lhrR00|xVjrREWf2*ia^N^I zMx18f5PJcR5zla4-uvNYq0hm`_ixDPAl=f>8WVQ9I%Cn^4BaU}0ceMgcZupR$=>!Y z+m_zH{|O@F;vy$B+r4GyXN-B(VMjjIo;xy96WLx>Tb<<~?gmH>T4$IHK$=muy(O0U zlX-?oODns%`8Yp+l6XsPV^>$SA}3fIj-%hW1y6lBZDYvTh6{do$)gk+G$ohonz&Bz zT=CCi9~9*09QJ&}8rZhHn%&T)gWZGx#S&?5eQ#nquaQMY?2DPONX(*VJxm-7J*kEA z|45_J{0J{UzwOG5N8;5cq-yAB8(GqX@#>g@JuftF2t}@gH&dyj^_LB?<>uswtjQnb z1A)q9n~Dkw54T*dCdA+V4O!SdyDR=UhRCvVBXWE7OLwIU6tlvmOVJ}v#$R0Hx-#Cp zVc-u7I-$nH$2puB9-impLuk!rt*np=k&Q2Pt($xDi<$W#Xqe_7KWgf~{`;2$PD;}C zd_eX0CmxdcuIHBWcc3oNew|OV42KnS5uE^gD{+`DqjZwIOjBhIGR}Yt>=O<7cSE6} zA6&5$^W+3>0n66rmFy&+bqI8ImK*aLT)WScjkCHfJn!FqH+C+rr1v}x)xq!)Ie1>o zIrhTIyK`$$AH{5~xa)bVC}B=85gIx=qiyk)B&WNNqArV@1+ z66G>-a+j{tM8zpfou?7Lsdnc6{fZK%ffO9~t*v;=MyNW&+26eLh%c}|vJZ(Yacf|JPQn4<9%7fK4sEehR;|-zfR^vmH;V8=ZrwjfAAODS zF-K0Z_4$;By_cH*Tw>*(9~E=w3023Xm%3;Ep-(&j3Ll@xVRX}r8XkX8R`sp9Dk^q5 z&n7qs%<{Rjc4}&8vYiHzO(M9*XHnFf?t5cmk%60nL!E1_yfG#hC91Z}pd{7yOm&k` zG!D!sc$}S&3S`>M&SuI!(1SJ*$*;S2^%jD^;DbI(uJiI_i;Kn#ILfV>4tG60 z>2w$QZ+vFsl9w;vxOJ;ocKyVlQA&0{LN593gzd|$DF7CK|D5TO2%DSZBoG9q)|pN| z$ahe4lki=g_h!?xN2$885i)KFuP(*DVGX-@y|FIscDzZJW~i+KoIA3n)d2-?w{ytV{D@{zZ>QT7aSjEXU(M8 z&Se*nS;rT2hQ_7u{_^9Vv6`B(=ARJspGO+cVy1*=L+6#Cv-5gk_JR{;ZZ4n4{d-DS zUH0vD>APo{1w3te(*Y!6Y|Dz4+I3LmriN_^U%OUMGcMq zg|S4`1rOnl=q<}slqWY{tVS_w&%rGbHy4ad&?)x7RRUKx2Mps+3svNv?_OS8OJQc_ zN>$UAs;F+6UV%_J9gUU3<;zR0i5E#o90qpngX5#GucLK;MXs0E5?Y7n9;}f_Skn|_ z=Wp4JsjgEoMx!oy7I9}%5?w;#ChF(BjN>ffHo1VVz)l=Icynj7RgSj}p<}~;OZd0F z%Tm;-OM_@uGoCFJ5_)$d=|~S~`qf*g2vJdmD#ctevddtBZd0y_tAu-oq{~YADet>a zLqmUe7c+u7=;{ibA65U5Evu-Ak@XV-dK2euO}FCZq@C9{<$^fvY!_IM9^SplLUhUV z@U0xI__=|k9Z?1gP;(Wxo4vf^m!F6{dxQD|BqsOny@rZ8-S6MprKPUs(fqp!GYcQ( zl?5^~EluW}XesjURKj<+0AgI`ipv*(i@`6&)ANFYGK=~x+a*)8IxbF9OawSNL>qqA zKlY55i8|Lbc(N|MIN#E~*g>$e+PD`0n3V>1)p7rTP{(XfM;V!e0v2n#QQR~pAvuP+ zvI@^3Pnus{U6Bzh)cj%Y%DTFALE(2ZiTeb~cBsmp(x{pZJ{-P3e!gPdLL=r&U0p|| zK?R6)DysU=f_;!82uAx(;Fj>c#ea3ED{zIJh-V?LBE>K;YNB8LXe=$q&x#?xDU&2LG-DO`)nV9R-e0e0_a_2->`b4hIFg|~@H_b^|a zK<%`>w3Fks4cC)56GMmc9c_5c{}8d&{n7Nik_ba~_M_x`0r%zQKPrcoOeO5>`hBGg zc6mw#1iJN4K4>u9evw^SEh~1ez+dWZj`cK_@O013oP}aT0D1rra!um01iSYE{a1?9 zTbt0bHZ=S_BWKVQEjqkB^&ll<>)*gb|I&x(LSa+(_tya@#mo%g>SnYz<>lbl$-scJ zj+8XJKq%C%&Jqz&eznFBtemdy$@;n)%(}vSfes`Twv`>^pgKE?;nek~u&qZ=Lrd#l z<59XRTFAyb@|4;#N38z-Q35>F*Ea@7+kz~bY`%!xGBW+W}o-Xat#$qU_>AHi1_|DNZmE$akAitu-qxvVs| zkM7;}^RKtHJ=6T#tJ}}r@b=?yl%_LZkp###L>e%&Y(G!D@{(k4ItZ0O7M7{mINS2_ z)2Qd@7Yi2^N7V=KYDW?aAE@__A1g$it05)RpZxbvhUb6}6+#lZAgAua?4*>GYV>{w zYdm)zjtp|mlDx(F`4J~P>lRD(y8T$Rs?zKVDk`da%u6{#HdsVp+cr1*@2(PH`I4B( z>Acgq>z7Kyz(#bm(6D8B|0%o;^fc(*4Cn|1(x;e>zK7y+W6Uf_p9ko*w(&22`}XD4 zE26{U?i735S2uP^y(lfUxbhuVgbZtdU<;=8^jXA0b!n=Ei7tK0%3^pj_^kb=cE^|E ztGfStL$y`A`NQVRu%pHG?suFaLXYqOiqsqw83!Ly}IT|NE zfSEv8WMl`Lem*Qi@|pMWxvv1Gd?Ycq;kYMf_F}q_usVih;4)A((f(FIFKboh!0v2m zdGh4=_>0Hps(&{X73D82S!mV}S*ybLPM_u1Puk%jmnq=Eh;aJ&iO_wmUzxoxpq~@z z&dqa0>2*TW{gVgIFytBeUA;Tttn|RH;%*B78<)+F#ZF6WCVH!g=$Jidyq*(Ofsxq+ zpzZz&QOn?vgT-#H4L?)8dU{6sQZt%IaZ~n(F3vT@F%k&p&qG;MgiEsQikjLBxuEwR z5exrrwxf}-wKe14#P;XUXjZ8nHDP8c-*GM>rD*NsRr^mxuLD^!A0d6sAKBc+EO3Z! z*m--aI3nV3G=q%@FcFLl?b|!=I@4Dg@}oC0GLE!__iSF@fQ+Vpqa8jI(15ydu?#Jn zp^5eyd2ixbNuo=U_H%Pi=xmda>;a2+u)gk-%B4$ZpS{ zG&lbUl_!9(?Zw@{eyORdM*QlIBRmHDrK$=WTaB!9(@jiF3vC~w^3B@#rdAh+rzEy! z2Or>H(9;`vG*P%ZZ&A_QjH*PL&DO?g>58XEP{AyI^l7?VY$UU6YNzSu?PPSZU~=qpDx|H#q2roi;`k^sEb=N&hRdgpXQ1d&b_+>#g7Svni6MlFEUYAK03ii z?HwuB#x5-EohXY56D}@}Tepr<^G6aB+%|uGt&p-=o%@!l|7pm|j)Y|PYB*72wASla z3*|jqnR^e%Vp?D=d~S|Muaqag#S}$MWXCeXN~RYtT?$bKyR-W6cXfcqdYlOPfQSfTE|Cnv$q0!I3NSeLeo__z&7 zcLTy)o+_;?XWu0%n*HtDo35^$N^cgc`-*`y`}hCJ`Fi|iXdq#HB()Bo_qA zTTL;@U4v^R=vUCuH!7zbbIJij_Li&;4B9YH4S33;0#319V2G)pLx*;Jn+J}u2R|!+ zgFtj=iJ>6A(?w-raYk$d+ljTCH~ElWXJ7CrD6j)`jIF9}*_BrppOy9cvs?WM9P|*` zovDwkS)Q_fs2Oed+#_5iB`Jf8vbZE1qI zBiAG_GV*<#zR2O&RA%N_>Mvg+&xKwob-Q4KD9hDVM~!7)%h)J4%vU~_mOA&8{4g&# z7oIIsU`y zc@)@K{WAXTmEa+L9#m`V!bD+Yp7J4JNazTTPesiL%zWA{{yV9YNA@v3eq`V)rI2IR zi|b%W%AYQyQS3!^vGB#~*Y#K_n5*_6F}ZV}+WLi;S2S3s@bI1Z#`NCo%-x+CpMrbl z6Ub1WUOTY*tH84KoW@m3ej)#Neb>wQxH}a+)a?og7E@>$#^-x}F?c5ermXdPlF1m-%e|4>6a8`AK zb=#6 za`|MaGNbw+2h0pUPDE+Tq@+rL{`KOICR$(&(oTK*BA8%M!qWs03p$$;0DMubWMG&hbZI zDdYmTi_2Ws>z_YQI&_kKy0`aR-q&DEC2AMGsGL?{Eh5=V=U887v=j=+JR?j;B4)eEq!1SwrSsEu^dKi6KG~5)}0HhuT}B80@l&Gb8A_aP_Vh@kOAKH zo%Yj@&7EZvBHK1yxIl{>BSx}%JWLw9NNXJiWxSu9r|VM#JwxCtT6W(Bh$-(}UXCaZsHT3r!yj4q%?D}d zqgA1(5&QRPbs0LMLl`oZ8%?o66YK@evg9`U?)*{HOb!~*c*)H@-KsLfhhre?R9R<% zK8xtfXSTdFnL>gpsel41KCj>k2e9o}>bP?rYCMUOSiOmQ;Hwj)U7w!B6rh8SxNr$n z?x~vD#TXQ?!|kX4bV(JtmF8w;eF^5+=S^RITRk(Df%c3erZ-WF2Fb(_g`l-2NZ`Dq z&`<@*$`i^eI91&wT)ecajW06%)lby7F~V+58G7X;&-=5&UU<=Kj*bS#!(8s}WcaiP zk?}w;hI0O?10&-D4vvk`lji)9e$OeU{`Auw-F%m2mEb12Ia>qyI4)j&=Gwdu`y6B- zmjc(R7l9sr4o=!rU1RwsP2G&={)n#AF$`j)HuTl8PgzwPgEiW_cBQ{&Xwo36EQ!A5 zvenhx-cHF}ci{8B(D0N`H`cR z;;gGuz<7$6mzZ*#5@`A@uw4!HkK)ds?P38geonXh!C`@<+zSlJ0+QVStf%`S>tZ-P6&rHaB$j`0+%55D-g& z$_n&}78e%&4h{KY%FGwCR_U3UJI%sj=$I_n!sr)1bAm^DQG!TJJT5E@<-wiUC_mrJ z+uP5_=X$CdPw3iw0=O0+4ZtR#Gtky%Vrp85asRNeFc6p!)PTLvk~^+w^c~4aNT?n` z(DV%;8Hk@~X+?T@0h6z~edm<$e+{jXeU9{G5N^Dg_KuSBk;{gr*z0*I7ZiP@Qg7E*b#G^84{~>YvPpjOq#TXB zlP6DZ<4E1JXAdJ|6!1|!h>!%x7JU5Z;Oq<_EhRN|4+RBas*%5c0hAntHJ`S&Q)_|( z40V_vy5Ql$9~bNd|Q0%#jcUzVf-MAh}Fd_SH3qkT0m$76Y-n+ z-Fapj7^Q|c(h(gP7^ACu6I0-|AzZLH%Q;*Rn)De#c`{quauP03#&Gj zAzU)%K{GWhx#0hsq7@j8k5M8?mX*uoK53>?x+b(7cP`=GJ9u^BS6bTT_?89s7cg#w zk{5vh*U7H#Zn%afp>Qfd4K@WrSyla33z!03I1(hl&kv?0zD05)vOK{*SpJxuogF3V zvlcfvFaU8T%kHA%tgK)9gs1|xm1YvFxC`=gJ%E>PhM8lmzgKx8Q97cni8J^g5)3m42&BOBENNfBa~Qi2*Gw1FM;{ z`H~_Y)eIOI$Gq#zxmBy{aMOcUipF6yG`w*p!m>On;)^lwj;!*JD(SCXI>ciaR{|0e ze4tJd!d1x!Vcgv$*W8xUSAHZH_4{LA(HwYahT8S*J8$Xt?~jPyxKkIV$rIW+&xPfD zhQW2T`R&ruBlciZb90xqg?p5w0HNTyd0tFxd9qVOPp=1qUa%MC;wpf|Tc&=Qv5`@X zq?Nj*d;It!4t_|bK%EJWLtxm7jT>H{xRF#Jb*>4GRw#vOYC53rDj|V6wF}Er-C!1C zK)$2%51EbHc7D%=Bn9biq@)!@x}`)^O1itdyStH&|7Py{toN>2>&~nh zfAu|QpMCbHEGF!?*9X&0dL5;u(J(p4TL3ZrV{2q6T=!kTZ6$O~TnNT7U>br>$V}QT z(;5!FF9HG>jrizcpkhs7V|x)$)M9xyp<*&HZLQbd2)Y~^vkdrLwvL{BjE(IZFGBJP zZq@{mr5Yt}p8l$>C(xFD>v(|a5T;y*6q--!&+pW6-&%Z>zk!;>hWiNYV;hN=PG$w* z1{j3*L`P-|60U&oGe5r$UMk^7TA$W-b|f*I>h;y>?85r~TpG4wm9|G=-a&$Vg}+o} z=uO+eMFyoaJbG!=gA`yQgP368l{L!kvao1rFafwSQd&2LxkL(T8L*HO6GO>`n2D~H zzytuS0B~^PJUq6na=(5f0HZ8pXXkTzQpIXLpWzyhLo6~^>wT&VKGpJX;K=1I-~pDi z<<{z+K>q4U-2d_w|1F4(OJgcE=0v7i`W|2-&@-h%wF(zpx(VHaGJGwMP?2R4d&{Ttk(~73BIF!3Pxr^qnEIt zp6w&YzIy>FM|q5{~Osl;}*=rA8-JUKTpP)o^fnlE)9+ zg-)<{3i%FwDfuxtdaIZiSbp!`C_%mzi0I2a_=<#lnbhZ44g6-ZNuN6dbAgCKHF2)}of)InVg*6jPOP+8rBNbH^7ts#a zadadO^lcO*NCVl~8)ap|VyUH){YCkuCFghKJXja!stEvYD613B8>$ z&CrDW6BgqySTH2G)PL5JBe$P7>m2mei;q5!GW7yfvpGD%@KvZ!-0m~hvq^71h z3c_Cb1g^{RqK^Rq*E*L$`eTq&3a@aKtxq+YC2uJ!%dYwN^H7I%^ZnIXuaoiW3sv3Z7}40v>4p+MYj$d%r6=k#k_oPvS^kC0Y2rCgvOTTbU0Vp7ka;vtEoI}e_4 z9ZP6xu5OJx=JhM^ZRW(^!&I~6*x3}Z_W2M{B5;m=yepfs$Hy0~f7MOlgmFT5aRlt&d6FbtG z#w@k9J=yX1uLAcG11VfsIXGTAZ68RGiTlYV@q(*g9z2~ZtA{L)AOE#qFROOL8~JJT z>dp2AnHW*Pt(n>7sWzYE)L3QA_YmimUZ*-6i^Z0gub&zX(k8!t1?*AyUlkFt9?{C; zqAzblc2}4EU#pZ7&np^6MqdUMrdO?qmlCR~;AQ!YuM%T>6y;nX@9{zkmz+`>87{TLp^{*GeQVXtnH|&ZJ*O+L2$A!HtaYD28qocIcOZ-9>Y6zDt zW9p1TDM4J|Ee82x%3hY{D=(B{o=9eMgoc%5exJi8yz@IN3z`GF_DCC8G6Y~$$H<73 z&SeLFizs)wlezcHN=k}S#9W+16M2UZ0x1m6gF5~OH$~rs?7(C2_N|fiVDb?*JYTPyNm8cu*X8 zG~|rM-n_vhJ;%S}w9`ivdX9`vs)ULo5fHGEmBlNr&FZH=))9@@*|A|c)3tV^bhrx1 z%Gh8|PwS!ReF{@iR0!72`Sx5Z!QYT`@wAN zo5S9VD~iveXwAFh9>U0dHUJ> zQ{p;o{D($R<#9%qIUk9MipsU|nh0x$<0k2FS*OYh@f9L2!AQpSoKuLk@1Dbh{^uVi z_JV^0Mt|R%WG-|qfrrEMc>49x(d%1dx-IpEA`|2*itPl`_fMNzy?~M=XlH!d7|282 zi{%%Zm^d`wcn#0JHJs+Q;2}?Bq;P7$6(HQtkLU+N6@mkgtUWIhR{@$&6kQ4iX%4^s zM}`f`^v(g>xm1xyYQJl!-wWFvA}T1f1Y%u@wV6T~bu!lnXVW#818jq*Pdl{A{@B6- zL`3vT;XjLA8u$53%qF@UNRhQY;c&RzX)yE_L04Ei27TUPT`49*JVS(oz-M$|0Egs) zpS4d$4&(ZH8t1KhrwJCC84bRPa~ckP6mYVDbKT|D$*b;evYaA>BUo7CZ(Ea+q-(`RHjI6nN z_>T_r+QQ->+>DKT|B8``4|ON<1h-pI|G2H^i!E_u6OX|0Ebud2jFwKe;vk^2BVW@m zN%4vn4st$63w3ay@&$XpR2pEQhruNP zi-guf0)J?^&Cn>?hP%uk8CI_a4vwNpPqDIEj1;^(CULr%KHFZ$!-l_wdPIL+|1Djd z6zSB`8n?T5;J?(>orJm#9AO;xxl&s@5}S2pYgK}GBR}^BlnwK{y;BEARDrV1v)Y?I zQz<2tgiL8{@zekD`*zU`ww%|&pP#d|rZP)?l6*%`FTJ^*n~rtoocVbPD_^C>yeRj6 zJE3v+BZn(j6rWODg?K|tqfD>4I_-3nsha7Rl9C2j=S1l!m#P_(#8YKB!Hcn#ZtAYC zI6sJl`{d&c)|ZW{EvJ!9KeH@Agg5@fOq}86Oi9T{wzkSkirp$u4MD4JY{mmyBK7uN zsi@iqY*VA71ve-W8d)t?x?Vw88yL3WavMv3+N^f7Pyg2S@L?t-!no~{3veAHKSnwR z2~5XuUS1&P;J*W2`;8&I*KFRYljVb&kh#`~VpwZw6w}o& zp}~z6nuYdcPYAXR8Ch7+cE?BkvH0f@I}-=ThB&6F;r9ZM%28b}0r8oBQ5BW>t~jIG zn;kryFPtt1GfPXQDg2N5FR%MEf;9hX1vH?$D@aPRGg<5mW}iXZn$~ltkCpTFs`cK< zu6cXnSIKv#=8R^h^q+Ycc;GjA!kE`Jrv6e{nbhGypA-&`40Lw?mFhc!AfU@Z#V#Zv znM5PC>%i~SZ?tc0Kr`?9s2`h>k`xp3Z=!@SwhQG>;C2F>C)Z~t)oE!J5xw&z<}7fJ zx2EtqD~zpdrlDGB55SB`DqzznGz5-;+S8|fUNlGt#E*WwBZAq2{K|Luc^U)m z&C?QKY}mf``&ac5Y#2;{=K6pLZ5!vT|7g9D0iWsd@p~q2uANSTX&{6_H8k$Nl>Veo)G|K@C$Ky2 z!@UGdlB~QR9adx3a6EW>CnkQ4k9W6W%XQ#MVlKX|Jf?<5P-hVdh|lcjgpEv0RN#rd zfYnYX$NI#bv9s8$QBK~Wp%zp<2I!Nev?bi@}8jk}*LL>|pB)z->!R#c0qIPpe zU?Q+FmlVr$dm<0^h_<#;yzi|NwA?CX_Uhv8=&x!?s6cwAIjUN6I=;ChBRx*LKl~5+ z=-~9m1rN>P;cnPAIp4m8kBzPR_$U|{?DYmJcE>;8SRZt!E&B4`&r;!_0_S&XKha$* zKKHVjm2M7bTp(>@7mf6<5Ok_sR>}Ko{gR}uf@f5)9yCj5?xJRFQ6rs3Wh{PnIotxT z!~9&IgaC06M)1ZtxWG**p&O?|EQM%jS-Q^@Odk#OA1CT6i^8xARB)ZWy;!hpB~-Gp zR9=4#3iD9d`UB^AY2g5f14){&DlNv#?%{QP^z9uPEyd-t^^%qe;vjNJVF@c5Pn;~} zAY>67{%}Y@+2MITE(UdJQ*~|Ti7f`^aQl=lnAQXp7XGZMvHow%+_C2sQ&W?Wks*Lp zO8DiAqDl9o%q-dnUbIuHd-vEBdtX5r$MsaOIW#^A#I}o!Jh(?1C7R~v-@RXYifM-ntEv)P7~m)|Fjy58brLX>`odcW^Vn^H^Tohm$S1Oqdi}jJ8(Ns% z`;GhZc z@<+ddfB=a_i?SyBV5Qp^JGaO_;3Z~nZx*u|Zc$+Ch!^0%ab9$yZcBxPke zxt|FR3|t9^TW@_rIu)M2`FO`Q?D8g_`r_Z{TbM>%oE$b=#d?#XpiHR-8CtMeSy-?< z{Xwvh($FWAU;!NhlznIfK7l|U7k6fBdNYt0ZSA3uP~~)`6{kE5jjy>mNNWNO&D#B{f|~QFDlQJIl!ou>mOlh&bT%8uRs_;y!RSKc?7IK}i%* zQ20?+Hc_w7`g_&&Fw3v89zMb1Kk*!4ZH2!-nNZ-u@5CsA|L~ujs%poy$K4IeRJE$= ze5b84P$DFZ7kvmKb6J#pVX~^dzrXGmae1*T2wCLdL{i}?Ag-z!IacqcC?)k)N~(O) z3CwDN=>A&uTJyJ%>sQAsS4X2vS<^NAr*BRPeJ^D2H*7H)FR#enz0>`vOJR5Aist_2 z6Pkd)8(WRSD$gq&c$t?kzxb7Z_V!>h%orpN4rZ^Yc$(wuZ8bRD%;UstbnWg&Ol&xe zdrJHCDP*k@Kn=$gJb*S5t_RzbF~ZJ@xC{*Ycyt78abY)Sy%Gjev;gLm`S`@==l6#a zKl#Q){Ni1Jr^i*2!)BJ~8M0uiGK1T3S5`j}6h3J0B8iA{z6?f!v?ub*6Mx47Qs0V1 zcYD{k%w^$MV@C9bFbf19ssHax!o0lPQdYk2vOl;0-RQ_raU#!Q=-wB&SMj)V&Yk}o zh4@5TcWZ<;edDYm!}c*UzF#+0C_^_>#pC+<;9wVSPB3&~CX-F|O-pxJP-sY zloJ^_4qiV4>rR_+&#)-q1V%>xlwyz?U_;y5cBC;Aa-W@bne@(xx{3QdVOIFJUr_GM z7S>IBy>U96M^`isYQYFJ3gX5;Z}Mp6lPwBhd?J##KYNtt*h(M za2F;zbuSY5oa`kekP2QPf{SrGv##LvSV16sU_WeyG$kzZ#O&|XBt*`*8Y1tA{u(p~ z1ICc5-~&h=1~L26Au1*&=BuW8CzUL9g+$W|GnK7X!qz*F8wD78HXZyzLrj3#Th3638;X$3|#DpwSKy=LE zUuMGd{~jiFXNN&-tm#W>;S607T#}3Qq9_5Aa5C6Y5n!KC3A4JIn&`bRx7e9wqUXHm zM#78Tdlc}9;X((CR>1jlwfU&LPN-sdOH0cwWr8~qFteg@i=8JRBLn*b3ZZTAWCm&# zpk)+7ZHDYX*4G4>iQ~F6h6NoRoekq%(KzI_!2CIde|u2|WUpYmY_~C#3#cY}K(h_l zvMg>--i!y;d$0-#rHq;D`bVavxhnOYLWz2#ihE;1QztYuyi7yW>{6|Bz0&PAKcf{c zqOHLGC?A6>20f9(B-zDPBR8il4chOv>1kPITnT8{A)u(dtPCv3L5~H}USc95CfypCDO!QiGf@Co5r7kPILQlU zPR^mGCPRP_rw9RYG3!ee0Yy7tYTa#ZYxa&eSI4t!lta291;fXC`dVsLyL+I>1wsTd;J3{ zo-(xWt@X-!D*_BEFYkX~OMYz!nTRk=AULleZA1)WV)BH-CzYe(ZS^@(D>Vb}VB-xN zJXc*Vt8fSFv3g@WXSUN2LJ1@kKU(Ul`Q|w-IPJuAy{2I{RF#l!#jI0xI-K$Z@C%{< z?J{e`)_r)qU>gl!&^&i?OiVVUJM2vJJqqJ89{~ym7HO+)mGfg3mWV}X0|-g`3D1~acb%k z(0P!W?(gpt1;Em#p{9lD^-OXdf(W59i_5C-yHzMblw$7+d_J;30TCH(d*0 zeb35L)zs|t_$-_0>HKH4dUwuud$O9H144gv;r{CkEue{f>rGokO{!<^1`v22d6ZhgD*I)HMb z+AW|L6eqj;Kujy~)*F0BOIDLa@f#%3eTNf+{9$xrl6FtXemN5pO0r<}(nQH9Tx(aR znVOVezlOTDT9XfT1cblz~Hjf2A+LU;O{{~M08~A4m#+aNpKyQ3R{_02-a7ZmTo&-?FDUf?N=?xpg5WJ z0(%k<2wngQbSn`1b8?7?h`@{|08B3iO^cyGf!f=H6yZo%Uf%QH`zDNOuDSa7Dx$>SN_Xx1CFVGvmn6hn3Oc;s|H|+!r^s7p|DOO8 zBjZEjayV~=W8>qE%{M$#ZGqmwY8X>*^pzhv)^cIZ$=2Uz#-a` z#Q2o41a!XOYjkyKqaq&p#cZ-T($m*>ZLcrtV8c^%moo9Ci zR|)}ve9!as!lw~7i5(1+?*WU+G{vfwqT6l@&e}uf_N4sR7A-!(QBHzKQyiN z`~J16^<3_Fdf)#eFBWB}pI_{cA6gQ~`_JCSb_EO!@Ir`MgVc)HpV~xfd)M(l`bhI` zpM_1$)<1=L%XEu1T=)W^J=d_5m6u z{9-plSq0rifDqyCM8)u7b4a?MpB&(U^~EL8&i#?g%^_4zqp9x8;{t{z1Dj?}^05fa zct1890KFdWS#v?&2(652I&aio9GberAx_~L>$=n?bap03E?+N^rsTMN5XV36KHpHg zZjYk4ddFM1F>n)lnXBVT%=+!qdlhhL)>V_bL`Gj<2iXzt{rdxc5nX{$RK?T?=~#X@ zOp(S@-w%KW$o2mkAZM`pg^Ue$TG}utmAfds0B^#`Bxp1c+>vr1O(KFQtyZso76OhA z?3oeJip`=l&CI6H4s&yS5vUj#J4Z(GbYp6rUolZ7sIx*X_>!UvydUI1L1ax|;e^19?DFz@ zVV!0S;eoWG;&aM6o7oz_l@%;l(E6`m8*Xl()gZ<+8<-f^5c>BlYeBX3k$fjD{RyVU z{%~inXlwiaDg#3@v`-8=fxdyvMHtcj()H@DWRMIWN)ejX-yC6t`D#^y|I1ge&Kvxr z;pCW^35=7Y@AlC{yJrJxCtgo}9M}a!4@cp5i{F4Z zgyym4W4nc%blX&EFZOLO?dtjiS~7n7wfe3&)hfQQYL_CgCQq2I#B9X3WgYD~oo1Fw@tU#ApP{A7tUQ#l7qU0e{2l1|DFx%gdQS zRSDrmqYMZRCS}>Mg{{$VW`YXu*4FXV*Ie*SSB-FWs(h*3ZX4jdS^qtb7Zh_#hTvS$ zXtOBi{37J{@9xZ(W}u9lDZ`y!fQjkB3;2fqXv>QPK^u!W|ki5njTEqu&j)2*Vvk3lLnWO|7`(&-Xj zp97?G=;5woKJR4}7Tzks;c-RI%>_kJtQs31SUZ9AalD|Bk1>zw>C-r;B6m44vH1r7 zhZbC|t*c5#MtD3?clt~`Jspuy=)oKu9-c4)Q1>tz(X`lq=a|y7{3cBL-(@IukQo1d z^AzcZttTPO2?wa{JUng@ewmht7X`(n5TPcP+ymWhwZ-_UcBSQ)zoigx#KXK(`HQ({ zs$9z4{N7F&0zv^bb(5&57Q_ZJGW`@yLOvoat!4F*5=s&BqGMKgn5%%H6mzI$Oxsu| zEdS~i_4z#duS<7hxEh;A(7%U^o%Qy_=EB0G?}LegE|6^NomhkKNn1)@v#V;^NfA zL^)v;y^Z-T-qY%?!f?}Ut)Yc)pGr8&n6Z(xe$)y}OdUL|j@a$klTvdf7awuNc z3svFqV`dwhb!6mdINm&8sea2;qQ5(`45PE{ZB)GH@xtB}iK}Zz>>%OmEh)BdYNU;9vnQN`M2rNH9Z2Fu$ES@-?_Q0b}K3N zyuMwzh-(6DY#T6S{iWj(ounPki@rv9N0TNiv%1lys|RbtR+tn(&qeO7ck^~8y@E+R zcK9cC_a8hjER4Lq#sYhFGb@vQ*Yy7}9m-rde6#U9L}g@-7n=1riV&g3z~h!$8A3Qp zuDk%J`lLUsYevjtU!#qJcu(TuHB1fC^M5?m5Qz*<_v~`>nAwyA@K8 zQ`W%SuSEm#(T>|+NnWrQ7Ir9^AbMo~WO_N|>LS~r>E_n2!303q>hoK{rG%s)+4BzJ z?-Q&(icqWE+$Ko{;@jX}C@?ybpRBCBPj>gw=De|>Sf#P^;_ z;QBE33C9)k&`Ds3>jX!Sy!`eR1z5U+Pl^4JX+Q5#5G+A+d)~$YTr7_R7TTiy<83)p za6-Y2unW|;s`zOEqwh^mPiCN( zuB?oJ&Xf`urt<*OdEF%aVoqj>Q;avhwNjYoM1)-I z4CjIQ%Q47I){U3}$c}%pOY}HI2f;n>9-bWR=SF5bM4BgJ!rBm3`tQJ~AZPkN!UIUQ zFjQ2?U^Wk+$q5xzB&|FWhl(}~>S*@x0dvP-RIGcPL&`%i|$eMf9+P`&3&MJJ?5&Z_v zJJ3%;s2lD{wwdA5U~n)BMkBdUk7g0=qvKSh10EjClD}O1?x%>b(GuF*9$4>i&@AVF z`<9-T#{2loU391|9~Zfkbd2>8yVXyJ)&~^<^@HLM^=L1qPe~2189$ws+uOPfnc&vV z*4z5_C`IYmUz+Ufk^1_F*VlYtlNlO>cf#-b)orehZ0Gkq3$E3P5;eH=NJe9RDuh$3 z)N0VyjuCF=vjLy~9SjYLq6R+pTf*Un6(wtCrY$DMNO}&)aW@%MU39|mH09ed?=`!1 zYDXeZ1~w_>yBI*po=C2N_iW+2R)=Dz+_Lg8=e@Z=5ns;Bs~bxTi<>{5z4LQ`t6ZON zK5noO=9Eu*&tso6(x0(cLZ?Sf(+p06=NzJNvNwk~rI!aG!_3%e%^oBQY#hG-Y(4GQ z2kZz!wpUGVn^Y-q>3sd>xpvuS*&h4HkAHD-1=QD@OisRC>KX%@Z06O)s#5M4T@2$q z_h0xp1A-(7*05zCGSW7+X2*OR0mQP#r>sm}jWAot?a;J%0J^(={{M;t9~1{T14Tq0 zK?w;1TY~O*qx_#t(2mSW!CBp##CJYd?{=m2Z=L38G%mSdO1s5W`60@^!GC(7Hcs5B zC|%^fPPx&dzM-O~T&Sx0SyGH2L7@nH-W>_nDrxJ59geuHETo}N^`&Xt&BCRG-}ru# z4oaZl*&r}PczBi(5yPRgy?%(hpsYD*d(AHs(gg3kJHF_4i?V;fW5a+moYzY*GcWIA znvXj?UmYjzo2s`i(J$pHZO9TAkGPRGEWI{T?1PQNSX1LKutso|6uFVk6QLj3abZRe=*s4O`L5X494+FJf~UMiS3UthUDh>*l1?{4oFJ+ta`O9ltH1POX(5{aQ3Yq8)(!8 zHZ_+!xKO-6tZ{uaH88;D_;YP!+4_oG5x_0dR(%R|ir`?^tW?VF9YI{^R(F9O0Z^MA zh{DH#NlquALsqC3@M6azL+Zaa*hqA zxlL-Ci;{@t_NYr3n}vmPqG8fVLnXcU-;oPK{7|?>P-tr>+N~->0A@_&$KURI4rytS zz$z%@xHS*`L3>>P$Ot{>ki+C(^Cwb|)Zea0ajdt((+|KJ_PjdZZ;#r%zF`ZFjr~|w z2C!9pSy^ydnWRxB_%FS9|9-)m)Ch?<4b_1srm%49@(c?|N6b3>1UtPeUQ_=LdU^y$ zmStpI-nC-UaDMUj@nGUdeBp7B4QTFbRW4@rId5LH2N<%lg+S{GCzq$T>vfX;1U8WS zg+|%t=9#`F zH+fXN#@P5cO~-#UQWu|QgVj}zG-CAH_Rc(M83qiDTio>lHC)Lcj2##pJ-sH8T)FTw z^=BZOnfU{LB$I%T;Q9Cc@ONN4qy^Qau4zU!e*X^1iO)WKph;gugS8$Mlb{J5;O)!u zc<{E@34fU4#v2mx_Kp*nwA|C{_PDT&;#qI|at?mJ{MK_jLN|s{JS+&8?R`ofK+=+m z5WKAy$WG-|Ru}5Y{Ox%A@=Sn`R|#ixeE;4A1QGbxmuhx)QqZL6rQ$_DO;>y9Er^Gg zVL7qnxF{(JOrW?!6qNA&{erXWiyT0k*;kRhg&@xTmNBv96)-nBubwi}xw)yiZXXa8 zB~5V-?3Gny-XwivF7HVcqP?J(F$1vJx5ocMDe_s`cn^M`eH31ytJc!nOf}{)yLCQK z8C4U(DDoYLo?xlh&2^DUZ@R)hC{k|YldIj?Pkhg_V!UVm6tIDp;?2cwEA$V^M=oAx zKpKGy4FIVHE_bnp!kYl0{1fCqn<$XLZ~m>Mu#gEJu+r6K5o%ITnLAHXmkauLkQkdo0TlSri{LsQeSHQ^Bj`S%y z;oZJ{Lz-{p99q8HXv5E#M+yZfI$IGP@H|3hd-x&ISb;YObh(-GLrHUUy0}9ir;ze< z3$Y)(mBZi++KkS88IzTbcexn_`DSAUvyOu*6gqcm0OW-PcLQ;8+}j5E+RN+gMeSaD zl>1oIM*w=tU~!N<(ntdpP0%Ol!oOUkf?9CNqa5S1hy}&i{-~~D3V#B7v+a1H4O~>= zDiOu+fDL%rM_=FFsq)2@l@Yj%gA0~^BZ`yL3CKo3wPceL6&t&@yDQ|dF|^!y8}e;K z0YLhpmm1CUJxpPL`}eHC$Y5j1kktHTCZM@p4F&dnx#7p z{^;Q6TjNoAVOK$6&>R1}b9VLy%q(>uZ7gE%!FZj5EAwk~G~}>?!0cwP5qlVj`{${E z2nkmCwHrb}ssbdV!t4^jbB~+vA^i956~N@E$RtYU`XA8|V9x;1*q19930L7Fr^T@^sdi&;<7>EWlzB+=hUAb z1=WFC@rni+uSYY0+qWnaDopbZZfm*APk*Mx*h&ns7q#)-*E zp%hL^N@0k*gBatbwl4x07lVpIXCPFh5S#+*Z62QT$uz+;gcN?4kNWB=Dp6r!@@i^o zfI`U2hk@^ul$2B{#cMY=z7rbwi12|{thw`4^TAZw-oatH*$b;5rg>xi^}!)-K7fjl zhcvga$|)aAZXC2m976rJ_z>odC!3mDH7G{}Q2g9l8J@%aJzcjGT6Oiyv6&tKm(YB} zvA$Jb9q-mgP@i5qNHvQVa#gkn%Zpf#GMP8$cfA6w=tPhi8OF&|N^*P*~$Uz%Ugy7mius3eqMf zqc5u8cgNf5=y)B_N9w_t<)e`?yB;3;jb6dnExCD>Pg=%fa(4&89$00UF}nPVi-RgE z=rYL~5)#bpwq}-=&DcUspZWjAn3|jC<>u-WNoEhC-@l)Dqibdc|Mu69A7JSX7V4Vd zZ3|IsVT%B@LY(!xmdlG)#;4Km;UhGj!sH%+Frok%7-E~7gU;1%b_HvA`+Idzep;Ho z;n8kkB4ou|TJFRIobMreevXMTF~6Aos{p7$d3m{jm(uw7IE9XArgCcpMemicaLO}H zu9`o8Hu^Jku2xZ~H`mtEmFQ=OBC%Tcr6Ry!4VXkk0s4E>K6=oC&QkOsseR@AKP~{_ zK?u+nqoc#n3Ao{>@@pN+ZKPG;oGxZK-kHAnJcTtproOq>58m;$fmp-mJC!nq3e(R( zWVu5EH3f{tK}Je3W2C3I2PD4_(-qG_ZVRkaUESHKDFDvjycv!l`NPS{dE|0zNw?jN zo)8~DX7Lvc=>zluFTa2P{xnvzA-j;fHw8Td0~=8&_DyL`jpx`OXa)c6i9ox=Hm(z7+u15gxaWoIXV zy+0oxVD^yAMA6;d4YPmP|8W10=QLA>bseBjiq$$i{G6HjS86IyTEX3MwTH}rZn-8e za1j70FgT>(bHr%;1J?Lrfmrg%{N;gZg7aX^4<4yItcbZM;IUE~p%5(A^h*SELEvzsMJfL0;# zw$9tHDQRj>iuj_ybQH`?nYGIHKuedEl?C+|o(mZ10v=^&Zx8XK|JuGhfrBGU*C^?Lbq-$oP*x}Z zejs5p5bvcJ0wxPo$*%5h*dK7E0{V7-PR`hB#3O6qwFsJiZh?C!+!s?e*7UqK(|QB3 zi-5G~KUsF;@90+fnaA}gEpwS*h@q~Q%i@#GEwtY_PAOb9GJ?fdsVgR${-vwOpuoc; zB9!zD=(7SWExX<2jqt6OmX;zYAf{7RUj7+;%spv9t)XT~NFawVMn^}(=bdT=&83R6 zGNczmKy*lOa1E~~R4WaQi9i5z1_AiZ%>`>}6Y#2?#!C24KwdX*ZEI(DcyJ&n$amVV zM1cxr!3{F%15H%b)WGw%>esKG#Vzy&RF<-t=JMO_w6A}`#_2h*h2Ad0V z&xYAqul7h9KWuYQltR4)1+8F&+#PnIn~!`}A8 z;EsjQ90l<90XwYrx^4^{hijzBt82t97CMZOW@dUl4fVPe+ZwQ4Ed*2A|21~8+cVpm zT3U8n>Qs^Am>5GKY;j)2`Y>Cwv-|h1a2fL5P>^_gToOH^J@^7YG%zP;goN1GOd9U4 zH67?G#o*D>WhXWph;a~je*XG3B}#?-0Rko?BKSk+2Kbfj%z6Qe`bY-MtrmfC3Cvju zaY|DxBm@o6txQZ}^ST`qL$_8NpD?++OE^bN{iHH5k z#D0)lQZm0c?+X7gUuw|oSMU4W>vW##$8??D>V(x4H{^Vj0ap6>9s+{s^>sLmv>2bB z&!AB}fCnU|Q&YORj7_mZ&(I!Dn%g@l{SkS?wxMs`$k>>ddY0pkV5=e5RP{^W<4@kC zP#5mQ$?<0SYGYV|!Y!ba6;X5WgtJfzSO)-zbyf!5l=N4p&qVye9TMZ*T1E zbR94JM94Ce)`5U<1|7%crKFTpHW1ukEDPlxW<0jG)fy~T=9_Zz9_R_`f`|@0Y}TZ` z9Um)51qedO$dY)yYOYFWUZ4njSxl`#IQ{WqubL8asuKOh@fitW@bTcZALIN2QaY0)+jn4KyEOhv%NR@ZO0N z#{FO*H}%8FF-hWk!FVF<>W9%f9!Tz|tdr9o)W4tHBZZsb7Z6$)e(%4S5%wm85!=AP zOp;J7FySfF9k=#u9cQZH;UJ-|q<4UH(Bt~@zGCm5Kf0n;1^!g2l`Js1;95n?PlCX| zu<;&<7(`@Ag*F)^8%$KtgM>BKzj;&ZDFdQpz-*pdFyD}Fy?cxjhLX_P&*yO-1o(B- zpb}g=KPkWd3htdRXjgb9YUn`*w%UWtM&tnGQ{#d$v?v5&EE}7RDwktmI5!aTYm}5c zBMQj<;ptI*S?>#yD>z8Rl1*?qVfXpMDhm@eg(0z4&82NW6~f zs)_cF=+Tc9zS7Hon+sr1o2HDIu6ONzF){JY@2(*#KSF?hNlEwrUf%00iLV&w+pq|o zDP-$_Nb6lu@eS^7>MT->w6ytoA&Z;lFnD|5z~|&zG`^+lDKe7af2(*Zx9g0GJW&0` zkCe&tz!k83kQ7Kr)UPXkg>#Y(<6@({x25Iy>(|m>zX-nj;j+Rf_f{~`Bf1r;LG1!r zrmCu>-3*pDSVw|!<006)ZUfWQGz!>^l2R;Qm)s|nyFH>#CX`2a?vO$Ns`JS&05|*J zXihS*u+T7^MHhu&QyANEb6YU)62Q$ewZ8-CelY5Lg^HssBXb5Cl*~dB8Yil#C9pZk$TC9+2VqHSJ2>Q5za^`5i!rtm%8A*= zm%xOVZtE~m*Vsr`csu|zZVQXh0PIniaeI4Roo_-;-1z6urlhU#!bK$Z=SK^bPV3N8 z>lNL;b_l>&Zj((-{DHsiUIPpI_peuu4mQ_kbgj+Jk%`iGP&aJv^sV=WBGb?o&Cdv& z|F1FG(*-bTe*O>$?!Ad3we!P3lwBWu3HbFD$hZEy$MPFX2 zyRj}9`6}TcXmsUy3WG*oUI$oYzsWffz1_hehL~M^6CU7!m=wO-Mg3~eGr%hAGWHU7EVHLWQBC4HNfxzAo1~`o1EYU6|A>2h7u0@J z?F3MNv?l%i(_(03CzrXmodKBc0TorKN--ydFw(dD^@J8BMTS!$MZwml;6Ld3uJ;az zR>1S|;&fjMF33tI^{g1+-&}@1KCO%3vrj7Q)@AsHk{BkJIK5;6Z#!tf&|X z4`+UspS*DZivaexsw&F&Ok8dy`C~%Tb8-3?rBu)ISy`)p8ArbMHKsFB07ubDQ?i9i0Qi#lC zbc`VQ{OaSPGiXrDc|gmO$osFUPieZ{j2_;?z4@1R&C{naA~ZSs?wgR7b`A>9H*c1W zdoDSimppJFMfkKd$2tZ`F%%`xG5Tx9ocz(z(Vo8CcyrIfV4WDA0yOf2Lqk}b%hH^; z^(L{#c^^zSKJua?=ssp-bXk%Xc6HrP@tToJTGoXx9K-BkVq&ti>2?aO+LFfzBISL^ z!q_he3URB)Ud@+)lo9BoilKvvNw(f4mseJHhp8O9%73fLU-F$&F20J&2l%S}@RM3_ z?QELEBoLw6z>H@vJ7wzTbWs7M{2NR+kFJTx zRX?M@)_5+nAh;WVDw)G1{63bTijGbMZ)Yt%eh1tRz>|T4U6xjHW^#KMLqcMh!z2K# zXd@}Gy=%Y)!_l79cK%M{HFfXBiNNsk_V!OY#RDxZJ-kjez|B~!*YKiYgHBBadm~5z zci@x@6iqolI#7`%_J;36-|xFKa}|-9`732s7r<$+0nz>6wd62DX9r}uq@)k;5n3pZ zo#f4-A{QqamAs8jSj{z|TZVv3O~{e0-{bzne1L#|3lW8-RbbEaZ^F~mLvUN{3C!l{3My7EUHM`K=IS_k4s z{f*ZzWn}g@M>$}JKBS>3adp+zVySi542zET?A69cL~(HO0twjHm{Bop1wkla*H=I5 zgz4bBt%X3R2EHQ@X0=#WMwnCN4ojVu&89jouBXbS6+C{lH8f66W+PZJT3JJz4G0NG zyJB%#=%&dL*Wv(70L~or_OPXZ@)Hhi6O!)^02(14t61ILAMUp2-o+VO_K1ml3!uc% z@={2s`~P3t&f6Lr-}k2%02scq{3f;M0J29iqv!~wq*!3*Q@pSo%~erU|LNt%SE#-P z&a&7M*4N_{*uvNV6AccAz?=cTt>={DLCkRs9nCU4UxgGbp^{pxjf0wuej*Kx;Q09a z@W}|^<6OIMd_=~AA_G8NpOa>(YkVB0dhyz8F(jenY$ilm<~ShSki6)D4(YlhS}n&Htrj>P_x;oJ@&>lutY*51Koa~iZ+-3^lqYS_BQbr8 z+6C-zV$PCgF{ zRQe-g-%IFii8&qIJd{;R9r0icqgl%z_@hR_4sFMR+dW(Moy<2@<``J zPDaKilsWVeMEE_w!Nw>q2F>j~zktl;I!IO|6S`izJi~_-i<;2Q<9;fF?c@#54Bj6* z!q?ybO+i5c1n*I2;qe2J7iL~LDxavJOM3DotTRS89gAw|;4lsp6Vo-DE8Q6AAwHm| zpq9c_`lB-=1*#uyZPL@L1Va$EaIp_S{ss^Z5gNK;*$kFD?!hn^lkCU44FSceKBj~_F$^`lp(b2iMd+3nYTRP7RA86_ z0($sMUBmHEO@tssTV+s7RTY$7uT@n`jk{Y2Sx`z#96H*hBPkwwC*LZ#p@1JO#{kSK z?I{RzVav?}%~EzSuL!_c_uS+;CB2l-jxgnvEEW2N5HZJ1PJA{rIjM0g1SCNCl$}FQ zMpg|D8z0VW1wZs2u)#I?!-q`Z_hrcyXce1Us0?yoV%;6SM+L#>dwxEr>rtxt z=-kK0$@KI&TaMWs-3i3LsOIsprco3!)*{+7gy4A~7y8~f3*I@0o-wc1DT17c8wFZ8 zXG?Ie(e>QF+%6><{ap(3b>#%VEL%8h;+aO@MOd_P^mxco~0|SKv!DB*P+(M&Hm>(e!PfbY{ zmlWXQ=`*6&!`(2hE1>r#J}FtJNpGm0_L~*5gNrWc49Z@8;{2}Cb9E`qA}Fn1l$G^JYiY|liJOtqgmrF@bCi)F%$*d`%t(;!BqmzRd0Uqjhz(~f`j(#FrwB& zGl&<94Svh3)BSf~p#{pF_=JR*uV2L_Bw(@vl(H|4^We2;HC~umP_PdJLEzqZc67ji z`(SU62m6>X{7nW0>7P-S0;ah_K z2z1+*;Ku@9*#a1Ddvo=mAE^Qy4w&z0X=!jHhoboK;luw#DDeL-ZfM8*1NJ@g^8-E` z1Ng-PpgRFQUe4kJJs5j}ZUyA1o;TN5R<&0Ucfjp>v<9CG$d7=1z{MG|`=miBvc4`O zBQrcQ0#F1n^tL8T6(QqrYpejYP?sC0@Fc-buEE9~zyJ_tz~8?IH@&qrXOK3mMjf*s z1IZc%oBU^9-tE`S$)N}R1At2KhxLdY0mTMc4TN!Bd%j0tfOQHQSaN|5@Y~6ONl!{? zn1cK>L)H!B9#VhmNMYZK%LH&}!e~sDq2hrC5MY>6Qyi^%bn!2tp@xP_xI8?$$mroO zIMFWsq55O%gV~UM8WtK#D;Hb$p-fdr$I{f4 z{_*2_kMe>7o8Cn*htwkilugK`GEm0t9q7KMUIbu~0fYDz_+Xm!B%Yo+V>E(%!F3D? z=@iq#Xx{(lPfN!KaHAjSvOp+qT|>(0tR+tB=^IcU=u;9V6Q{mqYZ9A<5+6pVv?8D} zK73dXCN-FtAFi+IG&FesA5Gr@PWAi#e@Mv63K_{rlD$VZg(NF`WN%71Wbai*RyN5@ zSw*(U&fa@vuk6kLKA-RZ=Q>wcS67bX{eIrhbKkG~HI!Rd$?f9`v$Odud+(kzfLy53 z`^wAGa^=Ilrx0w#&BFtWfD3P6Xo!uS-Mr*-%K6{n=7iYuDVU{r*clno9liJSLx*7n zA0Hn~Bw$=3{&pWsK)c4qDtqz~CzDf8P*~YlRvDl-LI{&rscO4%3FI>T+x2VSt@A-$ z*i}3b5wPBuHZgJc@Hm}sR!X1IK=`as2r7fY=JCZ@lG|Pcgp+)V7%+tS48*LCeA9;< zP$%K3#>V;HOli0rFem|oPQbch2*$y}Qjnhyr@V@$CM+^fPtOYwWxxmf4_OB)5hxk? zlc$<&yiZqi!S@c+zXYuCV99}-`|1iPn*>>P%USQwhZJU8guW@leQzXJ(~pfjtSEA2uVWXJ<&52UNSTF))Ch9XVEN1`|3a z7gfBbjm=H4CDiz;Gt^`QJ5mlrGFVyVfBg!>!*0*so*oWBpzq$z=!r%U7smx^fgaw# zK*7*(a{&t?HzMwc0vG<)3l`tUzg|;2V@mcW4aCdJ<9%rc&5u)E;xYVniUXP+q+q>rwAkyRZ*hp(s z39Pi5g2grS%%pE%NGU4*`79svkAU7A1|^{IgS(t+d;ifRYC6D0tb|O_Q{NoFnqTS~ zNfW=4Ra5i5Bzlma{q*_LvSx}{ZQd$qTY~P04qxsM9Ip;sdySV_<#3JeTq^KeGX&TZMh-d`b)q_yDCJC4+1Z5AOQ2#})7yw^oes+nT$YfQ=4p?lX- zPR=Kj)iEk9ZGGKl;v5_g)5DuT^ko^*HW2t#oeva`>9M?M8Xm^pzFWY-vL?AbefW{i_;fwXS}V!M%F2ih^*E99JtV~unb9U74atV5Lo)R3p(O3m z(Vn-g&8ZML*+_>owOq2C?8WZHH-uy+n6ojXW4A?wlO})epu@Xvw#Q7~#4345xd_8A zUroka2Us6(bI}{}Ms?H}X zc`>E24wttWDenKfF}fl3$r#tuUPu?DPQdxQzGi%{l6uK|&OZ()li$3#00-Tlm5B?fvJXVPQnK>p?d#0PVO_UI z9^H${Y^qSpV86n!^o8y!vK6UHowmiBGEx|-2ZElAfEAG5U=FsyBEuK(r! zvh2Am3Gw{Fxf|3A_ogLd`?H=npkJd&u6yLp-__kc+S-cQDp!EEwtL9JQN;FOu8Chj zpM{AjP~vVt;6bAZHlm}oL1OuD`*nMJvdl~o=qcuDun@8%_4P4nX;9%S6Q6$8SXYKf*HuZT?|i_ z4!5^?o!8P}am>LR2R_b>^7GSMm=|=#QV|32SB05TydD`NW@4iK;)UP8S9zU_2>7tZ zWtHaUP7DnCHU4>p|Jyk%x;KK6goxOWL6~ma(}`-ihl%1>ZQt~f|01sWNZ}H=cpr0q zDJP4+eZea)54`h_&pKcJ{>_MWy;4VOWg%ICPeT9BVbJ{laRK0?lcDZsKHSfvRg>){ zOon5$6;k5RpGMN4yj&2ltE#fqeg}rdB18xr7QxYHtnrie>7hu%dwc(kG-m3yF%!ti z_vRN2pQTMw&B(D_``^b-ODpbpp*iRH#eQo3Ptp+W_FY6?NaY)>$4`2yJx=6J8CmTJ zBswYZ^kLuCt$4}Yd7t^g-16U8EX+D8y*nf^Qdw5P0j~4O3TAM5*$)ohkBu!BQ#>63 z&1*1TPFaA(td#qsBJ+6^QYODM-vr76hU(|GFFWD+A$L* z=mR+M!b9b6;2+rNa1uEY4=!#t&XLM9s#3J}%l>bdfE-X#oEvb<@?!6Z78dDggR4<65jv*JtFEpuAEPao%tkk8u(UCcgchRi_;&q{r2r! z&U^f8uoJKDF6P3`gcD$g0Nn?t^gHiQ4>#bu03{akdu!e!sS%{%!NGx*m11~iR`u>j z+^{6fTDiE|r>BRD7e7%$-^5N$FfujuK`x-nzDh=Y&_9Zh&_8?HDeA;bG^395kRdCtxL8Lc0T%;b zvq&ts+wsJ2M`E+l{7r4G5&0MPUvs26Ip*oYKL}B`iW}Xx*ixl9Jp4q{@FFHv-)pwP zR!xm^IuoIcEgf9d`uj7rU{qA>J`C*Cz?xW)0_1{-ZM`sNvCFtRv7w0x96F~tsVXhj zM8Q7tZDp40r=1f_amKfAH{ZF#xmxy=S~zy)ujzPEy2(T?IzrfDMfvDy0-2@;&f|#5 z)8p6t)2|T?YR}$t^2h(M9!dm9oN$>B>0VV7$hmrxh$h_LuF*J zQy(Qha{Me%qp=Gu+{APp8*0lwR@a=}Tj$V|OXvGS>x(c6K&%jScbktCd9N>;-J(1_ z0xy6M3P!haG9re*R?lwLS$C)S1ACR6RGmJ6kvLzAHBQvV65AcS9I_&^Ki9qcr-MP`n@l_Iy%3)qW~S8+nz%BeeopJsH{Q zvua#4HyD1{+47I{^{K0ow9I$j4l)A%DJSn>|h|q21ug$`t=u0K^H`{ z>ApyML{*%>fBX0k6J5P-UpYn!N-6zmzvE*(0Ra#UdzNUuJ+uY?2~X2&IzH6DaL4({ z!g2kzs=$wVDOn(!$KtRFc0_AHI!{~Po1vi*4CHQ~Ekv$A6WBph#wxP_&;6PFY)>9+ zPV*|+ot<-fMH|h%uTLwt1p9n4d|Lx^^>LOy+Vd;+-a{F6v|0g`!%X)mOZxCFF zy52N@{;VYP2i6^B$j}E?olBRLuu?v&eolMl=T{(tH0VwlBj1)OxUsg&4`oz9RJF){ zLZ`OVzBHz^#a}sx8h-?WP^t~aGJg_fsrUo#2*(OK{?!;O5<{pPSms@=^i7-Y)@NyR z;_+}o@8DTdQfSolh?%q>q9ESAa|*tB^jjp_8ny;}xQmTav^hR)337}=ZrpCC`*m#i z8`luC;0CXle#iCVv?3|#Z;#kSoy`bMD8}QIYePp94s%Xb8hb(+PF4I7ZlsXEbeE4$ zgz>i;DvzTfeVZM_*^LSge+oTzWCFWregUzJ377R9AN9a z8SK-+!`XXswk=mUrh3U4u_*fbH8p)S1?k_ntNk%+Yr@BSQ_gUOuO)XK><3iob$|MF zCm_HzF?oFf-mw>*JMpKb$}5j^95uD^;~j6$y{?koU7Z?fwBA5We8)t7HXoU{BUpt+ zHwD_SP&T?(mr7MtNlzjkQFAqR{&^RHq>qD#(`Idr5-h1Er;Pe@AC-(ve*d1LU3U84 zPoM+{!lZTSiL7T@?0$~-)q5-g#)e|DjK<+2S_|`>U_xIR`ju6yd73A_y!>G#Bs|hm zkA(iKcW(2%{1t?{7&ZoVtg#AQ6s`1z!30xCNAAsu5j5D)e9G~umWXKU!4-ct!I0ha z5EWFShgu%@AUP4aohHdhPeb$dNJB~e4X|F&B^P=#w^US)XlS0D9{7ujRTB;_el;rj z2{Pkisa)!vlLM$adyk zgSQ8z%X_q%8f4B*KXl0N+=)1PdRde#pe_0qh<28#A_@F&n9fhObc!oHYy?xJkVsrt z+>XBXm`Ufxi}5?$Fu{I+0pJI!!yPGf8Eyy<-kZo(@=^v zK21EGZWlzb;1eCEavpCA;}la>(p&Bf8&1m{g+7K zS_3Dm@TsKMNAdSLfk-lh#1rTWsmUwOH^zYESp-T0e)mJ4=J4RvwZ@lvy);bEk_PcL z6FDC80Jm98wZ{l$YZ-dFM>Qk9c|ZZ8qS0u*%5!Q&3w}9)2liD z{^aI5JgRWSGcXuM_ON3)pFF8`Q`0e=!HyAIWQKM}!pA>3SqLgXNZhJp`d<>D>b-J2ZLqdoG$l21Xzx3G9N?%#Qy1aCOdfWBBs;6>-H)*oI91}@u zYS%x4PxL=03!r=`engKb_}wOVl$+j?`?)ZYD{DJ~M!@~((ycR|%EL=^x)OnKe6>CO z@J^A~-3B`Tc)mAGPVq>ryiW13t|eiiL@Vn?LXQ*JEx_Jjt1a393Km4$ZU0R0nG1mr z_(TR{Yl?~%JR0Er%*^;)m(i{73kfCmEF%wItgWvDv$gt^C2Y1o`@WY~IdbdO{{DBd zv%>q+uLscw7iq7Hcy>T+!~b>?37o(H)SXL!li_48xbMLO8;hPT@8f?L2DM%WRr{vU z4^3D4P@e4dhy!)?Z@)T_G{J2H#bWaS2YyFzpK+`VqqngnoT+K2Q%3HS4jPt}YeqQTkB0a+8IJ6Z%~`R=zB&w6dz? zTp&R>OW!37!h0>^whNKGb?ZZ&_5(RzMBTsX)*QQnfVCzIZHSbJ=-1pU08{}i1oeF{ zNB#MSc2hBrW97pQXsZ$xm%vU0I#d8xS=?U%dgk`s<|#UrdGlYs+WmA6-&{0{OG`UzCYN+=Rk=@L*&adj`tnkIE>%jFRsXHyY{N6v zd{WqF5s!ujv9C^+jpW+M-t67GICB7tCf!@Nez*pscSx2GSS05P2?|2{nJVf&+}te7 zNNhw=?s;}N<8_ALR16o`#AG2Qg&MC3a6WuIywb8VAZOy?;Q`~)>?Q#fe<7e~ZvKD( z0!3##1K>YO25?(LF%z)dTe| z%9Vu>6<`Fxa&VJ8JRT)0c~#Hs`B7xHuDOZngN6E{?s;x^~@s zr2Jj;d<5-wI1=Z@t9co2UkPm7y;i8^Bvf48K^?7Iq$jl25ocl1ljC)^84A{?@9u2U zP_E77Mv6vbr_V{|qOv%Chmt_phW>ZU=-S$g=i(QVe$JUB zVu^@v=}jw_32tohnaZU$N$yG5)c{HSAWjU%x-@&RsB#(`U3I+ z_}}jHdtaq{pYLp3oFy8UkZ$`(w1Yh2CME9*r0K#Fs{mt!p)cf8%z$MJ3Aup_kYR{T?Ta?Cm^q=JKL%b3Bkq*bOf^p7(xJb8(g@4x1zr4y)G!}WEhDT z78bx`ZX*42bGXY;B-?$8pj4q4YX=7@Cdl<(^+!_wxOTC~_VRy~3yU(izj=Vc_^+-m zYShzuZ+71Ju<2%&_puRguo{%0dp08m)M6ep4H6c|uOeZuJv~B#L69F80)bS^Rl0?Z z0oU2i)^`8s$gtG(hE!Wa!z>7W;P-8Xv@Nsn?;n$s83JG{g~z^rd$gqK*DpFTu{1>{ zShc{b;>Q=0#D4aX(`aYD`Dr{W$iPM+ifM9k68yt_2tV~%qM>acE^=~mMtLG6umN~& z$4r979tPYrk^8wdIXPn7r5xws>s}amhi{J?kTa=o&&u~V#){zBo`ho?b=q%+QS)H( zZ(m0^$#{90*|I)lk4TM;4J6#%F(RPd;(F;*mXL7koukS_V7Dhda&t_+6`qx~(3kZj z+1l*hEvU^1g*{Js*)j_iFUMv_pBP?<17ZoX{yw>od#v@5H1U0t;}6CbC47wiG+ zy5U0Yg}J#tGq)ErKWuu|*C>zAPfzyz|8;-L$zb<3)X=c<^kiUd>6eGrQ{@q%V12(hY;dmD4tst#t1@loTsq z$@%uJ)UAMrwXf~Hl zJ27OzMA`tK@~@w?@k@bJW} zto*F3(D>oAWIps07WSpZC5^xET72>MZ)_)l9OI`#k#lKN?i)?T57bUQt}gOKkl!|E zidG(aKjh0)2A_5lfGoVd2sbLj8BjN2?$un3vBf`BcO<4=X3kn@jEPXjFgM><$*Ots zemCAzTSEi-4)`?T;4u`W_!9A9)tflV2}*fQ&66-SEVK0ag@! zbWninH*KDrhf6m?npL@PAHFz`e43DkgCPY|4X7L8D%vO~Ts?WsRa8?$#^mYJva`?* zJqhpNP1J?#MF+4v3;%LtrDo-)CQU*IYH1W+vCr6VH(^Z~F;6?2GU+N0uD zhlhgzwpm&_E#}UWV+0p3Hr7IRmI8K``PY@(1+UmE3ckm3Oniz1K!$1n0?0lpwg7xk zstLv2$E5xw?{T+t!Q{@b9~5TT6qOi>vsJACEEK4 zOc5j1wqPCBa^6|OOK}guXoh)CNI4;hwqhtI7aot9AX{pYgA|)3l zUkOgGJ|2M)0fAhoJ0dCO%gIy>t> zdmq(9K0G*Be^d``W29!!@`%6%D>j|9Gz|lTDEtYR7Kwa{Dc#y8*YjH@@>ee(UpAmF zNXHl)cqqmM>6r#ByOOwQC&Ji)3UcktaCk((p!)E9wB(7Em4g{BH(;V!PwMfpeO8}e zyQ3~I9{06}lj4Lb41HFG98Njj zB$u<`@~7GTNtAR_c{z`nqhA74|5figolKV1>Z+B%nIW5+8njGgso$PuSq)f@pPs6d zkiajkk11X8rPWA8C^0Fizy8er_hg%Qb>ami0k&Z;Ij`~l3{8ovdT30UD8GW5S-dmq)h znOW|B@7N<#i#0!=h@UqkKuYD=Gk-1CxxIBNs^)_OdfyC5)_8Tz5pPw5r>9*&6r9JQ zGK0f8mX=X`ylv_Qn7$HGcJ|M+tYYM3D4&HZX%#} zEZNF!fTqy}TzGGbCo00!yikw*vqA)|_uwe=$!_P}%9-zIG%!)Dx3;0$-DSzBuW15= z4N3^F4R%HZ0uc~Zs2tRu#cj%6vZucbp0su6`v89a{;fzK&7ADY@~|VBF!Z-s=i>%@ z7~Lr$mLCB<7Ll+Zm+@J`8wou^YY; za!)&Jk=t?VVWG{$0mVm3cZqL+TgToKe&f9~`ta}tpuYwMo$^prK^2Y-vj^(ruI#?= zP_;vG6$|76RegPOqQ0r8B53f2>%;G1)|92J^UeCRDkM8`uJE7sw!BXWm1*pV%lb!v zKJ8m|ZfNV0nVWlWgT9XoU_c6?ekyw+bhtZSGW14ATZ!f6k4<;angs%-V9M?O@1>@m z--FUWf9C)E`7rwusit;3@s$}Sj^xQ*fs(8=Fe)Axcw^DE7KysU2x|ps$F44g)L8;$ zPM=><`uYrir3%($kp(jaZFJv%og5?p5?sP=C}Lc~%aFCwG}SEOPW|ZP?1n8F;meuB ze0UQH@-`qS7SD!!{YvC3A+w@yr9@AZzU2vWf66yxGs6p2<9pfB9i{<}g#prpwfs<3${b0R^Dn z_2PaxT#c{7;YOoD_?b`^T%oNq*1<{mU(IqGYL*^2dl-q)hCQ+1sf5#4`S$-*Jd z!flq~xzWXLr&+Yz`M`4$)J+7iO@vj0PVscZry9uva}|+SFZoeO8zL{Eu&`g~4FNza zDI!O4>FIWRxgj!*-}HG33NQp^)hywv3!nPN#Yrj?7OG^udg*Z@LQMeGA`vWwm64vl zp&y%Hb5Tplt=aJ_Eb;W|9HgE$h49kBx7^| zkYDid;dMal3jPniztPEnT2oBMB~BNoxR6u8W2e)Q$P=yz$f(k1#Q>?kP?E@xidl0_ zMgfuZey?HY{cZl{28Lg?h|{T85)3IGKdz#qOG6cFhzv5=NUq~v&b|8SeI@GIh+$Z> zz?>fU@Hxz%o+UTJCD8%dj}&%^mL8NW!Z3y+H0vK_7IS7XTl#a!sSQ_ILLemEghSiW z?^kc7hg)bel~cB7=?CJ=u`(+cm&ecuz~jZ{|KG=$BYo@I5FwSm)EIal;1?ny6tMt4 z#5{nu@oWO-0HacGxGc1AGk1uX&oz2860erqsll=q!#V9Fk_zcsf(I7J2JO^Bj^2aJ z4yfw>zk9YFn2U+roap@ z@%Z46MUs-*b-M4{GYQ{ZC1a9x4DdRwa4g`zsObfOa)7WJpB>$QRrx|K7gJ07*LXAz z{+c7)f>o!2>})Yu`ZU+UBTeG^*+En#0RaNiL z#P`+G9451=suK7lc0R9JLz?HIaghog^JT`FKtiMZL zi^{Rc=@CO(lF-kv?qO5g=|&$%Tr9!`JltFlLE>cl8jbd4$LDE?}nBAP%{mB^|9sjn_9JR-vwc+KS*`n(i`{3(uS}s;9&;3Fm@a{+QvjanWzAMMizq+#W@p;NVI-2j+)ow4Z|(w3jZL@suk!2AU^QLJ!X zW?bi@&Zm}xzy6O4pv}r2DCOwH+bj~|2t3{@cL9^0wA=q%lJsd}U1z83CeRLVPUHp# z{!$2Wd~@k>`ksoFfgzRF>lkmFHKTU0mVNmZj=p}E(ft#bu&^q~C4*#_`~NLUX3-L@ zD&+RmjCcJV!r51AgXnMGXi+?~hqAu@Y>QNCrKmm!h9SVa_?}QTvIsO2`>pS4u%HI> zV^Mo-D+Mf!RES94fnj%=c+b`4Su`#go^M}|BV(K~E}4t~ZwNiZH5f(x5+OLoSgTW_ z4^~^5Gx9~^EP_!7$(<@ zXc`E%S!W0GoV|shPSk$jbGeK9ZNwcvS0vu1`L8*67C|cx9`O~9iwZFLji{*!+pZId zi;X=v7?Fkpgh1fs;#PZ1O;>V}5e4|@%IWJ<{Q6`%SjBEpR*8ZB3q=(vFVULJeZDvR zE%0k2oM((czGGmxwoS?+#nMbbt2Ft2wE)y@fw(irr`$VApZ%aBbK4^@p-2)zO4NH5 z3xw~gtiJ}Y?va+3sK@>nug6{fz4R+9(@qyVMBOvy3UF8kOa4%qPo!PwZjkSo&TBRD zTwFgz)Lp`M1NM|^^dO^f@^qkMJ3I5~)>5AK#eS$dN@%(pe>l6d2ELP3_EUmkV`+&90hxWgKq}*p@gk%VC!EgEV zXQRmlE|r0r8UrD={dCP3xR}raT(n((rKF$$jNxNobU-OdC`DrfEIW<6gaFxZP1l|^ zk(rJF&;&%qs?^k}uv-s-Tb)$#3W&21h(0tja&~-Ns8s?Hv2+1|@*y|JU+Cyi5)uOW zTa_hl+_;9_tvN10i*>4Oc?-5u*reJU zvavvz=A*_QP*VlmsQd2<<_!)G_K2PR0sVYO>;tg4QBqU{qi0q!8~7ODJqvPLKpN3;0yu6lN*55 zcNmwTrfJ5wrRxCiL(NhjE5``H{oLNkvl*}X-=T(HCuWdW4(2A^P2KXzkU@LvWk45cZE6lQZ#HoTD8rO9IrjmPZ^qn+A&0IuTPo*V(VsuYH4Aw^8yi`k z_t4te#jg3-&EDO}2IpZe)tU`9NtU%H)uW)cr3Im1RhJ>_q)(KaTQL5E&Q&U#lOKduzwGyvROQu7E>-5(VcooM-|XLhuBsXz z9sRl52`q05bMx+WadB4G4KRp*5#9~N#%!8?n-nw2myVUS|x=LdHHaR<>fYZ4q;-HH|h%I_ze z6Q#g*w4V{f58JhWwW2)V9@B2jRc@mRvJ|4}*Af=_&iY%cH%OGn32!;iw8=Rfzj}^3 z1V{nA>trSkOHGAnIP!$fdxY4g+(3?~Cl7B{WP&F<4P0)3xkyP#sm}7^`ST)J|1jI3 zsn%Fdwkx?F5LI7)HJGn3R`l!)z}uE`oo|($eAVFaP?>QyZZF z!@I!zr`G)_P1t$uBbSMemEMo$<`S%%mv+nDBH?8CAZZlQ5~_Betn1RQ*m?vVd=)R_ ze`SCK0e0!!+qK7x9|VQIp3ht{1qYr0L-REsf7r#jR}zm!L&Xe1D+&beCb*+G>-gpT z+!ow|b!S=y{y$-Pb(rcmCo2yRJ}kNnvf3Z@{qn`nU1x*2pV0`e=gN^DxV!rYFMO`GU?zV|aP$ zEN_xU(Ngk#>-@w?tR9YZG1OMwMw`wtSuJ2NEMj8%d8E1`wZ1;JsOWt~#gBLmTxUBJ z8&y+Juf}ClC!iOI5vMTa;&lbw5WdP!+JUJLU#JWTaJLG6W;a&a+|vWkmxpP2)`EA{ zOOXLsuoBq7)Q6!czvr08jlCS>i&{>&rL+-u9ZFu`YFfsD%^Jg?fEV!hh z0pOs(6`<_q)&;~3`)SkgW@6&dmv&wMjw&{%Ch7p#1?24TJ3ky4MomGfg0KCgGXE|v z{urx_AOseD9%SeQM^;#v#eK7M0rxy-XXn()@27;}*-s*w?8Y3WS(<@QLw|pxRiKsfcluhO;8sEPZjIHgzXooGNI>35yLW`0u8q# z%<*Y`RbkQ28x8e(6qq8l%7kAQ|_V-18zjKE8>WtE}~~(ed#*P#eUck4{V= zOED50%COqm)yTxhCq*nDqi}0%>~@8tm@*cC_E6>k zho4%ss`Z!uo0kWXTfs)7M>FXPN?r`a@`oFVuvdG0ROegMN-&{lF(;3>v-uuL*!<$f zy`RvF_J}|C>AH(hMpJ#Dq1p%tA>_2PGUv@ZegO}Hy}d6XGE#f&dq+|2GTezUt3N(J zk;lh>;GcO`!sFWk|NV5Y=O@Yi52BA)jhKZZ%I)8adY*DgjaE4?h@TZ=O~3Xz&o|LG zP*!eU7?SjMdkB+}9A!BYrsE%;EC>lBpslf2gmr#pXU>Bk`lqMpFY4zOK;vt6F$2JD ze}6;2>P$yR@5l&jFac|8WRKNjcteXS{pH z$6u`vKY;NNXEPxOIs0daskiVw-N^zkr)yxOkESn0v+l^B{PZs2?#`$~k-wYJI>Np*{bi842Qu6&7oq1fE1ZSY^;y!8pQTX-Pxo@nJKp z%QYotQi#%l0YMUrgEk%5@jRG#E2S1=YyP;R#E3KTo$s|&_<%V%ylQGy@827_V`jpN z5qFR0c(~YZ`l-CUh1?J?Nx*^dea_UPIF<5CXvx8fS>)ASNwt_780YYq?+^7Vw^~cS z1_rbca*K{Q^zXLA9`wbpI;8^h7wUQWt9u93`mjo71&fmv`TP4zkhd2y?QzCQ;MCpI^VK z+{XonDQUbWIYvL=qH7xB0}m`cLa7tk4%s)?95|hoRaB~x4j$@*o;ZOumMZ_CIXxcL zMR!X6k6TCZK~6?MV6Q27`IiObP)@|vcInt;zFOSNq7(==!NA0vPn8mbJuwK0@gqZF zJCU8wZP!%q8)!7I>X(x_sQh*h?W};6vw@*~(e>XfkpOp3fG?XX5zpN{hMiK~+{~=u z$6Pkk~rnV%&F$7wu%bXEobkUI(JeWtIP8Yw>>{g-k)FI ziSs9m*o}+fNkiS!8qpQJlg;vca}BOTT}Fn&113+`Jy*G$Fr7<3sOrj!ukgUIp7yY}Nt zCp5%CMq%O+*AW@BNlb>Y)Y=OEMLw%D<-T3(K9QKzubbi#%Aj?s+?AcZxHaW|bb3Gz z6ChZsp&{6VgX+}<5=Leg3C|Kst1~5Sjio?&=oYx3_PTm zNSYeYm%FH-5_pGX?)3xYuDCcAHYZ_WN{en*WA59o_tB>mYA^qU$b1+ndI}!Oet_|g zfBEz&{_z0pjjmX$Od!P4)`sz+#-m)y0|#?eJ>(A z8*Q=|izO>l(gR4X*RY5oFK`2N3p!(-MxoRjV|$VLn~|6sbaOg(|5!~ z@@WnVIt^=C$U+$vN+@s<+zA}w6E!DLsfhvti;w+krF@eS3K}`a4^S_v@}A{WQiWI8 z-thTh<5TcKp#(yWExJEL^2_%Ul}F}^J@{0>G+8*`CiuS9mE7Oko9f|J>+9Q{$b&l< z6!ccL$exZr`AfdM%PY=bA|aF57=F-bLV1*ulJf2y-k3i)0z$R9=vY|_Z2vb+jg9mS z49QBz%2HB(>MWiYrw1S(G*cS`b`(S~OrNI^@Z$dcRIWim5<^T@J}}|l1;?Mq<)eC@ zuRr!g%N!RwfNa!pAv$1Q_RK=e>-=Y3-KEJh&yO-L&HzCiKJ_7#(mGQDjwxipfC~wV zGbtr~<+VfaJyuGzy1EXP4SJa4^`leg_TQl*C+BY&7;4`v*ZFwBT~uT3MYKsgdGjyM5>Z)B>0{q&TuH zaR${cUCq~*q7Vm-iyHd%m-8Uz0VoEDg{a$&yO(fQ-jxwvtTibg<8mXA{^?VH9t$!U zRP88X{PWL`2_?DGse6REO}gnv7#3>91~T8TpoIo&SWdi$?CekuCkwqXhYA|D1u#nF z!uyh+zjJgH84=OKX$#aB@ylbAhhMF%t?fsP(V95P!UGA%OH8nWjG$GfhxVo9XHysd z4dC_Q;@T|t5F~+2tnPgmHxTN!FD%S{{F(HSpQ)p|JgQ%ZsqM#t8Vks)gT^D$=p(o+ z@9d0$+hl7}|KQ-C?(TS+fZ*V#jKp|NU`s{dIFUQ`);IFAt91hD6E(RJAlm>UpRQEmYeR z$U}Yqm`e05uT$t!j(})WkhTsaEwoRIr!t97h1v#3so5yrlJUo zw(F?IK*JRjM0xQ{6CWa780ZgS{H3WGPI7-~eZ47G&pG$;RnXqvL$?~?IPIF6PoMmh zu8uSk>gwtw?lME%-j^@BAlV&Q0AbmtZShHi&r&OPCUiiI;)V{F=M3qm`Utwgj<$z* z?wT37IZM5({?AifMVu_NAuKWc{=-i9mfnBjCldp)b(httjTCr6>MVB4fe2-KJ^P_r z_oDd)9%2&1Jy&NS4}kjdVyD#<*fH0~#K=4f0s=J4ENDqXKYN~z(h6}WC=4}-5H+Mz z4lUZc(D_OzC+@fa{S;d4Z~6Is0|V07Fz5lVRbgRa=-HcFT7Y0nkLucVHmony9j%53 z%FdzhNxhk64|B&tUF4-n4`^3PwAQxlxy%&OPxhYJ&3LVt$O@@89x0wBzdb)Lsje20 z0+ZH!2uwr7CQ0;0rJQSMM1VHq6Li-UD}c8B1AYWdscQy&m4x0fIj{DUPz2%Atd&^w zD30DiYs>2kwj~G#Me%3U5Q^~R-|p_(M8!6!YuWXyzFQ9!09ld{8^gh28(J%+Bwi3r zb%Hu-W9W;fh6b5bh#aGs=V@%0IdVfse~@*BbIftc#ib>j{HFWyzg8g7LUL_}I*a8+ zb?mP@%@rnXPK%Bl^clOOB5ltBbrqZFIi2#m$eB@S9eHICdmTC~Fu0LOV z#ZN7I+Fax2pTVr@0)hip0}nm=U*_E#NRT`+cSw@(6+j*Etpm?E8cMzt==$M$uZ%s_`q%^1M8d3?rizTN_pfSP%o{0TOAN3`=( zSeNAIAh0t5L5z)!h513DLG5WPt+(wJF1inWUOrJvtA*{fhx5j$xW2yTv$UEsm@2`D z)%)`H&i-nTy!;pME6@I7qdUsA`3Srwuam|8Dra&|JT`sd^ASU7BMM^6h`R~y!wQ+m z?Q{lubaIY6LC7cuH`{yK=WyAp}l%>lgP!)~hjiVD?c8 z70|ihZtz8Zlb(vbX1U^U&E!f{uW?DrEyC>#2}G#nE(CU;37vhY!7u| zAQmxJQw`CkVrSPBPJSI&F3_YLZD@NbDG5onP3q0Gw!(h+(%Ugn0*hCMK$$+@x9|)s%*oI`%>JmjVoU_#l^* zmq#sM6{9VoYH*QSDU-!H{u)BqU#4HbUd*m3C^tSH6LvFxemrPfAZ`u*w6VcdSIQ7o zcxuDV6Alt{D7D_6lrl490W$_>e(;}w%PA7GB+~%A;&0* z4ICF+TMF>5`yVaqzrVoWop5olX%R|`0)hq=@tZfD5Src9!P5SR)$O7xp!JJ1cHgSH zg@qb)P0%__PIc+)vpG5Q?R4Xk%7V5RRRSx|Hg`Yd~9CS;NuN3Tc)5|2d0m%){3r9 zM}bRKWo2DSNm`|lzAn|_n%Z?Jk)d6IdsJDuc;&6EqW1>?mVl`I2VL#$gPom@^D^SV zmm??VF){gBjjnSyS`H>FdZ1k+4lOom9Yk^5?gQgL7wW$Ox?lyy8f&4~<)f?dAIsU<9-%TUA~0Z7)5uCr>;tXQpFjK0 z6ir*9gHDPd*w18%hdJ_VE)Mbf(){Ci8f*-FY&x7kQ!A?mQ|^=$MSuS(6cAu#YSNU^ z_mU9ZGFhUR(`FdL?hOZ4$6F)4R~JnD;UVT7{Dhi|0m}i*U26P2lHfu4Q8`N?0=is8sqR{yUT z2lU|TsvZfJmXA=~IOTucxFVBD8==6MFYpZe`z6ZXlPgQWY#7d&W)WGN-(Y-Fl^-8J zI93S>&SsnE-x?YkU=HSD#hGzD_?ex<=?#zOH^Wju0KPub)qIkl*UQ3@J3OSqObYgh zDizn)KZ4CV#An0U_UG^nPex^NF{jNsS=a^v*daIx4>dP$H06F)1zos&Rh)7)XcUFV7fE38g@8hlwfdR8?MA7Xdj^g&`v&Kwzu)mdLW|yjSy~ zpvd9x&f1rPHP;&9J4JO>Ro|*~T<(JIIw5X|j9e3KZtv_m}`E0Y2xvEQ)`oug{TeJQ^Tzx7TtUI!E<_AYjnG&jE)e`D|;@ zVmk@HaJlQAqA=7uJls1lAOqr;aSU`xVCX3_K|wSt68wVk!{89#;7B+yd!ZwfV+4*_ zfK;?Hb3r~)n9PT9olIrs`JJ_7&1qOqFJ9=Y{bBpm2S7b{Z@98NAQn_^p0L2hNxAQgrQ@1^mvWMA#UV&(@dI z@6S?_AbOvf@~z~0CBP>)r*=pZ9mZ%XwwuUtnce0^NO-oLF1&x| zgxZ%88Fn4Kw@OVwVkshGvZ(X<-QxkBGIKm%iQ{7G1iBb`0AYV&qnJ_%L|i7^PM~nc zh!IJ_KPx4ZNzniJ=N)Csxe|m=QZ0T9{!hl|JECt*AKNo0Z4kB3uzEypXX8I z2q5P)iZtg|I<2;UT0DJQGje!5_$B3 zj!qY}PAG~FE&Hb#APUjmgp3ra9EoR+RG7B|JSX)Njr2fd~d0Gc_y`5*kK}I-T2i%%ClsQ@s5@20VN?)}`2;u||eo2^`{q^k{ zrXa{L_|mP1a?Z~^AW-%&W$ZgAE?lyK0UKfaJ*xVXB`TPtb|niSOKA{EYKv7hB`PU# zFTiVBdWWE&9fl_-yC2^y_j_G9&u@%f%(xG?1QAhHE9&ZAOR$9>FQJ(=kRKQK1Dmcy zD~ymhlo3c_cf`A=i|4}1`I|>Z_?g?x8W78eyk_?Hm(VGG3$KDPDA>5337(SuS?G@rXcf5ct0p@4efsHWgUt3xEcjDo;h~hawL)9Ek4w)2- zLre(nf=SechK*}u^F92YK@|?2^bAMgGV|aVQC*b;^K$szRvdvF3`gPOBI-1R!U<*+ zr>89%-3fA>0i5V)H!$eYegAIQ=49^lQMUB;?fh+zfuD_c^Ct4uEAZLM?E71eE(7s0 zva*5IXVogDc$fIL8^mfO)*Uw?@=FyO66D5YKSzC>oqJPqE;fD3Tv9 zdi^aRV5&WuD=;t)dNlA`PQ^(2zv0)vuS6WwKRMCaOj$Dew1Xz}dUJDqNI8lqS$hb(r+5U=S%C2|qtHFvkzO18 zP`J*zJ?bv#P+G$|hWF*Jyle6 z{>qLUCp4_3p&`J|Zfkk<4G!#akdD!iG+pfs0TmnnOcBkY6GMxPA@_*+y1#J|Y*QBk zsb>o6h)gAl-F{`q&!3IvZ>CfBzrn#)69kK7Ikph*MlslUtrDUoK`q~vjMzkuwW7Ua1QpVms;*W1nadEJ8SlZTvfK7W87cd`T zleT;R6q4>O)YKr8Sxc>dnq|7HtM92*Tu)Xm<0ZfqpOp)(AI<*V$I z1tAb=$l=4|0|UMP{{1m=h>xpOF!ywPRG1yyVd5Yp=uu=vNECc_7We1R*vOy1yYm$A zE@^3RUT0+Qbh84;|HVYs_aLt-Bjfg}4hJ#TZ(xVkyB3}ttft$!1#-d#s(MF9$45qb z;RBcX?@CjK0mnU$d;dM>dOXymSu;7=g^Sw`_P&H6_lB;8KYLGc&*o=5l%un>vC)!3 z)9$1of6?f!(rYULy)76aJ+7WG2TT;F?%nes#EN~|`-`u^I#$^8$k#xE zE+;2T8$Q`t+62LW^=#qSJ$TS|1V~}ZP8ec`A!*s0QsleGg3MZpg&~lrB4z#!=3ZAj z%#W`2cU)ZB?1tS!AZF^IdHp!P!?b*Ou#78qbA-d1t+u3uxaOIL#^`{0klY~mJ;0*ls%-%&-J%W9b>J4)z{z7ai# zZ_wVYu7zBmi!+AUPTfz6*a2xo_X6Skd%PZ9VI@A5l@rnlABi zYi@4e)UsbZdp1T-F9^^0#f#T&tyC@^9w_0IU#6>?E1h#AnpeSy41^VoAwL+O($NSC zu8Cgpqi=sgT=2mxZ2o0Gr5l{GGL#?Fozx@ZDjNWMMEQtusqb?}NUga!*s zGWq!@YK$X8oDiCz+g%{+?tdwb)EIexXwlm{M5%I5;dM z7#UH~YIRS(PAe$D)fF7V%H>1Co zv4L%6^_riTHy`E#3RZbgxTGpK-!RDH%F5C|kuQG`e*CDPHhQ+S!#KaXdU3WH3m5lG zA|=veW^{3U$f=^DTL1Qq>%{!lj7__)eprg7tgM>)=iz@1Jn>zZJI$%Kwi%#s3wSpQ zlaJT!iI20hm5q&+v-A3Oj{WWUE-8GNOV6_*8tn{@@u|||N5j)M#Y84rAF5PuiA9Oa zRxQLv0Mvc4*r6Q!n=vE>1^KO{>R83L1Ts=R@hwtXJ7;%AMJo%7?SFP>8|!!3bl#{+ zNGzW0{)U$?aj^zlQJKM5fU0gslZae$#4Dbh1d4}rEtoH!H^y68S{l|IfuHu`-eME^ zV+D0p)sZ^SrE2HpJ1F8R2g8PHyi2KU^K)q}tXwkERj zESF31Eg%jGdf%9wh(HLm%pYpP#k49k)r(kIbaQfbb8=o3&AYXkLNvsUd`9v;xu&n~ zi#2i*F=|Ce{0&dF5(+e}HV+uY0^2~!w(fgUL4 z=(r3ko$VCsH=*I<+`^1{b97|FMX`)_4gKy}C$MXJpvyu0@nNpkwV9>N)ohTC#C`~@ z4}O&siG6(yDFgzxs z@Z!|fc2f;<@>^C`&9C~OLCVh92ni64va*|Ec>Nlx1-pq2Tg=QgS@lSY+#OLa>@XJ+ z;R-lt(NBBH;)ed@<^8=pS2KBO(WqmBK)l+&cZ8oZmOscM}(9+fz z+*sgQi5KC}|6Ai2L`i%c{PpXYQNuli5r1<=s!=GTwxOK60J#-bYgl_}MJA;Gj*P2O z-2Y@G_#gt@odylP?tnp4xsC3EG!^PEQzA~BcIBI`gN{H}PY!_{0}gyiv0tXMOME!;lb3*r8x^w6n`~-@mZr2`MST{H~6-AS*4c zY;8SPf-nHA)m z_W4UO7S1r6R32u!i`@|r5p$Hc;F0bV_|;21d= z(9OvDtnH=HWJE`||ES+|o_z{F4hJx|id0b%Zo0sSefUrjp7q?^pC|%&sk)4WEKE!z zBP4y61F?^!O&(Ul4O(}hG)rn|bYv**l9Db``K;7V#~_jEyp*|{A0rT&BkW3?fUGOba=UbEx+HhRIp-gdcjW; zc;eNREOC6aDeqvjPhquQE@N#f3=%N0Wl`@878iCc}1q604d0(XDIF=zCUDm1if}xgMdJ7wmXM# zdxzoY^F}oWCYqD$v49ZXkca!zr#^CWy#d%PGnSwb^QQ)7PHuy|ybgTz2%6%&*xtACD(k0(`NMwvlny?5NfQ3$vID|a95V;3}>JIFJr@U4$X6i`u9>Mnoa2rlk= zxNcOQHKC_Msf0Fvg+MU1E*||`4aGq#sjR%SerJ1=2*i^xLLhywJ$e$>C}2;(K324c z-Y9=~gcW{YcCz6bs*R)HA6YIhjWb9Q91r-M-Ba`PXQ|oDTmR5Q4G9}H`uq}n_rS(EO4 z7cP1`a9;??ji@TSBlg`u%if8@rlGGHNV%w#?jVbSQ$p7#QwE}#CYtZ4z!DI zgkLhe@vonG;QL`yO-qxd#(!m*1q&&h(b{D2`1sUFbTAtI@UebFKWPP^ORx(&+6X?| zk(d@2eu08;r@?a;NSN}Y{t(@d7+wqwr8qx&=zHb2#>Pt) zI=5+4W-9w5K0Y>q0`)H{0!`DyV>HIlAUo$Z96EjH|HzV&+2c?l?8GV8pv(s_e{~&i zM}1~Tg9cI5C)a^ucy<$f156KMzXVK zba&GS26BGJ^=nd9>Ae`#(t?8#y|T;oeowl&c{TLH#E#me^{4n}6j@)rN|%)l0QQ-h z=GUMG8pML~%a_tVK9eODhayqHn9ModLMAxv=ckdSHY%4tHB&+M||KN#shK20;-?>86;>8wroO+2v zE!TKk_K6pNS#j}vVZ&Fv8DS)Z9new=vpxjd3~g-RX*DMXWye@oS7&Q07TPytKWq_0 z@P0abd+Qhkxz)~hA?-(eZ_zdZjEH}e!h{qQ+qozLZ{>+~c{(0Ji-i^*zxtN@@4A{IhAhZm)!6f7*F z-;%j#YLD2T?m^Fq_?L?^0u4@J=(@Kd_=JPidS#O+CpVX0fV8G6wkv*ldC45g5DXL& zLkvGBS!Is%rTBGNwxStok_1XR`&6lJCdz}@LJ_#}`1n(?$xT?d+&o?=#VtI(xodlV zedWXf5qH)27_G|<9d9kIq@O=iK7I_YsX3jf@}ZY_@ul!MG*Xo=tfjWLhoR(FM)|k>jvo+$V1k@Vw7`8Y zZEJTPVm&mG-x|Gq3AWvLNCiwn_eTj^?YJP{F-f;1TL8#_$PtVfcqO!NQ zF@gs1PQHA7FDD1AgzAw<|IiSIG+Z7%b1JQZs4_UIR|DOXk!At3?96p53y%|*Z4 zh?9sY`1b8*+rGKeKA!(3K#BXR?|d4|Zx*a^`&T<_Yu8%Cttdqc%(%ycC6Pm)0aX7@ zWU{}%AGul$5g|Z;>2Yk^J5^VKjYanK>GuM|Ylu}xhGBz4%WW7lKBhY5Yt9_rDr!Ho zwYT_^i7+1t6U|R=Zug|BYS7)CS3p4H^z_iHUQAlrdqL)7m7}+GSn0tI=kUOLhgXO; zx?q$#KqA6Lr=Yr^6rEyXdKDT^Uh9d|_&oZw+Dj}>`!+>&P)gfRGx2R-7Q_Nhd{juxD^=*4eQPph7F^wUcaEFnFyyc1RSkN zh!D~I8OCBq40^+|BLDY-y9|B9d9es|bY#B^y9|DpN@Yz=GYN^B6dLg4X&E1Xz4+Gw z>>JO{?0@1R_I{L<976>R?Feys`Q?pK5sM!7pn0eSVsM5R+1L`gx)KTswrdRPUAHNm zoxezZyg&yN`kz^u(mN*(iY_i1aF*)NbcP3^r8U{n0r6l64i0%&S4Vzha)i68R;z#m z&E-UuHKEjUCuy09R8eH)WAJQ7{M3sfzW10KV{YNVz}a0w;(W9uw#G#fKv>EjdWbe? zq$W;GtU+PCu>rbzk4PDlSJ|SkKRd&o9uxB=G!zL32UYBfkZ=G*uP%pccZG#R%{u(Q zvXZ9e<8Bk(qGmI#WVhh_20+=ifY)XaRaBOGJ{-Sr)tM1#I&h{av2Yd;7=!_)T~Zkk zU|>XTGyBvREaw5DsJ(@ZK$9{|T3H)pfZc{sw86FoV;@3H72_5PvSeC>h!Hc_k*n3U zyTW|lnwpOdtM=Tc>#OWrFe6^Vv0D3`96T09#awvcgM&^7mhoj)&9!y;PEJO7{D{50 zj0|8)f7)LL-KPhG;v0}Kzq)b#3_?cKepeV?>||1VGPQhr+RJgWI}8+$AKr$b_}biEZp8|aX5KQ{iHY#=l!|(&Cq}A7MyfQKmPgCT z!R=6aalSsV)WySdG&9q=Y`u+eV}W=R=(X0{Kgdi@o*W-v19Z3-#?I3vMbAR=~uirQEv`)~#M;hlAy6qi)2Y-MEvWnp*ThceLiCM=bC^)wnr4 zRQQhI4(eJG@lfAgQIRq?mxAXF>tJT4lxbQ`(sU=RBFXpAjkNCs)4@9icX3%cW_*m6 z*;#hjV6m}&237bYMM(WTW2?=|f@yJ*kh^AAFMD5TsA+oI#R%?Ors#C;)hjdj#{mJj zSXd|w40rPkCwh7`B_vRxo#*!;AjQ(apldK!nSfw#e5_hnxC=s1VS%~p^5zzGziHXc z=%b`u+CHjkZ~w%gycQKTgkw#IK>I32{kJ0*R({WuB397`N+}iCLK?-!G8Chqh5if- zK1bk45MY9A-bPi``020yz(5x$WfeNV!DE~Ku7p^4r!cf=Qk+&<`D#mV+V%Y47Wx)+ z2&$@LajlsVXp%N;48nD+!gU*0mr>o_2G;c_{-{@QaslwKwjT*$PfZw7@{`$aiWNLG zp@{_$LZ;&WcUTx9p)iOF0O$z#ehm#aulmN{zYi!xj%Sh$y$9Lmwq`eyQ|5P|viA`m$J>J9h&Q2wu>A$GD*GNMHyvbBZzm!Yma zh{hig?bY9vESQ-IUh%96d4U5M)74e^)RcV=awBOHM;kmCc@}vkb2vGvYkaAzWfeW8 z3WG0)KmYpg^$&UardVORrwO{BU!vnJBnc zlhN3y%CzxT3#?IiRA2Qgi%d9Gk#>^k2tGF%O*I(4x%QDYFbLIVb#UN<6RTNIA|otc z{I2)>jOA&>v9Z>oqe+>Vq+kSUXfSa`91Us#9H%$KNsS1^)5-79*PAkXb6VIyA5LOS zNg_kOBZH_#3+n#@lPS^QYm_Q*{0SA{GL)UF? zm>r4=PO$$xw*3yu9rQ=a5K?Wrm*lOY0*UOm?ap<~%## zdKn8_!@>-kEGp_DT~rj5rI|@#*f?oT=jI4M-{?AcrF~eua@sJb zU0wHQjDl>&Y3l0oe^}i|?2!FDMor23a9Xa&s;Edo%(1jJdN(~w=6;&G(YKYYt&X-V z86|UAX#oUIPEDo6HzFn%f;5z1xc~}yuxfA&)g|m{&o<}$Mt})48bT78@lvK=|9{ay zj8c2TDW&`Sz!swL^FO!ikaEQ_wP9{9pN+f0`MAGyFkQvv!w%+x&}w+ggXdoPt!d1?bSO21EuvE zj*w1v4A=!ZpOXI&@{T6V8tz9dMM^}E<1LJStgc(_&xe-)!fYIU53cao6jPTNCU^=t5u-^Xt49frI`uxiTjw{l^bbm?7oLnp^%g`g%vT}VZeV3JkQDLY4*o1&tUBgKwiGO z5C!i7Qc_a4OcD}vb8}EY0BPw2tgK;T0NRV~Aehj;j7>=R0XjfDWV}2B?l3dpyjWfy zh=pZ8285HGc2#`?^#Mx@X%$VM)XvuM%-Fa!*gtPBi3|74#Po@{`x4elh`aQESgh6F z*7gk))>BMq&(zfifCI9tgcOJz)URRC&CX^gvv6K{`12xv)S3`m4gi z*<}mt<*QmYLaE)bo%)p2)ZH)yTEKHgTkDNRK~-p*mX&?)>&sYLQbG|2JpMlj4VJ&j zsYF+bD@+vAA=ad(FqA-&kQ69qU_*1=z9;OdS@=Wj z;HW$#7!&8V3-mesPcac~jKL^yV#>{Vk&_e0!hG{L{QRxcB^c$mplV(|E+FX9^i`uH zB!D>n3bR4@=|#of@SlOYRM(!NT&%sfoJ8uld=}ZB_5cGdP)s?T8tRdU>5LE4!Q4nS z`^AF?O1YW=C@BACCa4gmAD=UtbC0jDk3$d7+1Un)%r9TqG&H)ry`jtD3(!SL$*!+~`}{Mc=+SyhmByJMsqZ^H=uq^cHanQ*o;+aU&;ftcUsC>< zM0Cnw^e45hF3`lm3=U?5WuWVFl=f;xi%~W2uozBQi zBZTqr+A`}C>B|PI;e*}z1RR_hFGfUKn52Js>CU&#us?so&d%WI<(p$~jj5-j(>tKv zI-%F|=MU%=n>rPGCiI3U^pv%Tt5>VmwoAOc4&>zHI;^%YX)DqL7$SdQ_%kx% zFaxAVk-05 zg^|Rm&m@$UIZszfD9bS`$g>aygOQ3R47v9~HF2@4a}>C>sE{@AAH&&?&p!ojW^!yS zcyQvr5}&4TMY+pQ?b`D40;pc|Hp#{DVReFY6to6_XJKc@0zUwYrA?*-`r3_td07}A zr=i=#Xqw8-!E9m@^t<-zC+sbNNqr){uFJb^-!#8#H=SYFa0T@^F!pBVU)DKWK?pZ3 z4sNo8o=5TM2E==o18Zq$$OUASVES-L1&XyBXCFB^u)q)mb&I5A3sBa;z`|vF>Jl70 zfHMWTd7Bee{a|LK!DnY}eF1?1EG#S(_wR$+FsraITsR3r0l>TmXmR1d5(EFBcUM85 z9iC7oHLt$5T7PA?ZF}>%K1T|AcUfMOpC8}6N)UX-R0HKI4sJViWCH_Dfo1RQt?2EI zizOuwrGBH>zM{(>bdgEyf2!Op+}t{Y1M16%F<@*a;Jk*xul8(g$E~iyj+mbAiK09U zEdl0ytI+1OsOyCrgR?V<1LG#x#5@Zn<8@ve(8$%)hZIL(_ot<$U8mO7)vd0sV)*a4 z)q;UjMOhgPnT_QnUoh3bvF-**(=n(q!Cb;|xx4OQ2_&yz2m*p1?Q-i;5IK5zdz0dz z-82HgC4LeVcx~O?;A`?4&W&N+z8B*$k6`aCDT(P=+;{V0kC`4F?U>(ne1@#x#qeth5 z!-jWIVmXbUdU#aJ(0QzWL4G>}wk>o7!7_C0+C?`%LsTm`mVi2RKiBpOo&wlrQS#d( z#3S0;WI$^O?_XC(=kVw#QN(+!vC#;ei2!2L1$F1Ap+%SoUiCjRr5hKIc21v)82$sg z54Z!-U7s?XTiH^EPft!B|H>a2_{__zQC6xBoH$c%SzTRF0im$e7c=WAD@#aAD@sd) zoh)gLC@U}$ju}{-1^QcCfz|n4Bw=>Na%1%s7f)nkE=IuIz`)!`V#sr3gHy-bx21OV zu>uY$EU|eZt~@(K042hEEpC;h;bLT5(a?ej5wLhb5eG|=Z1tR!6q+Lvsa`E_IZ#nw zcilnRJvw4%V*_J5ZZ0k^PR_qddlMza3_Ly*L;Ox7&?A<|u13x?g#t;)?Ac&Y?kHdS<%~fV3gkuK~2fgZx3YAC3 zS-e)|0k4LRdv((YcACKyLW}RB zOpAxf$`#vrH4S?#n9k5(_zxb~Jro*m>2+8a3zWdW*~tmO>l0s6SC>c}AGB6Z*^zv*g^7@4GiW+DsvoHKe1r}zW}1VB-J z*?JqYF8=)agNl7muinf3hb`s3dymcjelDy(`#UjFTUmJmok&CPL!zV}-yq$p%2M0u z`pfAat5gy{LEresL5hEM`i?wdOT zKeg9`%*4dRWTBwEFLzv4a&>jJ<~|$m>s!OcNyAmY;kY4)-}9|bwhRv&8p&L{c6&ExZ?;p?ji%F zOuqX1;KhSg90rD$jDOMNpED}SF`w-BeCq6!d-P}$dVgVIM;Xu2tPcrg*lyi=cNO{# z!ynuw@=zEeWk#x=UiMI9K+)LW5U*x<^GB3{!2+z=uIo3!5iW*R2LQ6n%wy%@yRiye z9DiZT?eCMn7rimBr4BXyakGU51_(5)r9Pp&{uAn-Ae4z~mNpysdoEEp{uI!~v9apQ z%gwO+I-IYf;{B0%X8if)=I6ol_EOwCID`IhV1NL&NL*Z!5GWVKG-W;Yr+{WSG;|pk zEdo_95g|r@M%`BEn;ly^f`i`FJ*Z6qhyvRfD6t2C<#6p@eHS5tBX#GVy!X~bDzxNb z3j$Eq&@f&l)!OI;R$jy?&8D-!yCyn(3?-#!h1D~^0=~Dk-6@iJ41$ic8$z7RhR@5F zK@ANcy4`PX*8lRE5aOt=be#^8%gfnqYN%NL(#&rr+b z)x-hLA%L(z8u91qd)rUHKh=qhh!8akL8p{O|5jfQryfVktVjOfRyG+MO9bEmpY0PN zx19o*{YgoRMnAltM?f6PI{knC$NW)8)i-G7=;(SHrKas9Hk&cm{3vNU_C??i7d!G2c)t`zr`#ya8f8U0Jxpr1adpZcq~_*Q z-kF6@7&S(GS4VrcoRay)nblqxg%;4J|AaYX;H1G}_Sg9h0XHqAbQlN`j!O!KF+Nat zfPb556S6PKw@Z;C`n~zq{-|hDa3rm9?fDdTq^S~lbj{V6i-OkoL2@p)!vQSUe=z=Z zbNCUhHa$^gBN2;B48$pD)^qns(1<4q=PJt@!|BlL$ogwYh>4irB#<8ABtcJK1ScK@ z;wr8BVr^q1KYy|IwT#K@*T6&`&dqVzNdi)`m)90F9)b1-jj&H2&*`WeZ*M=J@rENh zzYsalI}HWD>8Yr^RiKAbg@b?O0g%8~=4V0Y{fWd_#N_=cv7rL6xS_02l4TkzSw36p z+J&kvk;w5rlYds19!K& z!9%D#0LFk1^4pc()R1^SY^4N`gMQ@-Ai>bkOwcR7adh%BJHJ^)IAzk#YI~pq1n!F2 zm2Srk@wnHtp5)=m}#Ui3Ie>O{ml`os?g8} zE^mWcwYs{VY!m|&_WSn&^dxp3jl_$o9JEJ|y?=l4{(YwPT9~?#9U2_JP=U6TVx5Tvl8xf1YF-es*6Nkmi zvXl8%USK@*^tdz!2E%k*TCywc72u30w@KFD2Rdbqz1TWAtBoa{8#!k;&pWmiM$=2z{qej zi+%$uAh4Bkvy6HYH%n|MQC40=J^&`v`tbf;g1wH8(ZX$YBsXyt9+up-jnPhWzCHPwcEBgAaWw=C zH}T1+H*mQ$HFvb=Zb{O>4`!;Wv-!FK01N|J9Xel1-&dAaUm+>Z_T{CfGKh$5hl^5b zXq0`TuxhX#9Rb{SkIR(+elPa4itvCYqk5+|r_e2W_K7nneJbHWc z%!B!TRDgjD8xnnwZMl*-NVtBPobD9^xYL9$K`KR!k9_MDl=MI|d)Z3a@`rwFJO-@1 z!~ojm)*;%yd1I!*pO1<;V>hR!3}K*W15NfL%{;Hz_@h6UuTZn?Y$YJ6ixJtZhppYF<9qtKHV-y9|^m zjMYxB{`I9lPq-;<)l^@^z`5SA_C(TQmyg5R_55UB6cBC5dVT}ZU;Zg8hwDA{SAxkU zC9Z=xyYew;Of2%-x>U_NhDnTU`8-@)*GD!UuCCKW24c)q&UHY%R%7#`P}b`&Q6;i(b0Zdd&luBV1yI1l7wn;zKTdPtnfbn zlBsNE(MbXpp%BbrOjk8<2Sf6BiwIsW1H&UA_5(%|&EP31SxHJFCLr<&j>xUyq9>ab zJl30DfHEm6e#?blZsto`DSLRZKrnUN?)=9j-#s`{KsLAcp6PN?zN8N87T>g9gVXBn zO7CMsU*XB#J4%lu*-eV+Xj74e9{kMB9d2zEgzb{%7lmePP|4Mro@{WXt^NscLJ9@& zVPrJg)2BOE720j&=}cJ-E4f{@OMUbq#*%`5e=7@77%=*R@2*0upS97CDtAXo(=_y{ z;KpmU7k@*-dp?Hun3cHyx9JHBj-BK7Ads7pV#Xb38tZ_2VPu|BW85rx!hi$6#dKOR z`}W3$v;D}MwSlOA&zG+lfV&hw9y9GLYBj`acfSNzm{1CG$;im#M+OILJe)0IL|HzJ zp&a27gZ^@Mfh`x`@W)RF-yXHL{`rHyttTc2x{aHW+n3%7ydNPK1qy*a0-(u2$?<_l z(+z|tQoY21G1Ij=e$+B3YB=H=n zL!Xki%-V+rBJdY5)~$m>6S!=@)86ndfL$uLzDImJUqPk~{A_SA9ef5e+ilL0aIzXs&6nVA-5AK~i)NV}90XwTgH=jJ#h^dab8Qv3fAzbOfYSvdhvyHcW_i80dM!XUDk@#t?S zIOAQ}`T6(m%$B=y;AkQ7KiAaMgSP|4alS4`*LQdOsV5Ejy0k$(=C1HkRJCr}YEaL8 z{!Dn51Y89YzHUf`A%%-9z&c>)<1VG6vpZ58@Sh-!)Bx5@pbPHqx>wi|F*D+W3P(BN z1p&0fY6Ot#6%?JXPH5=`Vv8N-e~(vS!+}I85yuefLnG~o>gtOCW7a2>qO_@VF@_>7 zTzy7HCGNWAEz{LfNkYS}=SNI&aYb~GC7%;^b>`K&aUCypA&VH|6PjLka6n{JO;*m| zSv(&xmw-UQa56Ir^7u-xQ!3c{i?HDWfw!3QI>;H6oYt>5H^-e&#Q%iHB<&hAhQI-` z%t{N~BA@9^FhI*6-ZVQ@;|3rg?5gveB+f4eSnJ|94^}MSwJ^p>Q34uNVUPv zct>e>8Yad)kGr|J z-in97EhVMpg8qga4D>+rccd#~81Yr}9=Q<3wE8V%@^_UMJ-93^mn|(lAhO$0qFbgT z;Nd6~gyI1TGcasnY`bcUyrI?L1|9A4S`Br^@nUZis>9idGwBtpi6B6g$AIUFn4F_;N0W0+bKt?s{m+)lV%ZTj9TVb z&@N^DpuWCjHgY2q=-cZ~aISHAXg%S!JKOwI*fYh+X=aleE`zSB9s>v>s3NX#-SH?t zyEq>P1l7#NuTAcp`U`v7e&>&*B$&I{tWeo;**9WjGyC1T{QLJ}X{l3nRqQ4RUO_Gj zd_~w5I9EW0Q-Ar`V@|RH(g?$;uAA$L_r*Xz*yn)wxdlg6y!TV^G6_R ziJ4w-K*tL3>yc4XC>0*2ugr(H&QYvw9vlYyT()YlHMIg3iLO`;R z;``Ven5iAJPVGZ4^oR)Qf;7WInb0X3k2=qA@#1s?#Hm2ef_!s)88uAEEuX+fM~J9Tp!9FSfVifQ%8E z$n}v^5KAcn!>=XSlb1)P!VVJ5d+pq=HKDIct>)`#*LLtLDl!2}*shoSWY2jgS#6TEeJOxsT>!g_o#F}qmy zh_3<*g4STs3o9L1bnL!d;7L-XXg;R_Kq&F>*_@wOeLH4kPj__2MA-x(&8dms$bE#^&|>IfP(kc z->+ZqK?C#P0CGAhp+kj(t4_-bolnxJ`N5KAe~TbHpt4~P_;qK z0&Hyze>#RofEq@OHLpD+IB1I;*ltjMH4{x+}}7}E2RWMUfT(N?pSLZn^5Wx+1X$Qo&TJ%MQ)#1WYPWE zvu6tQVANmh9&p*c)B}FBR~LPKeJw355fS*w&-q6R8Cft;p2DevgQEkQqmQ0=ZO=CE zd&5ECzgrfS>0st~*VLj!xCWH3&O9iQe+l(=@bWr$CVH>bY}*zXQu!RNSv>#TaO>Vj z&z%{4-|NZ#j7<(k%aK}vIk2+?)CC78Oprbr2mB7e{tGXnt`qy|57Cd4c&H24fB4={Gcv5BB!@1_maebb>z)4#lyt zI&a?WAijc^=y;Dt3j7oUKGFi-0X7G-P*M<#X?$TEdLtD5{TibdF(||V-Go>ag%LERM@b6A%gQ#G1X%*;^l937e z#X`X)dbUDKD1}EMSPHglulh5}%F7`&1mHvugrSt}%1YJ^j=KH|)JtOxzJR@x{dcmd zy)RCt`5a)5`ugJG0`Dad`IvWAfe-<>tIa|K*Zt7>T#V7`N$7~<>#=JMd&QZ#o&Pze z1UeJNNDEh2F0eO1DIjN)6qN_jK*a2N-*~O=O^K%s6kVRTcjX(DZ{UGO9Zu&r#oK@G z0uR$n>VS_3%?MB;fTCdAV7D*5ugpES_B+L0$EfC2L5I229eb_X`L<60B?1C(Pz!m~ zx;EB%!q5`{nU|uXu|($gmCa2J4UNm=eRzk^d-%K*kEaZn4-?b6Rvy2w%~(A&R!_k& z1q4HYVbNq~b$kr@_Vw#oTwEF~>fkPNqr+D^2v1A<#cOp19aMft^ZXl~qJyafta?yd zz|k5+j>g99#O!%~xCwhfk~FweH8$@&_KoG0m2YG`zQ>bYhwJlT^D(yhq6Mac)M&U{{xQ zf5rz8B0{fWJ^>rC11RLXvC%QIsoE-Y(CI_`U9IEt0f-<# z6ALRg*4o~$r}QBy?CkVVNy0%4gp$pCJ?Zl9kR*(OQ6%JMj})u$i|>;Y^d{<@b2&vs zIE3pu+hjbCHdOYP&%tPM_T~}YgF@2h+@=>amE|@y2PY0)pt|y>$^qcP@MQRAk4sEM z`;y~)?E|rj55v+qho1Ya{Hp^Ubp^>3jF<( zk7U-M;Ba=%r;CD^I$1@oBgF2)S=&lF`Yp zhMQ)FlLHrksciWNso}`GA;4sLX`&%-DgsCT}UmHwd;h#DOm%Pqt!6LO;k zrpRP%mCNqjbaV4DrD(m||9})kBWHl`4Vn1eJBk%2`uHx0_-uJ7;q5(saoPZ<44B&Q za6k4m(^DE$A7}&pFrdoo^6;Qh43>mI3LtQ)sZ9n3mM(#5Ue90AUF6nw1An#C~1(| zXp%_2Zs|%T^yf_GUf;dTe+bq1`__2|x`m`Cu^>ENSTcvcbSd!ld3n@#x_P}oH{!82 zK>JqgAkOMT%k|6cg87ucQ)qrk#w#Rp)g5AK(z1802|uegwfxe4$u(q)o;6ys{61{S;*s59OPyR?Xk_4;qm6ii(^>M8LHR?0N+t%F)ag9W^39e=1#`qgt?|qvM^i zWi#4%D0yb1lkYz(Nt&MS1ZYaU(Jg=Pb*1ON)amu$fe-u>1fl_-eRJ>-+hattTec1}jrR=7byw<0ed0N69>oI`^`n)zenkmd;*|e#Ohv<+}%D)9FD@7ogGjmO$xa5U)`dj z#>0~H*_jEAz@N_3dFJCI@8n!nG;z->^T!Xt$48r!HP>mG%h;H^v*(#g@fkgOwn7eb z_Dg5jG?5k~oTnWzFz%CtyFusB_i&yT@njz=Mn(7;qVVnS{rW|Q zl`f^E1TvVvV;&^vTO&iybn66Xet(1{cH#d=*INKp-GAYOSbzf3-5?=K2uceAqJ)Gr zk^<7*jY_w4gOrH0G+aRGPU-IM?mfJ}{qM}q&N__aysyH&_xp)+p7TU=C}sB-z9Y)T z#mK_Kl0SbI>g$c&+@eH$m%5WoZUer56jhGLo{twr!7m51t-nzx!wB zY2AmR!5e8610GfAt5;8yr6KI*LklNTAps>Nm`|Ukzj?epMZSA=Io#k&?y;K*AI=}8 ziO!DcTIShVYM}a}q3&2~w~=`FBP>(3%*{tP$8+9Ey%=$;cAu-evv5(YPt2mK^HRs_ zcKQ6-AU>f76oOJ>V#fCN{%H`#?oVsK5zF(j-ft@+85|+NZZ}zQ`=R2(Ee0pYpr{za z>&^0nrlx5YP4&B(Ie?Z*Rq)h7D;3+?stg$;ii#M2|K^N37qqvZo$j+LDGp8}Dy~HT_-7AWl=_K>fiD{fK&#XUv8d-ytsuG&ubebmWE-ZY(s^zX( zX8KeuFbxlXu%b%y`v5Vt)g%Y|Rz}a8BN%wN%pVE59BE2OG>$qQe7&ddd8K%4gC_xD zE~Cd=HSR|nNri0J3vJH!_CE71n7;mu+S;dQrS`MJb-#X{nG8o0ll-#g1Ei41v?4Ah zA$}|2naK6tVnuAM6ufWKs*Wrfd}--gcJ?$b^W4ZV;!bbJUE+n|0*2`5p${L{U`{5J z#QT6E2~<$2YIntEb1z#qL48E zxwL|_?qa;Wxxarbnt;UrQDf~~MT&qTH&2qXQgoG-E}j2#?&a6)L?eNOmA7vBhf*$! z!33ou$R6x+6{D8y)$3T0??{TBVBv&A$WcNW=h#S5gLI;09IqW-XZt#hnM?g&mp$FN-plN7Yg1NLU0dpk@?@v` zm79xsUmW9s1Y|4?4J-3lH)895vr%?;R}>Tb0L#kAC@(v^xjU(NV*_2Amzzk>(a9-< z(m_c%2Id?m9WlSi`Sh*%Xy9{wR1qBmz1%}$nzJ>|K*2j81#H6RqyDqv6fI!%;exe8+pHrA=AFNASNW#fg&#_om%o* zw5H0Q`D(Jd;Ova){Fv_#ebR(?olt;ZYlhtFd^1M1<;U3)qchnV;tLvejTSM9fLu-T zokJ7INaJ%=0slm|#!|bK2zqiblkV;*Xz!fp7)##GP*;k^BST22tH+im*`Os~d;1#f z>|lWnBOyzP-gJiRjtCvy^jA-L5s`r%;@2!JdMGHk_x*+Tx{&|Kw6!v-RP4Z{cW*e~ z34Q1jKWus8iMEdMF+*P7aa-F3AB+eHFG=!#xxB301*i6#H%}kw9a4$4lahSco@hfy z73=I~>FW!#v8M+yH|E#j7q6ai83p*a;b3Ez6mxv$5<{Z$vbO0Ucv`_oPw%+DBysQF zeRE&9ckkdk?Cs^|re({^1Oz(?D)^Np(PoM0LjtuDNygfaYF?%yEI%3+@$~C7DagaH~ zZnwq=Z|TXCBntDMhbsBGxm(+H1DBV$b?)9$@klG#LrP;~r9v_(wIJ~f3l3)a-@EZK znP24R_j;!LTs1s$_}}xYD$SY2#rx>$&t}4{nWC;{{*odZlM#rM{!FDn0#yv++xP{Q zp3(-5&9xZl@0@pOl;6DRZ2EKn@2^lC7wIJsfX;`t&>$>Fwd$bVA2+|dTkn5w=sw|| zHG0ET%@eqxJBjjYkB54DtF-?%`S?V)wjSPjl5}}idbHFPxju|*Vobu!YzLSc5@;? zriGBuR2c2Kf_8|sful2Wt+OH)L79@I3DVQ+f?viJc2DTo*Z>R~8gu@cGL1u;5LSqS zQC?EkpO&VnQFQ>30pah{BR@vaBdM6I%9*&kPnnGiCnStNB(wZH2o#?k5%t!aBLPgp z&@mLx*~O6>3a33V-Ommt^VFW4d)!*xexnz|Ov-0U6x3=hUB&GU>Rq za+l-WFPfh0j~+EPHF=M}N9PA1BsDd4B1DG`Mihkj_%Je0P++=j#eN(8lo3QqLP2Ow zr{m>x&q;JUV+EviM$1{*`T0SSs(WA?CQhz4iecc zlH(%(&14G^laY09Vj+hE`fJ7KrS%o4%6@)-0`RZkX=KUt_`V>)P(T z@98;f!gFzl9gImHK0X^huP=AswDU9%*)If>K7pWs{hbQ?)qb5@x3>P>x`XujDs-TZ zvd+yU_viPWJ)Gbm1()H5Qj=YSZhir${=x32?t!ibrA@p-h<;~EPVVKdzhW~Qd;q{ z_H?t{gsw6@xPPe6`xfp12%NsyZ9ylD>C1hXC&R?FCL$sqH{ScIPb6Pb>Js8}U2Scn zfB#;nvWp;qMfeSC$zB%eq6!|jh%o=N=CmlGZf;H-mpi+@E?^cf zfLC+tyC8(v1^B5f&+Ww&7jNgOznj;S6a`-#V>C(Ry7qv zN}jpakU#Dq)?QEIi-T69&gEE9OKY(=wGu4kzkYRvQ*KyM{bF-%up)s={-;87A`iXC zWvS(f<-MDxy_3|E6elclzKG6727wj{#dgR5W^*lNrAZkKtfvVvct7Wjm+9RYPl-gn&T)(NVLkcb*4WO@7TFV{7XO^z|*UvDz&y7bGQFyKi$1 z@3y56aWPpfhkS>WV~K(3QU7Yt3zOS*uGv8WA0QaKxpt)Ly^@l{rSn`@!sF@M7t+bO zgk*^JemRsQ=y1z8KjFU6t?i>gBkP8!;P-1H_SerJ zH4co94)^W48m^GMcp(PPMxTps9_lUO)*<`XJ*=Y;QD1DZEh4OBV$^n3@ggTP!?o6) znVOzn5-!EAu8GM>VND8s5o^$dHyp0tAI_%(4~6ddPmZvUf4Yo_@bK`M4CMlqml0+p zl9K!T``}oe5*@8%ZVrReb564{z~wn@mO3Gh2k7Mhy%(q!H;<2#QkS@$A3;BlPRg14 z`?nm-VpLTtbJQFmq}s&=lazDg^86SkHJe%0AfbSS>pY-g0>c}~@$BsEkg5uQU9HU2 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 ~-TSXc<&hU&}7#&E5V4O;f4eTLi)cnJbl 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

9J2{A0QR>BXbo|B^6g9cLyqQUt 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 literal 0 HcmV?d00001 diff --git a/doxygen/met__sample_8c_source.html b/doxygen/met__sample_8c_source.html new file mode 100644 index 0000000000..5b5691f2a7 --- /dev/null +++ b/doxygen/met__sample_8c_source.html @@ -0,0 +1,302 @@ + + + + + + + +MPTRAC: met_sample.c Source File + + + + + + + + + + + + + + +

+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
met_sample.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Main...
+
29 ------------------------------------------------------------ */
+
30
+
31int main(
+
32 int argc,
+
33 char *argv[]) {
+
34
+
35 ctl_t ctl;
+
36
+
37 clim_t *clim;
+
38
+
39 atm_t *atm;
+
40
+
41 met_t *met0, *met1;
+
42
+
43 FILE *out;
+
44
+
45 double h2o, h2ot, o3, lwc, iwc, cc, p0, p1, ps, ts, zs, us, vs, lsm, sst,
+
46 pbl, pt, pct, pcb, cl, plcl, plfc, pel, cape, cin, o3c, pv, t, tt, u, v,
+
47 w, z, zm, zref, zt, cw[3], time_old = -999, p_old = -999, lon_old = -999,
+
48 lat_old = -999;
+
49
+
50 int geopot, grid_time, grid_z, grid_lon, grid_lat, ip, it, ci[3];
+
51
+
52 /* Check arguments... */
+
53 if (argc < 3)
+
54 ERRMSG("Give parameters: <ctl> <sample.tab> <atm_in>");
+
55
+
56 /* Allocate... */
+
57 ALLOC(clim, clim_t, 1);
+
58 ALLOC(atm, atm_t, 1);
+
59 ALLOC(met0, met_t, 1);
+
60 ALLOC(met1, met_t, 1);
+
61
+
62 /* Read control parameters... */
+
63 read_ctl(argv[1], argc, argv, &ctl);
+
64 geopot =
+
65 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GEOPOT", -1, "0", NULL);
+
66 grid_time =
+
67 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_TIME", -1, "0", NULL);
+
68 grid_z =
+
69 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_Z", -1, "0", NULL);
+
70 grid_lon =
+
71 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_LON", -1, "0", NULL);
+
72 grid_lat =
+
73 (int) scan_ctl(argv[1], argc, argv, "SAMPLE_GRID_LAT", -1, "0", NULL);
+
74
+
75 /* Read climatological data... */
+
76 read_clim(&ctl, clim);
+
77
+
78 /* Read atmospheric data... */
+
79 if (!read_atm(argv[3], &ctl, atm))
+
80 ERRMSG("Cannot open file!");
+
81
+
82 /* Create output file... */
+
83 LOG(1, "Write meteorological data file: %s", argv[2]);
+
84 if (!(out = fopen(argv[2], "w")))
+
85 ERRMSG("Cannot create file!");
+
86
+
87 /* Write header... */
+ +
89
+
90 /* Loop over air parcels... */
+
91 for (ip = 0; ip < atm->np; ip++) {
+
92
+
93 /* Get meteorological data... */
+
94 get_met(&ctl, clim, atm->time[ip], &met0, &met1);
+
95
+
96 /* Set reference pressure for interpolation... */
+
97 double pref = atm->p[ip];
+
98 if (geopot) {
+
99 zref = Z(pref);
+
100 p0 = met0->p[0];
+
101 p1 = met0->p[met0->np - 1];
+
102 for (it = 0; it < 24; it++) {
+
103 pref = 0.5 * (p0 + p1);
+
104 intpol_met_time_3d(met0, met0->z, met1, met1->z, atm->time[ip], pref,
+
105 atm->lon[ip], atm->lat[ip], &zm, ci, cw, 1);
+
106 if (zref > zm || !gsl_finite(zm))
+
107 p0 = pref;
+
108 else
+
109 p1 = pref;
+
110 }
+
111 pref = 0.5 * (p0 + p1);
+
112 }
+
113
+
114 /* Interpolate meteo data... */
+
115 INTPOL_TIME_ALL(atm->time[ip], pref, atm->lon[ip], atm->lat[ip]);
+
116
+
117 /* Make blank lines... */
+
118 if (ip == 0 || (grid_time && atm->time[ip] != time_old)
+
119 || (grid_z && atm->p[ip] != p_old)
+
120 || (grid_lon && atm->lon[ip] != lon_old)
+
121 || (grid_lat && atm->lat[ip] != lat_old))
+
122 fprintf(out, "\n");
+
123 time_old = atm->time[ip];
+
124 p_old = atm->p[ip];
+
125 lon_old = atm->lon[ip];
+
126 lat_old = atm->lat[ip];
+
127
+
128 /* Write data... */
+
129 fprintf(out,
+
130 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
131 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
132 " %g %g %g %g %g %g %g %g %g %g %g 1 1 1\n",
+
133 atm->time[ip], Z(atm->p[ip]), atm->lon[ip], atm->lat[ip],
+
134 atm->p[ip], t, u, v, w, h2o, o3, z, pv, ps, ts, zs, us, vs, lsm,
+
135 sst, pt, zt, tt, h2ot, lwc, iwc, cc, cl, pct, pcb, plcl, plfc,
+
136 pel, cape, cin, RH(atm->p[ip], t, h2o), RHICE(atm->p[ip], t, h2o),
+
137 TDEW(atm->p[ip], h2o), TICE(atm->p[ip], h2o),
+
138 nat_temperature(atm->p[ip], h2o,
+
139 clim_zm(&clim->hno3, atm->time[ip], atm->lat[ip],
+
140 atm->p[ip])),
+
141 clim_zm(&clim->hno3, atm->time[ip], atm->lat[ip],
+
142 atm->p[ip]),
+
143 clim_oh(&ctl, clim, atm->time[ip], atm->lon[ip],
+
144 atm->lat[ip], atm->p[ip]),
+
145 clim_zm(&clim->h2o2, atm->time[ip], atm->lat[ip],
+
146 atm->p[ip]),
+
147 clim_zm(&clim->ho2, atm->time[ip], atm->lat[ip],
+
148 atm->p[ip]),
+
149 clim_zm(&clim->o1d, atm->time[ip], atm->lat[ip],
+
150 atm->p[ip]), pbl);
+
151 }
+
152
+
153 /* Close file... */
+
154 fclose(out);
+
155
+
156 /* Free... */
+
157 free(clim);
+
158 free(atm);
+
159 free(met0);
+
160 free(met1);
+
161
+
162 return EXIT_SUCCESS;
+
163}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
void get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
Get meteo data for given time step.
Definition: libtrac.c:717
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define INTPOL_TIME_ALL(time, p, lon, lat)
Temporal interpolation of all meteo data.
Definition: libtrac.h:380
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
int main(int argc, char *argv[])
Definition: met_sample.c:31
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float z[EX][EY][EP]
Geopotential height [km].
Definition: libtrac.h:1921
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+
+ + + + diff --git a/doxygen/met__spec_8c.html b/doxygen/met__spec_8c.html new file mode 100644 index 0000000000..a4a2cf248f --- /dev/null +++ b/doxygen/met__spec_8c.html @@ -0,0 +1,427 @@ + + + + + + + +MPTRAC: met_spec.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_spec.c File Reference
+
+
+ +

Spectral analysis of meteorological data. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + +

+Macros

#define PMAX   EX
 Maximum number of data points for spectral analysis. More...
 
+ + + + + +

+Functions

void fft_help (double *fcReal, double *fcImag, int n)
 
int main (int argc, char *argv[])
 
+

Detailed Description

+

Spectral analysis of meteorological data.

+ +

Definition in file met_spec.c.

+

Macro Definition Documentation

+ +

◆ PMAX

+ +
+
+ + + + +
#define PMAX   EX
+
+ +

Maximum number of data points for spectral analysis.

+ +

Definition at line 32 of file met_spec.c.

+ +
+
+

Function Documentation

+ +

◆ fft_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void fft_help (double * fcReal,
double * fcImag,
int n 
)
+
+ +

Definition at line 150 of file met_spec.c.

+
153 {
+
154
+
155 gsl_fft_complex_wavetable *wavetable;
+
156 gsl_fft_complex_workspace *workspace;
+
157
+
158 double data[2 * PMAX];
+
159
+
160 int i;
+
161
+
162 /* Check size... */
+
163 if (n > PMAX)
+
164 ERRMSG("Too many data points!");
+
165
+
166 /* Allocate... */
+
167 wavetable = gsl_fft_complex_wavetable_alloc((size_t) n);
+
168 workspace = gsl_fft_complex_workspace_alloc((size_t) n);
+
169
+
170 /* Set data (real, complex)... */
+
171 for (i = 0; i < n; i++) {
+
172 data[2 * i] = fcReal[i];
+
173 data[2 * i + 1] = fcImag[i];
+
174 }
+
175
+
176 /* Calculate FFT... */
+
177 gsl_fft_complex_forward(data, 1, (size_t) n, wavetable, workspace);
+
178
+
179 /* Copy data... */
+
180 for (i = 0; i < n; i++) {
+
181 fcReal[i] = data[2 * i];
+
182 fcImag[i] = data[2 * i + 1];
+
183 }
+
184
+
185 /* Free... */
+
186 gsl_fft_complex_wavetable_free(wavetable);
+
187 gsl_fft_complex_workspace_free(workspace);
+
188}
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define PMAX
Maximum number of data points for spectral analysis.
Definition: met_spec.c:32
+
+
+
+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 47 of file met_spec.c.

+
49 {
+
50
+
51 ctl_t ctl;
+
52
+
53 clim_t *clim;
+
54
+
55 met_t *met;
+
56
+
57 FILE *out;
+
58
+
59 static double cutImag[PMAX], cutReal[PMAX], lx[PMAX], A[PMAX], phi[PMAX],
+
60 wavemax;
+
61
+
62 /* Allocate... */
+
63 ALLOC(clim, clim_t, 1);
+
64 ALLOC(met, met_t, 1);
+
65
+
66 /* Check arguments... */
+
67 if (argc < 4)
+
68 ERRMSG("Give parameters: <ctl> <spec.tab> <met0>");
+
69
+
70 /* Read control parameters... */
+
71 read_ctl(argv[1], argc, argv, &ctl);
+
72 wavemax =
+
73 (int) scan_ctl(argv[1], argc, argv, "SPEC_WAVEMAX", -1, "7", NULL);
+
74
+
75 /* Read climatological data... */
+
76 read_clim(&ctl, clim);
+
77
+
78 /* Read meteorological data... */
+
79 if (!read_met(argv[3], &ctl, clim, met))
+
80 ERRMSG("Cannot read meteo data!");
+
81
+
82 /* Create output file... */
+
83 LOG(1, "Write spectral data file: %s", argv[2]);
+
84 if (!(out = fopen(argv[2], "w")))
+
85 ERRMSG("Cannot create file!");
+
86
+
87 /* Write header... */
+
88 fprintf(out,
+
89 "# $1 = time [s]\n"
+
90 "# $2 = altitude [km]\n"
+
91 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
92 for (int ix = 0; ix <= wavemax; ix++) {
+
93 fprintf(out, "# $%d = wavelength (PW%d) [km]\n", 5 + 3 * ix, ix);
+
94 fprintf(out, "# $%d = amplitude (PW%d) [K]\n", 6 + 3 * ix, ix);
+
95 fprintf(out, "# $%d = phase (PW%d) [deg]\n", 7 + 3 * ix, ix);
+
96 }
+
97
+
98 /* Loop over pressure levels... */
+
99 for (int ip = 0; ip < met->np; ip++) {
+
100
+
101 /* Write output... */
+
102 fprintf(out, "\n");
+
103
+
104 /* Loop over latitudes... */
+
105 for (int iy = 0; iy < met->ny; iy++) {
+
106
+
107 /* Copy data... */
+
108 for (int ix = 0; ix < met->nx; ix++) {
+
109 cutReal[ix] = met->t[ix][iy][ip];
+
110 cutImag[ix] = 0.0;
+
111 }
+
112
+
113 /* FFT... */
+
114 fft_help(cutReal, cutImag, met->nx);
+
115
+
116 /*
+
117 Get wavelength, amplitude, and phase:
+
118 A(x) = A[0] + A[1] * cos(2 pi x / lx[1] + phi[1]) + A[2] * cos...
+
119 */
+
120 for (int ix = 0; ix < met->nx; ix++) {
+
121 lx[ix] = DEG2DX(met->lon[met->nx - 1] - met->lon[0], met->lat[iy])
+
122 / ((ix < met->nx / 2) ? (double) ix : -(double) (met->nx - ix));
+
123 A[ix] = (ix == 0 ? 1.0 : 2.0) / (met->nx)
+
124 * sqrt(gsl_pow_2(cutReal[ix]) + gsl_pow_2(cutImag[ix]));
+
125 phi[ix]
+
126 = 180. / M_PI * atan2(cutImag[ix], cutReal[ix]);
+
127 }
+
128
+
129 /* Write data... */
+
130 fprintf(out, "%.2f %g %g %g", met->time, Z(met->p[ip]), 0.0,
+
131 met->lat[iy]);
+
132 for (int ix = 0; ix <= wavemax; ix++)
+
133 fprintf(out, " %g %g %g", lx[ix], A[ix], phi[ix]);
+
134 fprintf(out, "\n");
+
135 }
+
136 }
+
137
+
138 /* Close file... */
+
139 fclose(out);
+
140
+
141 /* Free... */
+
142 free(clim);
+
143 free(met);
+
144
+
145 return EXIT_SUCCESS;
+
146}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define DEG2DX(dlon, lat)
Convert degrees to zonal distance.
Definition: libtrac.h:270
+
void fft_help(double *fcReal, double *fcImag, int n)
Definition: met_spec.c:150
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__spec_8c.js b/doxygen/met__spec_8c.js new file mode 100644 index 0000000000..382c5bc4da --- /dev/null +++ b/doxygen/met__spec_8c.js @@ -0,0 +1,6 @@ +var met__spec_8c = +[ + [ "PMAX", "met__spec_8c.html#a44c07e59a1dddb477c7989ad091bffc4", null ], + [ "fft_help", "met__spec_8c.html#a48b5c3ccaf39126de8e504baeb032ab8", null ], + [ "main", "met__spec_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..69e9906d1e --- /dev/null +++ b/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..3821444ce0 --- /dev/null +++ b/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +f4ea61fb89e7bd956cfadc6730028d17 \ No newline at end of file diff --git a/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__spec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..95188dbeeb3540cb6247a3c839e06586b625563f GIT binary patch literal 144928 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� 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 ax=t7>X}mt)5;KKA2{n?Y(rd*lzW)PbiWBev literal 0 HcmV?d00001 diff --git a/doxygen/met__spec_8c_source.html b/doxygen/met__spec_8c_source.html new file mode 100644 index 0000000000..59b370e719 --- /dev/null +++ b/doxygen/met__spec_8c_source.html @@ -0,0 +1,313 @@ + + + + + + + +MPTRAC: met_spec.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ + + + diff --git a/doxygen/met__subgrid_8c.html b/doxygen/met__subgrid_8c.html new file mode 100644 index 0000000000..1ffdd69149 --- /dev/null +++ b/doxygen/met__subgrid_8c.html @@ -0,0 +1,404 @@ + + + + + + + +MPTRAC: met_subgrid.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_subgrid.c File Reference
+
+
+ +

Calculate standard deviations of horizontal wind and vertical velocity. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Calculate standard deviations of horizontal wind and vertical velocity.

+ +

Definition in file met_subgrid.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 31 of file met_subgrid.c.

+
33 {
+
34
+
35 ctl_t ctl;
+
36
+
37 clim_t *clim;
+
38
+
39 met_t *met0, *met1;
+
40
+
41 FILE *out;
+
42
+
43 static double usig[EP][EY], vsig[EP][EY], wsig[EP][EY];
+
44
+
45 static float u[16], v[16], w[16];
+
46
+
47 static int i, ix, iy, iz, n[EP][EY];
+
48
+
49 /* Allocate... */
+
50 ALLOC(clim, clim_t, 1);
+
51 ALLOC(met0, met_t, 1);
+
52 ALLOC(met1, met_t, 1);
+
53
+
54 /* Check arguments... */
+
55 if (argc < 4 && argc % 2 != 0)
+
56 ERRMSG
+
57 ("Give parameters: <ctl> <subgrid.tab> <met0> <met1> [ <met0> <met1> ... ]");
+
58
+
59 /* Read control parameters... */
+
60 read_ctl(argv[1], argc, argv, &ctl);
+
61
+
62 /* Read climatological data... */
+
63 read_clim(&ctl, clim);
+
64
+
65 /* Loop over data files... */
+
66 for (i = 3; i < argc - 1; i += 2) {
+
67
+
68 /* Read meteorological data... */
+
69 if (!read_met(argv[i], &ctl, clim, met0))
+
70 ERRMSG("Cannot open file!");
+
71 if (!read_met(argv[i + 1], &ctl, clim, met1))
+
72 ERRMSG("Cannot open file!");
+
73
+
74 /* Loop over grid boxes... */
+
75 for (ix = 0; ix < met0->nx - 1; ix++)
+
76 for (iy = 0; iy < met0->ny - 1; iy++)
+
77 for (iz = 0; iz < met0->np - 1; iz++) {
+
78
+
79 /* Collect local wind data... */
+
80 u[0] = met0->u[ix][iy][iz];
+
81 u[1] = met0->u[ix + 1][iy][iz];
+
82 u[2] = met0->u[ix][iy + 1][iz];
+
83 u[3] = met0->u[ix + 1][iy + 1][iz];
+
84 u[4] = met0->u[ix][iy][iz + 1];
+
85 u[5] = met0->u[ix + 1][iy][iz + 1];
+
86 u[6] = met0->u[ix][iy + 1][iz + 1];
+
87 u[7] = met0->u[ix + 1][iy + 1][iz + 1];
+
88
+
89 v[0] = met0->v[ix][iy][iz];
+
90 v[1] = met0->v[ix + 1][iy][iz];
+
91 v[2] = met0->v[ix][iy + 1][iz];
+
92 v[3] = met0->v[ix + 1][iy + 1][iz];
+
93 v[4] = met0->v[ix][iy][iz + 1];
+
94 v[5] = met0->v[ix + 1][iy][iz + 1];
+
95 v[6] = met0->v[ix][iy + 1][iz + 1];
+
96 v[7] = met0->v[ix + 1][iy + 1][iz + 1];
+
97
+
98 w[0] = (float) (1e3 * DP2DZ(met0->w[ix][iy][iz], met0->p[iz]));
+
99 w[1] = (float) (1e3 * DP2DZ(met0->w[ix + 1][iy][iz], met0->p[iz]));
+
100 w[2] = (float) (1e3 * DP2DZ(met0->w[ix][iy + 1][iz], met0->p[iz]));
+
101 w[3] =
+
102 (float) (1e3 * DP2DZ(met0->w[ix + 1][iy + 1][iz], met0->p[iz]));
+
103 w[4] =
+
104 (float) (1e3 * DP2DZ(met0->w[ix][iy][iz + 1], met0->p[iz + 1]));
+
105 w[5] =
+
106 (float) (1e3 *
+
107 DP2DZ(met0->w[ix + 1][iy][iz + 1], met0->p[iz + 1]));
+
108 w[6] =
+
109 (float) (1e3 *
+
110 DP2DZ(met0->w[ix][iy + 1][iz + 1], met0->p[iz + 1]));
+
111 w[7] =
+
112 (float) (1e3 *
+
113 DP2DZ(met0->w[ix + 1][iy + 1][iz + 1], met0->p[iz + 1]));
+
114
+
115 /* Collect local wind data... */
+
116 u[8] = met1->u[ix][iy][iz];
+
117 u[9] = met1->u[ix + 1][iy][iz];
+
118 u[10] = met1->u[ix][iy + 1][iz];
+
119 u[11] = met1->u[ix + 1][iy + 1][iz];
+
120 u[12] = met1->u[ix][iy][iz + 1];
+
121 u[13] = met1->u[ix + 1][iy][iz + 1];
+
122 u[14] = met1->u[ix][iy + 1][iz + 1];
+
123 u[15] = met1->u[ix + 1][iy + 1][iz + 1];
+
124
+
125 v[8] = met1->v[ix][iy][iz];
+
126 v[9] = met1->v[ix + 1][iy][iz];
+
127 v[10] = met1->v[ix][iy + 1][iz];
+
128 v[11] = met1->v[ix + 1][iy + 1][iz];
+
129 v[12] = met1->v[ix][iy][iz + 1];
+
130 v[13] = met1->v[ix + 1][iy][iz + 1];
+
131 v[14] = met1->v[ix][iy + 1][iz + 1];
+
132 v[15] = met1->v[ix + 1][iy + 1][iz + 1];
+
133
+
134 w[8] = (float) (1e3 * DP2DZ(met1->w[ix][iy][iz], met1->p[iz]));
+
135 w[9] = (float) (1e3 * DP2DZ(met1->w[ix + 1][iy][iz], met1->p[iz]));
+
136 w[10] = (float) (1e3 * DP2DZ(met1->w[ix][iy + 1][iz], met1->p[iz]));
+
137 w[11] =
+
138 (float) (1e3 * DP2DZ(met1->w[ix + 1][iy + 1][iz], met1->p[iz]));
+
139 w[12] =
+
140 (float) (1e3 * DP2DZ(met1->w[ix][iy][iz + 1], met1->p[iz + 1]));
+
141 w[13] =
+
142 (float) (1e3 *
+
143 DP2DZ(met1->w[ix + 1][iy][iz + 1], met1->p[iz + 1]));
+
144 w[14] =
+
145 (float) (1e3 *
+
146 DP2DZ(met1->w[ix][iy + 1][iz + 1], met1->p[iz + 1]));
+
147 w[15] =
+
148 (float) (1e3 *
+
149 DP2DZ(met1->w[ix + 1][iy + 1][iz + 1], met1->p[iz + 1]));
+
150
+
151 /* Get standard deviations of local wind data... */
+
152 usig[iz][iy] += stddev(u, 16);
+
153 vsig[iz][iy] += stddev(v, 16);
+
154 wsig[iz][iy] += stddev(w, 16);
+
155 n[iz][iy]++;
+
156
+
157 /* Check surface pressure... */
+
158 if (met0->p[iz] > met0->ps[ix][iy]
+
159 || met1->p[iz] > met1->ps[ix][iy]) {
+
160 usig[iz][iy] = GSL_NAN;
+
161 vsig[iz][iy] = GSL_NAN;
+
162 wsig[iz][iy] = GSL_NAN;
+
163 n[iz][iy] = 0;
+
164 }
+
165 }
+
166 }
+
167
+
168 /* Create output file... */
+
169 LOG(1, "Write subgrid data file: %s", argv[2]);
+
170 if (!(out = fopen(argv[2], "w")))
+
171 ERRMSG("Cannot create file!");
+
172
+
173 /* Write header... */
+
174 fprintf(out,
+
175 "# $1 = time [s]\n"
+
176 "# $2 = altitude [km]\n"
+
177 "# $3 = longitude [deg]\n"
+
178 "# $4 = latitude [deg]\n"
+
179 "# $5 = zonal wind standard deviation [m/s]\n"
+
180 "# $6 = meridional wind standard deviation [m/s]\n"
+
181 "# $7 = vertical velocity standard deviation [m/s]\n"
+
182 "# $8 = number of data points\n");
+
183
+
184 /* Write output... */
+
185 for (iy = 0; iy < met0->ny - 1; iy++) {
+
186 fprintf(out, "\n");
+
187 for (iz = 0; iz < met0->np - 1; iz++)
+
188 fprintf(out, "%.2f %g %g %g %g %g %g %d\n",
+
189 0.5 * (met0->time + met1->time),
+
190 0.5 * (Z(met0->p[iz]) + Z(met1->p[iz + 1])),
+
191 0.0, 0.5 * (met0->lat[iy] + met1->lat[iy + 1]),
+
192 usig[iz][iy] / n[iz][iy], vsig[iz][iy] / n[iz][iy],
+
193 wsig[iz][iy] / n[iz][iy], n[iz][iy]);
+
194 }
+
195
+
196 /* Close file... */
+
197 fclose(out);
+
198
+
199 /* Free... */
+
200 free(clim);
+
201 free(met0);
+
202 free(met1);
+
203
+
204 return EXIT_SUCCESS;
+
205}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
float stddev(const float *data, const int n)
Calculate standard deviation.
Definition: libtrac.c:5387
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define DP2DZ(dp, p)
Convert pressure change to vertical distance.
Definition: libtrac.h:278
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
float w[EX][EY][EP]
Vertical velocity [hPa/s].
Definition: libtrac.h:1939
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float u[EX][EY][EP]
Zonal wind [m/s].
Definition: libtrac.h:1927
+
float v[EX][EY][EP]
Meridional wind [m/s].
Definition: libtrac.h:1933
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__subgrid_8c.js b/doxygen/met__subgrid_8c.js new file mode 100644 index 0000000000..8787f951a4 --- /dev/null +++ b/doxygen/met__subgrid_8c.js @@ -0,0 +1,4 @@ +var met__subgrid_8c = +[ + [ "main", "met__subgrid_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..2a3d481805 --- /dev/null +++ b/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..53dbaf9ef1 --- /dev/null +++ b/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +2a4d48501dded4e604ca909568712f93 \ No newline at end of file diff --git a/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__subgrid_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..c546a75de8d0e5baec868224705c60a03ace190b GIT binary patch literal 143693 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
OigT?iu1zu9$P7Hjk1iMsqe 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 + + + + + + +MPTRAC: met_subgrid.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
met_subgrid.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2021 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Main...
+
29 ------------------------------------------------------------ */
+
30
+
31int main(
+
32 int argc,
+
33 char *argv[]) {
+
34
+
35 ctl_t ctl;
+
36
+
37 clim_t *clim;
+
38
+
39 met_t *met0, *met1;
+
40
+
41 FILE *out;
+
42
+
43 static double usig[EP][EY], vsig[EP][EY], wsig[EP][EY];
+
44
+
45 static float u[16], v[16], w[16];
+
46
+
47 static int i, ix, iy, iz, n[EP][EY];
+
48
+
49 /* Allocate... */
+
50 ALLOC(clim, clim_t, 1);
+
51 ALLOC(met0, met_t, 1);
+
52 ALLOC(met1, met_t, 1);
+
53
+
54 /* Check arguments... */
+
55 if (argc < 4 && argc % 2 != 0)
+
56 ERRMSG
+
57 ("Give parameters: <ctl> <subgrid.tab> <met0> <met1> [ <met0> <met1> ... ]");
+
58
+
59 /* Read control parameters... */
+
60 read_ctl(argv[1], argc, argv, &ctl);
+
61
+
62 /* Read climatological data... */
+
63 read_clim(&ctl, clim);
+
64
+
65 /* Loop over data files... */
+
66 for (i = 3; i < argc - 1; i += 2) {
+
67
+
68 /* Read meteorological data... */
+
69 if (!read_met(argv[i], &ctl, clim, met0))
+
70 ERRMSG("Cannot open file!");
+
71 if (!read_met(argv[i + 1], &ctl, clim, met1))
+
72 ERRMSG("Cannot open file!");
+
73
+
74 /* Loop over grid boxes... */
+
75 for (ix = 0; ix < met0->nx - 1; ix++)
+
76 for (iy = 0; iy < met0->ny - 1; iy++)
+
77 for (iz = 0; iz < met0->np - 1; iz++) {
+
78
+
79 /* Collect local wind data... */
+
80 u[0] = met0->u[ix][iy][iz];
+
81 u[1] = met0->u[ix + 1][iy][iz];
+
82 u[2] = met0->u[ix][iy + 1][iz];
+
83 u[3] = met0->u[ix + 1][iy + 1][iz];
+
84 u[4] = met0->u[ix][iy][iz + 1];
+
85 u[5] = met0->u[ix + 1][iy][iz + 1];
+
86 u[6] = met0->u[ix][iy + 1][iz + 1];
+
87 u[7] = met0->u[ix + 1][iy + 1][iz + 1];
+
88
+
89 v[0] = met0->v[ix][iy][iz];
+
90 v[1] = met0->v[ix + 1][iy][iz];
+
91 v[2] = met0->v[ix][iy + 1][iz];
+
92 v[3] = met0->v[ix + 1][iy + 1][iz];
+
93 v[4] = met0->v[ix][iy][iz + 1];
+
94 v[5] = met0->v[ix + 1][iy][iz + 1];
+
95 v[6] = met0->v[ix][iy + 1][iz + 1];
+
96 v[7] = met0->v[ix + 1][iy + 1][iz + 1];
+
97
+
98 w[0] = (float) (1e3 * DP2DZ(met0->w[ix][iy][iz], met0->p[iz]));
+
99 w[1] = (float) (1e3 * DP2DZ(met0->w[ix + 1][iy][iz], met0->p[iz]));
+
100 w[2] = (float) (1e3 * DP2DZ(met0->w[ix][iy + 1][iz], met0->p[iz]));
+
101 w[3] =
+
102 (float) (1e3 * DP2DZ(met0->w[ix + 1][iy + 1][iz], met0->p[iz]));
+
103 w[4] =
+
104 (float) (1e3 * DP2DZ(met0->w[ix][iy][iz + 1], met0->p[iz + 1]));
+
105 w[5] =
+
106 (float) (1e3 *
+
107 DP2DZ(met0->w[ix + 1][iy][iz + 1], met0->p[iz + 1]));
+
108 w[6] =
+
109 (float) (1e3 *
+
110 DP2DZ(met0->w[ix][iy + 1][iz + 1], met0->p[iz + 1]));
+
111 w[7] =
+
112 (float) (1e3 *
+
113 DP2DZ(met0->w[ix + 1][iy + 1][iz + 1], met0->p[iz + 1]));
+
114
+
115 /* Collect local wind data... */
+
116 u[8] = met1->u[ix][iy][iz];
+
117 u[9] = met1->u[ix + 1][iy][iz];
+
118 u[10] = met1->u[ix][iy + 1][iz];
+
119 u[11] = met1->u[ix + 1][iy + 1][iz];
+
120 u[12] = met1->u[ix][iy][iz + 1];
+
121 u[13] = met1->u[ix + 1][iy][iz + 1];
+
122 u[14] = met1->u[ix][iy + 1][iz + 1];
+
123 u[15] = met1->u[ix + 1][iy + 1][iz + 1];
+
124
+
125 v[8] = met1->v[ix][iy][iz];
+
126 v[9] = met1->v[ix + 1][iy][iz];
+
127 v[10] = met1->v[ix][iy + 1][iz];
+
128 v[11] = met1->v[ix + 1][iy + 1][iz];
+
129 v[12] = met1->v[ix][iy][iz + 1];
+
130 v[13] = met1->v[ix + 1][iy][iz + 1];
+
131 v[14] = met1->v[ix][iy + 1][iz + 1];
+
132 v[15] = met1->v[ix + 1][iy + 1][iz + 1];
+
133
+
134 w[8] = (float) (1e3 * DP2DZ(met1->w[ix][iy][iz], met1->p[iz]));
+
135 w[9] = (float) (1e3 * DP2DZ(met1->w[ix + 1][iy][iz], met1->p[iz]));
+
136 w[10] = (float) (1e3 * DP2DZ(met1->w[ix][iy + 1][iz], met1->p[iz]));
+
137 w[11] =
+
138 (float) (1e3 * DP2DZ(met1->w[ix + 1][iy + 1][iz], met1->p[iz]));
+
139 w[12] =
+
140 (float) (1e3 * DP2DZ(met1->w[ix][iy][iz + 1], met1->p[iz + 1]));
+
141 w[13] =
+
142 (float) (1e3 *
+
143 DP2DZ(met1->w[ix + 1][iy][iz + 1], met1->p[iz + 1]));
+
144 w[14] =
+
145 (float) (1e3 *
+
146 DP2DZ(met1->w[ix][iy + 1][iz + 1], met1->p[iz + 1]));
+
147 w[15] =
+
148 (float) (1e3 *
+
149 DP2DZ(met1->w[ix + 1][iy + 1][iz + 1], met1->p[iz + 1]));
+
150
+
151 /* Get standard deviations of local wind data... */
+
152 usig[iz][iy] += stddev(u, 16);
+
153 vsig[iz][iy] += stddev(v, 16);
+
154 wsig[iz][iy] += stddev(w, 16);
+
155 n[iz][iy]++;
+
156
+
157 /* Check surface pressure... */
+
158 if (met0->p[iz] > met0->ps[ix][iy]
+
159 || met1->p[iz] > met1->ps[ix][iy]) {
+
160 usig[iz][iy] = GSL_NAN;
+
161 vsig[iz][iy] = GSL_NAN;
+
162 wsig[iz][iy] = GSL_NAN;
+
163 n[iz][iy] = 0;
+
164 }
+
165 }
+
166 }
+
167
+
168 /* Create output file... */
+
169 LOG(1, "Write subgrid data file: %s", argv[2]);
+
170 if (!(out = fopen(argv[2], "w")))
+
171 ERRMSG("Cannot create file!");
+
172
+
173 /* Write header... */
+
174 fprintf(out,
+
175 "# $1 = time [s]\n"
+
176 "# $2 = altitude [km]\n"
+
177 "# $3 = longitude [deg]\n"
+
178 "# $4 = latitude [deg]\n"
+
179 "# $5 = zonal wind standard deviation [m/s]\n"
+
180 "# $6 = meridional wind standard deviation [m/s]\n"
+
181 "# $7 = vertical velocity standard deviation [m/s]\n"
+
182 "# $8 = number of data points\n");
+
183
+
184 /* Write output... */
+
185 for (iy = 0; iy < met0->ny - 1; iy++) {
+
186 fprintf(out, "\n");
+
187 for (iz = 0; iz < met0->np - 1; iz++)
+
188 fprintf(out, "%.2f %g %g %g %g %g %g %d\n",
+
189 0.5 * (met0->time + met1->time),
+
190 0.5 * (Z(met0->p[iz]) + Z(met1->p[iz + 1])),
+
191 0.0, 0.5 * (met0->lat[iy] + met1->lat[iy + 1]),
+
192 usig[iz][iy] / n[iz][iy], vsig[iz][iy] / n[iz][iy],
+
193 wsig[iz][iy] / n[iz][iy], n[iz][iy]);
+
194 }
+
195
+
196 /* Close file... */
+
197 fclose(out);
+
198
+
199 /* Free... */
+
200 free(clim);
+
201 free(met0);
+
202 free(met1);
+
203
+
204 return EXIT_SUCCESS;
+
205}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
float stddev(const float *data, const int n)
Calculate standard deviation.
Definition: libtrac.c:5387
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define DP2DZ(dp, p)
Convert pressure change to vertical distance.
Definition: libtrac.h:278
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
int main(int argc, char *argv[])
Definition: met_subgrid.c:31
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
float w[EX][EY][EP]
Vertical velocity [hPa/s].
Definition: libtrac.h:1939
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float u[EX][EY][EP]
Zonal wind [m/s].
Definition: libtrac.h:1927
+
float v[EX][EY][EP]
Meridional wind [m/s].
Definition: libtrac.h:1933
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+
+ + + + diff --git a/doxygen/met__zm_8c.html b/doxygen/met__zm_8c.html new file mode 100644 index 0000000000..8a689b537a --- /dev/null +++ b/doxygen/met__zm_8c.html @@ -0,0 +1,506 @@ + + + + + + + +MPTRAC: met_zm.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_zm.c File Reference
+
+
+ +

Extract zonal mean from meteorological data. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + + + + +

+Macros

#define NZ   1000
 Maximum number of altitudes. More...
 
#define NY   721
 Maximum number of latitudes. More...
 
+ + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Extract zonal mean from meteorological data.

+ +

Definition in file met_zm.c.

+

Macro Definition Documentation

+ +

◆ NZ

+ +
+
+ + + + +
#define NZ   1000
+
+ +

Maximum number of altitudes.

+ +

Definition at line 32 of file met_zm.c.

+ +
+
+ +

◆ NY

+ +
+
+ + + + +
#define NY   721
+
+ +

Maximum number of latitudes.

+ +

Definition at line 35 of file met_zm.c.

+ +
+
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 41 of file met_zm.c.

+
43 {
+
44
+
45 ctl_t ctl;
+
46
+
47 clim_t *clim;
+
48
+
49 met_t *met;
+
50
+
51 FILE *out;
+
52
+
53 static double timem[NZ][NY], psm[NZ][NY], tsm[NZ][NY], zsm[NZ][NY],
+
54 usm[NZ][NY], vsm[NZ][NY], lsmm[NZ][NY], sstm[NZ][NY], pblm[NZ][NY],
+
55 ptm[NZ][NY], pctm[NZ][NY], pcbm[NZ][NY], clm[NZ][NY], plclm[NZ][NY],
+
56 plfcm[NZ][NY], pelm[NZ][NY], capem[NZ][NY], cinm[NZ][NY], o3cm[NZ][NY],
+
57 ttm[NZ][NY], ztm[NZ][NY], tm[NZ][NY], um[NZ][NY], vm[NZ][NY], wm[NZ][NY],
+
58 h2om[NZ][NY], h2otm[NZ][NY], pvm[NZ][NY], o3m[NZ][NY], lwcm[NZ][NY],
+
59 iwcm[NZ][NY], ccm[NZ][NY], zm[NZ][NY], rhm[NZ][NY], rhicem[NZ][NY],
+
60 tdewm[NZ][NY], ticem[NZ][NY], tnatm[NZ][NY], hno3m[NZ][NY], ohm[NZ][NY],
+
61 h2o2m[NZ][NY], ho2m[NZ][NY], o1dm[NZ][NY], z, z0, z1, dz, zt, tt,
+
62 plev[NZ], ps, ts, zs, us, vs, lsm, sst, pbl, pt, pct, pcb, plcl, plfc,
+
63 pel, cape, cin, o3c, cl, t, u, v, w, pv, h2o, h2ot, o3, lwc, iwc, cc, lat,
+
64 lat0, lat1, dlat, lats[NY], lon0, lon1, lonm[NZ][NY], cw[3];
+
65
+
66 static int i, ix, iy, iz, np[NZ][NY], npc[NZ][NY], npt[NZ][NY], ny, nz,
+
67 ci[3];
+
68
+
69 /* Allocate... */
+
70 ALLOC(clim, clim_t, 1);
+
71 ALLOC(met, met_t, 1);
+
72
+
73 /* Check arguments... */
+
74 if (argc < 4)
+
75 ERRMSG("Give parameters: <ctl> <zm.tab> <met0> [ <met1> ... ]");
+
76
+
77 /* Read control parameters... */
+
78 read_ctl(argv[1], argc, argv, &ctl);
+
79 z0 = scan_ctl(argv[1], argc, argv, "ZM_Z0", -1, "-999", NULL);
+
80 z1 = scan_ctl(argv[1], argc, argv, "ZM_Z1", -1, "-999", NULL);
+
81 dz = scan_ctl(argv[1], argc, argv, "ZM_DZ", -1, "-999", NULL);
+
82 lon0 = scan_ctl(argv[1], argc, argv, "ZM_LON0", -1, "-360", NULL);
+
83 lon1 = scan_ctl(argv[1], argc, argv, "ZM_LON1", -1, "360", NULL);
+
84 lat0 = scan_ctl(argv[1], argc, argv, "ZM_LAT0", -1, "-90", NULL);
+
85 lat1 = scan_ctl(argv[1], argc, argv, "ZM_LAT1", -1, "90", NULL);
+
86 dlat = scan_ctl(argv[1], argc, argv, "ZM_DLAT", -1, "-999", NULL);
+
87
+
88 /* Read climatological data... */
+
89 read_clim(&ctl, clim);
+
90
+
91 /* Loop over files... */
+
92 for (i = 3; i < argc; i++) {
+
93
+
94 /* Read meteorological data... */
+
95 if (!read_met(argv[i], &ctl, clim, met))
+
96 continue;
+
97
+
98 /* Set vertical grid... */
+
99 if (z0 < 0)
+
100 z0 = Z(met->p[0]);
+
101 if (z1 < 0)
+
102 z1 = Z(met->p[met->np - 1]);
+
103 nz = 0;
+
104 if (dz < 0) {
+
105 for (iz = 0; iz < met->np; iz++)
+
106 if (Z(met->p[iz]) >= z0 && Z(met->p[iz]) <= z1) {
+
107 plev[nz] = met->p[iz];
+
108 if ((++nz) > NZ)
+
109 ERRMSG("Too many pressure levels!");
+
110 }
+
111 } else
+
112 for (z = z0; z <= z1; z += dz) {
+
113 plev[nz] = P(z);
+
114 if ((++nz) > NZ)
+
115 ERRMSG("Too many pressure levels!");
+
116 }
+
117
+
118 /* Set horizontal grid... */
+
119 if (dlat <= 0)
+
120 dlat = fabs(met->lat[1] - met->lat[0]);
+
121 ny = 0;
+
122 if (lat0 < -90 && lat1 > 90) {
+
123 lat0 = gsl_stats_min(met->lat, 1, (size_t) met->ny);
+
124 lat1 = gsl_stats_max(met->lat, 1, (size_t) met->ny);
+
125 }
+
126 for (lat = lat0; lat <= lat1; lat += dlat) {
+
127 lats[ny] = lat;
+
128 if ((++ny) > NY)
+
129 ERRMSG("Too many latitudes!");
+
130 }
+
131
+
132 /* Average... */
+
133 for (ix = 0; ix < met->nx; ix++)
+
134 if (met->lon[ix] >= lon0 && met->lon[ix] <= lon1)
+
135 for (iy = 0; iy < ny; iy++)
+
136 for (iz = 0; iz < nz; iz++) {
+
137
+
138 /* Interpolate meteo data... */
+
139 INTPOL_SPACE_ALL(plev[iz], met->lon[ix], lats[iy]);
+
140
+
141 /* Averaging... */
+
142 timem[iz][iy] += met->time;
+
143 lonm[iz][iy] += met->lon[ix];
+
144 zm[iz][iy] += z;
+
145 tm[iz][iy] += t;
+
146 um[iz][iy] += u;
+
147 vm[iz][iy] += v;
+
148 wm[iz][iy] += w;
+
149 pvm[iz][iy] += pv;
+
150 h2om[iz][iy] += h2o;
+
151 o3m[iz][iy] += o3;
+
152 lwcm[iz][iy] += lwc;
+
153 iwcm[iz][iy] += iwc;
+
154 ccm[iz][iy] += cc;
+
155 psm[iz][iy] += ps;
+
156 tsm[iz][iy] += ts;
+
157 zsm[iz][iy] += zs;
+
158 usm[iz][iy] += us;
+
159 vsm[iz][iy] += vs;
+
160 lsmm[iz][iy] += lsm;
+
161 sstm[iz][iy] += sst;
+
162 pblm[iz][iy] += pbl;
+
163 pctm[iz][iy] += pct;
+
164 pcbm[iz][iy] += pcb;
+
165 clm[iz][iy] += cl;
+
166 if (gsl_finite(plfc) && gsl_finite(pel) && cape >= ctl.conv_cape
+
167 && (ctl.conv_cin <= 0 || cin < ctl.conv_cin)) {
+
168 plclm[iz][iy] += plcl;
+
169 plfcm[iz][iy] += plfc;
+
170 pelm[iz][iy] += pel;
+
171 capem[iz][iy] += cape;
+
172 cinm[iz][iy] += cin;
+
173 npc[iz][iy]++;
+
174 }
+
175 if (gsl_finite(pt)) {
+
176 ptm[iz][iy] += pt;
+
177 ztm[iz][iy] += zt;
+
178 ttm[iz][iy] += tt;
+
179 h2otm[iz][iy] += h2ot;
+
180 npt[iz][iy]++;
+
181 }
+
182 o3cm[iz][iy] += o3c;
+
183 rhm[iz][iy] += RH(plev[iz], t, h2o);
+
184 rhicem[iz][iy] += RHICE(plev[iz], t, h2o);
+
185 tdewm[iz][iy] += TDEW(plev[iz], h2o);
+
186 ticem[iz][iy] += TICE(plev[iz], h2o);
+
187 hno3m[iz][iy] +=
+
188 clim_zm(&clim->hno3, met->time, lats[iy], plev[iz]);
+
189 tnatm[iz][iy] +=
+
190 nat_temperature(plev[iz], h2o,
+
191 clim_zm(&clim->hno3, met->time, lats[iy],
+
192 plev[iz]));
+
193 ohm[iz][iy] +=
+
194 clim_oh(&ctl, clim, met->time, met->lon[ix], lats[iy],
+
195 plev[iz]);
+
196 h2o2m[iz][iy]
+
197 += clim_zm(&clim->h2o2, met->time, lats[iy], plev[iz]);
+
198 ho2m[iz][iy]
+
199 += clim_zm(&clim->ho2, met->time, lats[iy], plev[iz]);
+
200 o1dm[iz][iy]
+
201 += clim_zm(&clim->o1d, met->time, lats[iy], plev[iz]);
+
202 np[iz][iy]++;
+
203 }
+
204 }
+
205
+
206 /* Create output file... */
+
207 LOG(1, "Write meteorological data file: %s", argv[2]);
+
208 if (!(out = fopen(argv[2], "w")))
+
209 ERRMSG("Cannot create file!");
+
210
+
211 /* Write header... */
+ +
213
+
214 /* Write data... */
+
215 for (iz = 0; iz < nz; iz++) {
+
216 fprintf(out, "\n");
+
217 for (iy = 0; iy < ny; iy++)
+
218 fprintf(out,
+
219 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
220 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
221 " %g %g %g %g %g %g %g %d %d %d\n",
+
222 timem[iz][iy] / np[iz][iy], Z(plev[iz]),
+
223 lonm[iz][iy] / np[iz][iy], lats[iy],
+
224 plev[iz], tm[iz][iy] / np[iz][iy], um[iz][iy] / np[iz][iy],
+
225 vm[iz][iy] / np[iz][iy], wm[iz][iy] / np[iz][iy],
+
226 h2om[iz][iy] / np[iz][iy], o3m[iz][iy] / np[iz][iy],
+
227 zm[iz][iy] / np[iz][iy], pvm[iz][iy] / np[iz][iy],
+
228 psm[iz][iy] / np[iz][iy], tsm[iz][iy] / np[iz][iy],
+
229 zsm[iz][iy] / np[iz][iy], usm[iz][iy] / np[iz][iy],
+
230 vsm[iz][iy] / np[iz][iy], lsmm[iz][iy] / np[iz][iy],
+
231 sstm[iz][iy] / np[iz][iy], ptm[iz][iy] / npt[iz][iy],
+
232 ztm[iz][iy] / npt[iz][iy], ttm[iz][iy] / npt[iz][iy],
+
233 h2otm[iz][iy] / npt[iz][iy], lwcm[iz][iy] / np[iz][iy],
+
234 iwcm[iz][iy] / np[iz][iy], ccm[iz][iy] / np[iz][iy],
+
235 clm[iz][iy] / np[iz][iy], pctm[iz][iy] / np[iz][iy],
+
236 pcbm[iz][iy] / np[iz][iy], plclm[iz][iy] / npc[iz][iy],
+
237 plfcm[iz][iy] / npc[iz][iy], pelm[iz][iy] / npc[iz][iy],
+
238 capem[iz][iy] / npc[iz][iy], cinm[iz][iy] / npc[iz][iy],
+
239 rhm[iz][iy] / np[iz][iy], rhicem[iz][iy] / np[iz][iy],
+
240 tdewm[iz][iy] / np[iz][iy], ticem[iz][iy] / np[iz][iy],
+
241 tnatm[iz][iy] / np[iz][iy], hno3m[iz][iy] / np[iz][iy],
+
242 ohm[iz][iy] / np[iz][iy], h2o2m[iz][iy] / np[iz][iy],
+
243 ho2m[iz][iy] / np[iz][iy], o1dm[iz][iy] / np[iz][iy],
+
244 pblm[iz][iy] / np[iz][iy],
+
245 np[iz][iy], npt[iz][iy], npc[iz][iy]);
+
246 }
+
247
+
248 /* Close file... */
+
249 fclose(out);
+
250
+
251 /* Free... */
+
252 free(clim);
+
253 free(met);
+
254
+
255 return EXIT_SUCCESS;
+
256}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define INTPOL_SPACE_ALL(p, lon, lat)
Spatial interpolation of all meteo data.
Definition: libtrac.h:344
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
#define NY
Maximum number of latitudes.
Definition: met_zm.c:35
+
#define NZ
Maximum number of altitudes.
Definition: met_zm.c:32
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/met__zm_8c.js b/doxygen/met__zm_8c.js new file mode 100644 index 0000000000..5d6cac1e74 --- /dev/null +++ b/doxygen/met__zm_8c.js @@ -0,0 +1,6 @@ +var met__zm_8c = +[ + [ "NZ", "met__zm_8c.html#a693aee47b2103d0a7fcd3a0a0dd4fb57", null ], + [ "NY", "met__zm_8c.html#a652e87ecc9140879666ae9d6bf4ca893", null ], + [ "main", "met__zm_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..5635ed5b79 --- /dev/null +++ b/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..a95131da68 --- /dev/null +++ b/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +74f4ef2cb2f21644845c495d254b4617 \ No newline at end of file diff --git a/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/met__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbfa1237b009c8b2f903326fcfad81cf6d25d2c GIT binary patch literal 195037 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

o6*03JcshZMKq2G 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

w0(;&B<|dtJR#B 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

0jGMw7A`s1sC|F22=mbbiJ1xy=?LkOw^ltiriu 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 hpAkQZ_yCjh>MOH(X} + + + + + + +MPTRAC: met_zm.c Source File + + + + + + + + + + + + + + +

+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
met_zm.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Dimensions...
+
29 ------------------------------------------------------------ */
+
30
+
32#define NZ 1000
+
33
+
35#define NY 721
+
36
+
37/* ------------------------------------------------------------
+
38 Main...
+
39 ------------------------------------------------------------ */
+
40
+
41int main(
+
42 int argc,
+
43 char *argv[]) {
+
44
+
45 ctl_t ctl;
+
46
+
47 clim_t *clim;
+
48
+
49 met_t *met;
+
50
+
51 FILE *out;
+
52
+
53 static double timem[NZ][NY], psm[NZ][NY], tsm[NZ][NY], zsm[NZ][NY],
+
54 usm[NZ][NY], vsm[NZ][NY], lsmm[NZ][NY], sstm[NZ][NY], pblm[NZ][NY],
+
55 ptm[NZ][NY], pctm[NZ][NY], pcbm[NZ][NY], clm[NZ][NY], plclm[NZ][NY],
+
56 plfcm[NZ][NY], pelm[NZ][NY], capem[NZ][NY], cinm[NZ][NY], o3cm[NZ][NY],
+
57 ttm[NZ][NY], ztm[NZ][NY], tm[NZ][NY], um[NZ][NY], vm[NZ][NY], wm[NZ][NY],
+
58 h2om[NZ][NY], h2otm[NZ][NY], pvm[NZ][NY], o3m[NZ][NY], lwcm[NZ][NY],
+
59 iwcm[NZ][NY], ccm[NZ][NY], zm[NZ][NY], rhm[NZ][NY], rhicem[NZ][NY],
+
60 tdewm[NZ][NY], ticem[NZ][NY], tnatm[NZ][NY], hno3m[NZ][NY], ohm[NZ][NY],
+
61 h2o2m[NZ][NY], ho2m[NZ][NY], o1dm[NZ][NY], z, z0, z1, dz, zt, tt,
+
62 plev[NZ], ps, ts, zs, us, vs, lsm, sst, pbl, pt, pct, pcb, plcl, plfc,
+
63 pel, cape, cin, o3c, cl, t, u, v, w, pv, h2o, h2ot, o3, lwc, iwc, cc, lat,
+
64 lat0, lat1, dlat, lats[NY], lon0, lon1, lonm[NZ][NY], cw[3];
+
65
+
66 static int i, ix, iy, iz, np[NZ][NY], npc[NZ][NY], npt[NZ][NY], ny, nz,
+
67 ci[3];
+
68
+
69 /* Allocate... */
+
70 ALLOC(clim, clim_t, 1);
+
71 ALLOC(met, met_t, 1);
+
72
+
73 /* Check arguments... */
+
74 if (argc < 4)
+
75 ERRMSG("Give parameters: <ctl> <zm.tab> <met0> [ <met1> ... ]");
+
76
+
77 /* Read control parameters... */
+
78 read_ctl(argv[1], argc, argv, &ctl);
+
79 z0 = scan_ctl(argv[1], argc, argv, "ZM_Z0", -1, "-999", NULL);
+
80 z1 = scan_ctl(argv[1], argc, argv, "ZM_Z1", -1, "-999", NULL);
+
81 dz = scan_ctl(argv[1], argc, argv, "ZM_DZ", -1, "-999", NULL);
+
82 lon0 = scan_ctl(argv[1], argc, argv, "ZM_LON0", -1, "-360", NULL);
+
83 lon1 = scan_ctl(argv[1], argc, argv, "ZM_LON1", -1, "360", NULL);
+
84 lat0 = scan_ctl(argv[1], argc, argv, "ZM_LAT0", -1, "-90", NULL);
+
85 lat1 = scan_ctl(argv[1], argc, argv, "ZM_LAT1", -1, "90", NULL);
+
86 dlat = scan_ctl(argv[1], argc, argv, "ZM_DLAT", -1, "-999", NULL);
+
87
+
88 /* Read climatological data... */
+
89 read_clim(&ctl, clim);
+
90
+
91 /* Loop over files... */
+
92 for (i = 3; i < argc; i++) {
+
93
+
94 /* Read meteorological data... */
+
95 if (!read_met(argv[i], &ctl, clim, met))
+
96 continue;
+
97
+
98 /* Set vertical grid... */
+
99 if (z0 < 0)
+
100 z0 = Z(met->p[0]);
+
101 if (z1 < 0)
+
102 z1 = Z(met->p[met->np - 1]);
+
103 nz = 0;
+
104 if (dz < 0) {
+
105 for (iz = 0; iz < met->np; iz++)
+
106 if (Z(met->p[iz]) >= z0 && Z(met->p[iz]) <= z1) {
+
107 plev[nz] = met->p[iz];
+
108 if ((++nz) > NZ)
+
109 ERRMSG("Too many pressure levels!");
+
110 }
+
111 } else
+
112 for (z = z0; z <= z1; z += dz) {
+
113 plev[nz] = P(z);
+
114 if ((++nz) > NZ)
+
115 ERRMSG("Too many pressure levels!");
+
116 }
+
117
+
118 /* Set horizontal grid... */
+
119 if (dlat <= 0)
+
120 dlat = fabs(met->lat[1] - met->lat[0]);
+
121 ny = 0;
+
122 if (lat0 < -90 && lat1 > 90) {
+
123 lat0 = gsl_stats_min(met->lat, 1, (size_t) met->ny);
+
124 lat1 = gsl_stats_max(met->lat, 1, (size_t) met->ny);
+
125 }
+
126 for (lat = lat0; lat <= lat1; lat += dlat) {
+
127 lats[ny] = lat;
+
128 if ((++ny) > NY)
+
129 ERRMSG("Too many latitudes!");
+
130 }
+
131
+
132 /* Average... */
+
133 for (ix = 0; ix < met->nx; ix++)
+
134 if (met->lon[ix] >= lon0 && met->lon[ix] <= lon1)
+
135 for (iy = 0; iy < ny; iy++)
+
136 for (iz = 0; iz < nz; iz++) {
+
137
+
138 /* Interpolate meteo data... */
+
139 INTPOL_SPACE_ALL(plev[iz], met->lon[ix], lats[iy]);
+
140
+
141 /* Averaging... */
+
142 timem[iz][iy] += met->time;
+
143 lonm[iz][iy] += met->lon[ix];
+
144 zm[iz][iy] += z;
+
145 tm[iz][iy] += t;
+
146 um[iz][iy] += u;
+
147 vm[iz][iy] += v;
+
148 wm[iz][iy] += w;
+
149 pvm[iz][iy] += pv;
+
150 h2om[iz][iy] += h2o;
+
151 o3m[iz][iy] += o3;
+
152 lwcm[iz][iy] += lwc;
+
153 iwcm[iz][iy] += iwc;
+
154 ccm[iz][iy] += cc;
+
155 psm[iz][iy] += ps;
+
156 tsm[iz][iy] += ts;
+
157 zsm[iz][iy] += zs;
+
158 usm[iz][iy] += us;
+
159 vsm[iz][iy] += vs;
+
160 lsmm[iz][iy] += lsm;
+
161 sstm[iz][iy] += sst;
+
162 pblm[iz][iy] += pbl;
+
163 pctm[iz][iy] += pct;
+
164 pcbm[iz][iy] += pcb;
+
165 clm[iz][iy] += cl;
+
166 if (gsl_finite(plfc) && gsl_finite(pel) && cape >= ctl.conv_cape
+
167 && (ctl.conv_cin <= 0 || cin < ctl.conv_cin)) {
+
168 plclm[iz][iy] += plcl;
+
169 plfcm[iz][iy] += plfc;
+
170 pelm[iz][iy] += pel;
+
171 capem[iz][iy] += cape;
+
172 cinm[iz][iy] += cin;
+
173 npc[iz][iy]++;
+
174 }
+
175 if (gsl_finite(pt)) {
+
176 ptm[iz][iy] += pt;
+
177 ztm[iz][iy] += zt;
+
178 ttm[iz][iy] += tt;
+
179 h2otm[iz][iy] += h2ot;
+
180 npt[iz][iy]++;
+
181 }
+
182 o3cm[iz][iy] += o3c;
+
183 rhm[iz][iy] += RH(plev[iz], t, h2o);
+
184 rhicem[iz][iy] += RHICE(plev[iz], t, h2o);
+
185 tdewm[iz][iy] += TDEW(plev[iz], h2o);
+
186 ticem[iz][iy] += TICE(plev[iz], h2o);
+
187 hno3m[iz][iy] +=
+
188 clim_zm(&clim->hno3, met->time, lats[iy], plev[iz]);
+
189 tnatm[iz][iy] +=
+
190 nat_temperature(plev[iz], h2o,
+
191 clim_zm(&clim->hno3, met->time, lats[iy],
+
192 plev[iz]));
+
193 ohm[iz][iy] +=
+
194 clim_oh(&ctl, clim, met->time, met->lon[ix], lats[iy],
+
195 plev[iz]);
+
196 h2o2m[iz][iy]
+
197 += clim_zm(&clim->h2o2, met->time, lats[iy], plev[iz]);
+
198 ho2m[iz][iy]
+
199 += clim_zm(&clim->ho2, met->time, lats[iy], plev[iz]);
+
200 o1dm[iz][iy]
+
201 += clim_zm(&clim->o1d, met->time, lats[iy], plev[iz]);
+
202 np[iz][iy]++;
+
203 }
+
204 }
+
205
+
206 /* Create output file... */
+
207 LOG(1, "Write meteorological data file: %s", argv[2]);
+
208 if (!(out = fopen(argv[2], "w")))
+
209 ERRMSG("Cannot create file!");
+
210
+
211 /* Write header... */
+ +
213
+
214 /* Write data... */
+
215 for (iz = 0; iz < nz; iz++) {
+
216 fprintf(out, "\n");
+
217 for (iy = 0; iy < ny; iy++)
+
218 fprintf(out,
+
219 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
220 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
221 " %g %g %g %g %g %g %g %d %d %d\n",
+
222 timem[iz][iy] / np[iz][iy], Z(plev[iz]),
+
223 lonm[iz][iy] / np[iz][iy], lats[iy],
+
224 plev[iz], tm[iz][iy] / np[iz][iy], um[iz][iy] / np[iz][iy],
+
225 vm[iz][iy] / np[iz][iy], wm[iz][iy] / np[iz][iy],
+
226 h2om[iz][iy] / np[iz][iy], o3m[iz][iy] / np[iz][iy],
+
227 zm[iz][iy] / np[iz][iy], pvm[iz][iy] / np[iz][iy],
+
228 psm[iz][iy] / np[iz][iy], tsm[iz][iy] / np[iz][iy],
+
229 zsm[iz][iy] / np[iz][iy], usm[iz][iy] / np[iz][iy],
+
230 vsm[iz][iy] / np[iz][iy], lsmm[iz][iy] / np[iz][iy],
+
231 sstm[iz][iy] / np[iz][iy], ptm[iz][iy] / npt[iz][iy],
+
232 ztm[iz][iy] / npt[iz][iy], ttm[iz][iy] / npt[iz][iy],
+
233 h2otm[iz][iy] / npt[iz][iy], lwcm[iz][iy] / np[iz][iy],
+
234 iwcm[iz][iy] / np[iz][iy], ccm[iz][iy] / np[iz][iy],
+
235 clm[iz][iy] / np[iz][iy], pctm[iz][iy] / np[iz][iy],
+
236 pcbm[iz][iy] / np[iz][iy], plclm[iz][iy] / npc[iz][iy],
+
237 plfcm[iz][iy] / npc[iz][iy], pelm[iz][iy] / npc[iz][iy],
+
238 capem[iz][iy] / npc[iz][iy], cinm[iz][iy] / npc[iz][iy],
+
239 rhm[iz][iy] / np[iz][iy], rhicem[iz][iy] / np[iz][iy],
+
240 tdewm[iz][iy] / np[iz][iy], ticem[iz][iy] / np[iz][iy],
+
241 tnatm[iz][iy] / np[iz][iy], hno3m[iz][iy] / np[iz][iy],
+
242 ohm[iz][iy] / np[iz][iy], h2o2m[iz][iy] / np[iz][iy],
+
243 ho2m[iz][iy] / np[iz][iy], o1dm[iz][iy] / np[iz][iy],
+
244 pblm[iz][iy] / np[iz][iy],
+
245 np[iz][iy], npt[iz][iy], npc[iz][iy]);
+
246 }
+
247
+
248 /* Close file... */
+
249 fclose(out);
+
250
+
251 /* Free... */
+
252 free(clim);
+
253 free(met);
+
254
+
255 return EXIT_SUCCESS;
+
256}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define INTPOL_SPACE_ALL(p, lon, lat)
Spatial interpolation of all meteo data.
Definition: libtrac.h:344
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
int main(int argc, char *argv[])
Definition: met_zm.c:41
+
#define NY
Maximum number of latitudes.
Definition: met_zm.c:35
+
#define NZ
Maximum number of altitudes.
Definition: met_zm.c:32
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+
+ + + + diff --git a/doxygen/nav_f.png b/doxygen/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doxygen/nav_g.png b/doxygen/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/doxygen/search/all_0.html b/doxygen/search/all_0.html new file mode 100644 index 0000000000..bb9e364396 --- /dev/null +++ b/doxygen/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_0.js b/doxygen/search/all_0.js new file mode 100644 index 0000000000..077247c0dc --- /dev/null +++ b/doxygen/search/all_0.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['advect_0',['advect',['../structctl__t.html#a8eb0ca94791f79405c3b49da924f386d',1,'ctl_t']]], + ['alloc_1',['ALLOC',['../libtrac_8h.html#a9aee3e5daf3b1051597d21ab093adbd0',1,'libtrac.h']]], + ['array_5f2d_2',['ARRAY_2D',['../libtrac_8h.html#a56fa16148a574bac429287eb4612aa2e',1,'libtrac.h']]], + ['array_5f3d_3',['ARRAY_3D',['../libtrac_8h.html#a0a81bdec7708d9599d0dcfa7a41caa26',1,'libtrac.h']]], + ['arrhenius_4',['ARRHENIUS',['../libtrac_8h.html#ad6fd608dae29bc65e5c4ad1480f7b891',1,'libtrac.h']]], + ['atm_5fbasename_5',['atm_basename',['../structctl__t.html#a8b2706a512ce6a279091d8ff1b192346',1,'ctl_t']]], + ['atm_5fconv_2ec_6',['atm_conv.c',['../atm__conv_8c.html',1,'']]], + ['atm_5fdist_2ec_7',['atm_dist.c',['../atm__dist_8c.html',1,'']]], + ['atm_5fdt_5fout_8',['atm_dt_out',['../structctl__t.html#aad4b256a00136fe4181077c2b02b0f45',1,'ctl_t']]], + ['atm_5ffilter_9',['atm_filter',['../structctl__t.html#a9279f2a56adc9780721e00e35bed2b3d',1,'ctl_t']]], + ['atm_5fgpfile_10',['atm_gpfile',['../structctl__t.html#a06975fa14d8c7f7813bf83fa4166f819',1,'ctl_t']]], + ['atm_5finit_2ec_11',['atm_init.c',['../atm__init_8c.html',1,'']]], + ['atm_5fselect_2ec_12',['atm_select.c',['../atm__select_8c.html',1,'']]], + ['atm_5fsplit_2ec_13',['atm_split.c',['../atm__split_8c.html',1,'']]], + ['atm_5fstat_2ec_14',['atm_stat.c',['../atm__stat_8c.html',1,'']]], + ['atm_5fstride_15',['atm_stride',['../structctl__t.html#aa98efec197e5a7bf0abd5f30ba44de72',1,'ctl_t']]], + ['atm_5ft_16',['atm_t',['../structatm__t.html',1,'']]], + ['atm_5ftype_17',['atm_type',['../structctl__t.html#a2509f56c50085b3d0f47c495da91b248',1,'ctl_t']]], + ['atm_5ftype_5fout_18',['atm_type_out',['../structctl__t.html#a5d5c0f111d122cfcc4e3de57bc1731cd',1,'ctl_t']]], + ['avo_19',['AVO',['../libtrac_8h.html#a174754c04acfba9e1f66ba249e68643a',1,'libtrac.h']]] +]; diff --git a/doxygen/search/all_1.html b/doxygen/search/all_1.html new file mode 100644 index 0000000000..8989416f28 --- /dev/null +++ b/doxygen/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_1.js b/doxygen/search/all_1.js new file mode 100644 index 0000000000..a74cf6735c --- /dev/null +++ b/doxygen/search/all_1.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['balloon_0',['balloon',['../structctl__t.html#a1aee054abc8c3fbaa1f6828f78f4e2f5',1,'ctl_t']]], + ['bound_5fdps_1',['bound_dps',['../structctl__t.html#a9e31767a1a873f2829a00cb15c0ae421',1,'ctl_t']]], + ['bound_5fdzs_2',['bound_dzs',['../structctl__t.html#a0c09fef6dfe4daa19ad717cd1e1b77ec',1,'ctl_t']]], + ['bound_5flat0_3',['bound_lat0',['../structctl__t.html#a686563c65fdd2d03d15cfdddf294584c',1,'ctl_t']]], + ['bound_5flat1_4',['bound_lat1',['../structctl__t.html#a3488ff97025f12fbe161d85b09ddc33e',1,'ctl_t']]], + ['bound_5fmass_5',['bound_mass',['../structctl__t.html#a25a01ebb0fcff6040d0003b88b13cdec',1,'ctl_t']]], + ['bound_5fmass_5ftrend_6',['bound_mass_trend',['../structctl__t.html#a9feaa00a9e7de02f8bd661d735b8b280',1,'ctl_t']]], + ['bound_5fp0_7',['bound_p0',['../structctl__t.html#aa1419e1cd3c485e89a5166c7e1f19caf',1,'ctl_t']]], + ['bound_5fp1_8',['bound_p1',['../structctl__t.html#a44cbf78eb4bbb11036922bc40faa2b4b',1,'ctl_t']]], + ['bound_5fpbl_9',['bound_pbl',['../structctl__t.html#a3e924116d2599fb79a734a74da11e8a2',1,'ctl_t']]], + ['bound_5fvmr_10',['bound_vmr',['../structctl__t.html#a4f7014dad580e4e745c910187468807c',1,'ctl_t']]], + ['bound_5fvmr_5ftrend_11',['bound_vmr_trend',['../structctl__t.html#a7a4b2ae4a45234a74df45b5adbe513cd',1,'ctl_t']]], + ['bound_5fzetas_12',['bound_zetas',['../structctl__t.html#ae7b26fcc7af034afe6144631986213ea',1,'ctl_t']]], + ['buoyancy_5ffrequency_13',['buoyancy_frequency',['../libtrac_8c.html#ae6b1ba8f9877aeed2c68ae3109f1d234',1,'buoyancy_frequency(const double p0, const double t0, const double p1, const double t1): libtrac.c'],['../libtrac_8h.html#ae6b1ba8f9877aeed2c68ae3109f1d234',1,'buoyancy_frequency(const double p0, const double t0, const double p1, const double t1): libtrac.c']]] +]; diff --git a/doxygen/search/all_10.html b/doxygen/search/all_10.html new file mode 100644 index 0000000000..a7c1f9c308 --- /dev/null +++ b/doxygen/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_10.js b/doxygen/search/all_10.js new file mode 100644 index 0000000000..42ed264896 --- /dev/null +++ b/doxygen/search/all_10.js @@ -0,0 +1,94 @@ +var searchData= +[ + ['q_0',['q',['../structatm__t.html#aa1c8de5772120f4a283c9cedcbe43fb7',1,'atm_t']]], + ['qnt_5faoa_1',['qnt_aoa',['../structctl__t.html#a08aa70d2f116af5dfe779b6ecec4dd19',1,'ctl_t']]], + ['qnt_5fcape_2',['qnt_cape',['../structctl__t.html#a9fce7d27388ac2b2a5fd8a0702243891',1,'ctl_t']]], + ['qnt_5fcc_3',['qnt_cc',['../structctl__t.html#afc9fd7f2b1a29910d6c37c9cb3bcee0d',1,'ctl_t']]], + ['qnt_5fcccl2f2_4',['qnt_Cccl2f2',['../structctl__t.html#a066b3cab4ae3633d7f5a4cc178f8d655',1,'ctl_t']]], + ['qnt_5fcccl3f_5',['qnt_Cccl3f',['../structctl__t.html#a8a43ba4811191565b719506351b40515',1,'ctl_t']]], + ['qnt_5fcccl4_6',['qnt_Cccl4',['../structctl__t.html#a1ba53bf2909cfe859cdd8d3e6db31e9a',1,'ctl_t']]], + ['qnt_5fcco_7',['qnt_Cco',['../structctl__t.html#a63128061ebb75c105f1774fa894d91c9',1,'ctl_t']]], + ['qnt_5fch_8',['qnt_Ch',['../structctl__t.html#a7ef2d94a86e63af36c9022a55db08024',1,'ctl_t']]], + ['qnt_5fch2o_9',['qnt_Ch2o',['../structctl__t.html#a9baf6b24cc12d9b589576a173bed3b8b',1,'ctl_t']]], + ['qnt_5fch2o2_10',['qnt_Ch2o2',['../structctl__t.html#adaa906f8d83e26dde37b9242f567e329',1,'ctl_t']]], + ['qnt_5fcho2_11',['qnt_Cho2',['../structctl__t.html#a99d38b5d6024bb51436e6271202d8968',1,'ctl_t']]], + ['qnt_5fcin_12',['qnt_cin',['../structctl__t.html#abc63595c9161b9fd44ea2420514cb4cd',1,'ctl_t']]], + ['qnt_5fcl_13',['qnt_cl',['../structctl__t.html#a8dfbfb0242aca3ec0fa72564e8ceca6d',1,'ctl_t']]], + ['qnt_5fcn2o_14',['qnt_Cn2o',['../structctl__t.html#a8a3a8cc8108f6dce4fcf6b82ceb97d22',1,'ctl_t']]], + ['qnt_5fco1d_15',['qnt_Co1d',['../structctl__t.html#a18e4fa9a68e03ee2aa1be7e2feb6130f',1,'ctl_t']]], + ['qnt_5fco3_16',['qnt_Co3',['../structctl__t.html#aa1dc44e429c2e407559577b86c9fc170',1,'ctl_t']]], + ['qnt_5fco3p_17',['qnt_Co3p',['../structctl__t.html#ac04dce247fe52429fca4b3ddd32c4ed1',1,'ctl_t']]], + ['qnt_5fcoh_18',['qnt_Coh',['../structctl__t.html#a028e098ce1133fc1a3993ea74d330330',1,'ctl_t']]], + ['qnt_5fcsf6_19',['qnt_Csf6',['../structctl__t.html#a9ad1be4d2d7d089ba9311f6c6b17baa2',1,'ctl_t']]], + ['qnt_5fcx_20',['qnt_Cx',['../structctl__t.html#ae56fa1a240420b87bd2b7a0d040e6d11',1,'ctl_t']]], + ['qnt_5fens_21',['qnt_ens',['../structctl__t.html#ace61e592378505a9011133dc02d249a7',1,'ctl_t']]], + ['qnt_5fformat_22',['qnt_format',['../structctl__t.html#a0811163b931ce18a07fbad57ea280a85',1,'ctl_t']]], + ['qnt_5fh2o_23',['qnt_h2o',['../structctl__t.html#a82e92a79bb65a2febe234d63f86fc91b',1,'ctl_t']]], + ['qnt_5fh2o2_24',['qnt_h2o2',['../structctl__t.html#a200b52904d3a14e04984a130528be5a0',1,'ctl_t']]], + ['qnt_5fh2ot_25',['qnt_h2ot',['../structctl__t.html#a6755ea47ddbf456c114fe69d85e0424d',1,'ctl_t']]], + ['qnt_5fhno3_26',['qnt_hno3',['../structctl__t.html#a65efacd05321fc6c808732e77dc87c84',1,'ctl_t']]], + ['qnt_5fho2_27',['qnt_ho2',['../structctl__t.html#a554a6ad70e586d7aa1ac342cadb8c41e',1,'ctl_t']]], + ['qnt_5fidx_28',['qnt_idx',['../structctl__t.html#aeac7515d696805592f6ae25bf38b7ada',1,'ctl_t']]], + ['qnt_5fiwc_29',['qnt_iwc',['../structctl__t.html#a18974d6fa7e5e9e14a56338d638e730a',1,'ctl_t']]], + ['qnt_5flapse_30',['qnt_lapse',['../structctl__t.html#a98ccf2cdccb18924d50cdcda383580ba',1,'ctl_t']]], + ['qnt_5flongname_31',['qnt_longname',['../structctl__t.html#aef44654a72cbb96ba47c6284bd5f2316',1,'ctl_t']]], + ['qnt_5flsm_32',['qnt_lsm',['../structctl__t.html#a3256dff5d8ff24754dfc04af56ae49d2',1,'ctl_t']]], + ['qnt_5flwc_33',['qnt_lwc',['../structctl__t.html#a22b2ba380a3c30089e5978c4a03311de',1,'ctl_t']]], + ['qnt_5fm_34',['qnt_m',['../structctl__t.html#a084c47554ce3d8b615dfabc9abbb26d1',1,'ctl_t']]], + ['qnt_5fmloss_5fdecay_35',['qnt_mloss_decay',['../structctl__t.html#a5bb49c284e2579630f1eae77a769aba8',1,'ctl_t']]], + ['qnt_5fmloss_5fdry_36',['qnt_mloss_dry',['../structctl__t.html#a7900d5f3a8de6333a91c3794599a8e46',1,'ctl_t']]], + ['qnt_5fmloss_5fh2o2_37',['qnt_mloss_h2o2',['../structctl__t.html#ad1397317442e511e037568026f964bf0',1,'ctl_t']]], + ['qnt_5fmloss_5foh_38',['qnt_mloss_oh',['../structctl__t.html#ad9a389376b1aa37b73df1b45d1ac214d',1,'ctl_t']]], + ['qnt_5fmloss_5fwet_39',['qnt_mloss_wet',['../structctl__t.html#a402ce921786cefb5ce431bda7dbf7f3c',1,'ctl_t']]], + ['qnt_5fname_40',['qnt_name',['../structctl__t.html#a8a96f7d7b47b13cf7359afb9f513f690',1,'ctl_t']]], + ['qnt_5fo1d_41',['qnt_o1d',['../structctl__t.html#a2b485dd5916e7c0b346190afc5d2b437',1,'ctl_t']]], + ['qnt_5fo3_42',['qnt_o3',['../structctl__t.html#a013bc90afda842d7312647bfd0364232',1,'ctl_t']]], + ['qnt_5fo3c_43',['qnt_o3c',['../structctl__t.html#aa13722c873f7ec0c828c320546940528',1,'ctl_t']]], + ['qnt_5foh_44',['qnt_oh',['../structctl__t.html#a7c05d49d4f806a0f94c86ef932478cff',1,'ctl_t']]], + ['qnt_5fp_45',['qnt_p',['../structctl__t.html#a0545623fc0f39bea920d00bfc88c4d11',1,'ctl_t']]], + ['qnt_5fpbl_46',['qnt_pbl',['../structctl__t.html#a39d8a732f074ea0275ecb84832f60d59',1,'ctl_t']]], + ['qnt_5fpcb_47',['qnt_pcb',['../structctl__t.html#a0bdd43744dd2b92d5aa40627d028d42e',1,'ctl_t']]], + ['qnt_5fpct_48',['qnt_pct',['../structctl__t.html#ab7fd7495b74e0656e5a4c0a1e814899c',1,'ctl_t']]], + ['qnt_5fpel_49',['qnt_pel',['../structctl__t.html#a0350a3e6ada50d40416094ba8d079e4e',1,'ctl_t']]], + ['qnt_5fplcl_50',['qnt_plcl',['../structctl__t.html#afcd6307f3bcbd275ba14b572c6337dfa',1,'ctl_t']]], + ['qnt_5fplfc_51',['qnt_plfc',['../structctl__t.html#a274f366df1c6e8dff7b16fc4cf2e1c0a',1,'ctl_t']]], + ['qnt_5fps_52',['qnt_ps',['../structctl__t.html#a4217d6043a9429aa2c47517680d44453',1,'ctl_t']]], + ['qnt_5fpsat_53',['qnt_psat',['../structctl__t.html#ab97b0cbae44a95ee03f10236380964ab',1,'ctl_t']]], + ['qnt_5fpsice_54',['qnt_psice',['../structctl__t.html#a3d8b0a7cd91c255170233ef509a24a84',1,'ctl_t']]], + ['qnt_5fpt_55',['qnt_pt',['../structctl__t.html#a8cd31f8b17d847f8012e472c89dbe164',1,'ctl_t']]], + ['qnt_5fpv_56',['qnt_pv',['../structctl__t.html#ad7e229a971d4aafe08bb607b7189b09f',1,'ctl_t']]], + ['qnt_5fpw_57',['qnt_pw',['../structctl__t.html#a19e02cd4b17e850b32bfd5d68d73d5a0',1,'ctl_t']]], + ['qnt_5frh_58',['qnt_rh',['../structctl__t.html#a682a2a90d1df78dd2a6cfb4fa77773cb',1,'ctl_t']]], + ['qnt_5frhice_59',['qnt_rhice',['../structctl__t.html#a8462c6531b8eba2bf01230b01a4b8a04',1,'ctl_t']]], + ['qnt_5frho_60',['qnt_rho',['../structctl__t.html#a850b57e663a4a8cde2952ecdad2c905f',1,'ctl_t']]], + ['qnt_5frhop_61',['qnt_rhop',['../structctl__t.html#a08ad320f9953658f5346a123ba03ad86',1,'ctl_t']]], + ['qnt_5frp_62',['qnt_rp',['../structctl__t.html#a54a37ca01ed5643d41ee63768e5ad941',1,'ctl_t']]], + ['qnt_5fsh_63',['qnt_sh',['../structctl__t.html#ae251e537db20eb4e1696488c89245d1b',1,'ctl_t']]], + ['qnt_5fsst_64',['qnt_sst',['../structctl__t.html#adb52d9a2f17944de5ed1b245ae0eb6b6',1,'ctl_t']]], + ['qnt_5fstat_65',['qnt_stat',['../structctl__t.html#a508aa1f5e4ba701e86557f114999b314',1,'ctl_t']]], + ['qnt_5ft_66',['qnt_t',['../structctl__t.html#a91a6844a93bff2ff957aaf8bf31c1f3b',1,'ctl_t']]], + ['qnt_5ftdew_67',['qnt_tdew',['../structctl__t.html#affb8cb3c42f1f312990d97d7d49617e5',1,'ctl_t']]], + ['qnt_5ftheta_68',['qnt_theta',['../structctl__t.html#a33a185ae0cb5badcd525d961875d3b2c',1,'ctl_t']]], + ['qnt_5ftice_69',['qnt_tice',['../structctl__t.html#a7606f8b8ba4df727e0c0c9386f527119',1,'ctl_t']]], + ['qnt_5ftnat_70',['qnt_tnat',['../structctl__t.html#a742e33a97813e9a50cb0e17a680e815a',1,'ctl_t']]], + ['qnt_5fts_71',['qnt_ts',['../structctl__t.html#a262aa775e7fe82b123a62633d1c3d8b3',1,'ctl_t']]], + ['qnt_5ftsts_72',['qnt_tsts',['../structctl__t.html#aa29a4ab3048a143622094d93886aa0db',1,'ctl_t']]], + ['qnt_5ftt_73',['qnt_tt',['../structctl__t.html#acc25e4fc819f75115dc6ae202437022d',1,'ctl_t']]], + ['qnt_5ftvirt_74',['qnt_tvirt',['../structctl__t.html#a2d0be917be3aba29baf2ed7f626bfa83',1,'ctl_t']]], + ['qnt_5fu_75',['qnt_u',['../structctl__t.html#a0f4b7179eb39bf6a1679f46e8826e1de',1,'ctl_t']]], + ['qnt_5funit_76',['qnt_unit',['../structctl__t.html#a7dadf2efadc0802bd2c77aa8c39908dc',1,'ctl_t']]], + ['qnt_5fus_77',['qnt_us',['../structctl__t.html#a88eb2c811b2a0c5482a020e41d26c270',1,'ctl_t']]], + ['qnt_5fv_78',['qnt_v',['../structctl__t.html#a78f8fa92da366751d4fe71f85661f9f3',1,'ctl_t']]], + ['qnt_5fvh_79',['qnt_vh',['../structctl__t.html#a20196705d4eebddaeff4005ad88a20d2',1,'ctl_t']]], + ['qnt_5fvmr_80',['qnt_vmr',['../structctl__t.html#a323dd04f9b74b6bef349e3a91b649568',1,'ctl_t']]], + ['qnt_5fvs_81',['qnt_vs',['../structctl__t.html#a62b169930644e817a7275df51d40b51c',1,'ctl_t']]], + ['qnt_5fvz_82',['qnt_vz',['../structctl__t.html#a55330859df8034626ba300905e35bb04',1,'ctl_t']]], + ['qnt_5fw_83',['qnt_w',['../structctl__t.html#a4eff0a4676fbb4bb8a4b832900e16e48',1,'ctl_t']]], + ['qnt_5fzeta_84',['qnt_zeta',['../structctl__t.html#a9382d9e9b29e10eeee582e1e10ff365a',1,'ctl_t']]], + ['qnt_5fzeta_5fd_85',['qnt_zeta_d',['../structctl__t.html#a6dcfd67edca4a35aeca78f6bfbd04487',1,'ctl_t']]], + ['qnt_5fzg_86',['qnt_zg',['../structctl__t.html#a7851aa93977a71a120361d75034a1808',1,'ctl_t']]], + ['qnt_5fzs_87',['qnt_zs',['../structctl__t.html#a458f7cdd42fb5e2d9531e7d48038b730',1,'ctl_t']]], + ['qnt_5fzt_88',['qnt_zt',['../structctl__t.html#afb9a716d40713cd9550a4a2d38389da0',1,'ctl_t']]], + ['quicksort_89',['quicksort',['../libtrac_8c.html#a2d35c49f4a1313a00a0b6da2f9bb877c',1,'quicksort(double arr[], int brr[], const int low, const int high): libtrac.c'],['../libtrac_8h.html#a2d35c49f4a1313a00a0b6da2f9bb877c',1,'quicksort(double arr[], int brr[], const int low, const int high): libtrac.c']]], + ['quicksort_5fpartition_90',['quicksort_partition',['../libtrac_8c.html#acae80df3d9e2a42d76476a8d223119a4',1,'quicksort_partition(double arr[], int brr[], const int low, const int high): libtrac.c'],['../libtrac_8h.html#acae80df3d9e2a42d76476a8d223119a4',1,'quicksort_partition(double arr[], int brr[], const int low, const int high): libtrac.c']]] +]; diff --git a/doxygen/search/all_11.html b/doxygen/search/all_11.html new file mode 100644 index 0000000000..8f86146b8c --- /dev/null +++ b/doxygen/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_11.js b/doxygen/search/all_11.js new file mode 100644 index 0000000000..87c981536c --- /dev/null +++ b/doxygen/search/all_11.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['ra_0',['RA',['../libtrac_8h.html#a30a3f049b718d26a32f16ed72716d588',1,'libtrac.h']]], + ['re_1',['RE',['../libtrac_8h.html#a0600e3f227b6e9a3ae26f4d6e2a0581e',1,'libtrac.h']]], + ['read_5fatm_2',['read_atm',['../libtrac_8c.html#a10ab9cbb20f7bacc7bad573191f7cabb',1,'read_atm(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#a10ab9cbb20f7bacc7bad573191f7cabb',1,'read_atm(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fasc_3',['read_atm_asc',['../libtrac_8h.html#a324e0e62532d05f6711ce43bfebfa897',1,'read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8c.html#a324e0e62532d05f6711ce43bfebfa897',1,'read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fbin_4',['read_atm_bin',['../libtrac_8c.html#a69ed50f3a7f993df25260736697ae960',1,'read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#a69ed50f3a7f993df25260736697ae960',1,'read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fclams_5',['read_atm_clams',['../libtrac_8c.html#a66f35b5e3cd571f05c2430ebc9ba62a0',1,'read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#a66f35b5e3cd571f05c2430ebc9ba62a0',1,'read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fnc_6',['read_atm_nc',['../libtrac_8c.html#a099fcc594e7bb8ce70bb55be9cccb69e',1,'read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#a099fcc594e7bb8ce70bb55be9cccb69e',1,'read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fclim_7',['read_clim',['../libtrac_8h.html#a28828a87a5a435af28435a7976e499e4',1,'read_clim(ctl_t *ctl, clim_t *clim): libtrac.c'],['../libtrac_8c.html#a28828a87a5a435af28435a7976e499e4',1,'read_clim(ctl_t *ctl, clim_t *clim): libtrac.c']]], + ['read_5fclim_5fphoto_8',['read_clim_photo',['../libtrac_8c.html#a898220b4fa13f36f4d91453fbe7d7ee5',1,'read_clim_photo(char *filename, clim_photo_t *photo): libtrac.c'],['../libtrac_8h.html#a898220b4fa13f36f4d91453fbe7d7ee5',1,'read_clim_photo(char *filename, clim_photo_t *photo): libtrac.c']]], + ['read_5fclim_5fts_9',['read_clim_ts',['../libtrac_8c.html#a4cede5e5a40493bb4b55605a64cbf567',1,'read_clim_ts(char *filename, clim_ts_t *ts): libtrac.c'],['../libtrac_8h.html#a4cede5e5a40493bb4b55605a64cbf567',1,'read_clim_ts(char *filename, clim_ts_t *ts): libtrac.c']]], + ['read_5fclim_5fzm_10',['read_clim_zm',['../libtrac_8c.html#a0a2bbd978da0bcd524e44647ff349a73',1,'read_clim_zm(char *filename, char *varname, clim_zm_t *zm): libtrac.c'],['../libtrac_8h.html#a0a2bbd978da0bcd524e44647ff349a73',1,'read_clim_zm(char *filename, char *varname, clim_zm_t *zm): libtrac.c']]], + ['read_5fctl_11',['read_ctl',['../libtrac_8c.html#ab8054000249eb04a88fc06bba77dd573',1,'read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl): libtrac.c'],['../libtrac_8h.html#ab8054000249eb04a88fc06bba77dd573',1,'read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl): libtrac.c']]], + ['read_5fkernel_12',['read_kernel',['../libtrac_8c.html#a7a3277ab872141360b876c25b5643ba6',1,'read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk): libtrac.c'],['../libtrac_8h.html#a7a3277ab872141360b876c25b5643ba6',1,'read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk): libtrac.c']]], + ['read_5fmet_13',['read_met',['../libtrac_8c.html#adaf12f02099c61792e04447367f1c37d',1,'read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c'],['../libtrac_8h.html#adaf12f02099c61792e04447367f1c37d',1,'read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c']]], + ['read_5fmet_5fbin_5f2d_14',['read_met_bin_2d',['../libtrac_8c.html#a029c77074da450079bdb1ce77964159b',1,'read_met_bin_2d(FILE *in, met_t *met, float var[EX][EY], char *varname): libtrac.c'],['../libtrac_8h.html#ab9f57aa8f23c823ec63246ca950dbf0f',1,'read_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname): libtrac.c']]], + ['read_5fmet_5fbin_5f3d_15',['read_met_bin_3d',['../libtrac_8h.html#a1cafe18e5c051e7107cb918a1dbd0db8',1,'read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname): libtrac.c'],['../libtrac_8c.html#a1cafe18e5c051e7107cb918a1dbd0db8',1,'read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname): libtrac.c']]], + ['read_5fmet_5fcape_16',['read_met_cape',['../libtrac_8c.html#ae8d8e4969b972ebf2bfea8ad774b9822',1,'read_met_cape(clim_t *clim, met_t *met): libtrac.c'],['../libtrac_8h.html#ae8d8e4969b972ebf2bfea8ad774b9822',1,'read_met_cape(clim_t *clim, met_t *met): libtrac.c']]], + ['read_5fmet_5fcloud_17',['read_met_cloud',['../libtrac_8c.html#a99a02172665504fa93b85dd442c850db',1,'read_met_cloud(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a99a02172665504fa93b85dd442c850db',1,'read_met_cloud(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fdetrend_18',['read_met_detrend',['../libtrac_8c.html#a95998555c31d67b672339a2332f7ee1c',1,'read_met_detrend(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a95998555c31d67b672339a2332f7ee1c',1,'read_met_detrend(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fextrapolate_19',['read_met_extrapolate',['../libtrac_8c.html#a089d9c0099e3fc6944c2a48667362ca0',1,'read_met_extrapolate(met_t *met): libtrac.c'],['../libtrac_8h.html#a089d9c0099e3fc6944c2a48667362ca0',1,'read_met_extrapolate(met_t *met): libtrac.c']]], + ['read_5fmet_5fgeopot_20',['read_met_geopot',['../libtrac_8c.html#aeaaa3090b6f7f9f471fbd24392304341',1,'read_met_geopot(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#aeaaa3090b6f7f9f471fbd24392304341',1,'read_met_geopot(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fgrid_21',['read_met_grid',['../libtrac_8c.html#ad3b59a5ce89df2ef37437ed08f6ef77b',1,'read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#ad3b59a5ce89df2ef37437ed08f6ef77b',1,'read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5flevels_22',['read_met_levels',['../libtrac_8c.html#a15081510cdc536f13a7179118ef21687',1,'read_met_levels(int ncid, ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a15081510cdc536f13a7179118ef21687',1,'read_met_levels(int ncid, ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fml2pl_23',['read_met_ml2pl',['../libtrac_8h.html#a3cdb424353dfdea020de7512894ef08f',1,'read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP]): libtrac.c'],['../libtrac_8c.html#a3cdb424353dfdea020de7512894ef08f',1,'read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP]): libtrac.c']]], + ['read_5fmet_5fmonotonize_24',['read_met_monotonize',['../libtrac_8c.html#a6e7c69ecd95581d555b8a6359f78a4ca',1,'read_met_monotonize(met_t *met): libtrac.c'],['../libtrac_8h.html#a6e7c69ecd95581d555b8a6359f78a4ca',1,'read_met_monotonize(met_t *met): libtrac.c']]], + ['read_5fmet_5fnc_5f2d_25',['read_met_nc_2d',['../libtrac_8c.html#ac1ca5ed33a24caef6d62d5e283052438',1,'read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init): libtrac.c'],['../libtrac_8h.html#ac1ca5ed33a24caef6d62d5e283052438',1,'read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init): libtrac.c']]], + ['read_5fmet_5fnc_5f3d_26',['read_met_nc_3d',['../libtrac_8c.html#a1dd9f12ef11ed0a54d9e4337756e5da5',1,'read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init): libtrac.c'],['../libtrac_8h.html#a1dd9f12ef11ed0a54d9e4337756e5da5',1,'read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init): libtrac.c']]], + ['read_5fmet_5fozone_27',['read_met_ozone',['../libtrac_8c.html#a9ee63e8a6c82ac0dc569255455a50da2',1,'read_met_ozone(met_t *met): libtrac.c'],['../libtrac_8h.html#a9ee63e8a6c82ac0dc569255455a50da2',1,'read_met_ozone(met_t *met): libtrac.c']]], + ['read_5fmet_5fpbl_28',['read_met_pbl',['../libtrac_8c.html#a5ea707d2282eb7750fd4e9b4de10c1e0',1,'read_met_pbl(met_t *met): libtrac.c'],['../libtrac_8h.html#a5ea707d2282eb7750fd4e9b4de10c1e0',1,'read_met_pbl(met_t *met): libtrac.c']]], + ['read_5fmet_5fperiodic_29',['read_met_periodic',['../libtrac_8c.html#a38f91765df8eb0a66fb3a6408dca0600',1,'read_met_periodic(met_t *met): libtrac.c'],['../libtrac_8h.html#a38f91765df8eb0a66fb3a6408dca0600',1,'read_met_periodic(met_t *met): libtrac.c']]], + ['read_5fmet_5fpv_30',['read_met_pv',['../libtrac_8c.html#ac2c90884cb02bf90f095ff36f41e020a',1,'read_met_pv(met_t *met): libtrac.c'],['../libtrac_8h.html#ac2c90884cb02bf90f095ff36f41e020a',1,'read_met_pv(met_t *met): libtrac.c']]], + ['read_5fmet_5fsample_31',['read_met_sample',['../libtrac_8c.html#a6a49f49a3a974cda1f9b0ff261d34c81',1,'read_met_sample(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a6a49f49a3a974cda1f9b0ff261d34c81',1,'read_met_sample(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fsurface_32',['read_met_surface',['../libtrac_8c.html#ab3e201b153aa01202bb286d650ef07c5',1,'read_met_surface(int ncid, met_t *met, ctl_t *ctl): libtrac.c'],['../libtrac_8h.html#ab3e201b153aa01202bb286d650ef07c5',1,'read_met_surface(int ncid, met_t *met, ctl_t *ctl): libtrac.c']]], + ['read_5fmet_5ftropo_33',['read_met_tropo',['../libtrac_8c.html#a66ef5f17dd5cbc26a4a456f7a0d6205c',1,'read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c'],['../libtrac_8h.html#a66ef5f17dd5cbc26a4a456f7a0d6205c',1,'read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c']]], + ['read_5fmode_34',['read_mode',['../structctl__t.html#a797dc709951f1405daec11d5ed11ea40',1,'ctl_t']]], + ['read_5fobs_35',['read_obs',['../libtrac_8c.html#a8031d82ad41705d1a3662e25e87a3dff',1,'read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs): libtrac.c'],['../libtrac_8h.html#a8031d82ad41705d1a3662e25e87a3dff',1,'read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs): libtrac.c']]], + ['reflect_36',['reflect',['../structctl__t.html#a918275547003c50ad152b9d01fae6c8c',1,'ctl_t']]], + ['rh_37',['RH',['../libtrac_8h.html#ab72fd70a37f29f2192b751999b6c7cc2',1,'libtrac.h']]], + ['rhice_38',['RHICE',['../libtrac_8h.html#a9431567784929c9e462e16f393e04088',1,'libtrac.h']]], + ['rho_39',['RHO',['../libtrac_8h.html#ae088e183d18a16fd6ab469d48ce3f06a',1,'libtrac.h']]], + ['ri_40',['RI',['../libtrac_8h.html#a7e71def3baefc10ec36f1dd48da4050e',1,'libtrac.h']]], + ['roeth_5fphotol_41',['ROETH_PHOTOL',['../libtrac_8h.html#ab1f483c5a7b3474b849093de8cab4f5f',1,'libtrac.h']]] +]; diff --git a/doxygen/search/all_12.html b/doxygen/search/all_12.html new file mode 100644 index 0000000000..90b128ff70 --- /dev/null +++ b/doxygen/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_12.js b/doxygen/search/all_12.js new file mode 100644 index 0000000000..e88e8dc26d --- /dev/null +++ b/doxygen/search/all_12.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['sample_5fbasename_0',['sample_basename',['../structctl__t.html#aa974f483b6ccf931730d2d929eee2b51',1,'ctl_t']]], + ['sample_5fdx_1',['sample_dx',['../structctl__t.html#af5696aca68db24fedc7bd265d4eb6d52',1,'ctl_t']]], + ['sample_5fdz_2',['sample_dz',['../structctl__t.html#a857fdeffae577ddb41500ef0c875020e',1,'ctl_t']]], + ['sample_5fkernel_3',['sample_kernel',['../structctl__t.html#a2c08850b82591f935ab0c498217b3d65',1,'ctl_t']]], + ['sample_5fobsfile_4',['sample_obsfile',['../structctl__t.html#a64cde624042ea4b8d6b841660ff28546',1,'ctl_t']]], + ['scan_5fctl_5',['scan_ctl',['../libtrac_8c.html#ad42c44913b360d00d45282d96dad493b',1,'scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value): libtrac.c'],['../libtrac_8h.html#ad42c44913b360d00d45282d96dad493b',1,'scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value): libtrac.c']]], + ['sedi_6',['sedi',['../libtrac_8h.html#a1b580107362b559d90f6766d340cc370',1,'sedi(const double p, const double T, const double rp, const double rhop): libtrac.c'],['../libtrac_8c.html#a1b580107362b559d90f6766d340cc370',1,'sedi(const double p, const double T, const double rp, const double rhop): libtrac.c']]], + ['sedi_2ec_7',['sedi.c',['../sedi_8c.html',1,'']]], + ['select_5ftimer_8',['SELECT_TIMER',['../libtrac_8h.html#ab479249c111a29cf2c6366ce221cb0a0',1,'libtrac.h']]], + ['set_5fatm_9',['SET_ATM',['../libtrac_8h.html#a9c741a27b379cebf498901dc7d271296',1,'libtrac.h']]], + ['set_5fqnt_10',['SET_QNT',['../libtrac_8h.html#a83e28faf41ab5f04f2f81ea7008565ea',1,'libtrac.h']]], + ['sf6_11',['sf6',['../structclim__t.html#a787e837b08fea0fce0c6fe04140fb393',1,'clim_t']]], + ['sh_12',['SH',['../libtrac_8h.html#a47b5bc0bd14e22c0329d967e3c6657bd',1,'libtrac.h']]], + ['sort_5fdt_13',['sort_dt',['../structctl__t.html#a126d9eac2687f4aac95ab17fff14dd07',1,'ctl_t']]], + ['species_14',['species',['../structctl__t.html#a20f21cdf4fea1cfc948fc1bcc1f0a520',1,'ctl_t']]], + ['spline_15',['spline',['../libtrac_8c.html#a62786d005ed312f3c9ba2fac7cd544fc',1,'spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method): libtrac.c'],['../libtrac_8h.html#a62786d005ed312f3c9ba2fac7cd544fc',1,'spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method): libtrac.c']]], + ['sqr_16',['SQR',['../libtrac_8h.html#aa7866fa5e4e0ee9b034e9dab6599a9cc',1,'libtrac.h']]], + ['sst_17',['sst',['../structmet__t.html#a04c8115782b3dc6697111fdeb7c8f860',1,'met_t']]], + ['start_5ftimers_18',['START_TIMERS',['../libtrac_8h.html#aa8d58edbfeebbe667aafb0bb336cb9f9',1,'libtrac.h']]], + ['stat_5fbasename_19',['stat_basename',['../structctl__t.html#af784e18ace4cd191ae100a7df4955b6b',1,'ctl_t']]], + ['stat_5flat_20',['stat_lat',['../structctl__t.html#a995505c06bd35ecba593f807c1eda591',1,'ctl_t']]], + ['stat_5flon_21',['stat_lon',['../structctl__t.html#a0fafec241b4112fa64cb69fe09403ea8',1,'ctl_t']]], + ['stat_5fr_22',['stat_r',['../structctl__t.html#a149be614c5eafb380c3c9f3ad6599971',1,'ctl_t']]], + ['stat_5ft0_23',['stat_t0',['../structctl__t.html#a5721f8afc611b607db92678bb063f42d',1,'ctl_t']]], + ['stat_5ft1_24',['stat_t1',['../structctl__t.html#a370c0a527e721ea64cd67685abd7bc42',1,'ctl_t']]], + ['stddev_25',['stddev',['../libtrac_8c.html#a87088b5ccf95f03d986f1bdd570b5b2f',1,'stddev(const float *data, const int n): libtrac.c'],['../libtrac_8h.html#a87088b5ccf95f03d986f1bdd570b5b2f',1,'stddev(const float *data, const int n): libtrac.c']]], + ['stop_5ftimers_26',['STOP_TIMERS',['../libtrac_8h.html#adb7e367d2c732d58732d42f72bab25fa',1,'libtrac.h']]], + ['swap_27',['SWAP',['../libtrac_8h.html#addce2bf4f1107168ab1a7564756aa155',1,'libtrac.h']]], + ['sza_28',['sza',['../structclim__photo__t.html#a0954705edbe1ca70559f1adeb231a685',1,'clim_photo_t']]], + ['sza_5fcalc_29',['sza_calc',['../libtrac_8c.html#ab0bfcf61833d71fb831d4faae03ce709',1,'sza_calc(const double sec, const double lon, const double lat): libtrac.c'],['../libtrac_8h.html#ab0bfcf61833d71fb831d4faae03ce709',1,'sza_calc(const double sec, const double lon, const double lat): libtrac.c']]] +]; diff --git a/doxygen/search/all_13.html b/doxygen/search/all_13.html new file mode 100644 index 0000000000..272d129d71 --- /dev/null +++ b/doxygen/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_13.js b/doxygen/search/all_13.js new file mode 100644 index 0000000000..564bcc52e8 --- /dev/null +++ b/doxygen/search/all_13.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['t_0',['t',['../structmet__t.html#a60fe66c30f0f0b5abdb46f220e3137cf',1,'met_t']]], + ['t0_1',['T0',['../libtrac_8h.html#ad41b89d4eb6d63a0def5e5fd2a5ab326',1,'libtrac.h']]], + ['t_5fstart_2',['t_start',['../structctl__t.html#aee3354b4dacf5d89944ae0b7faaa12c6',1,'ctl_t']]], + ['t_5fstop_3',['t_stop',['../structctl__t.html#a649752813806c995ee09923a44d0e974',1,'ctl_t']]], + ['tdec_5fstrat_4',['tdec_strat',['../structctl__t.html#a86977d0f97ee8db6974efc896822a7db',1,'ctl_t']]], + ['tdec_5ftrop_5',['tdec_trop',['../structctl__t.html#af276258494c92c24ab0de0b54759e9a9',1,'ctl_t']]], + ['tdew_6',['TDEW',['../libtrac_8h.html#accf0b870a4ce9e19153c59f88898543a',1,'libtrac.h']]], + ['theta_7',['THETA',['../libtrac_8h.html#a7d6c988afa363960f9cb5f3b589d2ae4',1,'libtrac.h']]], + ['thetavirt_8',['THETAVIRT',['../libtrac_8h.html#a8cbdab681e71d411200fb104480f4862',1,'libtrac.h']]], + ['thrustsortwrapper_9',['thrustSortWrapper',['../libtrac_8h.html#acc094ec0cb892f3f3f973710811696b2',1,'libtrac.h']]], + ['tice_10',['TICE',['../libtrac_8h.html#a879f63fc7d15755d06ff79084410b6c9',1,'libtrac.h']]], + ['time_11',['time',['../structatm__t.html#a05da6b99657d420d7bf4b37a392b048c',1,'atm_t::time()'],['../structclim__ts__t.html#a213272025e3c95dfe779d2e8abf0bcf2',1,'clim_ts_t::time()'],['../structclim__zm__t.html#a06e634b21e38187593b011c715afa57a',1,'clim_zm_t::time()'],['../structmet__t.html#acf9d509f67dbc7ad8119d40a2757285f',1,'met_t::time()']]], + ['time2jsec_12',['time2jsec',['../libtrac_8c.html#a578e7ebaa62304182de8fe7ddf144b8f',1,'time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec): libtrac.c'],['../libtrac_8h.html#a578e7ebaa62304182de8fe7ddf144b8f',1,'time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec): libtrac.c']]], + ['time2jsec_2ec_13',['time2jsec.c',['../time2jsec_8c.html',1,'']]], + ['time_5ffrom_5ffilename_14',['time_from_filename',['../libtrac_8c.html#a98e813ec34f6121b5fdd8652d29b10dc',1,'time_from_filename(const char *filename, int offset): libtrac.c'],['../libtrac_8h.html#a98e813ec34f6121b5fdd8652d29b10dc',1,'time_from_filename(const char *filename, int offset): libtrac.c']]], + ['timer_15',['timer',['../libtrac_8c.html#a15d51008ea7a5446b5a532dc6cfaee2b',1,'timer(const char *name, const char *group, int output): libtrac.c'],['../libtrac_8h.html#a15d51008ea7a5446b5a532dc6cfaee2b',1,'timer(const char *name, const char *group, int output): libtrac.c']]], + ['tnat_2ec_16',['tnat.c',['../tnat_8c.html',1,'']]], + ['tok_17',['TOK',['../libtrac_8h.html#a8b61d1304377b77925b2802459ddae98',1,'libtrac.h']]], + ['trac_2ec_18',['trac.c',['../trac_8c.html',1,'']]], + ['tracer_5fchem_19',['tracer_chem',['../structctl__t.html#a7144e94dd5ef6f75941dd35a82eac9bd',1,'ctl_t']]], + ['tropo_20',['tropo',['../structclim__t.html#ad357829e5b267a357fce1a27518e271f',1,'clim_t']]], + ['tropo_2ec_21',['tropo.c',['../tropo_8c.html',1,'']]], + ['tropo_5flat_22',['tropo_lat',['../structclim__t.html#aaaee23fbfbb65c1eb77daad5a003defa',1,'clim_t']]], + ['tropo_5fnlat_23',['tropo_nlat',['../structclim__t.html#abe42300dd939b2409b3dbf37550e58f6',1,'clim_t']]], + ['tropo_5fntime_24',['tropo_ntime',['../structclim__t.html#a71b9c5664f017ee5f36db4aae204328a',1,'clim_t']]], + ['tropo_5fsample_2ec_25',['tropo_sample.c',['../tropo__sample_8c.html',1,'']]], + ['tropo_5ftime_26',['tropo_time',['../structclim__t.html#ae2845f40329df2cf90838d1684617ada',1,'clim_t']]], + ['tropo_5fweight_27',['tropo_weight',['../libtrac_8h.html#ae9583382a3025752eaaf56a1fcc3380f',1,'tropo_weight(const clim_t *clim, const double t, const double lat, const double p): libtrac.c'],['../libtrac_8c.html#ae9583382a3025752eaaf56a1fcc3380f',1,'tropo_weight(const clim_t *clim, const double t, const double lat, const double p): libtrac.c']]], + ['tropo_5fzm_2ec_28',['tropo_zm.c',['../tropo__zm_8c.html',1,'']]], + ['ts_29',['ts',['../structmet__t.html#a61ef93fdd727e61639dc6408a4573149',1,'met_t']]], + ['tt_30',['tt',['../structmet__t.html#a9677a606f7850c8143f698e9fb15273f',1,'met_t']]], + ['turb_5fdx_5fstrat_31',['turb_dx_strat',['../structctl__t.html#a3173408e0e9c39c17c39367aee1c5641',1,'ctl_t']]], + ['turb_5fdx_5ftrop_32',['turb_dx_trop',['../structctl__t.html#a37abd3e7cbc687a515ba1bbac5ec77f2',1,'ctl_t']]], + ['turb_5fdz_5fstrat_33',['turb_dz_strat',['../structctl__t.html#ae797044bfedbdf7e058c6fb02195e586',1,'ctl_t']]], + ['turb_5fdz_5ftrop_34',['turb_dz_trop',['../structctl__t.html#a21f2e759e0c5d8cfae2ba9ed551c768e',1,'ctl_t']]], + ['turb_5fmesox_35',['turb_mesox',['../structctl__t.html#a4c410e0dddb3e5a5cad1ca66f99967cd',1,'ctl_t']]], + ['turb_5fmesoz_36',['turb_mesoz',['../structctl__t.html#a22edf991ef6c26556d13aa822a65da63',1,'ctl_t']]], + ['tvirt_37',['TVIRT',['../libtrac_8h.html#a068492d8c01b3b2d1aebf28ded97bb71',1,'libtrac.h']]] +]; diff --git a/doxygen/search/all_14.html b/doxygen/search/all_14.html new file mode 100644 index 0000000000..291e0d95fe --- /dev/null +++ b/doxygen/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_14.js b/doxygen/search/all_14.js new file mode 100644 index 0000000000..5b07ee4f78 --- /dev/null +++ b/doxygen/search/all_14.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['u_0',['u',['../structmet__t.html#a68b715eb9e5fa3a9c8f400e0c5667cc9',1,'met_t']]], + ['ul_1',['ul',['../structmet__t.html#a760447bb9eca0826b3705f30a9b8f165',1,'met_t']]], + ['us_2',['us',['../structmet__t.html#a4242ff2a85d48089d15fd5645923ee36',1,'met_t']]], + ['uvwp_3',['uvwp',['../structcache__t.html#aaa7f03cf8194b0babb1d9c14dcabc84e',1,'cache_t']]] +]; diff --git a/doxygen/search/all_15.html b/doxygen/search/all_15.html new file mode 100644 index 0000000000..5a315d6e7a --- /dev/null +++ b/doxygen/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_15.js b/doxygen/search/all_15.js new file mode 100644 index 0000000000..1d74d4ceb2 --- /dev/null +++ b/doxygen/search/all_15.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['v_0',['v',['../structmet__t.html#abc29d5fbea8f527b849837efacd76eaa',1,'met_t']]], + ['vert_5fcoord_5fap_1',['vert_coord_ap',['../structctl__t.html#a02ac97541bf7bf01a68fddea04107f41',1,'ctl_t']]], + ['vert_5fcoord_5fmet_2',['vert_coord_met',['../structctl__t.html#a233f535341a29d5a05357ecf99ec2cd4',1,'ctl_t']]], + ['vl_3',['vl',['../structmet__t.html#a4b4aaeb8f39dea0fb511744f84535303',1,'met_t']]], + ['vmr_4',['vmr',['../structclim__ts__t.html#a0a87d48606ea13114cea09194ea0ddd4',1,'clim_ts_t::vmr()'],['../structclim__zm__t.html#a893d077ed8733dc568f87950ce40f5c6',1,'clim_zm_t::vmr()']]], + ['vs_5',['vs',['../structmet__t.html#aa6379067afe890ea9fe7146a1668f0dc',1,'met_t']]], + ['vtk_5fbasename_6',['vtk_basename',['../structctl__t.html#ac98ba3f8bc8b26ca6499ac79603de8db',1,'ctl_t']]], + ['vtk_5fdt_5fout_7',['vtk_dt_out',['../structctl__t.html#a64262df06556e7055245b9f96d317f92',1,'ctl_t']]], + ['vtk_5foffset_8',['vtk_offset',['../structctl__t.html#a78c2f172f67203ddfc2dfb9db913f51d',1,'ctl_t']]], + ['vtk_5fscale_9',['vtk_scale',['../structctl__t.html#ad1c66733dc34e0eb4bff6dea1ad9aefe',1,'ctl_t']]], + ['vtk_5fsphere_10',['vtk_sphere',['../structctl__t.html#a17e569920568025af14e66d706651a18',1,'ctl_t']]], + ['vtk_5fstride_11',['vtk_stride',['../structctl__t.html#af662f58ab4cdf46b8e28945ca541a9c1',1,'ctl_t']]] +]; diff --git a/doxygen/search/all_16.html b/doxygen/search/all_16.html new file mode 100644 index 0000000000..b712f16472 --- /dev/null +++ b/doxygen/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_16.js b/doxygen/search/all_16.js new file mode 100644 index 0000000000..fbb21ba365 --- /dev/null +++ b/doxygen/search/all_16.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['w_0',['w',['../structmet__t.html#a210cc808698557c4824a4a8d7908fe73',1,'met_t']]], + ['warn_1',['WARN',['../libtrac_8h.html#a8f75b971030a39ef811d3526a62b36b8',1,'libtrac.h']]], + ['wet_5fdepo_5fbc_5fa_2',['wet_depo_bc_a',['../structctl__t.html#a1550c0159a3a3374a1ebccef46604ad8',1,'ctl_t']]], + ['wet_5fdepo_5fbc_5fb_3',['wet_depo_bc_b',['../structctl__t.html#ae49e5d87420514bf64f3150e75c8b07f',1,'ctl_t']]], + ['wet_5fdepo_5fbc_5fh_4',['wet_depo_bc_h',['../structctl__t.html#a9a0cd464bdd8eac81b99b88a93e21536',1,'ctl_t']]], + ['wet_5fdepo_5fbc_5fret_5fratio_5',['wet_depo_bc_ret_ratio',['../structctl__t.html#ac2b6871df347638e7154410038690871',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fa_6',['wet_depo_ic_a',['../structctl__t.html#a032306df4b235c20af95d5b30edc694a',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fb_7',['wet_depo_ic_b',['../structctl__t.html#ae48763f1caad155cb48c8bcb536061c0',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fh_8',['wet_depo_ic_h',['../structctl__t.html#a85a0e04fc184e8202b06d4c4e5546327',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fret_5fratio_9',['wet_depo_ic_ret_ratio',['../structctl__t.html#adfd76ffde125821097d58b4b3978a355',1,'ctl_t']]], + ['wet_5fdepo_5fpre_10',['wet_depo_pre',['../structctl__t.html#a96e4c97eb8f6a2b81d7ddb7a3ce4ae81',1,'ctl_t']]], + ['wind_2ec_11',['wind.c',['../wind_8c.html',1,'']]], + ['write_5fatm_12',['write_atm',['../libtrac_8c.html#a6f8a7ad670fbfe7dd4ed81f66695db6f',1,'write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a6f8a7ad670fbfe7dd4ed81f66695db6f',1,'write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fatm_5fasc_13',['write_atm_asc',['../libtrac_8c.html#a35d13994c6a0e753baf0e0df39bc8645',1,'write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a35d13994c6a0e753baf0e0df39bc8645',1,'write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fatm_5fbin_14',['write_atm_bin',['../libtrac_8c.html#ac8f665b550ead41a8cc17da17132a63c',1,'write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#ac8f665b550ead41a8cc17da17132a63c',1,'write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['write_5fatm_5fclams_15',['write_atm_clams',['../libtrac_8c.html#aa166d9de337fa3572477f102168b2907',1,'write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#aa166d9de337fa3572477f102168b2907',1,'write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['write_5fatm_5fclams_5ftraj_16',['write_atm_clams_traj',['../libtrac_8c.html#a56873d15f57e990c702ec46e5016abd8',1,'write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a56873d15f57e990c702ec46e5016abd8',1,'write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fatm_5fnc_17',['write_atm_nc',['../libtrac_8c.html#ad5e5574adb44a2bb04fc21c3e20a9e2a',1,'write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#ad5e5574adb44a2bb04fc21c3e20a9e2a',1,'write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['write_5fcsi_18',['write_csi',['../libtrac_8c.html#a70ca26c59c2fca1fda54a29dfd3625b6',1,'write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a70ca26c59c2fca1fda54a29dfd3625b6',1,'write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fens_19',['write_ens',['../libtrac_8c.html#af5d8dfa5fe43fa2bf192ee4a7b821b1f',1,'write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#af5d8dfa5fe43fa2bf192ee4a7b821b1f',1,'write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fgrid_20',['write_grid',['../libtrac_8c.html#a59757e2569c3f96f57e291fdbe3ddc29',1,'write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a59757e2569c3f96f57e291fdbe3ddc29',1,'write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c']]], + ['write_5fgrid_5fasc_21',['write_grid_asc',['../libtrac_8c.html#a8bdd741d54d2111b3341ef04d826b475',1,'write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c'],['../libtrac_8h.html#a8bdd741d54d2111b3341ef04d826b475',1,'write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c']]], + ['write_5fgrid_5fnc_22',['write_grid_nc',['../libtrac_8c.html#ace302042852c62c50d34e6b1ef672bb6',1,'write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c'],['../libtrac_8h.html#ace302042852c62c50d34e6b1ef672bb6',1,'write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c']]], + ['write_5fmet_23',['write_met',['../libtrac_8c.html#a044c272334c81fcf88f9f01c551c1bb1',1,'write_met(char *filename, ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a044c272334c81fcf88f9f01c551c1bb1',1,'write_met(char *filename, ctl_t *ctl, met_t *met): libtrac.c']]], + ['write_5fmet_5fbin_5f2d_24',['write_met_bin_2d',['../libtrac_8h.html#a463d151fd69782a7f31f4d535f377cb0',1,'write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname): libtrac.c'],['../libtrac_8c.html#a463d151fd69782a7f31f4d535f377cb0',1,'write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname): libtrac.c']]], + ['write_5fmet_5fbin_5f3d_25',['write_met_bin_3d',['../libtrac_8c.html#a277456b731e2a0a531884a8390250b03',1,'write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance): libtrac.c'],['../libtrac_8h.html#a277456b731e2a0a531884a8390250b03',1,'write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance): libtrac.c']]], + ['write_5foutput_26',['write_output',['../trac_8c.html#aebf12c1e87751c2142d687d509921a19',1,'trac.c']]], + ['write_5fprof_27',['write_prof',['../libtrac_8c.html#af2d95b1eb426ead1c25fe5f198f476c9',1,'write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#af2d95b1eb426ead1c25fe5f198f476c9',1,'write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c']]], + ['write_5fsample_28',['write_sample',['../libtrac_8c.html#a684686ab1a1db21abc1c65b66d9db10a',1,'write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a684686ab1a1db21abc1c65b66d9db10a',1,'write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c']]], + ['write_5fstation_29',['write_station',['../libtrac_8c.html#a6afa769139ff29d1aa185e317f2f69c7',1,'write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a6afa769139ff29d1aa185e317f2f69c7',1,'write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fvtk_30',['write_vtk',['../libtrac_8c.html#a2b06d8cbf3ebbe76a9c0e23db3eb5a41',1,'write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a2b06d8cbf3ebbe76a9c0e23db3eb5a41',1,'write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]] +]; diff --git a/doxygen/search/all_17.html b/doxygen/search/all_17.html new file mode 100644 index 0000000000..7fc86ec805 --- /dev/null +++ b/doxygen/search/all_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_17.js b/doxygen/search/all_17.js new file mode 100644 index 0000000000..57f51185ca --- /dev/null +++ b/doxygen/search/all_17.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['z_0',['z',['../structmet__t.html#aaaa04cf36044fcc02d518fe667d63bb3',1,'met_t']]], + ['z_1',['Z',['../libtrac_8h.html#a58b4f1573922a1f73dd4bf014fd441bf',1,'libtrac.h']]], + ['zdiff_2',['ZDIFF',['../libtrac_8h.html#a8c73522db5d14433bd9ad2bd45d0de5f',1,'libtrac.h']]], + ['zeta_3',['zeta',['../structmet__t.html#af23740c42f5085dbbf245004ea1ac3d9',1,'met_t']]], + ['zeta_4',['ZETA',['../libtrac_8h.html#a90ee947c906d48ce71affad259ac991d',1,'libtrac.h']]], + ['zeta_5fdot_5',['zeta_dot',['../structmet__t.html#ab9f350b57a390ecf0eb91ddd360cfb0e',1,'met_t']]], + ['zeta_5fdotl_6',['zeta_dotl',['../structmet__t.html#a1153b31e69a6542d2ee83d60c38f7bb1',1,'met_t']]], + ['zetal_7',['zetal',['../structmet__t.html#afdf65f900ff556c3d4faef4443e3f40f',1,'met_t']]], + ['zs_8',['zs',['../structmet__t.html#a52f25b39ae97c30393755cefc303ccd0',1,'met_t']]], + ['zt_9',['zt',['../structmet__t.html#a043690c89804f40d4a8940b7d3393707',1,'met_t']]] +]; diff --git a/doxygen/search/all_2.html b/doxygen/search/all_2.html new file mode 100644 index 0000000000..98e648c91a --- /dev/null +++ b/doxygen/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_2.js b/doxygen/search/all_2.js new file mode 100644 index 0000000000..217de6ec1a --- /dev/null +++ b/doxygen/search/all_2.js @@ -0,0 +1,78 @@ +var searchData= +[ + ['cache_5ft_0',['cache_t',['../structcache__t.html',1,'']]], + ['cape_1',['cape',['../structmet__t.html#a1db66ae86edf896a545c0332dfeabb0f',1,'met_t']]], + ['cape_2ec_2',['cape.c',['../cape_8c.html',1,'']]], + ['cart2geo_3',['cart2geo',['../libtrac_8h.html#aaf98f7230de0893b8dc4833d3c83c7a4',1,'cart2geo(const double *x, double *z, double *lon, double *lat): libtrac.c'],['../libtrac_8c.html#aaf98f7230de0893b8dc4833d3c83c7a4',1,'cart2geo(const double *x, double *z, double *lon, double *lat): libtrac.c']]], + ['cc_4',['cc',['../structmet__t.html#a5d24cf701c941649d83adad1e058898f',1,'met_t']]], + ['ccl2f2_5',['ccl2f2',['../structclim__photo__t.html#a33f019b0c8014e92822dd8e25481284a',1,'clim_photo_t::ccl2f2()'],['../structclim__t.html#a0d489a65c8c1cee839f3467a1c51c401',1,'clim_t::ccl2f2()']]], + ['ccl3f_6',['ccl3f',['../structclim__photo__t.html#a6b698126dd4714ceb22e8d8c3dfdcf8e',1,'clim_photo_t::ccl3f()'],['../structclim__t.html#a84f795c6c4934f9e215b74dffa177685',1,'clim_t::ccl3f()']]], + ['ccl4_7',['ccl4',['../structclim__t.html#a7c4cf5c511a125b4e3bc3731157037f3',1,'clim_t::ccl4()'],['../structclim__photo__t.html#ab827be0252e456de341c167ab5e15bab',1,'clim_photo_t::ccl4()']]], + ['check_5ffinite_8',['check_finite',['../libtrac_8h.html#a0e1b39fd2022cd0e895d28dc6c0ec6ca',1,'libtrac.h']]], + ['chemgrid_5flat0_9',['chemgrid_lat0',['../structctl__t.html#a189dce731fb0c3210161ca328a93a327',1,'ctl_t']]], + ['chemgrid_5flat1_10',['chemgrid_lat1',['../structctl__t.html#a2e99a15cc98b378ffc96a6df73fe6048',1,'ctl_t']]], + ['chemgrid_5flon0_11',['chemgrid_lon0',['../structctl__t.html#a3e1bc34453198d5854a7f0271f503f7c',1,'ctl_t']]], + ['chemgrid_5flon1_12',['chemgrid_lon1',['../structctl__t.html#a4b601fe8e527664c96b12b9eafee4762',1,'ctl_t']]], + ['chemgrid_5fnx_13',['chemgrid_nx',['../structctl__t.html#ab7ed13e186108a02ff64f4bccc4ec775',1,'ctl_t']]], + ['chemgrid_5fny_14',['chemgrid_ny',['../structctl__t.html#ac43809de3c73cb9793c567813452cfca',1,'ctl_t']]], + ['chemgrid_5fnz_15',['chemgrid_nz',['../structctl__t.html#a9fab7dd94afddfff20c4596605e3f18a',1,'ctl_t']]], + ['chemgrid_5fz0_16',['chemgrid_z0',['../structctl__t.html#a1834cd1e787e3aa2f391cd942a7f37c7',1,'ctl_t']]], + ['chemgrid_5fz1_17',['chemgrid_z1',['../structctl__t.html#a080fa58f76fcfad970b76ca112706154',1,'ctl_t']]], + ['chunkszhint_18',['chunkszhint',['../structctl__t.html#abcfda1d37b13a5a28b13988a9673b8df',1,'ctl_t']]], + ['cin_19',['cin',['../structmet__t.html#a827c930acd681d82336766f6744ac763',1,'met_t']]], + ['cl_20',['cl',['../structmet__t.html#ae45079d4c0137fa4416dd42ca1f117cd',1,'met_t']]], + ['clams_5fmet_5fdata_21',['clams_met_data',['../structctl__t.html#a10b1f23ec13eb1bf965890a50551aa9e',1,'ctl_t']]], + ['clim_5fccl2f2_5ftimeseries_22',['clim_ccl2f2_timeseries',['../structctl__t.html#ad262595cbb226c73adcde30a4b7d3bf9',1,'ctl_t']]], + ['clim_5fccl3f_5ftimeseries_23',['clim_ccl3f_timeseries',['../structctl__t.html#ac6e501659bef71188874bf710d510635',1,'ctl_t']]], + ['clim_5fccl4_5ftimeseries_24',['clim_ccl4_timeseries',['../structctl__t.html#aa17140ad321005a763259a2ae7dcd858',1,'ctl_t']]], + ['clim_5fh2o2_5ffilename_25',['clim_h2o2_filename',['../structctl__t.html#a711670450c0aa59e4ae6cc7b199ba63e',1,'ctl_t']]], + ['clim_5fhno3_5ffilename_26',['clim_hno3_filename',['../structctl__t.html#adcb60205ef46f49695f9f06257dc0346',1,'ctl_t']]], + ['clim_5fho2_5ffilename_27',['clim_ho2_filename',['../structctl__t.html#a2d8c402293e6879df38c55a4241b1ad5',1,'ctl_t']]], + ['clim_5fn2o_5ftimeseries_28',['clim_n2o_timeseries',['../structctl__t.html#a0bdff7541fde7bd508072c44279519fd',1,'ctl_t']]], + ['clim_5fo1d_5ffilename_29',['clim_o1d_filename',['../structctl__t.html#a587e33a3eebf5c424f67d94200f598ff',1,'ctl_t']]], + ['clim_5fo3_5ffilename_30',['clim_o3_filename',['../structctl__t.html#ac348a5d2c94d9e46c64904741f4726d3',1,'ctl_t']]], + ['clim_5foh_31',['clim_oh',['../libtrac_8c.html#a9ba00889eeb600010467d8b62de94a36',1,'clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p): libtrac.c'],['../libtrac_8h.html#a9ba00889eeb600010467d8b62de94a36',1,'clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p): libtrac.c']]], + ['clim_5foh_5fdiurnal_5fcorrection_32',['clim_oh_diurnal_correction',['../libtrac_8h.html#a40393f78fb69719a43e79b54dace29b5',1,'clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim): libtrac.c'],['../libtrac_8c.html#a40393f78fb69719a43e79b54dace29b5',1,'clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim): libtrac.c']]], + ['clim_5foh_5ffilename_33',['clim_oh_filename',['../structctl__t.html#aa7ad8811329e690f4a3c4431b16f8d19',1,'ctl_t']]], + ['clim_5fphoto_34',['clim_photo',['../libtrac_8h.html#afb5aaa2ee2de7b0625084e6a18503996',1,'clim_photo(): libtrac.c'],['../structctl__t.html#a5a52a92586476c70f20788fd481d98f3',1,'ctl_t::clim_photo()'],['../libtrac_8c.html#afb5aaa2ee2de7b0625084e6a18503996',1,'clim_photo(double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c): libtrac.c']]], + ['clim_5fphoto_5ft_35',['clim_photo_t',['../structclim__photo__t.html',1,'']]], + ['clim_5fsf6_5ftimeseries_36',['clim_sf6_timeseries',['../structctl__t.html#ab08651e92983408ef0bebfe875c59851',1,'ctl_t']]], + ['clim_5ft_37',['clim_t',['../structclim__t.html',1,'']]], + ['clim_5ftropo_38',['clim_tropo',['../libtrac_8c.html#a4531cb279e09061a6f34a73695c7b692',1,'clim_tropo(const clim_t *clim, const double t, const double lat): libtrac.c'],['../libtrac_8h.html#a4531cb279e09061a6f34a73695c7b692',1,'clim_tropo(const clim_t *clim, const double t, const double lat): libtrac.c']]], + ['clim_5ftropo_5finit_39',['clim_tropo_init',['../libtrac_8h.html#aa9cf40c6960c5078d1ea9e12a2fb0872',1,'clim_tropo_init(clim_t *clim): libtrac.c'],['../libtrac_8c.html#aa9cf40c6960c5078d1ea9e12a2fb0872',1,'clim_tropo_init(clim_t *clim): libtrac.c']]], + ['clim_5fts_40',['clim_ts',['../libtrac_8h.html#acbf877af94269d0aa1c94b7c50121df8',1,'clim_ts(const clim_ts_t *ts, const double t): libtrac.c'],['../libtrac_8c.html#acbf877af94269d0aa1c94b7c50121df8',1,'clim_ts(const clim_ts_t *ts, const double t): libtrac.c']]], + ['clim_5fts_5ft_41',['clim_ts_t',['../structclim__ts__t.html',1,'']]], + ['clim_5fzm_42',['clim_zm',['../libtrac_8h.html#a41f5ab8ff7acad400fe7332b6b53288a',1,'clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p): libtrac.c'],['../libtrac_8c.html#a41f5ab8ff7acad400fe7332b6b53288a',1,'clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p): libtrac.c']]], + ['clim_5fzm_5ft_43',['clim_zm_t',['../structclim__zm__t.html',1,'']]], + ['co3_44',['CO3',['../libtrac_8h.html#ae27556d9109b33480031038071c8b4b0',1,'libtrac.h']]], + ['compress_5fpack_45',['compress_pack',['../libtrac_8h.html#abe573e8a40cd632144770a326361c8fc',1,'compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout): libtrac.c'],['../libtrac_8c.html#abe573e8a40cd632144770a326361c8fc',1,'compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout): libtrac.c']]], + ['conv_5fcape_46',['conv_cape',['../structctl__t.html#a18c1107433d1e9c7867025e8a0fbe6d2',1,'ctl_t']]], + ['conv_5fcin_47',['conv_cin',['../structctl__t.html#ad6e15e5c23446b0ac2f5f48f70f575a1',1,'ctl_t']]], + ['conv_5fdt_48',['conv_dt',['../structctl__t.html#a64cdca0c6817ba378fbde7385b8ee279',1,'ctl_t']]], + ['conv_5fmix_49',['conv_mix',['../structctl__t.html#afbf21769a03f5d2b7eaaa992072b62b1',1,'ctl_t']]], + ['conv_5fmix_5fbot_50',['conv_mix_bot',['../structctl__t.html#a4cae2bde07e32cb05bfaf56c0ffe8044',1,'ctl_t']]], + ['conv_5fmix_5ftop_51',['conv_mix_top',['../structctl__t.html#a89c3c8786645ee7cfa48ffa73b710167',1,'ctl_t']]], + ['cp_52',['CP',['../libtrac_8h.html#a6594e57d1fff186da0a254a3742dcff7',1,'libtrac.h']]], + ['cpd_53',['CPD',['../libtrac_8h.html#af48c8f42b5451a04703d55d62ea50a3e',1,'libtrac.h']]], + ['cpl_5fzeta_5fand_5fpress_5fmodules_54',['cpl_zeta_and_press_modules',['../structctl__t.html#a701fc0e40f8523d1bd5d20162a896cf1',1,'ctl_t']]], + ['csi_5fbasename_55',['csi_basename',['../structctl__t.html#a605a1904f8ff49d178ac462f8fbecc3a',1,'ctl_t']]], + ['csi_5fdt_5fout_56',['csi_dt_out',['../structctl__t.html#a466eb100ca9ab4f5f605e14a27a61f1d',1,'ctl_t']]], + ['csi_5fkernel_57',['csi_kernel',['../structctl__t.html#a378603f0fe74b4236f45f78bf4bc02dc',1,'ctl_t']]], + ['csi_5flat0_58',['csi_lat0',['../structctl__t.html#a219b7e2f9f53597e84a87d349e32bcb5',1,'ctl_t']]], + ['csi_5flat1_59',['csi_lat1',['../structctl__t.html#a015b2de1c61e25a2e8abb0fba4a05c24',1,'ctl_t']]], + ['csi_5flon0_60',['csi_lon0',['../structctl__t.html#a396d8bbb52aaf8408e90c207aa7f7312',1,'ctl_t']]], + ['csi_5flon1_61',['csi_lon1',['../structctl__t.html#a0cd8031f829953cb90912d9eecfe67b3',1,'ctl_t']]], + ['csi_5fmodmin_62',['csi_modmin',['../structctl__t.html#a4aa05c61a9c0c1d0f3737f2190b1ebdc',1,'ctl_t']]], + ['csi_5fnx_63',['csi_nx',['../structctl__t.html#a21159a48d018215b1bb5af62214b9063',1,'ctl_t']]], + ['csi_5fny_64',['csi_ny',['../structctl__t.html#a17759fe1c0d11bb19777559e24808d40',1,'ctl_t']]], + ['csi_5fnz_65',['csi_nz',['../structctl__t.html#a0409a87481145b01eb3fd61042f35abc',1,'ctl_t']]], + ['csi_5fobsfile_66',['csi_obsfile',['../structctl__t.html#a01ea628e12cf0025aa0731f52d13da10',1,'ctl_t']]], + ['csi_5fobsmin_67',['csi_obsmin',['../structctl__t.html#a0a450754f8661100135aa790ea26df16',1,'ctl_t']]], + ['csi_5fz0_68',['csi_z0',['../structctl__t.html#a98aa14528bd795eaf31eae63a33c630f',1,'ctl_t']]], + ['csi_5fz1_69',['csi_z1',['../structctl__t.html#a55a1915a7e8ef2a91a2553a8393b4329',1,'ctl_t']]], + ['csza_70',['CSZA',['../libtrac_8h.html#af7d97769fe58e5913e640ffed1d36fbf',1,'libtrac.h']]], + ['ct_71',['CT',['../libtrac_8h.html#a7e463881fb9033a2fb65f3782d4e1c01',1,'libtrac.h']]], + ['ctl_5ft_72',['ctl_t',['../structctl__t.html',1,'']]], + ['cts_73',['CTS',['../libtrac_8h.html#a9d9ce8cebc572a42e7b4ab9e92c3a350',1,'libtrac.h']]], + ['cy_74',['CY',['../libtrac_8h.html#ac5bc792e372b15e7a1d3efe6daac9aec',1,'libtrac.h']]] +]; diff --git a/doxygen/search/all_3.html b/doxygen/search/all_3.html new file mode 100644 index 0000000000..f4e8da7288 --- /dev/null +++ b/doxygen/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_3.js b/doxygen/search/all_3.js new file mode 100644 index 0000000000..9a036ec5db --- /dev/null +++ b/doxygen/search/all_3.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['day2doy_0',['day2doy',['../libtrac_8c.html#a0816a7fc51af1fbaf5146435baf29f82',1,'day2doy(const int year, const int mon, const int day, int *doy): libtrac.c'],['../libtrac_8h.html#a0816a7fc51af1fbaf5146435baf29f82',1,'day2doy(const int year, const int mon, const int day, int *doy): libtrac.c']]], + ['day2doy_2ec_1',['day2doy.c',['../day2doy_8c.html',1,'']]], + ['deg2dx_2',['DEG2DX',['../libtrac_8h.html#af32eb4cf0330afcdd3e0f3d195737a3c',1,'libtrac.h']]], + ['deg2dy_3',['DEG2DY',['../libtrac_8h.html#a6b3bf18cdd34775ace994db9a97474b1',1,'libtrac.h']]], + ['direction_4',['direction',['../structctl__t.html#a1a6d5b4003ebd8f9c77b3b45933779e6',1,'ctl_t']]], + ['dist_5',['DIST',['../libtrac_8h.html#ae733a5a3a9e9a85474da2105655a0dc4',1,'libtrac.h']]], + ['dist2_6',['DIST2',['../libtrac_8h.html#af003cf5f79f68880f39a9a95d69f19bb',1,'libtrac.h']]], + ['dlapse_7',['DLAPSE',['../met__lapse_8c.html#a634cf0f62ec764b71d39792e77c864aa',1,'met_lapse.c']]], + ['dotp_8',['DOTP',['../libtrac_8h.html#a2f872a4cdfaa577c03b9dea8201028e8',1,'libtrac.h']]], + ['doy2day_9',['doy2day',['../libtrac_8h.html#ab49cba44fc2caf4c419798b0ffc47f77',1,'doy2day(const int year, const int doy, int *mon, int *day): libtrac.c'],['../libtrac_8c.html#ab49cba44fc2caf4c419798b0ffc47f77',1,'doy2day(const int year, const int doy, int *mon, int *day): libtrac.c']]], + ['doy2day_2ec_10',['doy2day.c',['../doy2day_8c.html',1,'']]], + ['dp2dz_11',['DP2DZ',['../libtrac_8h.html#a5d2bccab2674c0b9fee6d3107952fc8a',1,'libtrac.h']]], + ['dry_5fdepo_5fdp_12',['dry_depo_dp',['../structctl__t.html#a60da7ce4a7b610712585fde03773bf7f',1,'ctl_t']]], + ['dry_5fdepo_5fvdep_13',['dry_depo_vdep',['../structctl__t.html#acadcfbb95971c47b377fbd4443c68723',1,'ctl_t']]], + ['dt_5fmet_14',['dt_met',['../structctl__t.html#a2d7b8100a2949004420841d81bcc6ab4',1,'ctl_t']]], + ['dt_5fmod_15',['dt_mod',['../structctl__t.html#a718d3200f867d9018369f12f66464807',1,'ctl_t']]], + ['dx2deg_16',['DX2DEG',['../libtrac_8h.html#a6b22b78dc1239748a44cbd2db4862ef4',1,'libtrac.h']]], + ['dy2deg_17',['DY2DEG',['../libtrac_8h.html#af7f0e2b08c22c7da133b53aaad9861ff',1,'libtrac.h']]], + ['dz2dp_18',['DZ2DP',['../libtrac_8h.html#a8d7cc5a9d3263cea4b432e83ab58c286',1,'libtrac.h']]] +]; diff --git a/doxygen/search/all_4.html b/doxygen/search/all_4.html new file mode 100644 index 0000000000..678d3a2e01 --- /dev/null +++ b/doxygen/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_4.js b/doxygen/search/all_4.js new file mode 100644 index 0000000000..a817a646b5 --- /dev/null +++ b/doxygen/search/all_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ens_5fbasename_0',['ens_basename',['../structctl__t.html#a94b0a51a5281e718f4fbd38bf5b4d340',1,'ctl_t']]], + ['ens_5fdt_5fout_1',['ens_dt_out',['../structctl__t.html#aa943823dbd2a4b5fa38e7d0cf8f9ccb0',1,'ctl_t']]], + ['ep_2',['EP',['../libtrac_8h.html#adb5bf6fbe6405b09bad71e89e1da5850',1,'libtrac.h']]], + ['eps_3',['EPS',['../libtrac_8h.html#a6ebf6899d6c1c8b7b9d09be872c05aae',1,'libtrac.h']]], + ['errmsg_4',['ERRMSG',['../libtrac_8h.html#a3e0ae69dee4a8bb2e616526b5ebe6875',1,'libtrac.h']]], + ['ex_5',['EX',['../libtrac_8h.html#a6c2e35fdcd9091ccada629895fa1d034',1,'libtrac.h']]], + ['ey_6',['EY',['../libtrac_8h.html#a423a96c51fa2ea8a6406113803acbbc1',1,'libtrac.h']]] +]; diff --git a/doxygen/search/all_5.html b/doxygen/search/all_5.html new file mode 100644 index 0000000000..aa9af78207 --- /dev/null +++ b/doxygen/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_5.js b/doxygen/search/all_5.js new file mode 100644 index 0000000000..09fbba96bd --- /dev/null +++ b/doxygen/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['fft_5fhelp_0',['fft_help',['../met__spec_8c.html#a48b5c3ccaf39126de8e504baeb032ab8',1,'met_spec.c']]], + ['fmod_1',['FMOD',['../libtrac_8h.html#aff4e721b49a057c4e4a3a6f56cc06469',1,'libtrac.h']]], + ['fread_2',['FREAD',['../libtrac_8h.html#a68e3272a6f873b919d4f6d8982042a50',1,'libtrac.h']]], + ['fwrite_3',['FWRITE',['../libtrac_8h.html#a1e67562ddd8fb52548a4ca02d3640bac',1,'libtrac.h']]] +]; diff --git a/doxygen/search/all_6.html b/doxygen/search/all_6.html new file mode 100644 index 0000000000..d3026a7763 --- /dev/null +++ b/doxygen/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_6.js b/doxygen/search/all_6.js new file mode 100644 index 0000000000..8d918c6819 --- /dev/null +++ b/doxygen/search/all_6.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['g0_0',['G0',['../libtrac_8h.html#a6440afc9207bc5eba00d9161ff744e16',1,'libtrac.h']]], + ['geo2cart_1',['geo2cart',['../libtrac_8h.html#ae3aea782dfca9019f3f2d169f8cc0f6d',1,'geo2cart(const double z, const double lon, const double lat, double *x): libtrac.c'],['../libtrac_8c.html#ae3aea782dfca9019f3f2d169f8cc0f6d',1,'geo2cart(const double z, const double lon, const double lat, double *x): libtrac.c']]], + ['get_5fmet_2',['get_met',['../libtrac_8h.html#a7e748a53552146213c2716ca829d345f',1,'get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1): libtrac.c'],['../libtrac_8c.html#a7e748a53552146213c2716ca829d345f',1,'get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1): libtrac.c']]], + ['get_5fmet_5fhelp_3',['get_met_help',['../libtrac_8h.html#adad9dec9d69ea6d2be2891eab7f6f67a',1,'get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename): libtrac.c'],['../libtrac_8c.html#adad9dec9d69ea6d2be2891eab7f6f67a',1,'get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename): libtrac.c']]], + ['get_5fmet_5freplace_4',['get_met_replace',['../libtrac_8h.html#ac54a92b848d49b96ef6091df37b552f2',1,'get_met_replace(char *orig, char *search, char *repl): libtrac.c'],['../libtrac_8c.html#ac54a92b848d49b96ef6091df37b552f2',1,'get_met_replace(char *orig, char *search, char *repl): libtrac.c']]], + ['get_5ftropo_5',['get_tropo',['../tropo_8c.html#a4e8df030d9d25b649ebd5e241021fbde',1,'tropo.c']]], + ['grid_5fbasename_6',['grid_basename',['../structctl__t.html#a65f18a2f1aa44522f78fc364a0ffaf68',1,'ctl_t']]], + ['grid_5fdt_5fout_7',['grid_dt_out',['../structctl__t.html#afe05b16d3cfa511feb4673706f6606ff',1,'ctl_t']]], + ['grid_5fgpfile_8',['grid_gpfile',['../structctl__t.html#a30f012c96cb05d5a99004d9ce032277c',1,'ctl_t']]], + ['grid_5fkernel_9',['grid_kernel',['../structctl__t.html#a4dc20e7eacf1e45a61ed1910e0e88d1b',1,'ctl_t']]], + ['grid_5flat0_10',['grid_lat0',['../structctl__t.html#a25bb036fcbb73ed2452d42212cd3c09f',1,'ctl_t']]], + ['grid_5flat1_11',['grid_lat1',['../structctl__t.html#af89d6bfcdbc4250e2d30dd7e453b3048',1,'ctl_t']]], + ['grid_5flon0_12',['grid_lon0',['../structctl__t.html#a2b398376ae2ebe6e02a34465367943de',1,'ctl_t']]], + ['grid_5flon1_13',['grid_lon1',['../structctl__t.html#a895d5f67cd12ab54481ebfa36f359b77',1,'ctl_t']]], + ['grid_5fnx_14',['grid_nx',['../structctl__t.html#a235ea5cb832f13023339bafe9eeffd20',1,'ctl_t']]], + ['grid_5fny_15',['grid_ny',['../structctl__t.html#a9a533d295b5533e6a4ca9197694186c5',1,'ctl_t']]], + ['grid_5fnz_16',['grid_nz',['../structctl__t.html#aa315cd84c43255d483d552a0d2c6d18f',1,'ctl_t']]], + ['grid_5fsparse_17',['grid_sparse',['../structctl__t.html#ac7a96c566e02c9e88a73e53248a89cb5',1,'ctl_t']]], + ['grid_5ftype_18',['grid_type',['../structctl__t.html#a37c580065a63c21f5421ee78e3c4b3d9',1,'ctl_t']]], + ['grid_5fz0_19',['grid_z0',['../structctl__t.html#a0060ec5c97cb80d4721c3970c68012f5',1,'ctl_t']]], + ['grid_5fz1_20',['grid_z1',['../structctl__t.html#a1a5460bac04c277c0e66efc9f2f85810',1,'ctl_t']]] +]; diff --git a/doxygen/search/all_7.html b/doxygen/search/all_7.html new file mode 100644 index 0000000000..b2ee042e03 --- /dev/null +++ b/doxygen/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_7.js b/doxygen/search/all_7.js new file mode 100644 index 0000000000..8ce3a64a83 --- /dev/null +++ b/doxygen/search/all_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['h0_0',['H0',['../libtrac_8h.html#a2091e935ef46727f066804a98a0d039f',1,'libtrac.h']]], + ['h2o_1',['h2o',['../structmet__t.html#a135f6e1c898c2d206d9a032de0e7b579',1,'met_t']]], + ['h2o2_2',['h2o2',['../structclim__t.html#ab7f787719be51524b1389bb0bf347934',1,'clim_t']]], + ['h2o2_5fchem_5freaction_3',['h2o2_chem_reaction',['../structctl__t.html#abfeedfc5c515f8d03de56c2cd06aa633',1,'ctl_t']]], + ['h2ot_4',['h2ot',['../structmet__t.html#ac87fdccf57a65247062baccf2c2e85e8',1,'met_t']]], + ['hno3_5',['hno3',['../structclim__t.html#a4fdb5d9229fc193f2e526a6aebf97558',1,'clim_t']]], + ['ho2_6',['ho2',['../structclim__t.html#a2ba0d75a451d9382ba20ec54d1784e05',1,'clim_t']]], + ['hybrid_7',['hybrid',['../structmet__t.html#a2a9a988f67219ff510846b9cd989055d',1,'met_t']]] +]; diff --git a/doxygen/search/all_8.html b/doxygen/search/all_8.html new file mode 100644 index 0000000000..40a0b3f81b --- /dev/null +++ b/doxygen/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_8.js b/doxygen/search/all_8.js new file mode 100644 index 0000000000..e2e69d53bf --- /dev/null +++ b/doxygen/search/all_8.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['idxmax_0',['IDXMAX',['../met__lapse_8c.html#a28df7bf370f4ca686c3c5fb27aa7782f',1,'met_lapse.c']]], + ['intpol_5f2d_1',['INTPOL_2D',['../libtrac_8h.html#ab4d615b798ce84f6ee2eb42df3c90998',1,'libtrac.h']]], + ['intpol_5f3d_2',['INTPOL_3D',['../libtrac_8h.html#a48e10ecee070acb7be2df6a8ca3d9764',1,'libtrac.h']]], + ['intpol_5finit_3',['INTPOL_INIT',['../libtrac_8h.html#a3a1d95aec47889277a6bf1e25f366c24',1,'libtrac.h']]], + ['intpol_5finit_5fdia_4',['INTPOL_INIT_DIA',['../libtrac_8h.html#ae581518400d6fc29114aa9def49df48b',1,'libtrac.h']]], + ['intpol_5fmet_5f4d_5fcoord_5',['intpol_met_4d_coord',['../libtrac_8h.html#acc3995f25d0dcba39704f2e5c5c93f16',1,'intpol_met_4d_coord(met_t *met0, float height0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float height1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8c.html#a8d75be729f28e7e8927561210d81e48c',1,'intpol_met_4d_coord(met_t *met0, float heights0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float heights1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5fspace_5f2d_6',['intpol_met_space_2d',['../libtrac_8h.html#adafd1410822189cadee393d5cec50a59',1,'intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8c.html#adafd1410822189cadee393d5cec50a59',1,'intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5fspace_5f3d_7',['intpol_met_space_3d',['../libtrac_8h.html#ab697dbe3b5a6fc59b5defc1b80c558aa',1,'intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8c.html#ab697dbe3b5a6fc59b5defc1b80c558aa',1,'intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5ftime_5f2d_8',['intpol_met_time_2d',['../libtrac_8c.html#a0306bc1616303cc969e103d6faca3593',1,'intpol_met_time_2d(met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8h.html#a0306bc1616303cc969e103d6faca3593',1,'intpol_met_time_2d(met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5ftime_5f3d_9',['intpol_met_time_3d',['../libtrac_8c.html#a45e1b76bdf16030222665374ecc02e18',1,'intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8h.html#a45e1b76bdf16030222665374ecc02e18',1,'intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fspace_5fall_10',['INTPOL_SPACE_ALL',['../libtrac_8h.html#a2db66d3f79b89cb80d81f0ff4b8104be',1,'libtrac.h']]], + ['intpol_5ftime_5fall_11',['INTPOL_TIME_ALL',['../libtrac_8h.html#a983e27f3f3845d3e6bc38716aab60cdd',1,'libtrac.h']]], + ['intpol_5ftropo_5f3d_12',['intpol_tropo_3d',['../tropo__sample_8c.html#a70fe6de30950b5e6296a0d9bb8896970',1,'tropo_sample.c']]], + ['iso_5fn_13',['iso_n',['../structcache__t.html#a4df585fc5eb4099f8cd54d77703ebf45',1,'cache_t']]], + ['iso_5fps_14',['iso_ps',['../structcache__t.html#a8ce0e8a193211fc8461b2043daf9b17c',1,'cache_t']]], + ['iso_5fts_15',['iso_ts',['../structcache__t.html#a4039e32188d12d6a86086d236676d993',1,'cache_t']]], + ['iso_5fvar_16',['iso_var',['../structcache__t.html#ac3b83913cce35ef5ec582c54dce239d0',1,'cache_t']]], + ['isosurf_17',['isosurf',['../structctl__t.html#a4438b70bfa3ff0fe6cc36f3d0086e301',1,'ctl_t']]], + ['iwc_18',['iwc',['../structmet__t.html#abf312f05407920f9ac855cede012efe2',1,'met_t']]] +]; diff --git a/doxygen/search/all_9.html b/doxygen/search/all_9.html new file mode 100644 index 0000000000..7c49144a87 --- /dev/null +++ b/doxygen/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_9.js b/doxygen/search/all_9.js new file mode 100644 index 0000000000..bc35b39d74 --- /dev/null +++ b/doxygen/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['jsec2time_0',['jsec2time',['../libtrac_8c.html#acc0c1829ca7770d2dd6342f2cdf10bb9',1,'jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain): libtrac.c'],['../libtrac_8h.html#acc0c1829ca7770d2dd6342f2cdf10bb9',1,'jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain): libtrac.c']]], + ['jsec2time_2ec_1',['jsec2time.c',['../jsec2time_8c.html',1,'']]] +]; diff --git a/doxygen/search/all_a.html b/doxygen/search/all_a.html new file mode 100644 index 0000000000..fc9d79cdfc --- /dev/null +++ b/doxygen/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_a.js b/doxygen/search/all_a.js new file mode 100644 index 0000000000..8f77365943 --- /dev/null +++ b/doxygen/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['kb_0',['KB',['../libtrac_8h.html#a1841fd1a462d245d8c73dce55e2f45da',1,'libtrac.h']]], + ['kernel_5fweight_1',['kernel_weight',['../libtrac_8c.html#ae61cf973263fcc45574daa27d0dec8cd',1,'kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p): libtrac.c'],['../libtrac_8h.html#ae61cf973263fcc45574daa27d0dec8cd',1,'kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p): libtrac.c']]], + ['kpp_5fchem_2',['kpp_chem',['../structctl__t.html#a92e02214da035478761cdcd7622780b1',1,'ctl_t']]] +]; diff --git a/doxygen/search/all_b.html b/doxygen/search/all_b.html new file mode 100644 index 0000000000..dafb1fad55 --- /dev/null +++ b/doxygen/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_b.js b/doxygen/search/all_b.js new file mode 100644 index 0000000000..d33ff99cbd --- /dev/null +++ b/doxygen/search/all_b.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['lapse_0',['LAPSE',['../libtrac_8h.html#a25d1c99b30b81c5705cff2f3dd224a1d',1,'libtrac.h']]], + ['lapse_5frate_1',['lapse_rate',['../libtrac_8c.html#afa485eb277a5ced6dac0ed77665c976c',1,'lapse_rate(const double t, const double h2o): libtrac.c'],['../libtrac_8h.html#afa485eb277a5ced6dac0ed77665c976c',1,'lapse_rate(const double t, const double h2o): libtrac.c']]], + ['lapsemin_2',['LAPSEMIN',['../met__lapse_8c.html#a27069898611a6a4b297781982df6a797',1,'met_lapse.c']]], + ['lat_3',['lat',['../structatm__t.html#a25ef7d304d5cfa54c5af30192620373b',1,'atm_t::lat()'],['../structclim__zm__t.html#aff242585ab3f0df6832c7417d90d8f2f',1,'clim_zm_t::lat()'],['../structmet__t.html#af7b2d03415a8164a3e0a29da55a9f371',1,'met_t::lat()']]], + ['len_4',['LEN',['../libtrac_8h.html#a05b49c662c073f89e86804f7856622a0',1,'libtrac.h']]], + ['level_5fdefinitions_5',['level_definitions',['../libtrac_8h.html#a51f61e053cfec3bdd62fa3a8110e046e',1,'level_definitions(ctl_t *ctl): libtrac.c'],['../libtrac_8c.html#a51f61e053cfec3bdd62fa3a8110e046e',1,'level_definitions(ctl_t *ctl): libtrac.c']]], + ['libtrac_2ec_6',['libtrac.c',['../libtrac_8c.html',1,'']]], + ['libtrac_2eh_7',['libtrac.h',['../libtrac_8h.html',1,'']]], + ['lin_8',['LIN',['../libtrac_8h.html#aebaef4a0f8136be064bf1d29ce1ced83',1,'libtrac.h']]], + ['locate_5firr_9',['locate_irr',['../libtrac_8c.html#a4e1b87dc3c93a23c89f739adf10b60dc',1,'locate_irr(const double *xx, const int n, const double x): libtrac.c'],['../libtrac_8h.html#a4e1b87dc3c93a23c89f739adf10b60dc',1,'locate_irr(const double *xx, const int n, const double x): libtrac.c']]], + ['locate_5firr_5f3d_10',['locate_irr_3d',['../libtrac_8c.html#abe2fe1fe05e15b55bc4d4031a084490b',1,'locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x): libtrac.c'],['../libtrac_8h.html#abe2fe1fe05e15b55bc4d4031a084490b',1,'locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x): libtrac.c']]], + ['locate_5freg_11',['locate_reg',['../libtrac_8c.html#a2a3c8ab98f21179741b274439786726d',1,'locate_reg(const double *xx, const int n, const double x): libtrac.c'],['../libtrac_8h.html#a2a3c8ab98f21179741b274439786726d',1,'locate_reg(const double *xx, const int n, const double x): libtrac.c']]], + ['locate_5fvert_12',['locate_vert',['../libtrac_8c.html#ad93b6fdc706c932016eb2586f35dc985',1,'locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double height_ap, int *ind): libtrac.c'],['../libtrac_8h.html#af7c3d417479747cdf69cce6cae3599e5',1,'locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double alt_ap, int *ind): libtrac.c']]], + ['log_13',['LOG',['../libtrac_8h.html#acaa1c3fa56061380a29889d703236251',1,'libtrac.h']]], + ['loglev_14',['LOGLEV',['../libtrac_8h.html#aa0c49f3ada06708693de9e60b449964c',1,'libtrac.h']]], + ['lon_15',['lon',['../structmet__t.html#a85df96bff71dfa55576a995234a87b8f',1,'met_t::lon()'],['../structatm__t.html#a2c8ffb598109120ed6d1f8e79aeb3ff8',1,'atm_t::lon()']]], + ['lsm_16',['lsm',['../structmet__t.html#abe8e0b1c2d6241fa20e663db28e74445',1,'met_t']]], + ['lv_17',['LV',['../libtrac_8h.html#a60ac8f6cd3cf230202ce5aba9df2d6e1',1,'libtrac.h']]], + ['lwc_18',['lwc',['../structmet__t.html#a40590e0c0c66a5a1f6903a474de87ee0',1,'met_t']]] +]; diff --git a/doxygen/search/all_c.html b/doxygen/search/all_c.html new file mode 100644 index 0000000000..9df619d219 --- /dev/null +++ b/doxygen/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_c.js b/doxygen/search/all_c.js new file mode 100644 index 0000000000..9d53f9da11 --- /dev/null +++ b/doxygen/search/all_c.js @@ -0,0 +1,90 @@ +var searchData= +[ + ['ma_0',['MA',['../libtrac_8h.html#a11702dcb3f3ec928229185eb96686127',1,'libtrac.h']]], + ['main_1',['main',['../met__sample_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_sample.c'],['../atm__conv_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_conv.c'],['../atm__dist_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_dist.c'],['../atm__init_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_init.c'],['../atm__select_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_select.c'],['../atm__split_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_split.c'],['../atm__stat_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_stat.c'],['../cape_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): cape.c'],['../day2doy_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): day2doy.c'],['../doy2day_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): doy2day.c'],['../jsec2time_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): jsec2time.c'],['../met__conv_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_conv.c'],['../met__lapse_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_lapse.c'],['../met__map_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_map.c'],['../met__prof_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_prof.c'],['../met__spec_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_spec.c'],['../met__subgrid_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_subgrid.c'],['../met__zm_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_zm.c'],['../sedi_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): sedi.c'],['../time2jsec_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): time2jsec.c'],['../tnat_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tnat.c'],['../trac_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): trac.c'],['../tropo_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tropo.c'],['../tropo__sample_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tropo_sample.c'],['../tropo__zm_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tropo_zm.c'],['../wind_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): wind.c']]], + ['met_5fcache_2',['met_cache',['../structctl__t.html#a7ae3a516b2b17723a02f5e0627d886c2',1,'ctl_t']]], + ['met_5fcloud_3',['met_cloud',['../structctl__t.html#a7bf33ce79322be0f34def9df722a2bfd',1,'ctl_t']]], + ['met_5fcloud_5fmin_4',['met_cloud_min',['../structctl__t.html#a8b64ba2d0f67c4352ae9bfc6d3be1b78',1,'ctl_t']]], + ['met_5fconv_2ec_5',['met_conv.c',['../met__conv_8c.html',1,'']]], + ['met_5fconvention_6',['met_convention',['../structctl__t.html#a6d866e961e374a254d7dc52ea52cb3db',1,'ctl_t']]], + ['met_5fdetrend_7',['met_detrend',['../structctl__t.html#a9bc04b87ec1a0e2403117d639f6c1416',1,'ctl_t']]], + ['met_5fdp_8',['met_dp',['../structctl__t.html#a1eb5d7699fd84b8522a1d666d0851fad',1,'ctl_t']]], + ['met_5fdt_5fout_9',['met_dt_out',['../structctl__t.html#a1f07329a9333e6af8f00ff9727d774ce',1,'ctl_t']]], + ['met_5fdx_10',['met_dx',['../structctl__t.html#a6b03cd434f6f12efc60dc4b8d366d6c7',1,'ctl_t']]], + ['met_5fdy_11',['met_dy',['../structctl__t.html#ae4da60e71dcd75d1b55f66036867f225',1,'ctl_t']]], + ['met_5fgeopot_5fsx_12',['met_geopot_sx',['../structctl__t.html#a416596b692cca87f14e83f851db35e29',1,'ctl_t']]], + ['met_5fgeopot_5fsy_13',['met_geopot_sy',['../structctl__t.html#a2ec0ba6ad9f46184228f1a1784596218',1,'ctl_t']]], + ['met_5fheader_14',['MET_HEADER',['../libtrac_8h.html#a7efc33e26d9ab0d99a61ade0e7f15893',1,'libtrac.h']]], + ['met_5flapse_2ec_15',['met_lapse.c',['../met__lapse_8c.html',1,'']]], + ['met_5fmap_2ec_16',['met_map.c',['../met__map_8c.html',1,'']]], + ['met_5fnc_5fscale_17',['met_nc_scale',['../structctl__t.html#a034e61c3566760c5ebe4e16f3f3c3021',1,'ctl_t']]], + ['met_5fnp_18',['met_np',['../structctl__t.html#acd95a4753595490c2723383bd09ca035',1,'ctl_t']]], + ['met_5fp_19',['met_p',['../structctl__t.html#aeffc15a483bdb95fea0f1b44982e7281',1,'ctl_t']]], + ['met_5fprof_2ec_20',['met_prof.c',['../met__prof_8c.html',1,'']]], + ['met_5frelhum_21',['met_relhum',['../structctl__t.html#aaa5260e73daff92d01c55e87310ab837',1,'ctl_t']]], + ['met_5fsample_2ec_22',['met_sample.c',['../met__sample_8c.html',1,'']]], + ['met_5fsp_23',['met_sp',['../structctl__t.html#ab5296a9ff61f1f50c9733462cd294889',1,'ctl_t']]], + ['met_5fspec_2ec_24',['met_spec.c',['../met__spec_8c.html',1,'']]], + ['met_5fsubgrid_2ec_25',['met_subgrid.c',['../met__subgrid_8c.html',1,'']]], + ['met_5fsx_26',['met_sx',['../structctl__t.html#a4abb2ec4ff0e29f2648cb5e8b182e5d8',1,'ctl_t']]], + ['met_5fsy_27',['met_sy',['../structctl__t.html#a416820ddede3de831eb41413ed6427c0',1,'ctl_t']]], + ['met_5ft_28',['met_t',['../structmet__t.html',1,'']]], + ['met_5ftropo_29',['met_tropo',['../structctl__t.html#a5303a68a713ead5d3e144ec4183a9a86',1,'ctl_t']]], + ['met_5ftropo_5flapse_30',['met_tropo_lapse',['../structctl__t.html#a93d3036b76a3f555c661cb25cc6aa9f5',1,'ctl_t']]], + ['met_5ftropo_5flapse_5fsep_31',['met_tropo_lapse_sep',['../structctl__t.html#ab63ed3364cf91a4c658e6f4d47e95534',1,'ctl_t']]], + ['met_5ftropo_5fnlev_32',['met_tropo_nlev',['../structctl__t.html#aea1846c984d3602d070f0bf83e777646',1,'ctl_t']]], + ['met_5ftropo_5fnlev_5fsep_33',['met_tropo_nlev_sep',['../structctl__t.html#a34489f996705366c6a29805123a5be05',1,'ctl_t']]], + ['met_5ftropo_5fpv_34',['met_tropo_pv',['../structctl__t.html#a4fa995de108b6beeee9d4e5c4f9f68bb',1,'ctl_t']]], + ['met_5ftropo_5fspline_35',['met_tropo_spline',['../structctl__t.html#a2b8390b7a9e1335c03a0877f93b051af',1,'ctl_t']]], + ['met_5ftropo_5ftheta_36',['met_tropo_theta',['../structctl__t.html#aec254fc45d24615056f6b07643176171',1,'ctl_t']]], + ['met_5ftype_37',['met_type',['../structctl__t.html#afc013488cddf18deab78993e93068416',1,'ctl_t']]], + ['met_5fzfp_5fprec_38',['met_zfp_prec',['../structctl__t.html#a4dd5891ff4c8977a71706aec464f08d8',1,'ctl_t']]], + ['met_5fzfp_5ftol_5ft_39',['met_zfp_tol_t',['../structctl__t.html#acf12d9b7c41156651c59c420fce8e5bf',1,'ctl_t']]], + ['met_5fzfp_5ftol_5fz_40',['met_zfp_tol_z',['../structctl__t.html#ad18288e9f9e91cfa02b23bbd31dc3440',1,'ctl_t']]], + ['met_5fzm_2ec_41',['met_zm.c',['../met__zm_8c.html',1,'']]], + ['metbase_42',['metbase',['../structctl__t.html#a9ddc0221c9ee329efb265672a14026c9',1,'ctl_t']]], + ['mh2o_43',['MH2O',['../libtrac_8h.html#a1c4cf7d6c3605ff72cd8b9a63379d4ea',1,'libtrac.h']]], + ['mixing_5fdt_44',['mixing_dt',['../structctl__t.html#acf37a9e8e3b1a013d6106f83e14aedb3',1,'ctl_t']]], + ['mixing_5flat0_45',['mixing_lat0',['../structctl__t.html#a8bc3cf78a652568f5e5f04d7c28e82ea',1,'ctl_t']]], + ['mixing_5flat1_46',['mixing_lat1',['../structctl__t.html#aabd109b7477b116b0542aafeb8056180',1,'ctl_t']]], + ['mixing_5flon0_47',['mixing_lon0',['../structctl__t.html#aa161bb16963a0fb4340b8e6fda492be6',1,'ctl_t']]], + ['mixing_5flon1_48',['mixing_lon1',['../structctl__t.html#adbb72c2a4599dd7bc44ef279da5de7ff',1,'ctl_t']]], + ['mixing_5fnx_49',['mixing_nx',['../structctl__t.html#a073b97a29712daaee8212c8a673418bf',1,'ctl_t']]], + ['mixing_5fny_50',['mixing_ny',['../structctl__t.html#a6cc8f7e22a69a8fec9e11c2cd4a84644',1,'ctl_t']]], + ['mixing_5fnz_51',['mixing_nz',['../structctl__t.html#aa027a38882f39332262de958c1e8880b',1,'ctl_t']]], + ['mixing_5fstrat_52',['mixing_strat',['../structctl__t.html#a54e8203aaa728ca33e8db070896eec5a',1,'ctl_t']]], + ['mixing_5ftrop_53',['mixing_trop',['../structctl__t.html#a11a33decd5490249e5251aaec901bd4c',1,'ctl_t']]], + ['mixing_5fz0_54',['mixing_z0',['../structctl__t.html#a5b956c530addc8d909afaf00f5bf9fb4',1,'ctl_t']]], + ['mixing_5fz1_55',['mixing_z1',['../structctl__t.html#a12d69b44d99afb975f0df6fe5486f896',1,'ctl_t']]], + ['mo3_56',['MO3',['../libtrac_8h.html#aa5770de64e81ecf3f35d559357f67a76',1,'libtrac.h']]], + ['module_5fadvect_57',['module_advect',['../trac_8c.html#a4ccd30026baf665758ff587cd2bebdb1',1,'trac.c']]], + ['module_5fadvect_5fdiabatic_58',['module_advect_diabatic',['../trac_8c.html#abb33bc155cb4f8a9f6e201212814b3c4',1,'trac.c']]], + ['module_5fbound_5fcond_59',['module_bound_cond',['../trac_8c.html#a6923dc8f54a49d376cf6a486c848fd94',1,'trac.c']]], + ['module_5fchemgrid_60',['module_chemgrid',['../trac_8c.html#a4ce2c912d35ee727c5e8877d2f5c8958',1,'trac.c']]], + ['module_5fconvection_61',['module_convection',['../trac_8c.html#ad89c50ca0fa9258e086d457a72463346',1,'trac.c']]], + ['module_5fdecay_62',['module_decay',['../trac_8c.html#ab4353227dd6cb7d3392bf7bc804351fb',1,'trac.c']]], + ['module_5fdiffusion_5fmeso_63',['module_diffusion_meso',['../trac_8c.html#add049d36bf3caca319c1fb71e6fdc2b2',1,'trac.c']]], + ['module_5fdiffusion_5fturb_64',['module_diffusion_turb',['../trac_8c.html#ae7a2e0f0de171b37383cd672db5e483e',1,'trac.c']]], + ['module_5fdry_5fdeposition_65',['module_dry_deposition',['../trac_8c.html#a9a6ba19e5c74160151ae3f26785daeff',1,'trac.c']]], + ['module_5fh2o2_5fchem_66',['module_h2o2_chem',['../trac_8c.html#a6a9ad6d728173d5a51398880d2bc921b',1,'trac.c']]], + ['module_5fisosurf_67',['module_isosurf',['../trac_8c.html#ac5397325f4210ac4e89b977ca7026237',1,'trac.c']]], + ['module_5fisosurf_5finit_68',['module_isosurf_init',['../trac_8c.html#a94be7f97f770dfcd783e8ced0aa8e629',1,'trac.c']]], + ['module_5fkpp_5fchem_69',['module_kpp_chem',['../trac_8c.html#a0a46093dec056a5db7ec23c105456054',1,'trac.c']]], + ['module_5fmeteo_70',['module_meteo',['../trac_8c.html#a7cb8e26541d7628230dad82325b61b7e',1,'trac.c']]], + ['module_5fmixing_71',['module_mixing',['../trac_8c.html#a7bd79a78b4fd2d384dc98255fbf1bf8d',1,'trac.c']]], + ['module_5fmixing_5fhelp_72',['module_mixing_help',['../trac_8c.html#ad5c35d1543ff9173bf682dd933e8405c',1,'trac.c']]], + ['module_5foh_5fchem_73',['module_oh_chem',['../trac_8c.html#a7ef56ba785c5a1ae4e73e7da0a141e1d',1,'trac.c']]], + ['module_5fposition_74',['module_position',['../trac_8c.html#a7c82a7406882f89b0c6298d2f2cbfe1a',1,'trac.c']]], + ['module_5frng_75',['module_rng',['../trac_8c.html#a6ac625b4389d9c8c440342e137c57a81',1,'trac.c']]], + ['module_5frng_5finit_76',['module_rng_init',['../trac_8c.html#a34704f73a61f2e7830081f0b010b0ad3',1,'trac.c']]], + ['module_5fsedi_77',['module_sedi',['../trac_8c.html#a1d7701a95a327a1833ef16620838e71d',1,'trac.c']]], + ['module_5fsort_78',['module_sort',['../trac_8c.html#a3226e54dbf610f7701d0e60e7c55d1e9',1,'trac.c']]], + ['module_5fsort_5fhelp_79',['module_sort_help',['../trac_8c.html#a00942b9f17c8e2348d921f04cc282e95',1,'trac.c']]], + ['module_5ftimesteps_80',['module_timesteps',['../trac_8c.html#a071baaf1ed7856f4a3b291766591268a',1,'trac.c']]], + ['module_5ftimesteps_5finit_81',['module_timesteps_init',['../trac_8c.html#a69b6dde548bd6f01c0b244455f901976',1,'trac.c']]], + ['module_5ftracer_5fchem_82',['module_tracer_chem',['../trac_8c.html#a42f35c3d4dac72ac9ba2406a97937dc1',1,'trac.c']]], + ['module_5fwet_5fdeposition_83',['module_wet_deposition',['../trac_8c.html#a288d5a40bb7cd1626ce343ff884fb64d',1,'trac.c']]], + ['molec_5fdens_84',['MOLEC_DENS',['../libtrac_8h.html#a241767dd865cc665eeee896fb598eb9f',1,'libtrac.h']]], + ['molmass_85',['molmass',['../structctl__t.html#a0522c3f4f840a3fabbfa786c2dfba4b0',1,'ctl_t']]], + ['mptrac_86',['MPTRAC',['../index.html',1,'']]] +]; diff --git a/doxygen/search/all_d.html b/doxygen/search/all_d.html new file mode 100644 index 0000000000..95d8eec551 --- /dev/null +++ b/doxygen/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_d.js b/doxygen/search/all_d.js new file mode 100644 index 0000000000..2f7814b13c --- /dev/null +++ b/doxygen/search/all_d.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['n2o_0',['n2o',['../structclim__t.html#af11604629b6390f0fdbb734b0dce2554',1,'clim_t::n2o()'],['../structclim__photo__t.html#a6ce3ae3dcee69c935d6db4a040d655bc',1,'clim_photo_t::n2o()']]], + ['nat_5ftemperature_1',['nat_temperature',['../libtrac_8h.html#a623b433e01381315e5d49fc4c2bc3548',1,'nat_temperature(const double p, const double h2o, const double hno3): libtrac.c'],['../libtrac_8c.html#a623b433e01381315e5d49fc4c2bc3548',1,'nat_temperature(const double p, const double h2o, const double hno3): libtrac.c']]], + ['nc_2',['NC',['../libtrac_8h.html#a2678db26e1acda0cccd79553b9cc9b51',1,'libtrac.h']]], + ['nc_5fdef_5fvar_3',['NC_DEF_VAR',['../libtrac_8h.html#aec634ca654ffa1341d4b6953dba3363e',1,'libtrac.h']]], + ['nc_5fget_5fdouble_4',['NC_GET_DOUBLE',['../libtrac_8h.html#ad7d3c9758dc177ab607539de4625d6ca',1,'libtrac.h']]], + ['nc_5finq_5fdim_5',['NC_INQ_DIM',['../libtrac_8h.html#aaebb2a4e6e65eb5265d92673515b1587',1,'libtrac.h']]], + ['nc_5fput_5fatt_6',['NC_PUT_ATT',['../libtrac_8h.html#a96e012265aff69f99407f69b8e1abb58',1,'libtrac.h']]], + ['nc_5fput_5fatt_5fglobal_7',['NC_PUT_ATT_GLOBAL',['../libtrac_8h.html#a218e2f27b530e30c0905d28be265e00f',1,'libtrac.h']]], + ['nc_5fput_5fdouble_8',['NC_PUT_DOUBLE',['../libtrac_8h.html#ae8b2166768c41952fc7e05faef7bb593',1,'libtrac.h']]], + ['nc_5fput_5ffloat_9',['NC_PUT_FLOAT',['../libtrac_8h.html#ac0e202b5cb2a0adea56392860c4ffb86',1,'libtrac.h']]], + ['nc_5fput_5fint_10',['NC_PUT_INT',['../libtrac_8h.html#a3ed28cecbf584b977168813e9e2e0e32',1,'libtrac.h']]], + ['ncsi_11',['NCSI',['../libtrac_8h.html#ad7d0bf1acdf6b0da23c3ccd8ce8f6caa',1,'libtrac.h']]], + ['nens_12',['NENS',['../libtrac_8h.html#a1dd69f988ec51453efc614485237c23a',1,'libtrac.h']]], + ['nlat_13',['nlat',['../structclim__zm__t.html#ab3d452abf93ad1d5f39c2c20fc6403e9',1,'clim_zm_t']]], + ['nn_14',['NN',['../libtrac_8h.html#a04481815cacab8fbbb9109b21b6f57ec',1,'libtrac.h']]], + ['no3c_15',['no3c',['../structclim__photo__t.html#acce113364acbbf45c8d77ff60a743b3c',1,'clim_photo_t']]], + ['nobs_16',['NOBS',['../libtrac_8h.html#a4e6d37e546b0cac9bffdd01ec84f53dd',1,'libtrac.h']]], + ['norm_17',['NORM',['../libtrac_8h.html#a7fa3afb5cf2625deb1e859cbb93d2943',1,'libtrac.h']]], + ['np_18',['np',['../structclim__zm__t.html#a3c0b1227fc300563dc460fef7b4b249a',1,'clim_zm_t::np()'],['../structatm__t.html#a473366004c7195d5c455373296ee1833',1,'atm_t::np()'],['../structclim__photo__t.html#ac8e36bf703a6431948567de9cb94c1e0',1,'clim_photo_t::np()'],['../structmet__t.html#a5d4eb4cd28aa5db1ec672368921c0b8f',1,'met_t::np()']]], + ['np_19',['NP',['../libtrac_8h.html#ab04c88bedc6b2be8ddfe7aa8d3e93f06',1,'libtrac.h']]], + ['npl_20',['npl',['../structmet__t.html#abe8b336b71924b14d2badd0d6c0f7c27',1,'met_t']]], + ['nq_21',['NQ',['../libtrac_8h.html#a68c2775fc4d7385df9c7bb96d23b482b',1,'libtrac.h']]], + ['nq_22',['nq',['../structctl__t.html#af189b70e15b3ed95191357717b80a2cc',1,'ctl_t']]], + ['nsza_23',['nsza',['../structclim__photo__t.html#a0049cb269d4506812a7f4d3e83338f9a',1,'clim_photo_t']]], + ['nt_24',['NT',['../tropo__sample_8c.html#a7d5ef0de19030d43f98042e1c4a9f605',1,'NT(): tropo_sample.c'],['../tropo__zm_8c.html#a7d5ef0de19030d43f98042e1c4a9f605',1,'NT(): tropo_zm.c']]], + ['nthreads_25',['NTHREADS',['../libtrac_8h.html#a51ca9914034cd3e92903476fd4eebbd6',1,'libtrac.h']]], + ['ntime_26',['ntime',['../structclim__ts__t.html#a5933a10768e95f718d876cddcaad9c04',1,'clim_ts_t::ntime()'],['../structclim__zm__t.html#aa852df9602b1dfd0cbf453159dbf0e41',1,'clim_zm_t::ntime()']]], + ['ntimer_27',['NTIMER',['../libtrac_8h.html#ab14495ae1f9667df5d198613bcc8d092',1,'libtrac.h']]], + ['nvtx_5fpop_28',['NVTX_POP',['../libtrac_8h.html#a754e582b0ae74bd2f7833d14db976c23',1,'libtrac.h']]], + ['nvtx_5fpush_29',['NVTX_PUSH',['../libtrac_8h.html#a3e73ed25753a4ecef1b8c259ed923d5c',1,'libtrac.h']]], + ['nx_30',['nx',['../structmet__t.html#a2bbd96a0a7184bc730c14323a067a760',1,'met_t']]], + ['nx_31',['NX',['../met__map_8c.html#a4a9d32ff035c82119003134767948ebf',1,'met_map.c']]], + ['ny_32',['ny',['../structmet__t.html#a3a066580dfee9253cfe22b1e4ebf73b9',1,'met_t']]], + ['ny_33',['NY',['../met__map_8c.html#a652e87ecc9140879666ae9d6bf4ca893',1,'NY(): met_map.c'],['../met__zm_8c.html#a652e87ecc9140879666ae9d6bf4ca893',1,'NY(): met_zm.c']]], + ['nz_34',['NZ',['../met__prof_8c.html#a693aee47b2103d0a7fcd3a0a0dd4fb57',1,'NZ(): met_prof.c'],['../met__zm_8c.html#a693aee47b2103d0a7fcd3a0a0dd4fb57',1,'NZ(): met_zm.c']]] +]; diff --git a/doxygen/search/all_e.html b/doxygen/search/all_e.html new file mode 100644 index 0000000000..a54e12060a --- /dev/null +++ b/doxygen/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_e.js b/doxygen/search/all_e.js new file mode 100644 index 0000000000..736bc1691e --- /dev/null +++ b/doxygen/search/all_e.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['o1d_0',['o1d',['../structclim__t.html#a9a7486ab639da63d6ac55d6cbacdcf0e',1,'clim_t']]], + ['o3_1',['o3',['../structmet__t.html#a5ce0fb589ddc187ab1191a9fd081a376',1,'met_t']]], + ['o3c_2',['o3c',['../structclim__photo__t.html#ac0271c879928d27622665e275d535bc1',1,'clim_photo_t::o3c()'],['../structmet__t.html#a0ab0cfbc1e5fe1a5c9ce3412cc4400a8',1,'met_t::o3c()']]], + ['oh_3',['oh',['../structclim__t.html#ac67a2bf753276e20cc577a0134b29252',1,'clim_t']]], + ['oh_5fchem_4',['oh_chem',['../structctl__t.html#a3a6b353625c774d90aa5286e69f1fc5f',1,'ctl_t']]], + ['oh_5fchem_5fbeta_5',['oh_chem_beta',['../structctl__t.html#a572e117f02cbfced576c216d366d1a89',1,'ctl_t']]], + ['oh_5fchem_5freaction_6',['oh_chem_reaction',['../structctl__t.html#a81cc25ede9c434e2ac0d7e341f3113e1',1,'ctl_t']]] +]; diff --git a/doxygen/search/all_f.html b/doxygen/search/all_f.html new file mode 100644 index 0000000000..8d0aed39fb --- /dev/null +++ b/doxygen/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/all_f.js b/doxygen/search/all_f.js new file mode 100644 index 0000000000..f48db9b35f --- /dev/null +++ b/doxygen/search/all_f.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['p_0',['p',['../structclim__photo__t.html#a29e3ba531fc98c377540862e80cdbaab',1,'clim_photo_t']]], + ['p_1',['P',['../libtrac_8h.html#a5e1d0f42ad38aba63907665ccdd43b86',1,'libtrac.h']]], + ['p_2',['p',['../structatm__t.html#ae769ef14e4824d35f47ad9dec75a4087',1,'atm_t::p()'],['../structclim__zm__t.html#a680339d53df354552c42829876d1271f',1,'clim_zm_t::p()'],['../structmet__t.html#affbacae5925ff68007396b525622ee34',1,'met_t::p()']]], + ['p0_3',['P0',['../libtrac_8h.html#a1583b00a62bc1138f99bbfcd8ef81a6a',1,'libtrac.h']]], + ['particle_5floop_4',['PARTICLE_LOOP',['../trac_8c.html#a11241b8a58cfbbe8cc92e1db4aff45ab',1,'trac.c']]], + ['patp_5',['patp',['../structmet__t.html#a4bba580a8a3628a2f52f0e6a2c13aae2',1,'met_t']]], + ['pbl_6',['pbl',['../structmet__t.html#a9a55672423267749087311d62e924794',1,'met_t']]], + ['pcb_7',['pcb',['../structmet__t.html#a7c44ec7c0c9f471ca8ca700adb3596c3',1,'met_t']]], + ['pct_8',['pct',['../structmet__t.html#a29d404429eb9f4e95bf8fa1132455fdd',1,'met_t']]], + ['pel_9',['pel',['../structmet__t.html#a7d6776fe9ed1966d6024567d423f0b96',1,'met_t']]], + ['photo_10',['photo',['../structclim__t.html#a0e767d8c469bec62f4457cf1cb9312ea',1,'clim_t']]], + ['pl_11',['pl',['../structmet__t.html#af1a12a97613433a41a2714a2634a83de',1,'met_t']]], + ['plcl_12',['plcl',['../structmet__t.html#a83441ce7588a1230c54f4c2174bbdcfb',1,'met_t']]], + ['plfc_13',['plfc',['../structmet__t.html#af2f85f717aa775b52d4791c97c3ae142',1,'met_t']]], + ['pmax_14',['PMAX',['../met__spec_8c.html#a44c07e59a1dddb477c7989ad091bffc4',1,'met_spec.c']]], + ['press_5flevel_5fdef_15',['press_level_def',['../structctl__t.html#a9c3d50e627931bf07eb25bd48f3620c5',1,'ctl_t']]], + ['print_16',['PRINT',['../libtrac_8h.html#a19e6b556dec9bcdb4e422d57633ce731',1,'libtrac.h']]], + ['print_5ftimers_17',['PRINT_TIMERS',['../libtrac_8h.html#ab84d08f557a59406c2b0969300937769',1,'libtrac.h']]], + ['prof_5fbasename_18',['prof_basename',['../structctl__t.html#a1a4c8aa3a46d5a54c6ef2ca4eefdf3a1',1,'ctl_t']]], + ['prof_5flat0_19',['prof_lat0',['../structctl__t.html#abbea8b15d0f5ea43ddd48ebb6a248916',1,'ctl_t']]], + ['prof_5flat1_20',['prof_lat1',['../structctl__t.html#ab227d1f7a9235210bd3ba4e159398bfc',1,'ctl_t']]], + ['prof_5flon0_21',['prof_lon0',['../structctl__t.html#ab5c52ba42d486204818e2bade09005c1',1,'ctl_t']]], + ['prof_5flon1_22',['prof_lon1',['../structctl__t.html#abdbbc3e42fcbcf71714a8b86dd5b3729',1,'ctl_t']]], + ['prof_5fnx_23',['prof_nx',['../structctl__t.html#a4fe06eb4b9baabf93694ed62d2956046',1,'ctl_t']]], + ['prof_5fny_24',['prof_ny',['../structctl__t.html#a83da7c4b38e4b6044636bfcab0a0f8c2',1,'ctl_t']]], + ['prof_5fnz_25',['prof_nz',['../structctl__t.html#a45940a490a88de1eee54ce2701db84aa',1,'ctl_t']]], + ['prof_5fobsfile_26',['prof_obsfile',['../structctl__t.html#a42d536f7e68997de273a245cff2af30b',1,'ctl_t']]], + ['prof_5fz0_27',['prof_z0',['../structctl__t.html#a4ef0c20dc2cdc73b2a3272e40a82efd4',1,'ctl_t']]], + ['prof_5fz1_28',['prof_z1',['../structctl__t.html#a8fcaa080d02f579e45b99cd7e6a5a36e',1,'ctl_t']]], + ['ps_29',['ps',['../structmet__t.html#a3ea571f00b50e6ba8191ec620bc1d15e',1,'met_t']]], + ['psat_30',['PSAT',['../libtrac_8h.html#adc5ae7e10b1b021fb68397df5bad0a64',1,'libtrac.h']]], + ['psc_5fh2o_31',['psc_h2o',['../structctl__t.html#ab4ab5f332a54f86eda5e850ac7380334',1,'ctl_t']]], + ['psc_5fhno3_32',['psc_hno3',['../structctl__t.html#abd6693699cf561e2628e46805ac9591b',1,'ctl_t']]], + ['psice_33',['PSICE',['../libtrac_8h.html#a70eb939aa0b84d808a49a4a18111ae9f',1,'libtrac.h']]], + ['pt_34',['pt',['../structmet__t.html#a86578dd751b3d5bcb696265f4a1ac47d',1,'met_t']]], + ['pv_35',['pv',['../structmet__t.html#ac8e46cfdfc9fc8cfef4e2b801834a61c',1,'met_t']]], + ['pw_36',['PW',['../libtrac_8h.html#a1f71059c62f3f9c3db1f6eb5f94dd7a8',1,'libtrac.h']]] +]; diff --git a/doxygen/search/classes_0.html b/doxygen/search/classes_0.html new file mode 100644 index 0000000000..9d4f871a1c --- /dev/null +++ b/doxygen/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/classes_0.js b/doxygen/search/classes_0.js new file mode 100644 index 0000000000..49c34d22e4 --- /dev/null +++ b/doxygen/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['atm_5ft_0',['atm_t',['../structatm__t.html',1,'']]] +]; diff --git a/doxygen/search/classes_1.html b/doxygen/search/classes_1.html new file mode 100644 index 0000000000..0557f9fb44 --- /dev/null +++ b/doxygen/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/classes_1.js b/doxygen/search/classes_1.js new file mode 100644 index 0000000000..fbdd562ea9 --- /dev/null +++ b/doxygen/search/classes_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['cache_5ft_0',['cache_t',['../structcache__t.html',1,'']]], + ['clim_5fphoto_5ft_1',['clim_photo_t',['../structclim__photo__t.html',1,'']]], + ['clim_5ft_2',['clim_t',['../structclim__t.html',1,'']]], + ['clim_5fts_5ft_3',['clim_ts_t',['../structclim__ts__t.html',1,'']]], + ['clim_5fzm_5ft_4',['clim_zm_t',['../structclim__zm__t.html',1,'']]], + ['ctl_5ft_5',['ctl_t',['../structctl__t.html',1,'']]] +]; diff --git a/doxygen/search/classes_2.html b/doxygen/search/classes_2.html new file mode 100644 index 0000000000..fa2086157f --- /dev/null +++ b/doxygen/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/classes_2.js b/doxygen/search/classes_2.js new file mode 100644 index 0000000000..49d7384df8 --- /dev/null +++ b/doxygen/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['met_5ft_0',['met_t',['../structmet__t.html',1,'']]] +]; diff --git a/doxygen/search/close.svg b/doxygen/search/close.svg new file mode 100644 index 0000000000..a933eea1a2 --- /dev/null +++ b/doxygen/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/doxygen/search/defines_0.html b/doxygen/search/defines_0.html new file mode 100644 index 0000000000..d0cf63345b --- /dev/null +++ b/doxygen/search/defines_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_0.js b/doxygen/search/defines_0.js new file mode 100644 index 0000000000..88258202a3 --- /dev/null +++ b/doxygen/search/defines_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['alloc_0',['ALLOC',['../libtrac_8h.html#a9aee3e5daf3b1051597d21ab093adbd0',1,'libtrac.h']]], + ['array_5f2d_1',['ARRAY_2D',['../libtrac_8h.html#a56fa16148a574bac429287eb4612aa2e',1,'libtrac.h']]], + ['array_5f3d_2',['ARRAY_3D',['../libtrac_8h.html#a0a81bdec7708d9599d0dcfa7a41caa26',1,'libtrac.h']]], + ['arrhenius_3',['ARRHENIUS',['../libtrac_8h.html#ad6fd608dae29bc65e5c4ad1480f7b891',1,'libtrac.h']]], + ['avo_4',['AVO',['../libtrac_8h.html#a174754c04acfba9e1f66ba249e68643a',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_1.html b/doxygen/search/defines_1.html new file mode 100644 index 0000000000..4369011f5a --- /dev/null +++ b/doxygen/search/defines_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_1.js b/doxygen/search/defines_1.js new file mode 100644 index 0000000000..37429c3de1 --- /dev/null +++ b/doxygen/search/defines_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['co3_0',['CO3',['../libtrac_8h.html#ae27556d9109b33480031038071c8b4b0',1,'libtrac.h']]], + ['cp_1',['CP',['../libtrac_8h.html#a6594e57d1fff186da0a254a3742dcff7',1,'libtrac.h']]], + ['cpd_2',['CPD',['../libtrac_8h.html#af48c8f42b5451a04703d55d62ea50a3e',1,'libtrac.h']]], + ['csza_3',['CSZA',['../libtrac_8h.html#af7d97769fe58e5913e640ffed1d36fbf',1,'libtrac.h']]], + ['ct_4',['CT',['../libtrac_8h.html#a7e463881fb9033a2fb65f3782d4e1c01',1,'libtrac.h']]], + ['cts_5',['CTS',['../libtrac_8h.html#a9d9ce8cebc572a42e7b4ab9e92c3a350',1,'libtrac.h']]], + ['cy_6',['CY',['../libtrac_8h.html#ac5bc792e372b15e7a1d3efe6daac9aec',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_10.html b/doxygen/search/defines_10.html new file mode 100644 index 0000000000..0817e0e4df --- /dev/null +++ b/doxygen/search/defines_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_10.js b/doxygen/search/defines_10.js new file mode 100644 index 0000000000..b3280a4c4d --- /dev/null +++ b/doxygen/search/defines_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['warn_0',['WARN',['../libtrac_8h.html#a8f75b971030a39ef811d3526a62b36b8',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_11.html b/doxygen/search/defines_11.html new file mode 100644 index 0000000000..b0f72e135c --- /dev/null +++ b/doxygen/search/defines_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_11.js b/doxygen/search/defines_11.js new file mode 100644 index 0000000000..79df9d5aeb --- /dev/null +++ b/doxygen/search/defines_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['z_0',['Z',['../libtrac_8h.html#a58b4f1573922a1f73dd4bf014fd441bf',1,'libtrac.h']]], + ['zdiff_1',['ZDIFF',['../libtrac_8h.html#a8c73522db5d14433bd9ad2bd45d0de5f',1,'libtrac.h']]], + ['zeta_2',['ZETA',['../libtrac_8h.html#a90ee947c906d48ce71affad259ac991d',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_2.html b/doxygen/search/defines_2.html new file mode 100644 index 0000000000..a5e830b436 --- /dev/null +++ b/doxygen/search/defines_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_2.js b/doxygen/search/defines_2.js new file mode 100644 index 0000000000..b388af447d --- /dev/null +++ b/doxygen/search/defines_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['deg2dx_0',['DEG2DX',['../libtrac_8h.html#af32eb4cf0330afcdd3e0f3d195737a3c',1,'libtrac.h']]], + ['deg2dy_1',['DEG2DY',['../libtrac_8h.html#a6b3bf18cdd34775ace994db9a97474b1',1,'libtrac.h']]], + ['dist_2',['DIST',['../libtrac_8h.html#ae733a5a3a9e9a85474da2105655a0dc4',1,'libtrac.h']]], + ['dist2_3',['DIST2',['../libtrac_8h.html#af003cf5f79f68880f39a9a95d69f19bb',1,'libtrac.h']]], + ['dlapse_4',['DLAPSE',['../met__lapse_8c.html#a634cf0f62ec764b71d39792e77c864aa',1,'met_lapse.c']]], + ['dotp_5',['DOTP',['../libtrac_8h.html#a2f872a4cdfaa577c03b9dea8201028e8',1,'libtrac.h']]], + ['dp2dz_6',['DP2DZ',['../libtrac_8h.html#a5d2bccab2674c0b9fee6d3107952fc8a',1,'libtrac.h']]], + ['dx2deg_7',['DX2DEG',['../libtrac_8h.html#a6b22b78dc1239748a44cbd2db4862ef4',1,'libtrac.h']]], + ['dy2deg_8',['DY2DEG',['../libtrac_8h.html#af7f0e2b08c22c7da133b53aaad9861ff',1,'libtrac.h']]], + ['dz2dp_9',['DZ2DP',['../libtrac_8h.html#a8d7cc5a9d3263cea4b432e83ab58c286',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_3.html b/doxygen/search/defines_3.html new file mode 100644 index 0000000000..7428985698 --- /dev/null +++ b/doxygen/search/defines_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_3.js b/doxygen/search/defines_3.js new file mode 100644 index 0000000000..8c1eb0723d --- /dev/null +++ b/doxygen/search/defines_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ep_0',['EP',['../libtrac_8h.html#adb5bf6fbe6405b09bad71e89e1da5850',1,'libtrac.h']]], + ['eps_1',['EPS',['../libtrac_8h.html#a6ebf6899d6c1c8b7b9d09be872c05aae',1,'libtrac.h']]], + ['errmsg_2',['ERRMSG',['../libtrac_8h.html#a3e0ae69dee4a8bb2e616526b5ebe6875',1,'libtrac.h']]], + ['ex_3',['EX',['../libtrac_8h.html#a6c2e35fdcd9091ccada629895fa1d034',1,'libtrac.h']]], + ['ey_4',['EY',['../libtrac_8h.html#a423a96c51fa2ea8a6406113803acbbc1',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_4.html b/doxygen/search/defines_4.html new file mode 100644 index 0000000000..7035a13567 --- /dev/null +++ b/doxygen/search/defines_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_4.js b/doxygen/search/defines_4.js new file mode 100644 index 0000000000..ce6043f83b --- /dev/null +++ b/doxygen/search/defines_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['fmod_0',['FMOD',['../libtrac_8h.html#aff4e721b49a057c4e4a3a6f56cc06469',1,'libtrac.h']]], + ['fread_1',['FREAD',['../libtrac_8h.html#a68e3272a6f873b919d4f6d8982042a50',1,'libtrac.h']]], + ['fwrite_2',['FWRITE',['../libtrac_8h.html#a1e67562ddd8fb52548a4ca02d3640bac',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_5.html b/doxygen/search/defines_5.html new file mode 100644 index 0000000000..3b7cd4a081 --- /dev/null +++ b/doxygen/search/defines_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_5.js b/doxygen/search/defines_5.js new file mode 100644 index 0000000000..7917a07e99 --- /dev/null +++ b/doxygen/search/defines_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['g0_0',['G0',['../libtrac_8h.html#a6440afc9207bc5eba00d9161ff744e16',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_6.html b/doxygen/search/defines_6.html new file mode 100644 index 0000000000..176caafe99 --- /dev/null +++ b/doxygen/search/defines_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_6.js b/doxygen/search/defines_6.js new file mode 100644 index 0000000000..ceaa38fe0f --- /dev/null +++ b/doxygen/search/defines_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['h0_0',['H0',['../libtrac_8h.html#a2091e935ef46727f066804a98a0d039f',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_7.html b/doxygen/search/defines_7.html new file mode 100644 index 0000000000..88ca81a835 --- /dev/null +++ b/doxygen/search/defines_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_7.js b/doxygen/search/defines_7.js new file mode 100644 index 0000000000..fade96513c --- /dev/null +++ b/doxygen/search/defines_7.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['idxmax_0',['IDXMAX',['../met__lapse_8c.html#a28df7bf370f4ca686c3c5fb27aa7782f',1,'met_lapse.c']]], + ['intpol_5f2d_1',['INTPOL_2D',['../libtrac_8h.html#ab4d615b798ce84f6ee2eb42df3c90998',1,'libtrac.h']]], + ['intpol_5f3d_2',['INTPOL_3D',['../libtrac_8h.html#a48e10ecee070acb7be2df6a8ca3d9764',1,'libtrac.h']]], + ['intpol_5finit_3',['INTPOL_INIT',['../libtrac_8h.html#a3a1d95aec47889277a6bf1e25f366c24',1,'libtrac.h']]], + ['intpol_5finit_5fdia_4',['INTPOL_INIT_DIA',['../libtrac_8h.html#ae581518400d6fc29114aa9def49df48b',1,'libtrac.h']]], + ['intpol_5fspace_5fall_5',['INTPOL_SPACE_ALL',['../libtrac_8h.html#a2db66d3f79b89cb80d81f0ff4b8104be',1,'libtrac.h']]], + ['intpol_5ftime_5fall_6',['INTPOL_TIME_ALL',['../libtrac_8h.html#a983e27f3f3845d3e6bc38716aab60cdd',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_8.html b/doxygen/search/defines_8.html new file mode 100644 index 0000000000..1e85fb3f81 --- /dev/null +++ b/doxygen/search/defines_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_8.js b/doxygen/search/defines_8.js new file mode 100644 index 0000000000..80247c090f --- /dev/null +++ b/doxygen/search/defines_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kb_0',['KB',['../libtrac_8h.html#a1841fd1a462d245d8c73dce55e2f45da',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_9.html b/doxygen/search/defines_9.html new file mode 100644 index 0000000000..c367f61a16 --- /dev/null +++ b/doxygen/search/defines_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_9.js b/doxygen/search/defines_9.js new file mode 100644 index 0000000000..0101dde524 --- /dev/null +++ b/doxygen/search/defines_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['lapse_0',['LAPSE',['../libtrac_8h.html#a25d1c99b30b81c5705cff2f3dd224a1d',1,'libtrac.h']]], + ['lapsemin_1',['LAPSEMIN',['../met__lapse_8c.html#a27069898611a6a4b297781982df6a797',1,'met_lapse.c']]], + ['len_2',['LEN',['../libtrac_8h.html#a05b49c662c073f89e86804f7856622a0',1,'libtrac.h']]], + ['lin_3',['LIN',['../libtrac_8h.html#aebaef4a0f8136be064bf1d29ce1ced83',1,'libtrac.h']]], + ['log_4',['LOG',['../libtrac_8h.html#acaa1c3fa56061380a29889d703236251',1,'libtrac.h']]], + ['loglev_5',['LOGLEV',['../libtrac_8h.html#aa0c49f3ada06708693de9e60b449964c',1,'libtrac.h']]], + ['lv_6',['LV',['../libtrac_8h.html#a60ac8f6cd3cf230202ce5aba9df2d6e1',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_a.html b/doxygen/search/defines_a.html new file mode 100644 index 0000000000..b29a64b50f --- /dev/null +++ b/doxygen/search/defines_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_a.js b/doxygen/search/defines_a.js new file mode 100644 index 0000000000..b576751627 --- /dev/null +++ b/doxygen/search/defines_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ma_0',['MA',['../libtrac_8h.html#a11702dcb3f3ec928229185eb96686127',1,'libtrac.h']]], + ['met_5fheader_1',['MET_HEADER',['../libtrac_8h.html#a7efc33e26d9ab0d99a61ade0e7f15893',1,'libtrac.h']]], + ['mh2o_2',['MH2O',['../libtrac_8h.html#a1c4cf7d6c3605ff72cd8b9a63379d4ea',1,'libtrac.h']]], + ['mo3_3',['MO3',['../libtrac_8h.html#aa5770de64e81ecf3f35d559357f67a76',1,'libtrac.h']]], + ['molec_5fdens_4',['MOLEC_DENS',['../libtrac_8h.html#a241767dd865cc665eeee896fb598eb9f',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_b.html b/doxygen/search/defines_b.html new file mode 100644 index 0000000000..6b982c51f4 --- /dev/null +++ b/doxygen/search/defines_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_b.js b/doxygen/search/defines_b.js new file mode 100644 index 0000000000..ecf9c836e5 --- /dev/null +++ b/doxygen/search/defines_b.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['nc_0',['NC',['../libtrac_8h.html#a2678db26e1acda0cccd79553b9cc9b51',1,'libtrac.h']]], + ['nc_5fdef_5fvar_1',['NC_DEF_VAR',['../libtrac_8h.html#aec634ca654ffa1341d4b6953dba3363e',1,'libtrac.h']]], + ['nc_5fget_5fdouble_2',['NC_GET_DOUBLE',['../libtrac_8h.html#ad7d3c9758dc177ab607539de4625d6ca',1,'libtrac.h']]], + ['nc_5finq_5fdim_3',['NC_INQ_DIM',['../libtrac_8h.html#aaebb2a4e6e65eb5265d92673515b1587',1,'libtrac.h']]], + ['nc_5fput_5fatt_4',['NC_PUT_ATT',['../libtrac_8h.html#a96e012265aff69f99407f69b8e1abb58',1,'libtrac.h']]], + ['nc_5fput_5fatt_5fglobal_5',['NC_PUT_ATT_GLOBAL',['../libtrac_8h.html#a218e2f27b530e30c0905d28be265e00f',1,'libtrac.h']]], + ['nc_5fput_5fdouble_6',['NC_PUT_DOUBLE',['../libtrac_8h.html#ae8b2166768c41952fc7e05faef7bb593',1,'libtrac.h']]], + ['nc_5fput_5ffloat_7',['NC_PUT_FLOAT',['../libtrac_8h.html#ac0e202b5cb2a0adea56392860c4ffb86',1,'libtrac.h']]], + ['nc_5fput_5fint_8',['NC_PUT_INT',['../libtrac_8h.html#a3ed28cecbf584b977168813e9e2e0e32',1,'libtrac.h']]], + ['ncsi_9',['NCSI',['../libtrac_8h.html#ad7d0bf1acdf6b0da23c3ccd8ce8f6caa',1,'libtrac.h']]], + ['nens_10',['NENS',['../libtrac_8h.html#a1dd69f988ec51453efc614485237c23a',1,'libtrac.h']]], + ['nn_11',['NN',['../libtrac_8h.html#a04481815cacab8fbbb9109b21b6f57ec',1,'libtrac.h']]], + ['nobs_12',['NOBS',['../libtrac_8h.html#a4e6d37e546b0cac9bffdd01ec84f53dd',1,'libtrac.h']]], + ['norm_13',['NORM',['../libtrac_8h.html#a7fa3afb5cf2625deb1e859cbb93d2943',1,'libtrac.h']]], + ['np_14',['NP',['../libtrac_8h.html#ab04c88bedc6b2be8ddfe7aa8d3e93f06',1,'libtrac.h']]], + ['nq_15',['NQ',['../libtrac_8h.html#a68c2775fc4d7385df9c7bb96d23b482b',1,'libtrac.h']]], + ['nt_16',['NT',['../tropo__sample_8c.html#a7d5ef0de19030d43f98042e1c4a9f605',1,'NT(): tropo_sample.c'],['../tropo__zm_8c.html#a7d5ef0de19030d43f98042e1c4a9f605',1,'NT(): tropo_zm.c']]], + ['nthreads_17',['NTHREADS',['../libtrac_8h.html#a51ca9914034cd3e92903476fd4eebbd6',1,'libtrac.h']]], + ['ntimer_18',['NTIMER',['../libtrac_8h.html#ab14495ae1f9667df5d198613bcc8d092',1,'libtrac.h']]], + ['nvtx_5fpop_19',['NVTX_POP',['../libtrac_8h.html#a754e582b0ae74bd2f7833d14db976c23',1,'libtrac.h']]], + ['nvtx_5fpush_20',['NVTX_PUSH',['../libtrac_8h.html#a3e73ed25753a4ecef1b8c259ed923d5c',1,'libtrac.h']]], + ['nx_21',['NX',['../met__map_8c.html#a4a9d32ff035c82119003134767948ebf',1,'met_map.c']]], + ['ny_22',['NY',['../met__map_8c.html#a652e87ecc9140879666ae9d6bf4ca893',1,'NY(): met_map.c'],['../met__zm_8c.html#a652e87ecc9140879666ae9d6bf4ca893',1,'NY(): met_zm.c']]], + ['nz_23',['NZ',['../met__prof_8c.html#a693aee47b2103d0a7fcd3a0a0dd4fb57',1,'NZ(): met_prof.c'],['../met__zm_8c.html#a693aee47b2103d0a7fcd3a0a0dd4fb57',1,'NZ(): met_zm.c']]] +]; diff --git a/doxygen/search/defines_c.html b/doxygen/search/defines_c.html new file mode 100644 index 0000000000..02bd8589e4 --- /dev/null +++ b/doxygen/search/defines_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_c.js b/doxygen/search/defines_c.js new file mode 100644 index 0000000000..633e6c2319 --- /dev/null +++ b/doxygen/search/defines_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['p_0',['P',['../libtrac_8h.html#a5e1d0f42ad38aba63907665ccdd43b86',1,'libtrac.h']]], + ['p0_1',['P0',['../libtrac_8h.html#a1583b00a62bc1138f99bbfcd8ef81a6a',1,'libtrac.h']]], + ['particle_5floop_2',['PARTICLE_LOOP',['../trac_8c.html#a11241b8a58cfbbe8cc92e1db4aff45ab',1,'trac.c']]], + ['pmax_3',['PMAX',['../met__spec_8c.html#a44c07e59a1dddb477c7989ad091bffc4',1,'met_spec.c']]], + ['print_4',['PRINT',['../libtrac_8h.html#a19e6b556dec9bcdb4e422d57633ce731',1,'libtrac.h']]], + ['print_5ftimers_5',['PRINT_TIMERS',['../libtrac_8h.html#ab84d08f557a59406c2b0969300937769',1,'libtrac.h']]], + ['psat_6',['PSAT',['../libtrac_8h.html#adc5ae7e10b1b021fb68397df5bad0a64',1,'libtrac.h']]], + ['psice_7',['PSICE',['../libtrac_8h.html#a70eb939aa0b84d808a49a4a18111ae9f',1,'libtrac.h']]], + ['pw_8',['PW',['../libtrac_8h.html#a1f71059c62f3f9c3db1f6eb5f94dd7a8',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_d.html b/doxygen/search/defines_d.html new file mode 100644 index 0000000000..ee3e579c5d --- /dev/null +++ b/doxygen/search/defines_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_d.js b/doxygen/search/defines_d.js new file mode 100644 index 0000000000..875939559f --- /dev/null +++ b/doxygen/search/defines_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ra_0',['RA',['../libtrac_8h.html#a30a3f049b718d26a32f16ed72716d588',1,'libtrac.h']]], + ['re_1',['RE',['../libtrac_8h.html#a0600e3f227b6e9a3ae26f4d6e2a0581e',1,'libtrac.h']]], + ['rh_2',['RH',['../libtrac_8h.html#ab72fd70a37f29f2192b751999b6c7cc2',1,'libtrac.h']]], + ['rhice_3',['RHICE',['../libtrac_8h.html#a9431567784929c9e462e16f393e04088',1,'libtrac.h']]], + ['rho_4',['RHO',['../libtrac_8h.html#ae088e183d18a16fd6ab469d48ce3f06a',1,'libtrac.h']]], + ['ri_5',['RI',['../libtrac_8h.html#a7e71def3baefc10ec36f1dd48da4050e',1,'libtrac.h']]], + ['roeth_5fphotol_6',['ROETH_PHOTOL',['../libtrac_8h.html#ab1f483c5a7b3474b849093de8cab4f5f',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_e.html b/doxygen/search/defines_e.html new file mode 100644 index 0000000000..cc39e9dd7d --- /dev/null +++ b/doxygen/search/defines_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_e.js b/doxygen/search/defines_e.js new file mode 100644 index 0000000000..db430d9df0 --- /dev/null +++ b/doxygen/search/defines_e.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['select_5ftimer_0',['SELECT_TIMER',['../libtrac_8h.html#ab479249c111a29cf2c6366ce221cb0a0',1,'libtrac.h']]], + ['set_5fatm_1',['SET_ATM',['../libtrac_8h.html#a9c741a27b379cebf498901dc7d271296',1,'libtrac.h']]], + ['set_5fqnt_2',['SET_QNT',['../libtrac_8h.html#a83e28faf41ab5f04f2f81ea7008565ea',1,'libtrac.h']]], + ['sh_3',['SH',['../libtrac_8h.html#a47b5bc0bd14e22c0329d967e3c6657bd',1,'libtrac.h']]], + ['sqr_4',['SQR',['../libtrac_8h.html#aa7866fa5e4e0ee9b034e9dab6599a9cc',1,'libtrac.h']]], + ['start_5ftimers_5',['START_TIMERS',['../libtrac_8h.html#aa8d58edbfeebbe667aafb0bb336cb9f9',1,'libtrac.h']]], + ['stop_5ftimers_6',['STOP_TIMERS',['../libtrac_8h.html#adb7e367d2c732d58732d42f72bab25fa',1,'libtrac.h']]], + ['swap_7',['SWAP',['../libtrac_8h.html#addce2bf4f1107168ab1a7564756aa155',1,'libtrac.h']]] +]; diff --git a/doxygen/search/defines_f.html b/doxygen/search/defines_f.html new file mode 100644 index 0000000000..f6dec0a507 --- /dev/null +++ b/doxygen/search/defines_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/defines_f.js b/doxygen/search/defines_f.js new file mode 100644 index 0000000000..cc64d126d5 --- /dev/null +++ b/doxygen/search/defines_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['t0_0',['T0',['../libtrac_8h.html#ad41b89d4eb6d63a0def5e5fd2a5ab326',1,'libtrac.h']]], + ['tdew_1',['TDEW',['../libtrac_8h.html#accf0b870a4ce9e19153c59f88898543a',1,'libtrac.h']]], + ['theta_2',['THETA',['../libtrac_8h.html#a7d6c988afa363960f9cb5f3b589d2ae4',1,'libtrac.h']]], + ['thetavirt_3',['THETAVIRT',['../libtrac_8h.html#a8cbdab681e71d411200fb104480f4862',1,'libtrac.h']]], + ['tice_4',['TICE',['../libtrac_8h.html#a879f63fc7d15755d06ff79084410b6c9',1,'libtrac.h']]], + ['tok_5',['TOK',['../libtrac_8h.html#a8b61d1304377b77925b2802459ddae98',1,'libtrac.h']]], + ['tvirt_6',['TVIRT',['../libtrac_8h.html#a068492d8c01b3b2d1aebf28ded97bb71',1,'libtrac.h']]] +]; diff --git a/doxygen/search/files_0.html b/doxygen/search/files_0.html new file mode 100644 index 0000000000..2dbb4c2f67 --- /dev/null +++ b/doxygen/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_0.js b/doxygen/search/files_0.js new file mode 100644 index 0000000000..e67c634e6f --- /dev/null +++ b/doxygen/search/files_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['atm_5fconv_2ec_0',['atm_conv.c',['../atm__conv_8c.html',1,'']]], + ['atm_5fdist_2ec_1',['atm_dist.c',['../atm__dist_8c.html',1,'']]], + ['atm_5finit_2ec_2',['atm_init.c',['../atm__init_8c.html',1,'']]], + ['atm_5fselect_2ec_3',['atm_select.c',['../atm__select_8c.html',1,'']]], + ['atm_5fsplit_2ec_4',['atm_split.c',['../atm__split_8c.html',1,'']]], + ['atm_5fstat_2ec_5',['atm_stat.c',['../atm__stat_8c.html',1,'']]] +]; diff --git a/doxygen/search/files_1.html b/doxygen/search/files_1.html new file mode 100644 index 0000000000..18ccd15a90 --- /dev/null +++ b/doxygen/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_1.js b/doxygen/search/files_1.js new file mode 100644 index 0000000000..a3b2797897 --- /dev/null +++ b/doxygen/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cape_2ec_0',['cape.c',['../cape_8c.html',1,'']]] +]; diff --git a/doxygen/search/files_2.html b/doxygen/search/files_2.html new file mode 100644 index 0000000000..a4c2be4d18 --- /dev/null +++ b/doxygen/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_2.js b/doxygen/search/files_2.js new file mode 100644 index 0000000000..7139e16de0 --- /dev/null +++ b/doxygen/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['day2doy_2ec_0',['day2doy.c',['../day2doy_8c.html',1,'']]], + ['doy2day_2ec_1',['doy2day.c',['../doy2day_8c.html',1,'']]] +]; diff --git a/doxygen/search/files_3.html b/doxygen/search/files_3.html new file mode 100644 index 0000000000..3ac4cfba17 --- /dev/null +++ b/doxygen/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_3.js b/doxygen/search/files_3.js new file mode 100644 index 0000000000..bcf77b7c3a --- /dev/null +++ b/doxygen/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jsec2time_2ec_0',['jsec2time.c',['../jsec2time_8c.html',1,'']]] +]; diff --git a/doxygen/search/files_4.html b/doxygen/search/files_4.html new file mode 100644 index 0000000000..eb19ecf790 --- /dev/null +++ b/doxygen/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_4.js b/doxygen/search/files_4.js new file mode 100644 index 0000000000..d86c9eda03 --- /dev/null +++ b/doxygen/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['libtrac_2ec_0',['libtrac.c',['../libtrac_8c.html',1,'']]], + ['libtrac_2eh_1',['libtrac.h',['../libtrac_8h.html',1,'']]] +]; diff --git a/doxygen/search/files_5.html b/doxygen/search/files_5.html new file mode 100644 index 0000000000..61d86d0ef1 --- /dev/null +++ b/doxygen/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_5.js b/doxygen/search/files_5.js new file mode 100644 index 0000000000..5aa9a2066d --- /dev/null +++ b/doxygen/search/files_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['met_5fconv_2ec_0',['met_conv.c',['../met__conv_8c.html',1,'']]], + ['met_5flapse_2ec_1',['met_lapse.c',['../met__lapse_8c.html',1,'']]], + ['met_5fmap_2ec_2',['met_map.c',['../met__map_8c.html',1,'']]], + ['met_5fprof_2ec_3',['met_prof.c',['../met__prof_8c.html',1,'']]], + ['met_5fsample_2ec_4',['met_sample.c',['../met__sample_8c.html',1,'']]], + ['met_5fspec_2ec_5',['met_spec.c',['../met__spec_8c.html',1,'']]], + ['met_5fsubgrid_2ec_6',['met_subgrid.c',['../met__subgrid_8c.html',1,'']]], + ['met_5fzm_2ec_7',['met_zm.c',['../met__zm_8c.html',1,'']]] +]; diff --git a/doxygen/search/files_6.html b/doxygen/search/files_6.html new file mode 100644 index 0000000000..333517d86e --- /dev/null +++ b/doxygen/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_6.js b/doxygen/search/files_6.js new file mode 100644 index 0000000000..bf7aa29140 --- /dev/null +++ b/doxygen/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sedi_2ec_0',['sedi.c',['../sedi_8c.html',1,'']]] +]; diff --git a/doxygen/search/files_7.html b/doxygen/search/files_7.html new file mode 100644 index 0000000000..ad481b0c11 --- /dev/null +++ b/doxygen/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_7.js b/doxygen/search/files_7.js new file mode 100644 index 0000000000..4e3ce19bc6 --- /dev/null +++ b/doxygen/search/files_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['time2jsec_2ec_0',['time2jsec.c',['../time2jsec_8c.html',1,'']]], + ['tnat_2ec_1',['tnat.c',['../tnat_8c.html',1,'']]], + ['trac_2ec_2',['trac.c',['../trac_8c.html',1,'']]], + ['tropo_2ec_3',['tropo.c',['../tropo_8c.html',1,'']]], + ['tropo_5fsample_2ec_4',['tropo_sample.c',['../tropo__sample_8c.html',1,'']]], + ['tropo_5fzm_2ec_5',['tropo_zm.c',['../tropo__zm_8c.html',1,'']]] +]; diff --git a/doxygen/search/files_8.html b/doxygen/search/files_8.html new file mode 100644 index 0000000000..2af84044f1 --- /dev/null +++ b/doxygen/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/files_8.js b/doxygen/search/files_8.js new file mode 100644 index 0000000000..cd86432c97 --- /dev/null +++ b/doxygen/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wind_2ec_0',['wind.c',['../wind_8c.html',1,'']]] +]; diff --git a/doxygen/search/functions_0.html b/doxygen/search/functions_0.html new file mode 100644 index 0000000000..3b739c7f49 --- /dev/null +++ b/doxygen/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_0.js b/doxygen/search/functions_0.js new file mode 100644 index 0000000000..ee9dce5f2f --- /dev/null +++ b/doxygen/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buoyancy_5ffrequency_0',['buoyancy_frequency',['../libtrac_8c.html#ae6b1ba8f9877aeed2c68ae3109f1d234',1,'buoyancy_frequency(const double p0, const double t0, const double p1, const double t1): libtrac.c'],['../libtrac_8h.html#ae6b1ba8f9877aeed2c68ae3109f1d234',1,'buoyancy_frequency(const double p0, const double t0, const double p1, const double t1): libtrac.c']]] +]; diff --git a/doxygen/search/functions_1.html b/doxygen/search/functions_1.html new file mode 100644 index 0000000000..2cef5e315a --- /dev/null +++ b/doxygen/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_1.js b/doxygen/search/functions_1.js new file mode 100644 index 0000000000..990e3847a7 --- /dev/null +++ b/doxygen/search/functions_1.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['cart2geo_0',['cart2geo',['../libtrac_8h.html#aaf98f7230de0893b8dc4833d3c83c7a4',1,'cart2geo(const double *x, double *z, double *lon, double *lat): libtrac.c'],['../libtrac_8c.html#aaf98f7230de0893b8dc4833d3c83c7a4',1,'cart2geo(const double *x, double *z, double *lon, double *lat): libtrac.c']]], + ['check_5ffinite_1',['check_finite',['../libtrac_8h.html#a0e1b39fd2022cd0e895d28dc6c0ec6ca',1,'libtrac.h']]], + ['clim_5foh_2',['clim_oh',['../libtrac_8c.html#a9ba00889eeb600010467d8b62de94a36',1,'clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p): libtrac.c'],['../libtrac_8h.html#a9ba00889eeb600010467d8b62de94a36',1,'clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p): libtrac.c']]], + ['clim_5foh_5fdiurnal_5fcorrection_3',['clim_oh_diurnal_correction',['../libtrac_8c.html#a40393f78fb69719a43e79b54dace29b5',1,'clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim): libtrac.c'],['../libtrac_8h.html#a40393f78fb69719a43e79b54dace29b5',1,'clim_oh_diurnal_correction(ctl_t *ctl, clim_t *clim): libtrac.c']]], + ['clim_5fphoto_4',['clim_photo',['../libtrac_8c.html#afb5aaa2ee2de7b0625084e6a18503996',1,'clim_photo(double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c): libtrac.c'],['../libtrac_8h.html#afb5aaa2ee2de7b0625084e6a18503996',1,'clim_photo(double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c): libtrac.c']]], + ['clim_5ftropo_5',['clim_tropo',['../libtrac_8c.html#a4531cb279e09061a6f34a73695c7b692',1,'clim_tropo(const clim_t *clim, const double t, const double lat): libtrac.c'],['../libtrac_8h.html#a4531cb279e09061a6f34a73695c7b692',1,'clim_tropo(const clim_t *clim, const double t, const double lat): libtrac.c']]], + ['clim_5ftropo_5finit_6',['clim_tropo_init',['../libtrac_8c.html#aa9cf40c6960c5078d1ea9e12a2fb0872',1,'clim_tropo_init(clim_t *clim): libtrac.c'],['../libtrac_8h.html#aa9cf40c6960c5078d1ea9e12a2fb0872',1,'clim_tropo_init(clim_t *clim): libtrac.c']]], + ['clim_5fts_7',['clim_ts',['../libtrac_8c.html#acbf877af94269d0aa1c94b7c50121df8',1,'clim_ts(const clim_ts_t *ts, const double t): libtrac.c'],['../libtrac_8h.html#acbf877af94269d0aa1c94b7c50121df8',1,'clim_ts(const clim_ts_t *ts, const double t): libtrac.c']]], + ['clim_5fzm_8',['clim_zm',['../libtrac_8c.html#a41f5ab8ff7acad400fe7332b6b53288a',1,'clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p): libtrac.c'],['../libtrac_8h.html#a41f5ab8ff7acad400fe7332b6b53288a',1,'clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p): libtrac.c']]], + ['compress_5fpack_9',['compress_pack',['../libtrac_8c.html#abe573e8a40cd632144770a326361c8fc',1,'compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout): libtrac.c'],['../libtrac_8h.html#abe573e8a40cd632144770a326361c8fc',1,'compress_pack(char *varname, float *array, size_t nxy, size_t nz, int decompress, FILE *inout): libtrac.c']]] +]; diff --git a/doxygen/search/functions_2.html b/doxygen/search/functions_2.html new file mode 100644 index 0000000000..3308c6515d --- /dev/null +++ b/doxygen/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_2.js b/doxygen/search/functions_2.js new file mode 100644 index 0000000000..98037ce428 --- /dev/null +++ b/doxygen/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['day2doy_0',['day2doy',['../libtrac_8c.html#a0816a7fc51af1fbaf5146435baf29f82',1,'day2doy(const int year, const int mon, const int day, int *doy): libtrac.c'],['../libtrac_8h.html#a0816a7fc51af1fbaf5146435baf29f82',1,'day2doy(const int year, const int mon, const int day, int *doy): libtrac.c']]], + ['doy2day_1',['doy2day',['../libtrac_8c.html#ab49cba44fc2caf4c419798b0ffc47f77',1,'doy2day(const int year, const int doy, int *mon, int *day): libtrac.c'],['../libtrac_8h.html#ab49cba44fc2caf4c419798b0ffc47f77',1,'doy2day(const int year, const int doy, int *mon, int *day): libtrac.c']]] +]; diff --git a/doxygen/search/functions_3.html b/doxygen/search/functions_3.html new file mode 100644 index 0000000000..43ac69761d --- /dev/null +++ b/doxygen/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_3.js b/doxygen/search/functions_3.js new file mode 100644 index 0000000000..d8c7f595dd --- /dev/null +++ b/doxygen/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fft_5fhelp_0',['fft_help',['../met__spec_8c.html#a48b5c3ccaf39126de8e504baeb032ab8',1,'met_spec.c']]] +]; diff --git a/doxygen/search/functions_4.html b/doxygen/search/functions_4.html new file mode 100644 index 0000000000..d12c2dfcb3 --- /dev/null +++ b/doxygen/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_4.js b/doxygen/search/functions_4.js new file mode 100644 index 0000000000..de1b8c4206 --- /dev/null +++ b/doxygen/search/functions_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['geo2cart_0',['geo2cart',['../libtrac_8c.html#ae3aea782dfca9019f3f2d169f8cc0f6d',1,'geo2cart(const double z, const double lon, const double lat, double *x): libtrac.c'],['../libtrac_8h.html#ae3aea782dfca9019f3f2d169f8cc0f6d',1,'geo2cart(const double z, const double lon, const double lat, double *x): libtrac.c']]], + ['get_5fmet_1',['get_met',['../libtrac_8c.html#a7e748a53552146213c2716ca829d345f',1,'get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1): libtrac.c'],['../libtrac_8h.html#a7e748a53552146213c2716ca829d345f',1,'get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1): libtrac.c']]], + ['get_5fmet_5fhelp_2',['get_met_help',['../libtrac_8c.html#adad9dec9d69ea6d2be2891eab7f6f67a',1,'get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename): libtrac.c'],['../libtrac_8h.html#adad9dec9d69ea6d2be2891eab7f6f67a',1,'get_met_help(ctl_t *ctl, double t, int direct, char *metbase, double dt_met, char *filename): libtrac.c']]], + ['get_5fmet_5freplace_3',['get_met_replace',['../libtrac_8c.html#ac54a92b848d49b96ef6091df37b552f2',1,'get_met_replace(char *orig, char *search, char *repl): libtrac.c'],['../libtrac_8h.html#ac54a92b848d49b96ef6091df37b552f2',1,'get_met_replace(char *orig, char *search, char *repl): libtrac.c']]], + ['get_5ftropo_4',['get_tropo',['../tropo_8c.html#a4e8df030d9d25b649ebd5e241021fbde',1,'tropo.c']]] +]; diff --git a/doxygen/search/functions_5.html b/doxygen/search/functions_5.html new file mode 100644 index 0000000000..7266236c27 --- /dev/null +++ b/doxygen/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_5.js b/doxygen/search/functions_5.js new file mode 100644 index 0000000000..3b3242d764 --- /dev/null +++ b/doxygen/search/functions_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['intpol_5fmet_5f4d_5fcoord_0',['intpol_met_4d_coord',['../libtrac_8c.html#a8d75be729f28e7e8927561210d81e48c',1,'intpol_met_4d_coord(met_t *met0, float heights0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float heights1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8h.html#acc3995f25d0dcba39704f2e5c5c93f16',1,'intpol_met_4d_coord(met_t *met0, float height0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float height1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5fspace_5f2d_1',['intpol_met_space_2d',['../libtrac_8c.html#adafd1410822189cadee393d5cec50a59',1,'intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8h.html#adafd1410822189cadee393d5cec50a59',1,'intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5fspace_5f3d_2',['intpol_met_space_3d',['../libtrac_8c.html#ab697dbe3b5a6fc59b5defc1b80c558aa',1,'intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8h.html#ab697dbe3b5a6fc59b5defc1b80c558aa',1,'intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5ftime_5f2d_3',['intpol_met_time_2d',['../libtrac_8c.html#a0306bc1616303cc969e103d6faca3593',1,'intpol_met_time_2d(met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8h.html#a0306bc1616303cc969e103d6faca3593',1,'intpol_met_time_2d(met_t *met0, float array0[EX][EY], met_t *met1, float array1[EX][EY], double ts, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5fmet_5ftime_5f3d_4',['intpol_met_time_3d',['../libtrac_8c.html#a45e1b76bdf16030222665374ecc02e18',1,'intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c'],['../libtrac_8h.html#a45e1b76bdf16030222665374ecc02e18',1,'intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init): libtrac.c']]], + ['intpol_5ftropo_5f3d_5',['intpol_tropo_3d',['../tropo__sample_8c.html#a70fe6de30950b5e6296a0d9bb8896970',1,'tropo_sample.c']]] +]; diff --git a/doxygen/search/functions_6.html b/doxygen/search/functions_6.html new file mode 100644 index 0000000000..7f9fc45b64 --- /dev/null +++ b/doxygen/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_6.js b/doxygen/search/functions_6.js new file mode 100644 index 0000000000..e921dce29b --- /dev/null +++ b/doxygen/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jsec2time_0',['jsec2time',['../libtrac_8c.html#acc0c1829ca7770d2dd6342f2cdf10bb9',1,'jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain): libtrac.c'],['../libtrac_8h.html#acc0c1829ca7770d2dd6342f2cdf10bb9',1,'jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain): libtrac.c']]] +]; diff --git a/doxygen/search/functions_7.html b/doxygen/search/functions_7.html new file mode 100644 index 0000000000..ad0f88be31 --- /dev/null +++ b/doxygen/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_7.js b/doxygen/search/functions_7.js new file mode 100644 index 0000000000..ad7db72c4a --- /dev/null +++ b/doxygen/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kernel_5fweight_0',['kernel_weight',['../libtrac_8c.html#ae61cf973263fcc45574daa27d0dec8cd',1,'kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p): libtrac.c'],['../libtrac_8h.html#ae61cf973263fcc45574daa27d0dec8cd',1,'kernel_weight(const double kz[EP], const double kw[EP], const int nk, const double p): libtrac.c']]] +]; diff --git a/doxygen/search/functions_8.html b/doxygen/search/functions_8.html new file mode 100644 index 0000000000..ea7fa74235 --- /dev/null +++ b/doxygen/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_8.js b/doxygen/search/functions_8.js new file mode 100644 index 0000000000..ec2939cab5 --- /dev/null +++ b/doxygen/search/functions_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['lapse_5frate_0',['lapse_rate',['../libtrac_8c.html#afa485eb277a5ced6dac0ed77665c976c',1,'lapse_rate(const double t, const double h2o): libtrac.c'],['../libtrac_8h.html#afa485eb277a5ced6dac0ed77665c976c',1,'lapse_rate(const double t, const double h2o): libtrac.c']]], + ['level_5fdefinitions_1',['level_definitions',['../libtrac_8c.html#a51f61e053cfec3bdd62fa3a8110e046e',1,'level_definitions(ctl_t *ctl): libtrac.c'],['../libtrac_8h.html#a51f61e053cfec3bdd62fa3a8110e046e',1,'level_definitions(ctl_t *ctl): libtrac.c']]], + ['locate_5firr_2',['locate_irr',['../libtrac_8c.html#a4e1b87dc3c93a23c89f739adf10b60dc',1,'locate_irr(const double *xx, const int n, const double x): libtrac.c'],['../libtrac_8h.html#a4e1b87dc3c93a23c89f739adf10b60dc',1,'locate_irr(const double *xx, const int n, const double x): libtrac.c']]], + ['locate_5firr_5f3d_3',['locate_irr_3d',['../libtrac_8c.html#abe2fe1fe05e15b55bc4d4031a084490b',1,'locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x): libtrac.c'],['../libtrac_8h.html#abe2fe1fe05e15b55bc4d4031a084490b',1,'locate_irr_3d(float profiles[EX][EY][EP], int np, int ind_lon, int ind_lat, double x): libtrac.c']]], + ['locate_5freg_4',['locate_reg',['../libtrac_8c.html#a2a3c8ab98f21179741b274439786726d',1,'locate_reg(const double *xx, const int n, const double x): libtrac.c'],['../libtrac_8h.html#a2a3c8ab98f21179741b274439786726d',1,'locate_reg(const double *xx, const int n, const double x): libtrac.c']]], + ['locate_5fvert_5',['locate_vert',['../libtrac_8c.html#ad93b6fdc706c932016eb2586f35dc985',1,'locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double height_ap, int *ind): libtrac.c'],['../libtrac_8h.html#af7c3d417479747cdf69cce6cae3599e5',1,'locate_vert(float profiles[EX][EY][EP], int np, int lon_ap_ind, int lat_ap_ind, double alt_ap, int *ind): libtrac.c']]] +]; diff --git a/doxygen/search/functions_9.html b/doxygen/search/functions_9.html new file mode 100644 index 0000000000..d831dc72fb --- /dev/null +++ b/doxygen/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_9.js b/doxygen/search/functions_9.js new file mode 100644 index 0000000000..d7c7291a39 --- /dev/null +++ b/doxygen/search/functions_9.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['main_0',['main',['../met__prof_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_prof.c'],['../atm__conv_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_conv.c'],['../wind_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): wind.c'],['../tropo__zm_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tropo_zm.c'],['../tropo__sample_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tropo_sample.c'],['../tropo_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tropo.c'],['../trac_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): trac.c'],['../tnat_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): tnat.c'],['../time2jsec_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): time2jsec.c'],['../sedi_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): sedi.c'],['../met__zm_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_zm.c'],['../met__subgrid_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_subgrid.c'],['../met__spec_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_spec.c'],['../met__sample_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_sample.c'],['../met__map_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_map.c'],['../met__lapse_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_lapse.c'],['../met__conv_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): met_conv.c'],['../jsec2time_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): jsec2time.c'],['../doy2day_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): doy2day.c'],['../day2doy_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): day2doy.c'],['../cape_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): cape.c'],['../atm__stat_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_stat.c'],['../atm__split_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_split.c'],['../atm__select_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_select.c'],['../atm__init_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_init.c'],['../atm__dist_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): atm_dist.c']]], + ['module_5fadvect_1',['module_advect',['../trac_8c.html#a4ccd30026baf665758ff587cd2bebdb1',1,'trac.c']]], + ['module_5fadvect_5fdiabatic_2',['module_advect_diabatic',['../trac_8c.html#abb33bc155cb4f8a9f6e201212814b3c4',1,'trac.c']]], + ['module_5fbound_5fcond_3',['module_bound_cond',['../trac_8c.html#a6923dc8f54a49d376cf6a486c848fd94',1,'trac.c']]], + ['module_5fchemgrid_4',['module_chemgrid',['../trac_8c.html#a4ce2c912d35ee727c5e8877d2f5c8958',1,'trac.c']]], + ['module_5fconvection_5',['module_convection',['../trac_8c.html#ad89c50ca0fa9258e086d457a72463346',1,'trac.c']]], + ['module_5fdecay_6',['module_decay',['../trac_8c.html#ab4353227dd6cb7d3392bf7bc804351fb',1,'trac.c']]], + ['module_5fdiffusion_5fmeso_7',['module_diffusion_meso',['../trac_8c.html#add049d36bf3caca319c1fb71e6fdc2b2',1,'trac.c']]], + ['module_5fdiffusion_5fturb_8',['module_diffusion_turb',['../trac_8c.html#ae7a2e0f0de171b37383cd672db5e483e',1,'trac.c']]], + ['module_5fdry_5fdeposition_9',['module_dry_deposition',['../trac_8c.html#a9a6ba19e5c74160151ae3f26785daeff',1,'trac.c']]], + ['module_5fh2o2_5fchem_10',['module_h2o2_chem',['../trac_8c.html#a6a9ad6d728173d5a51398880d2bc921b',1,'trac.c']]], + ['module_5fisosurf_11',['module_isosurf',['../trac_8c.html#ac5397325f4210ac4e89b977ca7026237',1,'trac.c']]], + ['module_5fisosurf_5finit_12',['module_isosurf_init',['../trac_8c.html#a94be7f97f770dfcd783e8ced0aa8e629',1,'trac.c']]], + ['module_5fkpp_5fchem_13',['module_kpp_chem',['../trac_8c.html#a0a46093dec056a5db7ec23c105456054',1,'trac.c']]], + ['module_5fmeteo_14',['module_meteo',['../trac_8c.html#a7cb8e26541d7628230dad82325b61b7e',1,'trac.c']]], + ['module_5fmixing_15',['module_mixing',['../trac_8c.html#a7bd79a78b4fd2d384dc98255fbf1bf8d',1,'trac.c']]], + ['module_5fmixing_5fhelp_16',['module_mixing_help',['../trac_8c.html#ad5c35d1543ff9173bf682dd933e8405c',1,'trac.c']]], + ['module_5foh_5fchem_17',['module_oh_chem',['../trac_8c.html#a7ef56ba785c5a1ae4e73e7da0a141e1d',1,'trac.c']]], + ['module_5fposition_18',['module_position',['../trac_8c.html#a7c82a7406882f89b0c6298d2f2cbfe1a',1,'trac.c']]], + ['module_5frng_19',['module_rng',['../trac_8c.html#a6ac625b4389d9c8c440342e137c57a81',1,'trac.c']]], + ['module_5frng_5finit_20',['module_rng_init',['../trac_8c.html#a34704f73a61f2e7830081f0b010b0ad3',1,'trac.c']]], + ['module_5fsedi_21',['module_sedi',['../trac_8c.html#a1d7701a95a327a1833ef16620838e71d',1,'trac.c']]], + ['module_5fsort_22',['module_sort',['../trac_8c.html#a3226e54dbf610f7701d0e60e7c55d1e9',1,'trac.c']]], + ['module_5fsort_5fhelp_23',['module_sort_help',['../trac_8c.html#a00942b9f17c8e2348d921f04cc282e95',1,'trac.c']]], + ['module_5ftimesteps_24',['module_timesteps',['../trac_8c.html#a071baaf1ed7856f4a3b291766591268a',1,'trac.c']]], + ['module_5ftimesteps_5finit_25',['module_timesteps_init',['../trac_8c.html#a69b6dde548bd6f01c0b244455f901976',1,'trac.c']]], + ['module_5ftracer_5fchem_26',['module_tracer_chem',['../trac_8c.html#a42f35c3d4dac72ac9ba2406a97937dc1',1,'trac.c']]], + ['module_5fwet_5fdeposition_27',['module_wet_deposition',['../trac_8c.html#a288d5a40bb7cd1626ce343ff884fb64d',1,'trac.c']]] +]; diff --git a/doxygen/search/functions_a.html b/doxygen/search/functions_a.html new file mode 100644 index 0000000000..7018fc6dbd --- /dev/null +++ b/doxygen/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_a.js b/doxygen/search/functions_a.js new file mode 100644 index 0000000000..58d72f9db2 --- /dev/null +++ b/doxygen/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nat_5ftemperature_0',['nat_temperature',['../libtrac_8c.html#a623b433e01381315e5d49fc4c2bc3548',1,'nat_temperature(const double p, const double h2o, const double hno3): libtrac.c'],['../libtrac_8h.html#a623b433e01381315e5d49fc4c2bc3548',1,'nat_temperature(const double p, const double h2o, const double hno3): libtrac.c']]] +]; diff --git a/doxygen/search/functions_b.html b/doxygen/search/functions_b.html new file mode 100644 index 0000000000..c0660b0037 --- /dev/null +++ b/doxygen/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_b.js b/doxygen/search/functions_b.js new file mode 100644 index 0000000000..3e6c6bfc92 --- /dev/null +++ b/doxygen/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quicksort_0',['quicksort',['../libtrac_8c.html#a2d35c49f4a1313a00a0b6da2f9bb877c',1,'quicksort(double arr[], int brr[], const int low, const int high): libtrac.c'],['../libtrac_8h.html#a2d35c49f4a1313a00a0b6da2f9bb877c',1,'quicksort(double arr[], int brr[], const int low, const int high): libtrac.c']]], + ['quicksort_5fpartition_1',['quicksort_partition',['../libtrac_8c.html#acae80df3d9e2a42d76476a8d223119a4',1,'quicksort_partition(double arr[], int brr[], const int low, const int high): libtrac.c'],['../libtrac_8h.html#acae80df3d9e2a42d76476a8d223119a4',1,'quicksort_partition(double arr[], int brr[], const int low, const int high): libtrac.c']]] +]; diff --git a/doxygen/search/functions_c.html b/doxygen/search/functions_c.html new file mode 100644 index 0000000000..b642767e45 --- /dev/null +++ b/doxygen/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_c.js b/doxygen/search/functions_c.js new file mode 100644 index 0000000000..213d1e1dba --- /dev/null +++ b/doxygen/search/functions_c.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['read_5fatm_0',['read_atm',['../libtrac_8h.html#a10ab9cbb20f7bacc7bad573191f7cabb',1,'read_atm(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8c.html#a10ab9cbb20f7bacc7bad573191f7cabb',1,'read_atm(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fasc_1',['read_atm_asc',['../libtrac_8h.html#a324e0e62532d05f6711ce43bfebfa897',1,'read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8c.html#a324e0e62532d05f6711ce43bfebfa897',1,'read_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fbin_2',['read_atm_bin',['../libtrac_8c.html#a69ed50f3a7f993df25260736697ae960',1,'read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#a69ed50f3a7f993df25260736697ae960',1,'read_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fclams_3',['read_atm_clams',['../libtrac_8c.html#a66f35b5e3cd571f05c2430ebc9ba62a0',1,'read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#a66f35b5e3cd571f05c2430ebc9ba62a0',1,'read_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fatm_5fnc_4',['read_atm_nc',['../libtrac_8c.html#a099fcc594e7bb8ce70bb55be9cccb69e',1,'read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#a099fcc594e7bb8ce70bb55be9cccb69e',1,'read_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['read_5fclim_5',['read_clim',['../libtrac_8c.html#a28828a87a5a435af28435a7976e499e4',1,'read_clim(ctl_t *ctl, clim_t *clim): libtrac.c'],['../libtrac_8h.html#a28828a87a5a435af28435a7976e499e4',1,'read_clim(ctl_t *ctl, clim_t *clim): libtrac.c']]], + ['read_5fclim_5fphoto_6',['read_clim_photo',['../libtrac_8c.html#a898220b4fa13f36f4d91453fbe7d7ee5',1,'read_clim_photo(char *filename, clim_photo_t *photo): libtrac.c'],['../libtrac_8h.html#a898220b4fa13f36f4d91453fbe7d7ee5',1,'read_clim_photo(char *filename, clim_photo_t *photo): libtrac.c']]], + ['read_5fclim_5fts_7',['read_clim_ts',['../libtrac_8c.html#a4cede5e5a40493bb4b55605a64cbf567',1,'read_clim_ts(char *filename, clim_ts_t *ts): libtrac.c'],['../libtrac_8h.html#a4cede5e5a40493bb4b55605a64cbf567',1,'read_clim_ts(char *filename, clim_ts_t *ts): libtrac.c']]], + ['read_5fclim_5fzm_8',['read_clim_zm',['../libtrac_8h.html#a0a2bbd978da0bcd524e44647ff349a73',1,'read_clim_zm(char *filename, char *varname, clim_zm_t *zm): libtrac.c'],['../libtrac_8c.html#a0a2bbd978da0bcd524e44647ff349a73',1,'read_clim_zm(char *filename, char *varname, clim_zm_t *zm): libtrac.c']]], + ['read_5fctl_9',['read_ctl',['../libtrac_8c.html#ab8054000249eb04a88fc06bba77dd573',1,'read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl): libtrac.c'],['../libtrac_8h.html#ab8054000249eb04a88fc06bba77dd573',1,'read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl): libtrac.c']]], + ['read_5fkernel_10',['read_kernel',['../libtrac_8c.html#a7a3277ab872141360b876c25b5643ba6',1,'read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk): libtrac.c'],['../libtrac_8h.html#a7a3277ab872141360b876c25b5643ba6',1,'read_kernel(const char *filename, double kz[EP], double kw[EP], int *nk): libtrac.c']]], + ['read_5fmet_11',['read_met',['../libtrac_8c.html#adaf12f02099c61792e04447367f1c37d',1,'read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c'],['../libtrac_8h.html#adaf12f02099c61792e04447367f1c37d',1,'read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c']]], + ['read_5fmet_5fbin_5f2d_12',['read_met_bin_2d',['../libtrac_8c.html#a029c77074da450079bdb1ce77964159b',1,'read_met_bin_2d(FILE *in, met_t *met, float var[EX][EY], char *varname): libtrac.c'],['../libtrac_8h.html#ab9f57aa8f23c823ec63246ca950dbf0f',1,'read_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname): libtrac.c']]], + ['read_5fmet_5fbin_5f3d_13',['read_met_bin_3d',['../libtrac_8c.html#a1cafe18e5c051e7107cb918a1dbd0db8',1,'read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname): libtrac.c'],['../libtrac_8h.html#a1cafe18e5c051e7107cb918a1dbd0db8',1,'read_met_bin_3d(FILE *in, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname): libtrac.c']]], + ['read_5fmet_5fcape_14',['read_met_cape',['../libtrac_8c.html#ae8d8e4969b972ebf2bfea8ad774b9822',1,'read_met_cape(clim_t *clim, met_t *met): libtrac.c'],['../libtrac_8h.html#ae8d8e4969b972ebf2bfea8ad774b9822',1,'read_met_cape(clim_t *clim, met_t *met): libtrac.c']]], + ['read_5fmet_5fcloud_15',['read_met_cloud',['../libtrac_8c.html#a99a02172665504fa93b85dd442c850db',1,'read_met_cloud(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a99a02172665504fa93b85dd442c850db',1,'read_met_cloud(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fdetrend_16',['read_met_detrend',['../libtrac_8h.html#a95998555c31d67b672339a2332f7ee1c',1,'read_met_detrend(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8c.html#a95998555c31d67b672339a2332f7ee1c',1,'read_met_detrend(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fextrapolate_17',['read_met_extrapolate',['../libtrac_8c.html#a089d9c0099e3fc6944c2a48667362ca0',1,'read_met_extrapolate(met_t *met): libtrac.c'],['../libtrac_8h.html#a089d9c0099e3fc6944c2a48667362ca0',1,'read_met_extrapolate(met_t *met): libtrac.c']]], + ['read_5fmet_5fgeopot_18',['read_met_geopot',['../libtrac_8c.html#aeaaa3090b6f7f9f471fbd24392304341',1,'read_met_geopot(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#aeaaa3090b6f7f9f471fbd24392304341',1,'read_met_geopot(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fgrid_19',['read_met_grid',['../libtrac_8c.html#ad3b59a5ce89df2ef37437ed08f6ef77b',1,'read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#ad3b59a5ce89df2ef37437ed08f6ef77b',1,'read_met_grid(char *filename, int ncid, ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5flevels_20',['read_met_levels',['../libtrac_8c.html#a15081510cdc536f13a7179118ef21687',1,'read_met_levels(int ncid, ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a15081510cdc536f13a7179118ef21687',1,'read_met_levels(int ncid, ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fml2pl_21',['read_met_ml2pl',['../libtrac_8c.html#a3cdb424353dfdea020de7512894ef08f',1,'read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP]): libtrac.c'],['../libtrac_8h.html#a3cdb424353dfdea020de7512894ef08f',1,'read_met_ml2pl(ctl_t *ctl, met_t *met, float var[EX][EY][EP]): libtrac.c']]], + ['read_5fmet_5fmonotonize_22',['read_met_monotonize',['../libtrac_8c.html#a6e7c69ecd95581d555b8a6359f78a4ca',1,'read_met_monotonize(met_t *met): libtrac.c'],['../libtrac_8h.html#a6e7c69ecd95581d555b8a6359f78a4ca',1,'read_met_monotonize(met_t *met): libtrac.c']]], + ['read_5fmet_5fnc_5f2d_23',['read_met_nc_2d',['../libtrac_8c.html#ac1ca5ed33a24caef6d62d5e283052438',1,'read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init): libtrac.c'],['../libtrac_8h.html#ac1ca5ed33a24caef6d62d5e283052438',1,'read_met_nc_2d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY], float scl, int init): libtrac.c']]], + ['read_5fmet_5fnc_5f3d_24',['read_met_nc_3d',['../libtrac_8h.html#a1dd9f12ef11ed0a54d9e4337756e5da5',1,'read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init): libtrac.c'],['../libtrac_8c.html#a1dd9f12ef11ed0a54d9e4337756e5da5',1,'read_met_nc_3d(int ncid, char *varname, char *varname2, ctl_t *ctl, met_t *met, float dest[EX][EY][EP], float scl, int init): libtrac.c']]], + ['read_5fmet_5fozone_25',['read_met_ozone',['../libtrac_8c.html#a9ee63e8a6c82ac0dc569255455a50da2',1,'read_met_ozone(met_t *met): libtrac.c'],['../libtrac_8h.html#a9ee63e8a6c82ac0dc569255455a50da2',1,'read_met_ozone(met_t *met): libtrac.c']]], + ['read_5fmet_5fpbl_26',['read_met_pbl',['../libtrac_8c.html#a5ea707d2282eb7750fd4e9b4de10c1e0',1,'read_met_pbl(met_t *met): libtrac.c'],['../libtrac_8h.html#a5ea707d2282eb7750fd4e9b4de10c1e0',1,'read_met_pbl(met_t *met): libtrac.c']]], + ['read_5fmet_5fperiodic_27',['read_met_periodic',['../libtrac_8c.html#a38f91765df8eb0a66fb3a6408dca0600',1,'read_met_periodic(met_t *met): libtrac.c'],['../libtrac_8h.html#a38f91765df8eb0a66fb3a6408dca0600',1,'read_met_periodic(met_t *met): libtrac.c']]], + ['read_5fmet_5fpv_28',['read_met_pv',['../libtrac_8h.html#ac2c90884cb02bf90f095ff36f41e020a',1,'read_met_pv(met_t *met): libtrac.c'],['../libtrac_8c.html#ac2c90884cb02bf90f095ff36f41e020a',1,'read_met_pv(met_t *met): libtrac.c']]], + ['read_5fmet_5fsample_29',['read_met_sample',['../libtrac_8c.html#a6a49f49a3a974cda1f9b0ff261d34c81',1,'read_met_sample(ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a6a49f49a3a974cda1f9b0ff261d34c81',1,'read_met_sample(ctl_t *ctl, met_t *met): libtrac.c']]], + ['read_5fmet_5fsurface_30',['read_met_surface',['../libtrac_8c.html#ab3e201b153aa01202bb286d650ef07c5',1,'read_met_surface(int ncid, met_t *met, ctl_t *ctl): libtrac.c'],['../libtrac_8h.html#ab3e201b153aa01202bb286d650ef07c5',1,'read_met_surface(int ncid, met_t *met, ctl_t *ctl): libtrac.c']]], + ['read_5fmet_5ftropo_31',['read_met_tropo',['../libtrac_8c.html#a66ef5f17dd5cbc26a4a456f7a0d6205c',1,'read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c'],['../libtrac_8h.html#a66ef5f17dd5cbc26a4a456f7a0d6205c',1,'read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met): libtrac.c']]], + ['read_5fobs_32',['read_obs',['../libtrac_8c.html#a8031d82ad41705d1a3662e25e87a3dff',1,'read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs): libtrac.c'],['../libtrac_8h.html#a8031d82ad41705d1a3662e25e87a3dff',1,'read_obs(char *filename, double *rt, double *rz, double *rlon, double *rlat, double *robs, int *nobs): libtrac.c']]] +]; diff --git a/doxygen/search/functions_d.html b/doxygen/search/functions_d.html new file mode 100644 index 0000000000..16464b42d0 --- /dev/null +++ b/doxygen/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_d.js b/doxygen/search/functions_d.js new file mode 100644 index 0000000000..ad0ccfc348 --- /dev/null +++ b/doxygen/search/functions_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['scan_5fctl_0',['scan_ctl',['../libtrac_8c.html#ad42c44913b360d00d45282d96dad493b',1,'scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value): libtrac.c'],['../libtrac_8h.html#ad42c44913b360d00d45282d96dad493b',1,'scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value): libtrac.c']]], + ['sedi_1',['sedi',['../libtrac_8c.html#a1b580107362b559d90f6766d340cc370',1,'sedi(const double p, const double T, const double rp, const double rhop): libtrac.c'],['../libtrac_8h.html#a1b580107362b559d90f6766d340cc370',1,'sedi(const double p, const double T, const double rp, const double rhop): libtrac.c']]], + ['spline_2',['spline',['../libtrac_8c.html#a62786d005ed312f3c9ba2fac7cd544fc',1,'spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method): libtrac.c'],['../libtrac_8h.html#a62786d005ed312f3c9ba2fac7cd544fc',1,'spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method): libtrac.c']]], + ['stddev_3',['stddev',['../libtrac_8c.html#a87088b5ccf95f03d986f1bdd570b5b2f',1,'stddev(const float *data, const int n): libtrac.c'],['../libtrac_8h.html#a87088b5ccf95f03d986f1bdd570b5b2f',1,'stddev(const float *data, const int n): libtrac.c']]], + ['sza_5fcalc_4',['sza_calc',['../libtrac_8c.html#ab0bfcf61833d71fb831d4faae03ce709',1,'sza_calc(const double sec, const double lon, const double lat): libtrac.c'],['../libtrac_8h.html#ab0bfcf61833d71fb831d4faae03ce709',1,'sza_calc(const double sec, const double lon, const double lat): libtrac.c']]] +]; diff --git a/doxygen/search/functions_e.html b/doxygen/search/functions_e.html new file mode 100644 index 0000000000..e55bbf1bbd --- /dev/null +++ b/doxygen/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_e.js b/doxygen/search/functions_e.js new file mode 100644 index 0000000000..caf1f8fd27 --- /dev/null +++ b/doxygen/search/functions_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['thrustsortwrapper_0',['thrustSortWrapper',['../libtrac_8h.html#acc094ec0cb892f3f3f973710811696b2',1,'libtrac.h']]], + ['time2jsec_1',['time2jsec',['../libtrac_8c.html#a578e7ebaa62304182de8fe7ddf144b8f',1,'time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec): libtrac.c'],['../libtrac_8h.html#a578e7ebaa62304182de8fe7ddf144b8f',1,'time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec): libtrac.c']]], + ['time_5ffrom_5ffilename_2',['time_from_filename',['../libtrac_8c.html#a98e813ec34f6121b5fdd8652d29b10dc',1,'time_from_filename(const char *filename, int offset): libtrac.c'],['../libtrac_8h.html#a98e813ec34f6121b5fdd8652d29b10dc',1,'time_from_filename(const char *filename, int offset): libtrac.c']]], + ['timer_3',['timer',['../libtrac_8c.html#a15d51008ea7a5446b5a532dc6cfaee2b',1,'timer(const char *name, const char *group, int output): libtrac.c'],['../libtrac_8h.html#a15d51008ea7a5446b5a532dc6cfaee2b',1,'timer(const char *name, const char *group, int output): libtrac.c']]], + ['tropo_5fweight_4',['tropo_weight',['../libtrac_8c.html#ae9583382a3025752eaaf56a1fcc3380f',1,'tropo_weight(const clim_t *clim, const double t, const double lat, const double p): libtrac.c'],['../libtrac_8h.html#ae9583382a3025752eaaf56a1fcc3380f',1,'tropo_weight(const clim_t *clim, const double t, const double lat, const double p): libtrac.c']]] +]; diff --git a/doxygen/search/functions_f.html b/doxygen/search/functions_f.html new file mode 100644 index 0000000000..07020a3f08 --- /dev/null +++ b/doxygen/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/functions_f.js b/doxygen/search/functions_f.js new file mode 100644 index 0000000000..088a974007 --- /dev/null +++ b/doxygen/search/functions_f.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['write_5fatm_0',['write_atm',['../libtrac_8h.html#a6f8a7ad670fbfe7dd4ed81f66695db6f',1,'write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8c.html#a6f8a7ad670fbfe7dd4ed81f66695db6f',1,'write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fatm_5fasc_1',['write_atm_asc',['../libtrac_8h.html#a35d13994c6a0e753baf0e0df39bc8645',1,'write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8c.html#a35d13994c6a0e753baf0e0df39bc8645',1,'write_atm_asc(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fatm_5fbin_2',['write_atm_bin',['../libtrac_8c.html#ac8f665b550ead41a8cc17da17132a63c',1,'write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#ac8f665b550ead41a8cc17da17132a63c',1,'write_atm_bin(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['write_5fatm_5fclams_3',['write_atm_clams',['../libtrac_8c.html#aa166d9de337fa3572477f102168b2907',1,'write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#aa166d9de337fa3572477f102168b2907',1,'write_atm_clams(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['write_5fatm_5fclams_5ftraj_4',['write_atm_clams_traj',['../libtrac_8c.html#a56873d15f57e990c702ec46e5016abd8',1,'write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a56873d15f57e990c702ec46e5016abd8',1,'write_atm_clams_traj(const char *dirname, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fatm_5fnc_5',['write_atm_nc',['../libtrac_8c.html#ad5e5574adb44a2bb04fc21c3e20a9e2a',1,'write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c'],['../libtrac_8h.html#ad5e5574adb44a2bb04fc21c3e20a9e2a',1,'write_atm_nc(const char *filename, ctl_t *ctl, atm_t *atm): libtrac.c']]], + ['write_5fcsi_6',['write_csi',['../libtrac_8c.html#a70ca26c59c2fca1fda54a29dfd3625b6',1,'write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a70ca26c59c2fca1fda54a29dfd3625b6',1,'write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fens_7',['write_ens',['../libtrac_8c.html#af5d8dfa5fe43fa2bf192ee4a7b821b1f',1,'write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#af5d8dfa5fe43fa2bf192ee4a7b821b1f',1,'write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fgrid_8',['write_grid',['../libtrac_8c.html#a59757e2569c3f96f57e291fdbe3ddc29',1,'write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a59757e2569c3f96f57e291fdbe3ddc29',1,'write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c']]], + ['write_5fgrid_5fasc_9',['write_grid_asc',['../libtrac_8c.html#a8bdd741d54d2111b3341ef04d826b475',1,'write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c'],['../libtrac_8h.html#a8bdd741d54d2111b3341ef04d826b475',1,'write_grid_asc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c']]], + ['write_5fgrid_5fnc_10',['write_grid_nc',['../libtrac_8c.html#ace302042852c62c50d34e6b1ef672bb6',1,'write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c'],['../libtrac_8h.html#ace302042852c62c50d34e6b1ef672bb6',1,'write_grid_nc(const char *filename, ctl_t *ctl, double *cd, double *mean[NQ], double *vmr_impl, double t, double *z, double *lon, double *lat, double *area, double dz, int *np): libtrac.c']]], + ['write_5fmet_11',['write_met',['../libtrac_8c.html#a044c272334c81fcf88f9f01c551c1bb1',1,'write_met(char *filename, ctl_t *ctl, met_t *met): libtrac.c'],['../libtrac_8h.html#a044c272334c81fcf88f9f01c551c1bb1',1,'write_met(char *filename, ctl_t *ctl, met_t *met): libtrac.c']]], + ['write_5fmet_5fbin_5f2d_12',['write_met_bin_2d',['../libtrac_8c.html#a463d151fd69782a7f31f4d535f377cb0',1,'write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname): libtrac.c'],['../libtrac_8h.html#a463d151fd69782a7f31f4d535f377cb0',1,'write_met_bin_2d(FILE *out, met_t *met, float var[EX][EY], char *varname): libtrac.c']]], + ['write_5fmet_5fbin_5f3d_13',['write_met_bin_3d',['../libtrac_8c.html#a277456b731e2a0a531884a8390250b03',1,'write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance): libtrac.c'],['../libtrac_8h.html#a277456b731e2a0a531884a8390250b03',1,'write_met_bin_3d(FILE *out, ctl_t *ctl, met_t *met, float var[EX][EY][EP], char *varname, int precision, double tolerance): libtrac.c']]], + ['write_5foutput_14',['write_output',['../trac_8c.html#aebf12c1e87751c2142d687d509921a19',1,'trac.c']]], + ['write_5fprof_15',['write_prof',['../libtrac_8c.html#af2d95b1eb426ead1c25fe5f198f476c9',1,'write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#af2d95b1eb426ead1c25fe5f198f476c9',1,'write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c']]], + ['write_5fsample_16',['write_sample',['../libtrac_8c.html#a684686ab1a1db21abc1c65b66d9db10a',1,'write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a684686ab1a1db21abc1c65b66d9db10a',1,'write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t): libtrac.c']]], + ['write_5fstation_17',['write_station',['../libtrac_8c.html#a6afa769139ff29d1aa185e317f2f69c7',1,'write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a6afa769139ff29d1aa185e317f2f69c7',1,'write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]], + ['write_5fvtk_18',['write_vtk',['../libtrac_8c.html#a2b06d8cbf3ebbe76a9c0e23db3eb5a41',1,'write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c'],['../libtrac_8h.html#a2b06d8cbf3ebbe76a9c0e23db3eb5a41',1,'write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t): libtrac.c']]] +]; diff --git a/doxygen/search/mag_sel.svg b/doxygen/search/mag_sel.svg new file mode 100644 index 0000000000..03626f64a0 --- /dev/null +++ b/doxygen/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/doxygen/search/nomatches.html b/doxygen/search/nomatches.html new file mode 100644 index 0000000000..2b9360b6bd --- /dev/null +++ b/doxygen/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
+
No Matches
+
+ + diff --git a/doxygen/search/pages_0.html b/doxygen/search/pages_0.html new file mode 100644 index 0000000000..1981712587 --- /dev/null +++ b/doxygen/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/pages_0.js b/doxygen/search/pages_0.js new file mode 100644 index 0000000000..b0c39582b3 --- /dev/null +++ b/doxygen/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mptrac_0',['MPTRAC',['../index.html',1,'']]] +]; diff --git a/doxygen/search/search.css b/doxygen/search/search.css new file mode 100644 index 0000000000..7f54c5c39e --- /dev/null +++ b/doxygen/search/search.css @@ -0,0 +1,274 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 0px; + width: 161px; + height: 24px; + z-index: 102; + right: 10px; + display: inline; + position: absolute; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + left:141px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doxygen/search/search.js b/doxygen/search/search.js new file mode 100644 index 0000000000..607f4e10c1 --- /dev/null +++ b/doxygen/search/search.js @@ -0,0 +1,802 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/doxygen/search/search_r.png b/doxygen/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/doxygen/search/searchdata.js b/doxygen/search/searchdata.js new file mode 100644 index 0000000000..d3e3fb4a13 --- /dev/null +++ b/doxygen/search/searchdata.js @@ -0,0 +1,33 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghijklmnopqrstuvwz", + 1: "acm", + 2: "acdjlmstw", + 3: "bcdfgijklmnqrstw", + 4: "abcdeghiklmnopqrstuvwz", + 5: "acdefghiklmnprstwz", + 6: "m" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "defines", + 6: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Data Structures", + 2: "Files", + 3: "Functions", + 4: "Variables", + 5: "Macros", + 6: "Pages" +}; + diff --git a/doxygen/search/variables_0.html b/doxygen/search/variables_0.html new file mode 100644 index 0000000000..fd893a69fe --- /dev/null +++ b/doxygen/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_0.js b/doxygen/search/variables_0.js new file mode 100644 index 0000000000..c7701d5fa8 --- /dev/null +++ b/doxygen/search/variables_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['advect_0',['advect',['../structctl__t.html#a8eb0ca94791f79405c3b49da924f386d',1,'ctl_t']]], + ['atm_5fbasename_1',['atm_basename',['../structctl__t.html#a8b2706a512ce6a279091d8ff1b192346',1,'ctl_t']]], + ['atm_5fdt_5fout_2',['atm_dt_out',['../structctl__t.html#aad4b256a00136fe4181077c2b02b0f45',1,'ctl_t']]], + ['atm_5ffilter_3',['atm_filter',['../structctl__t.html#a9279f2a56adc9780721e00e35bed2b3d',1,'ctl_t']]], + ['atm_5fgpfile_4',['atm_gpfile',['../structctl__t.html#a06975fa14d8c7f7813bf83fa4166f819',1,'ctl_t']]], + ['atm_5fstride_5',['atm_stride',['../structctl__t.html#aa98efec197e5a7bf0abd5f30ba44de72',1,'ctl_t']]], + ['atm_5ftype_6',['atm_type',['../structctl__t.html#a2509f56c50085b3d0f47c495da91b248',1,'ctl_t']]], + ['atm_5ftype_5fout_7',['atm_type_out',['../structctl__t.html#a5d5c0f111d122cfcc4e3de57bc1731cd',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_1.html b/doxygen/search/variables_1.html new file mode 100644 index 0000000000..5f8e440026 --- /dev/null +++ b/doxygen/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_1.js b/doxygen/search/variables_1.js new file mode 100644 index 0000000000..f1c23a18ba --- /dev/null +++ b/doxygen/search/variables_1.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['balloon_0',['balloon',['../structctl__t.html#a1aee054abc8c3fbaa1f6828f78f4e2f5',1,'ctl_t']]], + ['bound_5fdps_1',['bound_dps',['../structctl__t.html#a9e31767a1a873f2829a00cb15c0ae421',1,'ctl_t']]], + ['bound_5fdzs_2',['bound_dzs',['../structctl__t.html#a0c09fef6dfe4daa19ad717cd1e1b77ec',1,'ctl_t']]], + ['bound_5flat0_3',['bound_lat0',['../structctl__t.html#a686563c65fdd2d03d15cfdddf294584c',1,'ctl_t']]], + ['bound_5flat1_4',['bound_lat1',['../structctl__t.html#a3488ff97025f12fbe161d85b09ddc33e',1,'ctl_t']]], + ['bound_5fmass_5',['bound_mass',['../structctl__t.html#a25a01ebb0fcff6040d0003b88b13cdec',1,'ctl_t']]], + ['bound_5fmass_5ftrend_6',['bound_mass_trend',['../structctl__t.html#a9feaa00a9e7de02f8bd661d735b8b280',1,'ctl_t']]], + ['bound_5fp0_7',['bound_p0',['../structctl__t.html#aa1419e1cd3c485e89a5166c7e1f19caf',1,'ctl_t']]], + ['bound_5fp1_8',['bound_p1',['../structctl__t.html#a44cbf78eb4bbb11036922bc40faa2b4b',1,'ctl_t']]], + ['bound_5fpbl_9',['bound_pbl',['../structctl__t.html#a3e924116d2599fb79a734a74da11e8a2',1,'ctl_t']]], + ['bound_5fvmr_10',['bound_vmr',['../structctl__t.html#a4f7014dad580e4e745c910187468807c',1,'ctl_t']]], + ['bound_5fvmr_5ftrend_11',['bound_vmr_trend',['../structctl__t.html#a7a4b2ae4a45234a74df45b5adbe513cd',1,'ctl_t']]], + ['bound_5fzetas_12',['bound_zetas',['../structctl__t.html#ae7b26fcc7af034afe6144631986213ea',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_10.html b/doxygen/search/variables_10.html new file mode 100644 index 0000000000..943cbd128e --- /dev/null +++ b/doxygen/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_10.js b/doxygen/search/variables_10.js new file mode 100644 index 0000000000..d758226b20 --- /dev/null +++ b/doxygen/search/variables_10.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['sample_5fbasename_0',['sample_basename',['../structctl__t.html#aa974f483b6ccf931730d2d929eee2b51',1,'ctl_t']]], + ['sample_5fdx_1',['sample_dx',['../structctl__t.html#af5696aca68db24fedc7bd265d4eb6d52',1,'ctl_t']]], + ['sample_5fdz_2',['sample_dz',['../structctl__t.html#a857fdeffae577ddb41500ef0c875020e',1,'ctl_t']]], + ['sample_5fkernel_3',['sample_kernel',['../structctl__t.html#a2c08850b82591f935ab0c498217b3d65',1,'ctl_t']]], + ['sample_5fobsfile_4',['sample_obsfile',['../structctl__t.html#a64cde624042ea4b8d6b841660ff28546',1,'ctl_t']]], + ['sf6_5',['sf6',['../structclim__t.html#a787e837b08fea0fce0c6fe04140fb393',1,'clim_t']]], + ['sort_5fdt_6',['sort_dt',['../structctl__t.html#a126d9eac2687f4aac95ab17fff14dd07',1,'ctl_t']]], + ['species_7',['species',['../structctl__t.html#a20f21cdf4fea1cfc948fc1bcc1f0a520',1,'ctl_t']]], + ['sst_8',['sst',['../structmet__t.html#a04c8115782b3dc6697111fdeb7c8f860',1,'met_t']]], + ['stat_5fbasename_9',['stat_basename',['../structctl__t.html#af784e18ace4cd191ae100a7df4955b6b',1,'ctl_t']]], + ['stat_5flat_10',['stat_lat',['../structctl__t.html#a995505c06bd35ecba593f807c1eda591',1,'ctl_t']]], + ['stat_5flon_11',['stat_lon',['../structctl__t.html#a0fafec241b4112fa64cb69fe09403ea8',1,'ctl_t']]], + ['stat_5fr_12',['stat_r',['../structctl__t.html#a149be614c5eafb380c3c9f3ad6599971',1,'ctl_t']]], + ['stat_5ft0_13',['stat_t0',['../structctl__t.html#a5721f8afc611b607db92678bb063f42d',1,'ctl_t']]], + ['stat_5ft1_14',['stat_t1',['../structctl__t.html#a370c0a527e721ea64cd67685abd7bc42',1,'ctl_t']]], + ['sza_15',['sza',['../structclim__photo__t.html#a0954705edbe1ca70559f1adeb231a685',1,'clim_photo_t']]] +]; diff --git a/doxygen/search/variables_11.html b/doxygen/search/variables_11.html new file mode 100644 index 0000000000..47f1ec5c4d --- /dev/null +++ b/doxygen/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_11.js b/doxygen/search/variables_11.js new file mode 100644 index 0000000000..edc93b782e --- /dev/null +++ b/doxygen/search/variables_11.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['t_0',['t',['../structmet__t.html#a60fe66c30f0f0b5abdb46f220e3137cf',1,'met_t']]], + ['t_5fstart_1',['t_start',['../structctl__t.html#aee3354b4dacf5d89944ae0b7faaa12c6',1,'ctl_t']]], + ['t_5fstop_2',['t_stop',['../structctl__t.html#a649752813806c995ee09923a44d0e974',1,'ctl_t']]], + ['tdec_5fstrat_3',['tdec_strat',['../structctl__t.html#a86977d0f97ee8db6974efc896822a7db',1,'ctl_t']]], + ['tdec_5ftrop_4',['tdec_trop',['../structctl__t.html#af276258494c92c24ab0de0b54759e9a9',1,'ctl_t']]], + ['time_5',['time',['../structatm__t.html#a05da6b99657d420d7bf4b37a392b048c',1,'atm_t::time()'],['../structclim__ts__t.html#a213272025e3c95dfe779d2e8abf0bcf2',1,'clim_ts_t::time()'],['../structclim__zm__t.html#a06e634b21e38187593b011c715afa57a',1,'clim_zm_t::time()'],['../structmet__t.html#acf9d509f67dbc7ad8119d40a2757285f',1,'met_t::time()']]], + ['tracer_5fchem_6',['tracer_chem',['../structctl__t.html#a7144e94dd5ef6f75941dd35a82eac9bd',1,'ctl_t']]], + ['tropo_7',['tropo',['../structclim__t.html#ad357829e5b267a357fce1a27518e271f',1,'clim_t']]], + ['tropo_5flat_8',['tropo_lat',['../structclim__t.html#aaaee23fbfbb65c1eb77daad5a003defa',1,'clim_t']]], + ['tropo_5fnlat_9',['tropo_nlat',['../structclim__t.html#abe42300dd939b2409b3dbf37550e58f6',1,'clim_t']]], + ['tropo_5fntime_10',['tropo_ntime',['../structclim__t.html#a71b9c5664f017ee5f36db4aae204328a',1,'clim_t']]], + ['tropo_5ftime_11',['tropo_time',['../structclim__t.html#ae2845f40329df2cf90838d1684617ada',1,'clim_t']]], + ['ts_12',['ts',['../structmet__t.html#a61ef93fdd727e61639dc6408a4573149',1,'met_t']]], + ['tt_13',['tt',['../structmet__t.html#a9677a606f7850c8143f698e9fb15273f',1,'met_t']]], + ['turb_5fdx_5fstrat_14',['turb_dx_strat',['../structctl__t.html#a3173408e0e9c39c17c39367aee1c5641',1,'ctl_t']]], + ['turb_5fdx_5ftrop_15',['turb_dx_trop',['../structctl__t.html#a37abd3e7cbc687a515ba1bbac5ec77f2',1,'ctl_t']]], + ['turb_5fdz_5fstrat_16',['turb_dz_strat',['../structctl__t.html#ae797044bfedbdf7e058c6fb02195e586',1,'ctl_t']]], + ['turb_5fdz_5ftrop_17',['turb_dz_trop',['../structctl__t.html#a21f2e759e0c5d8cfae2ba9ed551c768e',1,'ctl_t']]], + ['turb_5fmesox_18',['turb_mesox',['../structctl__t.html#a4c410e0dddb3e5a5cad1ca66f99967cd',1,'ctl_t']]], + ['turb_5fmesoz_19',['turb_mesoz',['../structctl__t.html#a22edf991ef6c26556d13aa822a65da63',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_12.html b/doxygen/search/variables_12.html new file mode 100644 index 0000000000..2842f6648b --- /dev/null +++ b/doxygen/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_12.js b/doxygen/search/variables_12.js new file mode 100644 index 0000000000..5b07ee4f78 --- /dev/null +++ b/doxygen/search/variables_12.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['u_0',['u',['../structmet__t.html#a68b715eb9e5fa3a9c8f400e0c5667cc9',1,'met_t']]], + ['ul_1',['ul',['../structmet__t.html#a760447bb9eca0826b3705f30a9b8f165',1,'met_t']]], + ['us_2',['us',['../structmet__t.html#a4242ff2a85d48089d15fd5645923ee36',1,'met_t']]], + ['uvwp_3',['uvwp',['../structcache__t.html#aaa7f03cf8194b0babb1d9c14dcabc84e',1,'cache_t']]] +]; diff --git a/doxygen/search/variables_13.html b/doxygen/search/variables_13.html new file mode 100644 index 0000000000..c664705753 --- /dev/null +++ b/doxygen/search/variables_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_13.js b/doxygen/search/variables_13.js new file mode 100644 index 0000000000..1d74d4ceb2 --- /dev/null +++ b/doxygen/search/variables_13.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['v_0',['v',['../structmet__t.html#abc29d5fbea8f527b849837efacd76eaa',1,'met_t']]], + ['vert_5fcoord_5fap_1',['vert_coord_ap',['../structctl__t.html#a02ac97541bf7bf01a68fddea04107f41',1,'ctl_t']]], + ['vert_5fcoord_5fmet_2',['vert_coord_met',['../structctl__t.html#a233f535341a29d5a05357ecf99ec2cd4',1,'ctl_t']]], + ['vl_3',['vl',['../structmet__t.html#a4b4aaeb8f39dea0fb511744f84535303',1,'met_t']]], + ['vmr_4',['vmr',['../structclim__ts__t.html#a0a87d48606ea13114cea09194ea0ddd4',1,'clim_ts_t::vmr()'],['../structclim__zm__t.html#a893d077ed8733dc568f87950ce40f5c6',1,'clim_zm_t::vmr()']]], + ['vs_5',['vs',['../structmet__t.html#aa6379067afe890ea9fe7146a1668f0dc',1,'met_t']]], + ['vtk_5fbasename_6',['vtk_basename',['../structctl__t.html#ac98ba3f8bc8b26ca6499ac79603de8db',1,'ctl_t']]], + ['vtk_5fdt_5fout_7',['vtk_dt_out',['../structctl__t.html#a64262df06556e7055245b9f96d317f92',1,'ctl_t']]], + ['vtk_5foffset_8',['vtk_offset',['../structctl__t.html#a78c2f172f67203ddfc2dfb9db913f51d',1,'ctl_t']]], + ['vtk_5fscale_9',['vtk_scale',['../structctl__t.html#ad1c66733dc34e0eb4bff6dea1ad9aefe',1,'ctl_t']]], + ['vtk_5fsphere_10',['vtk_sphere',['../structctl__t.html#a17e569920568025af14e66d706651a18',1,'ctl_t']]], + ['vtk_5fstride_11',['vtk_stride',['../structctl__t.html#af662f58ab4cdf46b8e28945ca541a9c1',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_14.html b/doxygen/search/variables_14.html new file mode 100644 index 0000000000..02b2384c0c --- /dev/null +++ b/doxygen/search/variables_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_14.js b/doxygen/search/variables_14.js new file mode 100644 index 0000000000..6e735e4dd4 --- /dev/null +++ b/doxygen/search/variables_14.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['w_0',['w',['../structmet__t.html#a210cc808698557c4824a4a8d7908fe73',1,'met_t']]], + ['wet_5fdepo_5fbc_5fa_1',['wet_depo_bc_a',['../structctl__t.html#a1550c0159a3a3374a1ebccef46604ad8',1,'ctl_t']]], + ['wet_5fdepo_5fbc_5fb_2',['wet_depo_bc_b',['../structctl__t.html#ae49e5d87420514bf64f3150e75c8b07f',1,'ctl_t']]], + ['wet_5fdepo_5fbc_5fh_3',['wet_depo_bc_h',['../structctl__t.html#a9a0cd464bdd8eac81b99b88a93e21536',1,'ctl_t']]], + ['wet_5fdepo_5fbc_5fret_5fratio_4',['wet_depo_bc_ret_ratio',['../structctl__t.html#ac2b6871df347638e7154410038690871',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fa_5',['wet_depo_ic_a',['../structctl__t.html#a032306df4b235c20af95d5b30edc694a',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fb_6',['wet_depo_ic_b',['../structctl__t.html#ae48763f1caad155cb48c8bcb536061c0',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fh_7',['wet_depo_ic_h',['../structctl__t.html#a85a0e04fc184e8202b06d4c4e5546327',1,'ctl_t']]], + ['wet_5fdepo_5fic_5fret_5fratio_8',['wet_depo_ic_ret_ratio',['../structctl__t.html#adfd76ffde125821097d58b4b3978a355',1,'ctl_t']]], + ['wet_5fdepo_5fpre_9',['wet_depo_pre',['../structctl__t.html#a96e4c97eb8f6a2b81d7ddb7a3ce4ae81',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_15.html b/doxygen/search/variables_15.html new file mode 100644 index 0000000000..e635f67c73 --- /dev/null +++ b/doxygen/search/variables_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_15.js b/doxygen/search/variables_15.js new file mode 100644 index 0000000000..b7283f898c --- /dev/null +++ b/doxygen/search/variables_15.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['z_0',['z',['../structmet__t.html#aaaa04cf36044fcc02d518fe667d63bb3',1,'met_t']]], + ['zeta_1',['zeta',['../structmet__t.html#af23740c42f5085dbbf245004ea1ac3d9',1,'met_t']]], + ['zeta_5fdot_2',['zeta_dot',['../structmet__t.html#ab9f350b57a390ecf0eb91ddd360cfb0e',1,'met_t']]], + ['zeta_5fdotl_3',['zeta_dotl',['../structmet__t.html#a1153b31e69a6542d2ee83d60c38f7bb1',1,'met_t']]], + ['zetal_4',['zetal',['../structmet__t.html#afdf65f900ff556c3d4faef4443e3f40f',1,'met_t']]], + ['zs_5',['zs',['../structmet__t.html#a52f25b39ae97c30393755cefc303ccd0',1,'met_t']]], + ['zt_6',['zt',['../structmet__t.html#a043690c89804f40d4a8940b7d3393707',1,'met_t']]] +]; diff --git a/doxygen/search/variables_2.html b/doxygen/search/variables_2.html new file mode 100644 index 0000000000..77a7f48122 --- /dev/null +++ b/doxygen/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_2.js b/doxygen/search/variables_2.js new file mode 100644 index 0000000000..40599fd267 --- /dev/null +++ b/doxygen/search/variables_2.js @@ -0,0 +1,55 @@ +var searchData= +[ + ['cape_0',['cape',['../structmet__t.html#a1db66ae86edf896a545c0332dfeabb0f',1,'met_t']]], + ['cc_1',['cc',['../structmet__t.html#a5d24cf701c941649d83adad1e058898f',1,'met_t']]], + ['ccl2f2_2',['ccl2f2',['../structclim__t.html#a0d489a65c8c1cee839f3467a1c51c401',1,'clim_t::ccl2f2()'],['../structclim__photo__t.html#a33f019b0c8014e92822dd8e25481284a',1,'clim_photo_t::ccl2f2()']]], + ['ccl3f_3',['ccl3f',['../structclim__photo__t.html#a6b698126dd4714ceb22e8d8c3dfdcf8e',1,'clim_photo_t::ccl3f()'],['../structclim__t.html#a84f795c6c4934f9e215b74dffa177685',1,'clim_t::ccl3f()']]], + ['ccl4_4',['ccl4',['../structclim__photo__t.html#ab827be0252e456de341c167ab5e15bab',1,'clim_photo_t::ccl4()'],['../structclim__t.html#a7c4cf5c511a125b4e3bc3731157037f3',1,'clim_t::ccl4()']]], + ['chemgrid_5flat0_5',['chemgrid_lat0',['../structctl__t.html#a189dce731fb0c3210161ca328a93a327',1,'ctl_t']]], + ['chemgrid_5flat1_6',['chemgrid_lat1',['../structctl__t.html#a2e99a15cc98b378ffc96a6df73fe6048',1,'ctl_t']]], + ['chemgrid_5flon0_7',['chemgrid_lon0',['../structctl__t.html#a3e1bc34453198d5854a7f0271f503f7c',1,'ctl_t']]], + ['chemgrid_5flon1_8',['chemgrid_lon1',['../structctl__t.html#a4b601fe8e527664c96b12b9eafee4762',1,'ctl_t']]], + ['chemgrid_5fnx_9',['chemgrid_nx',['../structctl__t.html#ab7ed13e186108a02ff64f4bccc4ec775',1,'ctl_t']]], + ['chemgrid_5fny_10',['chemgrid_ny',['../structctl__t.html#ac43809de3c73cb9793c567813452cfca',1,'ctl_t']]], + ['chemgrid_5fnz_11',['chemgrid_nz',['../structctl__t.html#a9fab7dd94afddfff20c4596605e3f18a',1,'ctl_t']]], + ['chemgrid_5fz0_12',['chemgrid_z0',['../structctl__t.html#a1834cd1e787e3aa2f391cd942a7f37c7',1,'ctl_t']]], + ['chemgrid_5fz1_13',['chemgrid_z1',['../structctl__t.html#a080fa58f76fcfad970b76ca112706154',1,'ctl_t']]], + ['chunkszhint_14',['chunkszhint',['../structctl__t.html#abcfda1d37b13a5a28b13988a9673b8df',1,'ctl_t']]], + ['cin_15',['cin',['../structmet__t.html#a827c930acd681d82336766f6744ac763',1,'met_t']]], + ['cl_16',['cl',['../structmet__t.html#ae45079d4c0137fa4416dd42ca1f117cd',1,'met_t']]], + ['clams_5fmet_5fdata_17',['clams_met_data',['../structctl__t.html#a10b1f23ec13eb1bf965890a50551aa9e',1,'ctl_t']]], + ['clim_5fccl2f2_5ftimeseries_18',['clim_ccl2f2_timeseries',['../structctl__t.html#ad262595cbb226c73adcde30a4b7d3bf9',1,'ctl_t']]], + ['clim_5fccl3f_5ftimeseries_19',['clim_ccl3f_timeseries',['../structctl__t.html#ac6e501659bef71188874bf710d510635',1,'ctl_t']]], + ['clim_5fccl4_5ftimeseries_20',['clim_ccl4_timeseries',['../structctl__t.html#aa17140ad321005a763259a2ae7dcd858',1,'ctl_t']]], + ['clim_5fh2o2_5ffilename_21',['clim_h2o2_filename',['../structctl__t.html#a711670450c0aa59e4ae6cc7b199ba63e',1,'ctl_t']]], + ['clim_5fhno3_5ffilename_22',['clim_hno3_filename',['../structctl__t.html#adcb60205ef46f49695f9f06257dc0346',1,'ctl_t']]], + ['clim_5fho2_5ffilename_23',['clim_ho2_filename',['../structctl__t.html#a2d8c402293e6879df38c55a4241b1ad5',1,'ctl_t']]], + ['clim_5fn2o_5ftimeseries_24',['clim_n2o_timeseries',['../structctl__t.html#a0bdff7541fde7bd508072c44279519fd',1,'ctl_t']]], + ['clim_5fo1d_5ffilename_25',['clim_o1d_filename',['../structctl__t.html#a587e33a3eebf5c424f67d94200f598ff',1,'ctl_t']]], + ['clim_5fo3_5ffilename_26',['clim_o3_filename',['../structctl__t.html#ac348a5d2c94d9e46c64904741f4726d3',1,'ctl_t']]], + ['clim_5foh_5ffilename_27',['clim_oh_filename',['../structctl__t.html#aa7ad8811329e690f4a3c4431b16f8d19',1,'ctl_t']]], + ['clim_5fphoto_28',['clim_photo',['../structctl__t.html#a5a52a92586476c70f20788fd481d98f3',1,'ctl_t']]], + ['clim_5fsf6_5ftimeseries_29',['clim_sf6_timeseries',['../structctl__t.html#ab08651e92983408ef0bebfe875c59851',1,'ctl_t']]], + ['conv_5fcape_30',['conv_cape',['../structctl__t.html#a18c1107433d1e9c7867025e8a0fbe6d2',1,'ctl_t']]], + ['conv_5fcin_31',['conv_cin',['../structctl__t.html#ad6e15e5c23446b0ac2f5f48f70f575a1',1,'ctl_t']]], + ['conv_5fdt_32',['conv_dt',['../structctl__t.html#a64cdca0c6817ba378fbde7385b8ee279',1,'ctl_t']]], + ['conv_5fmix_33',['conv_mix',['../structctl__t.html#afbf21769a03f5d2b7eaaa992072b62b1',1,'ctl_t']]], + ['conv_5fmix_5fbot_34',['conv_mix_bot',['../structctl__t.html#a4cae2bde07e32cb05bfaf56c0ffe8044',1,'ctl_t']]], + ['conv_5fmix_5ftop_35',['conv_mix_top',['../structctl__t.html#a89c3c8786645ee7cfa48ffa73b710167',1,'ctl_t']]], + ['cpl_5fzeta_5fand_5fpress_5fmodules_36',['cpl_zeta_and_press_modules',['../structctl__t.html#a701fc0e40f8523d1bd5d20162a896cf1',1,'ctl_t']]], + ['csi_5fbasename_37',['csi_basename',['../structctl__t.html#a605a1904f8ff49d178ac462f8fbecc3a',1,'ctl_t']]], + ['csi_5fdt_5fout_38',['csi_dt_out',['../structctl__t.html#a466eb100ca9ab4f5f605e14a27a61f1d',1,'ctl_t']]], + ['csi_5fkernel_39',['csi_kernel',['../structctl__t.html#a378603f0fe74b4236f45f78bf4bc02dc',1,'ctl_t']]], + ['csi_5flat0_40',['csi_lat0',['../structctl__t.html#a219b7e2f9f53597e84a87d349e32bcb5',1,'ctl_t']]], + ['csi_5flat1_41',['csi_lat1',['../structctl__t.html#a015b2de1c61e25a2e8abb0fba4a05c24',1,'ctl_t']]], + ['csi_5flon0_42',['csi_lon0',['../structctl__t.html#a396d8bbb52aaf8408e90c207aa7f7312',1,'ctl_t']]], + ['csi_5flon1_43',['csi_lon1',['../structctl__t.html#a0cd8031f829953cb90912d9eecfe67b3',1,'ctl_t']]], + ['csi_5fmodmin_44',['csi_modmin',['../structctl__t.html#a4aa05c61a9c0c1d0f3737f2190b1ebdc',1,'ctl_t']]], + ['csi_5fnx_45',['csi_nx',['../structctl__t.html#a21159a48d018215b1bb5af62214b9063',1,'ctl_t']]], + ['csi_5fny_46',['csi_ny',['../structctl__t.html#a17759fe1c0d11bb19777559e24808d40',1,'ctl_t']]], + ['csi_5fnz_47',['csi_nz',['../structctl__t.html#a0409a87481145b01eb3fd61042f35abc',1,'ctl_t']]], + ['csi_5fobsfile_48',['csi_obsfile',['../structctl__t.html#a01ea628e12cf0025aa0731f52d13da10',1,'ctl_t']]], + ['csi_5fobsmin_49',['csi_obsmin',['../structctl__t.html#a0a450754f8661100135aa790ea26df16',1,'ctl_t']]], + ['csi_5fz0_50',['csi_z0',['../structctl__t.html#a98aa14528bd795eaf31eae63a33c630f',1,'ctl_t']]], + ['csi_5fz1_51',['csi_z1',['../structctl__t.html#a55a1915a7e8ef2a91a2553a8393b4329',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_3.html b/doxygen/search/variables_3.html new file mode 100644 index 0000000000..3ee62baa9a --- /dev/null +++ b/doxygen/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_3.js b/doxygen/search/variables_3.js new file mode 100644 index 0000000000..7d6d3a79f0 --- /dev/null +++ b/doxygen/search/variables_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['direction_0',['direction',['../structctl__t.html#a1a6d5b4003ebd8f9c77b3b45933779e6',1,'ctl_t']]], + ['dry_5fdepo_5fdp_1',['dry_depo_dp',['../structctl__t.html#a60da7ce4a7b610712585fde03773bf7f',1,'ctl_t']]], + ['dry_5fdepo_5fvdep_2',['dry_depo_vdep',['../structctl__t.html#acadcfbb95971c47b377fbd4443c68723',1,'ctl_t']]], + ['dt_5fmet_3',['dt_met',['../structctl__t.html#a2d7b8100a2949004420841d81bcc6ab4',1,'ctl_t']]], + ['dt_5fmod_4',['dt_mod',['../structctl__t.html#a718d3200f867d9018369f12f66464807',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_4.html b/doxygen/search/variables_4.html new file mode 100644 index 0000000000..640713f6f1 --- /dev/null +++ b/doxygen/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_4.js b/doxygen/search/variables_4.js new file mode 100644 index 0000000000..0dd320f2d0 --- /dev/null +++ b/doxygen/search/variables_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ens_5fbasename_0',['ens_basename',['../structctl__t.html#a94b0a51a5281e718f4fbd38bf5b4d340',1,'ctl_t']]], + ['ens_5fdt_5fout_1',['ens_dt_out',['../structctl__t.html#aa943823dbd2a4b5fa38e7d0cf8f9ccb0',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_5.html b/doxygen/search/variables_5.html new file mode 100644 index 0000000000..7b2ba970a8 --- /dev/null +++ b/doxygen/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_5.js b/doxygen/search/variables_5.js new file mode 100644 index 0000000000..f4daa1d9dd --- /dev/null +++ b/doxygen/search/variables_5.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['grid_5fbasename_0',['grid_basename',['../structctl__t.html#a65f18a2f1aa44522f78fc364a0ffaf68',1,'ctl_t']]], + ['grid_5fdt_5fout_1',['grid_dt_out',['../structctl__t.html#afe05b16d3cfa511feb4673706f6606ff',1,'ctl_t']]], + ['grid_5fgpfile_2',['grid_gpfile',['../structctl__t.html#a30f012c96cb05d5a99004d9ce032277c',1,'ctl_t']]], + ['grid_5fkernel_3',['grid_kernel',['../structctl__t.html#a4dc20e7eacf1e45a61ed1910e0e88d1b',1,'ctl_t']]], + ['grid_5flat0_4',['grid_lat0',['../structctl__t.html#a25bb036fcbb73ed2452d42212cd3c09f',1,'ctl_t']]], + ['grid_5flat1_5',['grid_lat1',['../structctl__t.html#af89d6bfcdbc4250e2d30dd7e453b3048',1,'ctl_t']]], + ['grid_5flon0_6',['grid_lon0',['../structctl__t.html#a2b398376ae2ebe6e02a34465367943de',1,'ctl_t']]], + ['grid_5flon1_7',['grid_lon1',['../structctl__t.html#a895d5f67cd12ab54481ebfa36f359b77',1,'ctl_t']]], + ['grid_5fnx_8',['grid_nx',['../structctl__t.html#a235ea5cb832f13023339bafe9eeffd20',1,'ctl_t']]], + ['grid_5fny_9',['grid_ny',['../structctl__t.html#a9a533d295b5533e6a4ca9197694186c5',1,'ctl_t']]], + ['grid_5fnz_10',['grid_nz',['../structctl__t.html#aa315cd84c43255d483d552a0d2c6d18f',1,'ctl_t']]], + ['grid_5fsparse_11',['grid_sparse',['../structctl__t.html#ac7a96c566e02c9e88a73e53248a89cb5',1,'ctl_t']]], + ['grid_5ftype_12',['grid_type',['../structctl__t.html#a37c580065a63c21f5421ee78e3c4b3d9',1,'ctl_t']]], + ['grid_5fz0_13',['grid_z0',['../structctl__t.html#a0060ec5c97cb80d4721c3970c68012f5',1,'ctl_t']]], + ['grid_5fz1_14',['grid_z1',['../structctl__t.html#a1a5460bac04c277c0e66efc9f2f85810',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_6.html b/doxygen/search/variables_6.html new file mode 100644 index 0000000000..fb1de8f88d --- /dev/null +++ b/doxygen/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_6.js b/doxygen/search/variables_6.js new file mode 100644 index 0000000000..211ac2b1d7 --- /dev/null +++ b/doxygen/search/variables_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['h2o_0',['h2o',['../structmet__t.html#a135f6e1c898c2d206d9a032de0e7b579',1,'met_t']]], + ['h2o2_1',['h2o2',['../structclim__t.html#ab7f787719be51524b1389bb0bf347934',1,'clim_t']]], + ['h2o2_5fchem_5freaction_2',['h2o2_chem_reaction',['../structctl__t.html#abfeedfc5c515f8d03de56c2cd06aa633',1,'ctl_t']]], + ['h2ot_3',['h2ot',['../structmet__t.html#ac87fdccf57a65247062baccf2c2e85e8',1,'met_t']]], + ['hno3_4',['hno3',['../structclim__t.html#a4fdb5d9229fc193f2e526a6aebf97558',1,'clim_t']]], + ['ho2_5',['ho2',['../structclim__t.html#a2ba0d75a451d9382ba20ec54d1784e05',1,'clim_t']]], + ['hybrid_6',['hybrid',['../structmet__t.html#a2a9a988f67219ff510846b9cd989055d',1,'met_t']]] +]; diff --git a/doxygen/search/variables_7.html b/doxygen/search/variables_7.html new file mode 100644 index 0000000000..cf8dcf42d4 --- /dev/null +++ b/doxygen/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_7.js b/doxygen/search/variables_7.js new file mode 100644 index 0000000000..3652dc9f73 --- /dev/null +++ b/doxygen/search/variables_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['iso_5fn_0',['iso_n',['../structcache__t.html#a4df585fc5eb4099f8cd54d77703ebf45',1,'cache_t']]], + ['iso_5fps_1',['iso_ps',['../structcache__t.html#a8ce0e8a193211fc8461b2043daf9b17c',1,'cache_t']]], + ['iso_5fts_2',['iso_ts',['../structcache__t.html#a4039e32188d12d6a86086d236676d993',1,'cache_t']]], + ['iso_5fvar_3',['iso_var',['../structcache__t.html#ac3b83913cce35ef5ec582c54dce239d0',1,'cache_t']]], + ['isosurf_4',['isosurf',['../structctl__t.html#a4438b70bfa3ff0fe6cc36f3d0086e301',1,'ctl_t']]], + ['iwc_5',['iwc',['../structmet__t.html#abf312f05407920f9ac855cede012efe2',1,'met_t']]] +]; diff --git a/doxygen/search/variables_8.html b/doxygen/search/variables_8.html new file mode 100644 index 0000000000..88cbb01e8c --- /dev/null +++ b/doxygen/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_8.js b/doxygen/search/variables_8.js new file mode 100644 index 0000000000..395820be4a --- /dev/null +++ b/doxygen/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kpp_5fchem_0',['kpp_chem',['../structctl__t.html#a92e02214da035478761cdcd7622780b1',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_9.html b/doxygen/search/variables_9.html new file mode 100644 index 0000000000..36c49bdd64 --- /dev/null +++ b/doxygen/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_9.js b/doxygen/search/variables_9.js new file mode 100644 index 0000000000..4ca67e00fc --- /dev/null +++ b/doxygen/search/variables_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['lat_0',['lat',['../structatm__t.html#a25ef7d304d5cfa54c5af30192620373b',1,'atm_t::lat()'],['../structclim__zm__t.html#aff242585ab3f0df6832c7417d90d8f2f',1,'clim_zm_t::lat()'],['../structmet__t.html#af7b2d03415a8164a3e0a29da55a9f371',1,'met_t::lat()']]], + ['lon_1',['lon',['../structatm__t.html#a2c8ffb598109120ed6d1f8e79aeb3ff8',1,'atm_t::lon()'],['../structmet__t.html#a85df96bff71dfa55576a995234a87b8f',1,'met_t::lon()']]], + ['lsm_2',['lsm',['../structmet__t.html#abe8e0b1c2d6241fa20e663db28e74445',1,'met_t']]], + ['lwc_3',['lwc',['../structmet__t.html#a40590e0c0c66a5a1f6903a474de87ee0',1,'met_t']]] +]; diff --git a/doxygen/search/variables_a.html b/doxygen/search/variables_a.html new file mode 100644 index 0000000000..0005c6aa63 --- /dev/null +++ b/doxygen/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_a.js b/doxygen/search/variables_a.js new file mode 100644 index 0000000000..e2cd6c6e00 --- /dev/null +++ b/doxygen/search/variables_a.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['met_5fcache_0',['met_cache',['../structctl__t.html#a7ae3a516b2b17723a02f5e0627d886c2',1,'ctl_t']]], + ['met_5fcloud_1',['met_cloud',['../structctl__t.html#a7bf33ce79322be0f34def9df722a2bfd',1,'ctl_t']]], + ['met_5fcloud_5fmin_2',['met_cloud_min',['../structctl__t.html#a8b64ba2d0f67c4352ae9bfc6d3be1b78',1,'ctl_t']]], + ['met_5fconvention_3',['met_convention',['../structctl__t.html#a6d866e961e374a254d7dc52ea52cb3db',1,'ctl_t']]], + ['met_5fdetrend_4',['met_detrend',['../structctl__t.html#a9bc04b87ec1a0e2403117d639f6c1416',1,'ctl_t']]], + ['met_5fdp_5',['met_dp',['../structctl__t.html#a1eb5d7699fd84b8522a1d666d0851fad',1,'ctl_t']]], + ['met_5fdt_5fout_6',['met_dt_out',['../structctl__t.html#a1f07329a9333e6af8f00ff9727d774ce',1,'ctl_t']]], + ['met_5fdx_7',['met_dx',['../structctl__t.html#a6b03cd434f6f12efc60dc4b8d366d6c7',1,'ctl_t']]], + ['met_5fdy_8',['met_dy',['../structctl__t.html#ae4da60e71dcd75d1b55f66036867f225',1,'ctl_t']]], + ['met_5fgeopot_5fsx_9',['met_geopot_sx',['../structctl__t.html#a416596b692cca87f14e83f851db35e29',1,'ctl_t']]], + ['met_5fgeopot_5fsy_10',['met_geopot_sy',['../structctl__t.html#a2ec0ba6ad9f46184228f1a1784596218',1,'ctl_t']]], + ['met_5fnc_5fscale_11',['met_nc_scale',['../structctl__t.html#a034e61c3566760c5ebe4e16f3f3c3021',1,'ctl_t']]], + ['met_5fnp_12',['met_np',['../structctl__t.html#acd95a4753595490c2723383bd09ca035',1,'ctl_t']]], + ['met_5fp_13',['met_p',['../structctl__t.html#aeffc15a483bdb95fea0f1b44982e7281',1,'ctl_t']]], + ['met_5frelhum_14',['met_relhum',['../structctl__t.html#aaa5260e73daff92d01c55e87310ab837',1,'ctl_t']]], + ['met_5fsp_15',['met_sp',['../structctl__t.html#ab5296a9ff61f1f50c9733462cd294889',1,'ctl_t']]], + ['met_5fsx_16',['met_sx',['../structctl__t.html#a4abb2ec4ff0e29f2648cb5e8b182e5d8',1,'ctl_t']]], + ['met_5fsy_17',['met_sy',['../structctl__t.html#a416820ddede3de831eb41413ed6427c0',1,'ctl_t']]], + ['met_5ftropo_18',['met_tropo',['../structctl__t.html#a5303a68a713ead5d3e144ec4183a9a86',1,'ctl_t']]], + ['met_5ftropo_5flapse_19',['met_tropo_lapse',['../structctl__t.html#a93d3036b76a3f555c661cb25cc6aa9f5',1,'ctl_t']]], + ['met_5ftropo_5flapse_5fsep_20',['met_tropo_lapse_sep',['../structctl__t.html#ab63ed3364cf91a4c658e6f4d47e95534',1,'ctl_t']]], + ['met_5ftropo_5fnlev_21',['met_tropo_nlev',['../structctl__t.html#aea1846c984d3602d070f0bf83e777646',1,'ctl_t']]], + ['met_5ftropo_5fnlev_5fsep_22',['met_tropo_nlev_sep',['../structctl__t.html#a34489f996705366c6a29805123a5be05',1,'ctl_t']]], + ['met_5ftropo_5fpv_23',['met_tropo_pv',['../structctl__t.html#a4fa995de108b6beeee9d4e5c4f9f68bb',1,'ctl_t']]], + ['met_5ftropo_5fspline_24',['met_tropo_spline',['../structctl__t.html#a2b8390b7a9e1335c03a0877f93b051af',1,'ctl_t']]], + ['met_5ftropo_5ftheta_25',['met_tropo_theta',['../structctl__t.html#aec254fc45d24615056f6b07643176171',1,'ctl_t']]], + ['met_5ftype_26',['met_type',['../structctl__t.html#afc013488cddf18deab78993e93068416',1,'ctl_t']]], + ['met_5fzfp_5fprec_27',['met_zfp_prec',['../structctl__t.html#a4dd5891ff4c8977a71706aec464f08d8',1,'ctl_t']]], + ['met_5fzfp_5ftol_5ft_28',['met_zfp_tol_t',['../structctl__t.html#acf12d9b7c41156651c59c420fce8e5bf',1,'ctl_t']]], + ['met_5fzfp_5ftol_5fz_29',['met_zfp_tol_z',['../structctl__t.html#ad18288e9f9e91cfa02b23bbd31dc3440',1,'ctl_t']]], + ['metbase_30',['metbase',['../structctl__t.html#a9ddc0221c9ee329efb265672a14026c9',1,'ctl_t']]], + ['mixing_5fdt_31',['mixing_dt',['../structctl__t.html#acf37a9e8e3b1a013d6106f83e14aedb3',1,'ctl_t']]], + ['mixing_5flat0_32',['mixing_lat0',['../structctl__t.html#a8bc3cf78a652568f5e5f04d7c28e82ea',1,'ctl_t']]], + ['mixing_5flat1_33',['mixing_lat1',['../structctl__t.html#aabd109b7477b116b0542aafeb8056180',1,'ctl_t']]], + ['mixing_5flon0_34',['mixing_lon0',['../structctl__t.html#aa161bb16963a0fb4340b8e6fda492be6',1,'ctl_t']]], + ['mixing_5flon1_35',['mixing_lon1',['../structctl__t.html#adbb72c2a4599dd7bc44ef279da5de7ff',1,'ctl_t']]], + ['mixing_5fnx_36',['mixing_nx',['../structctl__t.html#a073b97a29712daaee8212c8a673418bf',1,'ctl_t']]], + ['mixing_5fny_37',['mixing_ny',['../structctl__t.html#a6cc8f7e22a69a8fec9e11c2cd4a84644',1,'ctl_t']]], + ['mixing_5fnz_38',['mixing_nz',['../structctl__t.html#aa027a38882f39332262de958c1e8880b',1,'ctl_t']]], + ['mixing_5fstrat_39',['mixing_strat',['../structctl__t.html#a54e8203aaa728ca33e8db070896eec5a',1,'ctl_t']]], + ['mixing_5ftrop_40',['mixing_trop',['../structctl__t.html#a11a33decd5490249e5251aaec901bd4c',1,'ctl_t']]], + ['mixing_5fz0_41',['mixing_z0',['../structctl__t.html#a5b956c530addc8d909afaf00f5bf9fb4',1,'ctl_t']]], + ['mixing_5fz1_42',['mixing_z1',['../structctl__t.html#a12d69b44d99afb975f0df6fe5486f896',1,'ctl_t']]], + ['molmass_43',['molmass',['../structctl__t.html#a0522c3f4f840a3fabbfa786c2dfba4b0',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_b.html b/doxygen/search/variables_b.html new file mode 100644 index 0000000000..757c0680a4 --- /dev/null +++ b/doxygen/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_b.js b/doxygen/search/variables_b.js new file mode 100644 index 0000000000..675bd9646e --- /dev/null +++ b/doxygen/search/variables_b.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['n2o_0',['n2o',['../structclim__photo__t.html#a6ce3ae3dcee69c935d6db4a040d655bc',1,'clim_photo_t::n2o()'],['../structclim__t.html#af11604629b6390f0fdbb734b0dce2554',1,'clim_t::n2o()']]], + ['nlat_1',['nlat',['../structclim__zm__t.html#ab3d452abf93ad1d5f39c2c20fc6403e9',1,'clim_zm_t']]], + ['no3c_2',['no3c',['../structclim__photo__t.html#acce113364acbbf45c8d77ff60a743b3c',1,'clim_photo_t']]], + ['np_3',['np',['../structatm__t.html#a473366004c7195d5c455373296ee1833',1,'atm_t::np()'],['../structclim__photo__t.html#ac8e36bf703a6431948567de9cb94c1e0',1,'clim_photo_t::np()'],['../structclim__zm__t.html#a3c0b1227fc300563dc460fef7b4b249a',1,'clim_zm_t::np()'],['../structmet__t.html#a5d4eb4cd28aa5db1ec672368921c0b8f',1,'met_t::np()']]], + ['npl_4',['npl',['../structmet__t.html#abe8b336b71924b14d2badd0d6c0f7c27',1,'met_t']]], + ['nq_5',['nq',['../structctl__t.html#af189b70e15b3ed95191357717b80a2cc',1,'ctl_t']]], + ['nsza_6',['nsza',['../structclim__photo__t.html#a0049cb269d4506812a7f4d3e83338f9a',1,'clim_photo_t']]], + ['ntime_7',['ntime',['../structclim__ts__t.html#a5933a10768e95f718d876cddcaad9c04',1,'clim_ts_t::ntime()'],['../structclim__zm__t.html#aa852df9602b1dfd0cbf453159dbf0e41',1,'clim_zm_t::ntime()']]], + ['nx_8',['nx',['../structmet__t.html#a2bbd96a0a7184bc730c14323a067a760',1,'met_t']]], + ['ny_9',['ny',['../structmet__t.html#a3a066580dfee9253cfe22b1e4ebf73b9',1,'met_t']]] +]; diff --git a/doxygen/search/variables_c.html b/doxygen/search/variables_c.html new file mode 100644 index 0000000000..451a1369b7 --- /dev/null +++ b/doxygen/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_c.js b/doxygen/search/variables_c.js new file mode 100644 index 0000000000..736bc1691e --- /dev/null +++ b/doxygen/search/variables_c.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['o1d_0',['o1d',['../structclim__t.html#a9a7486ab639da63d6ac55d6cbacdcf0e',1,'clim_t']]], + ['o3_1',['o3',['../structmet__t.html#a5ce0fb589ddc187ab1191a9fd081a376',1,'met_t']]], + ['o3c_2',['o3c',['../structclim__photo__t.html#ac0271c879928d27622665e275d535bc1',1,'clim_photo_t::o3c()'],['../structmet__t.html#a0ab0cfbc1e5fe1a5c9ce3412cc4400a8',1,'met_t::o3c()']]], + ['oh_3',['oh',['../structclim__t.html#ac67a2bf753276e20cc577a0134b29252',1,'clim_t']]], + ['oh_5fchem_4',['oh_chem',['../structctl__t.html#a3a6b353625c774d90aa5286e69f1fc5f',1,'ctl_t']]], + ['oh_5fchem_5fbeta_5',['oh_chem_beta',['../structctl__t.html#a572e117f02cbfced576c216d366d1a89',1,'ctl_t']]], + ['oh_5fchem_5freaction_6',['oh_chem_reaction',['../structctl__t.html#a81cc25ede9c434e2ac0d7e341f3113e1',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_d.html b/doxygen/search/variables_d.html new file mode 100644 index 0000000000..aea428628f --- /dev/null +++ b/doxygen/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_d.js b/doxygen/search/variables_d.js new file mode 100644 index 0000000000..d828671cac --- /dev/null +++ b/doxygen/search/variables_d.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['p_0',['p',['../structclim__photo__t.html#a29e3ba531fc98c377540862e80cdbaab',1,'clim_photo_t::p()'],['../structclim__zm__t.html#a680339d53df354552c42829876d1271f',1,'clim_zm_t::p()'],['../structmet__t.html#affbacae5925ff68007396b525622ee34',1,'met_t::p()'],['../structatm__t.html#ae769ef14e4824d35f47ad9dec75a4087',1,'atm_t::p()']]], + ['patp_1',['patp',['../structmet__t.html#a4bba580a8a3628a2f52f0e6a2c13aae2',1,'met_t']]], + ['pbl_2',['pbl',['../structmet__t.html#a9a55672423267749087311d62e924794',1,'met_t']]], + ['pcb_3',['pcb',['../structmet__t.html#a7c44ec7c0c9f471ca8ca700adb3596c3',1,'met_t']]], + ['pct_4',['pct',['../structmet__t.html#a29d404429eb9f4e95bf8fa1132455fdd',1,'met_t']]], + ['pel_5',['pel',['../structmet__t.html#a7d6776fe9ed1966d6024567d423f0b96',1,'met_t']]], + ['photo_6',['photo',['../structclim__t.html#a0e767d8c469bec62f4457cf1cb9312ea',1,'clim_t']]], + ['pl_7',['pl',['../structmet__t.html#af1a12a97613433a41a2714a2634a83de',1,'met_t']]], + ['plcl_8',['plcl',['../structmet__t.html#a83441ce7588a1230c54f4c2174bbdcfb',1,'met_t']]], + ['plfc_9',['plfc',['../structmet__t.html#af2f85f717aa775b52d4791c97c3ae142',1,'met_t']]], + ['press_5flevel_5fdef_10',['press_level_def',['../structctl__t.html#a9c3d50e627931bf07eb25bd48f3620c5',1,'ctl_t']]], + ['prof_5fbasename_11',['prof_basename',['../structctl__t.html#a1a4c8aa3a46d5a54c6ef2ca4eefdf3a1',1,'ctl_t']]], + ['prof_5flat0_12',['prof_lat0',['../structctl__t.html#abbea8b15d0f5ea43ddd48ebb6a248916',1,'ctl_t']]], + ['prof_5flat1_13',['prof_lat1',['../structctl__t.html#ab227d1f7a9235210bd3ba4e159398bfc',1,'ctl_t']]], + ['prof_5flon0_14',['prof_lon0',['../structctl__t.html#ab5c52ba42d486204818e2bade09005c1',1,'ctl_t']]], + ['prof_5flon1_15',['prof_lon1',['../structctl__t.html#abdbbc3e42fcbcf71714a8b86dd5b3729',1,'ctl_t']]], + ['prof_5fnx_16',['prof_nx',['../structctl__t.html#a4fe06eb4b9baabf93694ed62d2956046',1,'ctl_t']]], + ['prof_5fny_17',['prof_ny',['../structctl__t.html#a83da7c4b38e4b6044636bfcab0a0f8c2',1,'ctl_t']]], + ['prof_5fnz_18',['prof_nz',['../structctl__t.html#a45940a490a88de1eee54ce2701db84aa',1,'ctl_t']]], + ['prof_5fobsfile_19',['prof_obsfile',['../structctl__t.html#a42d536f7e68997de273a245cff2af30b',1,'ctl_t']]], + ['prof_5fz0_20',['prof_z0',['../structctl__t.html#a4ef0c20dc2cdc73b2a3272e40a82efd4',1,'ctl_t']]], + ['prof_5fz1_21',['prof_z1',['../structctl__t.html#a8fcaa080d02f579e45b99cd7e6a5a36e',1,'ctl_t']]], + ['ps_22',['ps',['../structmet__t.html#a3ea571f00b50e6ba8191ec620bc1d15e',1,'met_t']]], + ['psc_5fh2o_23',['psc_h2o',['../structctl__t.html#ab4ab5f332a54f86eda5e850ac7380334',1,'ctl_t']]], + ['psc_5fhno3_24',['psc_hno3',['../structctl__t.html#abd6693699cf561e2628e46805ac9591b',1,'ctl_t']]], + ['pt_25',['pt',['../structmet__t.html#a86578dd751b3d5bcb696265f4a1ac47d',1,'met_t']]], + ['pv_26',['pv',['../structmet__t.html#ac8e46cfdfc9fc8cfef4e2b801834a61c',1,'met_t']]] +]; diff --git a/doxygen/search/variables_e.html b/doxygen/search/variables_e.html new file mode 100644 index 0000000000..ec3793e4c7 --- /dev/null +++ b/doxygen/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_e.js b/doxygen/search/variables_e.js new file mode 100644 index 0000000000..8428944059 --- /dev/null +++ b/doxygen/search/variables_e.js @@ -0,0 +1,92 @@ +var searchData= +[ + ['q_0',['q',['../structatm__t.html#aa1c8de5772120f4a283c9cedcbe43fb7',1,'atm_t']]], + ['qnt_5faoa_1',['qnt_aoa',['../structctl__t.html#a08aa70d2f116af5dfe779b6ecec4dd19',1,'ctl_t']]], + ['qnt_5fcape_2',['qnt_cape',['../structctl__t.html#a9fce7d27388ac2b2a5fd8a0702243891',1,'ctl_t']]], + ['qnt_5fcc_3',['qnt_cc',['../structctl__t.html#afc9fd7f2b1a29910d6c37c9cb3bcee0d',1,'ctl_t']]], + ['qnt_5fcccl2f2_4',['qnt_Cccl2f2',['../structctl__t.html#a066b3cab4ae3633d7f5a4cc178f8d655',1,'ctl_t']]], + ['qnt_5fcccl3f_5',['qnt_Cccl3f',['../structctl__t.html#a8a43ba4811191565b719506351b40515',1,'ctl_t']]], + ['qnt_5fcccl4_6',['qnt_Cccl4',['../structctl__t.html#a1ba53bf2909cfe859cdd8d3e6db31e9a',1,'ctl_t']]], + ['qnt_5fcco_7',['qnt_Cco',['../structctl__t.html#a63128061ebb75c105f1774fa894d91c9',1,'ctl_t']]], + ['qnt_5fch_8',['qnt_Ch',['../structctl__t.html#a7ef2d94a86e63af36c9022a55db08024',1,'ctl_t']]], + ['qnt_5fch2o_9',['qnt_Ch2o',['../structctl__t.html#a9baf6b24cc12d9b589576a173bed3b8b',1,'ctl_t']]], + ['qnt_5fch2o2_10',['qnt_Ch2o2',['../structctl__t.html#adaa906f8d83e26dde37b9242f567e329',1,'ctl_t']]], + ['qnt_5fcho2_11',['qnt_Cho2',['../structctl__t.html#a99d38b5d6024bb51436e6271202d8968',1,'ctl_t']]], + ['qnt_5fcin_12',['qnt_cin',['../structctl__t.html#abc63595c9161b9fd44ea2420514cb4cd',1,'ctl_t']]], + ['qnt_5fcl_13',['qnt_cl',['../structctl__t.html#a8dfbfb0242aca3ec0fa72564e8ceca6d',1,'ctl_t']]], + ['qnt_5fcn2o_14',['qnt_Cn2o',['../structctl__t.html#a8a3a8cc8108f6dce4fcf6b82ceb97d22',1,'ctl_t']]], + ['qnt_5fco1d_15',['qnt_Co1d',['../structctl__t.html#a18e4fa9a68e03ee2aa1be7e2feb6130f',1,'ctl_t']]], + ['qnt_5fco3_16',['qnt_Co3',['../structctl__t.html#aa1dc44e429c2e407559577b86c9fc170',1,'ctl_t']]], + ['qnt_5fco3p_17',['qnt_Co3p',['../structctl__t.html#ac04dce247fe52429fca4b3ddd32c4ed1',1,'ctl_t']]], + ['qnt_5fcoh_18',['qnt_Coh',['../structctl__t.html#a028e098ce1133fc1a3993ea74d330330',1,'ctl_t']]], + ['qnt_5fcsf6_19',['qnt_Csf6',['../structctl__t.html#a9ad1be4d2d7d089ba9311f6c6b17baa2',1,'ctl_t']]], + ['qnt_5fcx_20',['qnt_Cx',['../structctl__t.html#ae56fa1a240420b87bd2b7a0d040e6d11',1,'ctl_t']]], + ['qnt_5fens_21',['qnt_ens',['../structctl__t.html#ace61e592378505a9011133dc02d249a7',1,'ctl_t']]], + ['qnt_5fformat_22',['qnt_format',['../structctl__t.html#a0811163b931ce18a07fbad57ea280a85',1,'ctl_t']]], + ['qnt_5fh2o_23',['qnt_h2o',['../structctl__t.html#a82e92a79bb65a2febe234d63f86fc91b',1,'ctl_t']]], + ['qnt_5fh2o2_24',['qnt_h2o2',['../structctl__t.html#a200b52904d3a14e04984a130528be5a0',1,'ctl_t']]], + ['qnt_5fh2ot_25',['qnt_h2ot',['../structctl__t.html#a6755ea47ddbf456c114fe69d85e0424d',1,'ctl_t']]], + ['qnt_5fhno3_26',['qnt_hno3',['../structctl__t.html#a65efacd05321fc6c808732e77dc87c84',1,'ctl_t']]], + ['qnt_5fho2_27',['qnt_ho2',['../structctl__t.html#a554a6ad70e586d7aa1ac342cadb8c41e',1,'ctl_t']]], + ['qnt_5fidx_28',['qnt_idx',['../structctl__t.html#aeac7515d696805592f6ae25bf38b7ada',1,'ctl_t']]], + ['qnt_5fiwc_29',['qnt_iwc',['../structctl__t.html#a18974d6fa7e5e9e14a56338d638e730a',1,'ctl_t']]], + ['qnt_5flapse_30',['qnt_lapse',['../structctl__t.html#a98ccf2cdccb18924d50cdcda383580ba',1,'ctl_t']]], + ['qnt_5flongname_31',['qnt_longname',['../structctl__t.html#aef44654a72cbb96ba47c6284bd5f2316',1,'ctl_t']]], + ['qnt_5flsm_32',['qnt_lsm',['../structctl__t.html#a3256dff5d8ff24754dfc04af56ae49d2',1,'ctl_t']]], + ['qnt_5flwc_33',['qnt_lwc',['../structctl__t.html#a22b2ba380a3c30089e5978c4a03311de',1,'ctl_t']]], + ['qnt_5fm_34',['qnt_m',['../structctl__t.html#a084c47554ce3d8b615dfabc9abbb26d1',1,'ctl_t']]], + ['qnt_5fmloss_5fdecay_35',['qnt_mloss_decay',['../structctl__t.html#a5bb49c284e2579630f1eae77a769aba8',1,'ctl_t']]], + ['qnt_5fmloss_5fdry_36',['qnt_mloss_dry',['../structctl__t.html#a7900d5f3a8de6333a91c3794599a8e46',1,'ctl_t']]], + ['qnt_5fmloss_5fh2o2_37',['qnt_mloss_h2o2',['../structctl__t.html#ad1397317442e511e037568026f964bf0',1,'ctl_t']]], + ['qnt_5fmloss_5foh_38',['qnt_mloss_oh',['../structctl__t.html#ad9a389376b1aa37b73df1b45d1ac214d',1,'ctl_t']]], + ['qnt_5fmloss_5fwet_39',['qnt_mloss_wet',['../structctl__t.html#a402ce921786cefb5ce431bda7dbf7f3c',1,'ctl_t']]], + ['qnt_5fname_40',['qnt_name',['../structctl__t.html#a8a96f7d7b47b13cf7359afb9f513f690',1,'ctl_t']]], + ['qnt_5fo1d_41',['qnt_o1d',['../structctl__t.html#a2b485dd5916e7c0b346190afc5d2b437',1,'ctl_t']]], + ['qnt_5fo3_42',['qnt_o3',['../structctl__t.html#a013bc90afda842d7312647bfd0364232',1,'ctl_t']]], + ['qnt_5fo3c_43',['qnt_o3c',['../structctl__t.html#aa13722c873f7ec0c828c320546940528',1,'ctl_t']]], + ['qnt_5foh_44',['qnt_oh',['../structctl__t.html#a7c05d49d4f806a0f94c86ef932478cff',1,'ctl_t']]], + ['qnt_5fp_45',['qnt_p',['../structctl__t.html#a0545623fc0f39bea920d00bfc88c4d11',1,'ctl_t']]], + ['qnt_5fpbl_46',['qnt_pbl',['../structctl__t.html#a39d8a732f074ea0275ecb84832f60d59',1,'ctl_t']]], + ['qnt_5fpcb_47',['qnt_pcb',['../structctl__t.html#a0bdd43744dd2b92d5aa40627d028d42e',1,'ctl_t']]], + ['qnt_5fpct_48',['qnt_pct',['../structctl__t.html#ab7fd7495b74e0656e5a4c0a1e814899c',1,'ctl_t']]], + ['qnt_5fpel_49',['qnt_pel',['../structctl__t.html#a0350a3e6ada50d40416094ba8d079e4e',1,'ctl_t']]], + ['qnt_5fplcl_50',['qnt_plcl',['../structctl__t.html#afcd6307f3bcbd275ba14b572c6337dfa',1,'ctl_t']]], + ['qnt_5fplfc_51',['qnt_plfc',['../structctl__t.html#a274f366df1c6e8dff7b16fc4cf2e1c0a',1,'ctl_t']]], + ['qnt_5fps_52',['qnt_ps',['../structctl__t.html#a4217d6043a9429aa2c47517680d44453',1,'ctl_t']]], + ['qnt_5fpsat_53',['qnt_psat',['../structctl__t.html#ab97b0cbae44a95ee03f10236380964ab',1,'ctl_t']]], + ['qnt_5fpsice_54',['qnt_psice',['../structctl__t.html#a3d8b0a7cd91c255170233ef509a24a84',1,'ctl_t']]], + ['qnt_5fpt_55',['qnt_pt',['../structctl__t.html#a8cd31f8b17d847f8012e472c89dbe164',1,'ctl_t']]], + ['qnt_5fpv_56',['qnt_pv',['../structctl__t.html#ad7e229a971d4aafe08bb607b7189b09f',1,'ctl_t']]], + ['qnt_5fpw_57',['qnt_pw',['../structctl__t.html#a19e02cd4b17e850b32bfd5d68d73d5a0',1,'ctl_t']]], + ['qnt_5frh_58',['qnt_rh',['../structctl__t.html#a682a2a90d1df78dd2a6cfb4fa77773cb',1,'ctl_t']]], + ['qnt_5frhice_59',['qnt_rhice',['../structctl__t.html#a8462c6531b8eba2bf01230b01a4b8a04',1,'ctl_t']]], + ['qnt_5frho_60',['qnt_rho',['../structctl__t.html#a850b57e663a4a8cde2952ecdad2c905f',1,'ctl_t']]], + ['qnt_5frhop_61',['qnt_rhop',['../structctl__t.html#a08ad320f9953658f5346a123ba03ad86',1,'ctl_t']]], + ['qnt_5frp_62',['qnt_rp',['../structctl__t.html#a54a37ca01ed5643d41ee63768e5ad941',1,'ctl_t']]], + ['qnt_5fsh_63',['qnt_sh',['../structctl__t.html#ae251e537db20eb4e1696488c89245d1b',1,'ctl_t']]], + ['qnt_5fsst_64',['qnt_sst',['../structctl__t.html#adb52d9a2f17944de5ed1b245ae0eb6b6',1,'ctl_t']]], + ['qnt_5fstat_65',['qnt_stat',['../structctl__t.html#a508aa1f5e4ba701e86557f114999b314',1,'ctl_t']]], + ['qnt_5ft_66',['qnt_t',['../structctl__t.html#a91a6844a93bff2ff957aaf8bf31c1f3b',1,'ctl_t']]], + ['qnt_5ftdew_67',['qnt_tdew',['../structctl__t.html#affb8cb3c42f1f312990d97d7d49617e5',1,'ctl_t']]], + ['qnt_5ftheta_68',['qnt_theta',['../structctl__t.html#a33a185ae0cb5badcd525d961875d3b2c',1,'ctl_t']]], + ['qnt_5ftice_69',['qnt_tice',['../structctl__t.html#a7606f8b8ba4df727e0c0c9386f527119',1,'ctl_t']]], + ['qnt_5ftnat_70',['qnt_tnat',['../structctl__t.html#a742e33a97813e9a50cb0e17a680e815a',1,'ctl_t']]], + ['qnt_5fts_71',['qnt_ts',['../structctl__t.html#a262aa775e7fe82b123a62633d1c3d8b3',1,'ctl_t']]], + ['qnt_5ftsts_72',['qnt_tsts',['../structctl__t.html#aa29a4ab3048a143622094d93886aa0db',1,'ctl_t']]], + ['qnt_5ftt_73',['qnt_tt',['../structctl__t.html#acc25e4fc819f75115dc6ae202437022d',1,'ctl_t']]], + ['qnt_5ftvirt_74',['qnt_tvirt',['../structctl__t.html#a2d0be917be3aba29baf2ed7f626bfa83',1,'ctl_t']]], + ['qnt_5fu_75',['qnt_u',['../structctl__t.html#a0f4b7179eb39bf6a1679f46e8826e1de',1,'ctl_t']]], + ['qnt_5funit_76',['qnt_unit',['../structctl__t.html#a7dadf2efadc0802bd2c77aa8c39908dc',1,'ctl_t']]], + ['qnt_5fus_77',['qnt_us',['../structctl__t.html#a88eb2c811b2a0c5482a020e41d26c270',1,'ctl_t']]], + ['qnt_5fv_78',['qnt_v',['../structctl__t.html#a78f8fa92da366751d4fe71f85661f9f3',1,'ctl_t']]], + ['qnt_5fvh_79',['qnt_vh',['../structctl__t.html#a20196705d4eebddaeff4005ad88a20d2',1,'ctl_t']]], + ['qnt_5fvmr_80',['qnt_vmr',['../structctl__t.html#a323dd04f9b74b6bef349e3a91b649568',1,'ctl_t']]], + ['qnt_5fvs_81',['qnt_vs',['../structctl__t.html#a62b169930644e817a7275df51d40b51c',1,'ctl_t']]], + ['qnt_5fvz_82',['qnt_vz',['../structctl__t.html#a55330859df8034626ba300905e35bb04',1,'ctl_t']]], + ['qnt_5fw_83',['qnt_w',['../structctl__t.html#a4eff0a4676fbb4bb8a4b832900e16e48',1,'ctl_t']]], + ['qnt_5fzeta_84',['qnt_zeta',['../structctl__t.html#a9382d9e9b29e10eeee582e1e10ff365a',1,'ctl_t']]], + ['qnt_5fzeta_5fd_85',['qnt_zeta_d',['../structctl__t.html#a6dcfd67edca4a35aeca78f6bfbd04487',1,'ctl_t']]], + ['qnt_5fzg_86',['qnt_zg',['../structctl__t.html#a7851aa93977a71a120361d75034a1808',1,'ctl_t']]], + ['qnt_5fzs_87',['qnt_zs',['../structctl__t.html#a458f7cdd42fb5e2d9531e7d48038b730',1,'ctl_t']]], + ['qnt_5fzt_88',['qnt_zt',['../structctl__t.html#afb9a716d40713cd9550a4a2d38389da0',1,'ctl_t']]] +]; diff --git a/doxygen/search/variables_f.html b/doxygen/search/variables_f.html new file mode 100644 index 0000000000..ee82fcea76 --- /dev/null +++ b/doxygen/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/doxygen/search/variables_f.js b/doxygen/search/variables_f.js new file mode 100644 index 0000000000..7bb28f4737 --- /dev/null +++ b/doxygen/search/variables_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['read_5fmode_0',['read_mode',['../structctl__t.html#a797dc709951f1405daec11d5ed11ea40',1,'ctl_t']]], + ['reflect_1',['reflect',['../structctl__t.html#a918275547003c50ad152b9d01fae6c8c',1,'ctl_t']]] +]; diff --git a/doxygen/sedi_8c.html b/doxygen/sedi_8c.html new file mode 100644 index 0000000000..3b0f9885d0 --- /dev/null +++ b/doxygen/sedi_8c.html @@ -0,0 +1,206 @@ + + + + + + + +MPTRAC: sedi.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
sedi.c File Reference
+
+
+ +

Calculate sedimentation velocity. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Calculate sedimentation velocity.

+ +

Definition in file sedi.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file sedi.c.

+
29 {
+
30
+
31 double eta, p, T, r_p, rho, Re, rho_p, vs;
+
32
+
33 /* Check arguments... */
+
34 if (argc < 5)
+
35 ERRMSG("Give parameters: <p> <T> <r_p> <rho_p>");
+
36
+
37 /* Read arguments... */
+
38 p = atof(argv[1]);
+
39 T = atof(argv[2]);
+
40 r_p = atof(argv[3]);
+
41 rho_p = atof(argv[4]);
+
42
+
43 /* Calculate sedimentation velocity... */
+
44 vs = sedi(p, T, r_p, rho_p);
+
45
+
46 /* Density of dry air [kg / m^3]... */
+
47 rho = 100. * p / (RA * T);
+
48
+
49 /* Dynamic viscosity of air [kg / (m s)]... */
+
50 eta = 1.8325e-5 * (416.16 / (T + 120.)) * pow(T / 296.16, 1.5);
+
51
+
52 /* Particle Reynolds number... */
+
53 Re = 2e-6 * r_p * vs * rho / eta;
+
54
+
55 /* Write output... */
+
56 printf(" p= %g hPa\n", p);
+
57 printf(" T= %g K\n", T);
+
58 printf(" r_p= %g microns\n", r_p);
+
59 printf("rho_p= %g kg/m^3\n", rho_p);
+
60 printf("rho_a= %g kg/m^3\n", RHO(p, T));
+
61 printf(" v_s= %g m/s\n", vs);
+
62 printf(" Re= %g\n", Re);
+
63
+
64 return EXIT_SUCCESS;
+
65}
+
double sedi(const double p, const double T, const double rp, const double rhop)
Calculate sedimentation velocity.
Definition: libtrac.c:5305
+
#define RA
Specific gas constant of dry air [J/(kg K)].
Definition: libtrac.h:138
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define RHO(p, t)
Compute density of air.
Definition: libtrac.h:596
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/sedi_8c.js b/doxygen/sedi_8c.js new file mode 100644 index 0000000000..3bd49b502f --- /dev/null +++ b/doxygen/sedi_8c.js @@ -0,0 +1,4 @@ +var sedi_8c = +[ + [ "main", "sedi_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..cd4e32f905 --- /dev/null +++ b/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..1c65fe9ff5 --- /dev/null +++ b/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +8e8d910c9df55e75ba6b854043d52b86 \ No newline at end of file diff --git a/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/sedi_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad15c588768a93af97c54fdead458fc808a235a GIT binary patch literal 1558 zcmV+x2I={UP)FN&*Fee|D|y(ef2=@4SL-ZLM{!jKl(z z#q341M*nu%#avrWb7^I`x#kP={LYRs}2vc#$mW3I! z+1$|35GyIG!{_srN@c87{6|AWgV}73wTdq&l}bLJKc8J>s@-lknM?-`9EiHAH5eKi zinWAAn9XL3#gdno7i%E^049@3EEcb5Dn?aRRrD0Ck4-2kFE7t%G{#y5004p@OG=0} z6^9U};t;}A9733iL!xA=!{In`tiq|5=pK|#LLM^jkTyy z_~s{dXlO{GP&79;A3JtTDwV!|{rcX$dqSa5CX)>e3}AKidc8y)b-La6EK>5`HX zDwRs7)62`t{eC}IuGMO@v$LsG>d~V|$H&J3AQ%kZx^*ifBO@gx%-j$W?^fZ^d`gTZj;&YiBVE}2aB^}eIcW^*_k zt*x!q)zvzk&gpc9CVfNk`Q`w?YIQd@_T=Z+?%!Y6)bzW{HNE}_ckkYvoSYmP85tZL z?CI%w`0ybBJbwJRrlzK?t<7e$p(uL#^l1QSX=!O{YBCy)qoboaQWFT|X2`;!2l-L71Bh06>4gy}y49 zLD)NXe43p6XXno3m6}vkR9v`lAuTP9!{HPZ6kNP`kwT%^Y&L~Lp-?F1tBs9~O-xLn zD2ip1las^0#UuZs)Y{tm^5x4bSFU7bWqCZF($dl;71nR$LNYU_E?xR95&~D`$&-Pn zPX|}JiXaGyga8Buf-I-gLZ^RP#ZdrYGMPrB(d+g0_4VDjal>l0YBZW%yLPEmD!E*~ zux5IC`iBo6u(a3fb-7$&4kYrXl1L;PjmBoPT`pI1b8|2loSB&kKWs|M?D6BA@Z+q) zyLS`ImT%b-=l9R;+s7^``B^CBGMN;y_>VQC357yBoqqrR{oLH#J$v?G)0<2ttE;Qy za=Gd0=?@+}P^;CWqoZ=UT%}S81OgOAuU@_C^ZCLYNaRf|E-tRAsgcQKY&QG+`STw? ze!PDDdSzv0#5>w(;^X6dzPa7I8O6oClP7=5%-s1+&Fkyy%gf7IELK87LP0^n&6_s? z;LMpbE|;sYu+Z&x^LV_@&Q3C!Tv}Q>Ha2$Z)G3e0Q&v`X@ZiBPl_Lv3wA5f z$$Sa1`LGBYElDKe6&3M#ydPq%C3FZ=zfe}TU#a{hF7CTOs<-QSf2 zUqhIRLkLrG2w^G?S>{Elx3@RyGS + + + + + + +MPTRAC: sedi.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
sedi.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2021 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 double eta, p, T, r_p, rho, Re, rho_p, vs;
+
32
+
33 /* Check arguments... */
+
34 if (argc < 5)
+
35 ERRMSG("Give parameters: <p> <T> <r_p> <rho_p>");
+
36
+
37 /* Read arguments... */
+
38 p = atof(argv[1]);
+
39 T = atof(argv[2]);
+
40 r_p = atof(argv[3]);
+
41 rho_p = atof(argv[4]);
+
42
+
43 /* Calculate sedimentation velocity... */
+
44 vs = sedi(p, T, r_p, rho_p);
+
45
+
46 /* Density of dry air [kg / m^3]... */
+
47 rho = 100. * p / (RA * T);
+
48
+
49 /* Dynamic viscosity of air [kg / (m s)]... */
+
50 eta = 1.8325e-5 * (416.16 / (T + 120.)) * pow(T / 296.16, 1.5);
+
51
+
52 /* Particle Reynolds number... */
+
53 Re = 2e-6 * r_p * vs * rho / eta;
+
54
+
55 /* Write output... */
+
56 printf(" p= %g hPa\n", p);
+
57 printf(" T= %g K\n", T);
+
58 printf(" r_p= %g microns\n", r_p);
+
59 printf("rho_p= %g kg/m^3\n", rho_p);
+
60 printf("rho_a= %g kg/m^3\n", RHO(p, T));
+
61 printf(" v_s= %g m/s\n", vs);
+
62 printf(" Re= %g\n", Re);
+
63
+
64 return EXIT_SUCCESS;
+
65}
+
double sedi(const double p, const double T, const double rp, const double rhop)
Calculate sedimentation velocity.
Definition: libtrac.c:5305
+
MPTRAC library declarations.
+
#define RA
Specific gas constant of dry air [J/(kg K)].
Definition: libtrac.h:138
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define RHO(p, t)
Compute density of air.
Definition: libtrac.h:596
+
int main(int argc, char *argv[])
Definition: sedi.c:27
+
+
+ + + + diff --git a/doxygen/splitbar.png b/doxygen/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doxygen/structatm__t.html b/doxygen/structatm__t.html new file mode 100644 index 0000000000..c762ddd041 --- /dev/null +++ b/doxygen/structatm__t.html @@ -0,0 +1,252 @@ + + + + + + + +MPTRAC: atm_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
atm_t Struct Reference
+
+
+ +

Atmospheric data. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + + + + + + + + + + +

+Data Fields

int np
 Number of air parcels. More...
 
double time [NP]
 Time [s]. More...
 
double p [NP]
 Pressure [hPa]. More...
 
double lon [NP]
 Longitude [deg]. More...
 
double lat [NP]
 Latitude [deg]. More...
 
double q [NQ][NP]
 Quantity data (for various, user-defined attributes). More...
 
+

Detailed Description

+

Atmospheric data.

+ +

Definition at line 1660 of file libtrac.h.

+

Field Documentation

+ +

◆ np

+ +
+
+ + + + +
int atm_t::np
+
+ +

Number of air parcels.

+ +

Definition at line 1663 of file libtrac.h.

+ +
+
+ +

◆ time

+ +
+
+ + + + +
double atm_t::time[NP]
+
+ +

Time [s].

+ +

Definition at line 1666 of file libtrac.h.

+ +
+
+ +

◆ p

+ +
+
+ + + + +
double atm_t::p[NP]
+
+ +

Pressure [hPa].

+ +

Definition at line 1669 of file libtrac.h.

+ +
+
+ +

◆ lon

+ +
+
+ + + + +
double atm_t::lon[NP]
+
+ +

Longitude [deg].

+ +

Definition at line 1672 of file libtrac.h.

+ +
+
+ +

◆ lat

+ +
+
+ + + + +
double atm_t::lat[NP]
+
+ +

Latitude [deg].

+ +

Definition at line 1675 of file libtrac.h.

+ +
+
+ +

◆ q

+ +
+
+ + + + +
double atm_t::q[NQ][NP]
+
+ +

Quantity data (for various, user-defined attributes).

+ +

Definition at line 1678 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structatm__t.js b/doxygen/structatm__t.js new file mode 100644 index 0000000000..c6ae7b693a --- /dev/null +++ b/doxygen/structatm__t.js @@ -0,0 +1,9 @@ +var structatm__t = +[ + [ "np", "structatm__t.html#a473366004c7195d5c455373296ee1833", null ], + [ "time", "structatm__t.html#a05da6b99657d420d7bf4b37a392b048c", null ], + [ "p", "structatm__t.html#ae769ef14e4824d35f47ad9dec75a4087", null ], + [ "lon", "structatm__t.html#a2c8ffb598109120ed6d1f8e79aeb3ff8", null ], + [ "lat", "structatm__t.html#a25ef7d304d5cfa54c5af30192620373b", null ], + [ "q", "structatm__t.html#aa1c8de5772120f4a283c9cedcbe43fb7", null ] +]; \ No newline at end of file diff --git a/doxygen/structcache__t.html b/doxygen/structcache__t.html new file mode 100644 index 0000000000..c31862f455 --- /dev/null +++ b/doxygen/structcache__t.html @@ -0,0 +1,231 @@ + + + + + + + +MPTRAC: cache_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
cache_t Struct Reference
+
+
+ +

Cache data. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + + + + + + + +

+Data Fields

double iso_var [NP]
 Isosurface variables. More...
 
double iso_ps [NP]
 Isosurface balloon pressure [hPa]. More...
 
double iso_ts [NP]
 Isosurface balloon time [s]. More...
 
int iso_n
 Isosurface balloon number of data points. More...
 
float uvwp [NP][3]
 Wind perturbations [m/s]. More...
 
+

Detailed Description

+

Cache data.

+ +

Definition at line 1683 of file libtrac.h.

+

Field Documentation

+ +

◆ iso_var

+ +
+
+ + + + +
double cache_t::iso_var[NP]
+
+ +

Isosurface variables.

+ +

Definition at line 1686 of file libtrac.h.

+ +
+
+ +

◆ iso_ps

+ +
+
+ + + + +
double cache_t::iso_ps[NP]
+
+ +

Isosurface balloon pressure [hPa].

+ +

Definition at line 1689 of file libtrac.h.

+ +
+
+ +

◆ iso_ts

+ +
+
+ + + + +
double cache_t::iso_ts[NP]
+
+ +

Isosurface balloon time [s].

+ +

Definition at line 1692 of file libtrac.h.

+ +
+
+ +

◆ iso_n

+ +
+
+ + + + +
int cache_t::iso_n
+
+ +

Isosurface balloon number of data points.

+ +

Definition at line 1695 of file libtrac.h.

+ +
+
+ +

◆ uvwp

+ +
+
+ + + + +
float cache_t::uvwp[NP][3]
+
+ +

Wind perturbations [m/s].

+ +

Definition at line 1698 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structcache__t.js b/doxygen/structcache__t.js new file mode 100644 index 0000000000..9232f82a70 --- /dev/null +++ b/doxygen/structcache__t.js @@ -0,0 +1,8 @@ +var structcache__t = +[ + [ "iso_var", "structcache__t.html#ac3b83913cce35ef5ec582c54dce239d0", null ], + [ "iso_ps", "structcache__t.html#a8ce0e8a193211fc8461b2043daf9b17c", null ], + [ "iso_ts", "structcache__t.html#a4039e32188d12d6a86086d236676d993", null ], + [ "iso_n", "structcache__t.html#a4df585fc5eb4099f8cd54d77703ebf45", null ], + [ "uvwp", "structcache__t.html#aaa7f03cf8194b0babb1d9c14dcabc84e", null ] +]; \ No newline at end of file diff --git a/doxygen/structclim__photo__t.html b/doxygen/structclim__photo__t.html new file mode 100644 index 0000000000..6ee5226c4e --- /dev/null +++ b/doxygen/structclim__photo__t.html @@ -0,0 +1,336 @@ + + + + + + + +MPTRAC: clim_photo_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
clim_photo_t Struct Reference
+
+
+ +

Climatological data in form of photolysis rates. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int np
 Number of pressure levels. More...
 
int nsza
 Number of solar zenith angles. More...
 
int no3c
 Number of total ozone columns. More...
 
double p [CP]
 Pressure [hPa]. More...
 
double sza [CSZA]
 Solar zenith angle [rad]. More...
 
double o3c [CO3]
 Total column ozone [DU]. More...
 
double n2o [CP][CSZA][CO3]
 N2O photolysis rate [1/s]. More...
 
double ccl4 [CP][CSZA][CO3]
 CCl4 photolysis rate [1/s]. More...
 
double ccl3f [CP][CSZA][CO3]
 CCl3F photolysis rate [1/s]. More...
 
double ccl2f2 [CP][CSZA][CO3]
 CCl2F2 photolysis rate [1/s]. More...
 
+

Detailed Description

+

Climatological data in form of photolysis rates.

+ +

Definition at line 1703 of file libtrac.h.

+

Field Documentation

+ +

◆ np

+ +
+
+ + + + +
int clim_photo_t::np
+
+ +

Number of pressure levels.

+ +

Definition at line 1706 of file libtrac.h.

+ +
+
+ +

◆ nsza

+ +
+
+ + + + +
int clim_photo_t::nsza
+
+ +

Number of solar zenith angles.

+ +

Definition at line 1709 of file libtrac.h.

+ +
+
+ +

◆ no3c

+ +
+
+ + + + +
int clim_photo_t::no3c
+
+ +

Number of total ozone columns.

+ +

Definition at line 1712 of file libtrac.h.

+ +
+
+ +

◆ p

+ +
+
+ + + + +
double clim_photo_t::p[CP]
+
+ +

Pressure [hPa].

+ +

Definition at line 1715 of file libtrac.h.

+ +
+
+ +

◆ sza

+ +
+
+ + + + +
double clim_photo_t::sza[CSZA]
+
+ +

Solar zenith angle [rad].

+ +

Definition at line 1718 of file libtrac.h.

+ +
+
+ +

◆ o3c

+ +
+
+ + + + +
double clim_photo_t::o3c[CO3]
+
+ +

Total column ozone [DU].

+ +

Definition at line 1721 of file libtrac.h.

+ +
+
+ +

◆ n2o

+ +
+
+ + + + +
double clim_photo_t::n2o[CP][CSZA][CO3]
+
+ +

N2O photolysis rate [1/s].

+ +

Definition at line 1724 of file libtrac.h.

+ +
+
+ +

◆ ccl4

+ +
+
+ + + + +
double clim_photo_t::ccl4[CP][CSZA][CO3]
+
+ +

CCl4 photolysis rate [1/s].

+ +

Definition at line 1727 of file libtrac.h.

+ +
+
+ +

◆ ccl3f

+ +
+
+ + + + +
double clim_photo_t::ccl3f[CP][CSZA][CO3]
+
+ +

CCl3F photolysis rate [1/s].

+ +

Definition at line 1730 of file libtrac.h.

+ +
+
+ +

◆ ccl2f2

+ +
+
+ + + + +
double clim_photo_t::ccl2f2[CP][CSZA][CO3]
+
+ +

CCl2F2 photolysis rate [1/s].

+ +

Definition at line 1733 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structclim__photo__t.js b/doxygen/structclim__photo__t.js new file mode 100644 index 0000000000..926437b573 --- /dev/null +++ b/doxygen/structclim__photo__t.js @@ -0,0 +1,13 @@ +var structclim__photo__t = +[ + [ "np", "structclim__photo__t.html#ac8e36bf703a6431948567de9cb94c1e0", null ], + [ "nsza", "structclim__photo__t.html#a0049cb269d4506812a7f4d3e83338f9a", null ], + [ "no3c", "structclim__photo__t.html#acce113364acbbf45c8d77ff60a743b3c", null ], + [ "p", "structclim__photo__t.html#a29e3ba531fc98c377540862e80cdbaab", null ], + [ "sza", "structclim__photo__t.html#a0954705edbe1ca70559f1adeb231a685", null ], + [ "o3c", "structclim__photo__t.html#ac0271c879928d27622665e275d535bc1", null ], + [ "n2o", "structclim__photo__t.html#a6ce3ae3dcee69c935d6db4a040d655bc", null ], + [ "ccl4", "structclim__photo__t.html#ab827be0252e456de341c167ab5e15bab", null ], + [ "ccl3f", "structclim__photo__t.html#a6b698126dd4714ceb22e8d8c3dfdcf8e", null ], + [ "ccl2f2", "structclim__photo__t.html#a33f019b0c8014e92822dd8e25481284a", null ] +]; \ No newline at end of file diff --git a/doxygen/structclim__t.html b/doxygen/structclim__t.html new file mode 100644 index 0000000000..f080fd7e1c --- /dev/null +++ b/doxygen/structclim__t.html @@ -0,0 +1,462 @@ + + + + + + + +MPTRAC: clim_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
clim_t Struct Reference
+
+
+ +

Climatological data. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int tropo_ntime
 Number of tropopause timesteps. More...
 
int tropo_nlat
 Number of tropopause latitudes. More...
 
double tropo_time [12]
 Tropopause time steps [s]. More...
 
double tropo_lat [73]
 Tropopause latitudes [deg]. More...
 
double tropo [12][73]
 Tropopause pressure values [hPa]. More...
 
clim_photo_t photo
 Photolysis rates. More...
 
clim_zm_t hno3
 HNO3 zonal means. More...
 
clim_zm_t oh
 OH zonal means. More...
 
clim_zm_t h2o2
 H2O2 zonal means. More...
 
clim_zm_t ho2
 HO2 zonal means. More...
 
clim_zm_t o1d
 O(1D) zonal means. More...
 
clim_ts_t ccl4
 CFC-10 time series. More...
 
clim_ts_t ccl3f
 CFC-11 time series. More...
 
clim_ts_t ccl2f2
 CFC-12 time series. More...
 
clim_ts_t n2o
 N2O time series. More...
 
clim_ts_t sf6
 SF6 time series. More...
 
+

Detailed Description

+

Climatological data.

+ +

Definition at line 1778 of file libtrac.h.

+

Field Documentation

+ +

◆ tropo_ntime

+ +
+
+ + + + +
int clim_t::tropo_ntime
+
+ +

Number of tropopause timesteps.

+ +

Definition at line 1781 of file libtrac.h.

+ +
+
+ +

◆ tropo_nlat

+ +
+
+ + + + +
int clim_t::tropo_nlat
+
+ +

Number of tropopause latitudes.

+ +

Definition at line 1784 of file libtrac.h.

+ +
+
+ +

◆ tropo_time

+ +
+
+ + + + +
double clim_t::tropo_time[12]
+
+ +

Tropopause time steps [s].

+ +

Definition at line 1787 of file libtrac.h.

+ +
+
+ +

◆ tropo_lat

+ +
+
+ + + + +
double clim_t::tropo_lat[73]
+
+ +

Tropopause latitudes [deg].

+ +

Definition at line 1790 of file libtrac.h.

+ +
+
+ +

◆ tropo

+ +
+
+ + + + +
double clim_t::tropo[12][73]
+
+ +

Tropopause pressure values [hPa].

+ +

Definition at line 1793 of file libtrac.h.

+ +
+
+ +

◆ photo

+ +
+
+ + + + +
clim_photo_t clim_t::photo
+
+ +

Photolysis rates.

+ +

Definition at line 1796 of file libtrac.h.

+ +
+
+ +

◆ hno3

+ +
+
+ + + + +
clim_zm_t clim_t::hno3
+
+ +

HNO3 zonal means.

+ +

Definition at line 1799 of file libtrac.h.

+ +
+
+ +

◆ oh

+ +
+
+ + + + +
clim_zm_t clim_t::oh
+
+ +

OH zonal means.

+ +

Definition at line 1802 of file libtrac.h.

+ +
+
+ +

◆ h2o2

+ +
+
+ + + + +
clim_zm_t clim_t::h2o2
+
+ +

H2O2 zonal means.

+ +

Definition at line 1805 of file libtrac.h.

+ +
+
+ +

◆ ho2

+ +
+
+ + + + +
clim_zm_t clim_t::ho2
+
+ +

HO2 zonal means.

+ +

Definition at line 1808 of file libtrac.h.

+ +
+
+ +

◆ o1d

+ +
+
+ + + + +
clim_zm_t clim_t::o1d
+
+ +

O(1D) zonal means.

+ +

Definition at line 1811 of file libtrac.h.

+ +
+
+ +

◆ ccl4

+ +
+
+ + + + +
clim_ts_t clim_t::ccl4
+
+ +

CFC-10 time series.

+ +

Definition at line 1814 of file libtrac.h.

+ +
+
+ +

◆ ccl3f

+ +
+
+ + + + +
clim_ts_t clim_t::ccl3f
+
+ +

CFC-11 time series.

+ +

Definition at line 1817 of file libtrac.h.

+ +
+
+ +

◆ ccl2f2

+ +
+
+ + + + +
clim_ts_t clim_t::ccl2f2
+
+ +

CFC-12 time series.

+ +

Definition at line 1820 of file libtrac.h.

+ +
+
+ +

◆ n2o

+ +
+
+ + + + +
clim_ts_t clim_t::n2o
+
+ +

N2O time series.

+ +

Definition at line 1823 of file libtrac.h.

+ +
+
+ +

◆ sf6

+ +
+
+ + + + +
clim_ts_t clim_t::sf6
+
+ +

SF6 time series.

+ +

Definition at line 1826 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structclim__t.js b/doxygen/structclim__t.js new file mode 100644 index 0000000000..1be8f9ea4d --- /dev/null +++ b/doxygen/structclim__t.js @@ -0,0 +1,19 @@ +var structclim__t = +[ + [ "tropo_ntime", "structclim__t.html#a71b9c5664f017ee5f36db4aae204328a", null ], + [ "tropo_nlat", "structclim__t.html#abe42300dd939b2409b3dbf37550e58f6", null ], + [ "tropo_time", "structclim__t.html#ae2845f40329df2cf90838d1684617ada", null ], + [ "tropo_lat", "structclim__t.html#aaaee23fbfbb65c1eb77daad5a003defa", null ], + [ "tropo", "structclim__t.html#ad357829e5b267a357fce1a27518e271f", null ], + [ "photo", "structclim__t.html#a0e767d8c469bec62f4457cf1cb9312ea", null ], + [ "hno3", "structclim__t.html#a4fdb5d9229fc193f2e526a6aebf97558", null ], + [ "oh", "structclim__t.html#ac67a2bf753276e20cc577a0134b29252", null ], + [ "h2o2", "structclim__t.html#ab7f787719be51524b1389bb0bf347934", null ], + [ "ho2", "structclim__t.html#a2ba0d75a451d9382ba20ec54d1784e05", null ], + [ "o1d", "structclim__t.html#a9a7486ab639da63d6ac55d6cbacdcf0e", null ], + [ "ccl4", "structclim__t.html#a7c4cf5c511a125b4e3bc3731157037f3", null ], + [ "ccl3f", "structclim__t.html#a84f795c6c4934f9e215b74dffa177685", null ], + [ "ccl2f2", "structclim__t.html#a0d489a65c8c1cee839f3467a1c51c401", null ], + [ "n2o", "structclim__t.html#af11604629b6390f0fdbb734b0dce2554", null ], + [ "sf6", "structclim__t.html#a787e837b08fea0fce0c6fe04140fb393", null ] +]; \ No newline at end of file diff --git a/doxygen/structclim__ts__t.html b/doxygen/structclim__ts__t.html new file mode 100644 index 0000000000..d7b41fac71 --- /dev/null +++ b/doxygen/structclim__ts__t.html @@ -0,0 +1,189 @@ + + + + + + + +MPTRAC: clim_ts_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
clim_ts_t Struct Reference
+
+
+ +

Climatological data in form of time series. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + +

+Data Fields

int ntime
 Number of timesteps. More...
 
double time [CTS]
 Time [s]. More...
 
double vmr [CTS]
 Volume mixing ratio [ppv]. More...
 
+

Detailed Description

+

Climatological data in form of time series.

+ +

Definition at line 1738 of file libtrac.h.

+

Field Documentation

+ +

◆ ntime

+ +
+
+ + + + +
int clim_ts_t::ntime
+
+ +

Number of timesteps.

+ +

Definition at line 1741 of file libtrac.h.

+ +
+
+ +

◆ time

+ +
+
+ + + + +
double clim_ts_t::time[CTS]
+
+ +

Time [s].

+ +

Definition at line 1744 of file libtrac.h.

+ +
+
+ +

◆ vmr

+ +
+
+ + + + +
double clim_ts_t::vmr[CTS]
+
+ +

Volume mixing ratio [ppv].

+ +

Definition at line 1747 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structclim__ts__t.js b/doxygen/structclim__ts__t.js new file mode 100644 index 0000000000..4b160c0fb5 --- /dev/null +++ b/doxygen/structclim__ts__t.js @@ -0,0 +1,6 @@ +var structclim__ts__t = +[ + [ "ntime", "structclim__ts__t.html#a5933a10768e95f718d876cddcaad9c04", null ], + [ "time", "structclim__ts__t.html#a213272025e3c95dfe779d2e8abf0bcf2", null ], + [ "vmr", "structclim__ts__t.html#a0a87d48606ea13114cea09194ea0ddd4", null ] +]; \ No newline at end of file diff --git a/doxygen/structclim__zm__t.html b/doxygen/structclim__zm__t.html new file mode 100644 index 0000000000..02cd83e5f2 --- /dev/null +++ b/doxygen/structclim__zm__t.html @@ -0,0 +1,273 @@ + + + + + + + +MPTRAC: clim_zm_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
clim_zm_t Struct Reference
+
+
+ +

Climatological data in form of zonal means. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int ntime
 Number of timesteps. More...
 
int nlat
 Number of latitudes. More...
 
int np
 Number of pressure levels. More...
 
double time [CT]
 Time [s]. More...
 
double lat [CY]
 Latitude [deg]. More...
 
double p [CP]
 Pressure [hPa]. More...
 
double vmr [CT][CP][CY]
 Volume mixing ratio [ppv]. More...
 
+

Detailed Description

+

Climatological data in form of zonal means.

+ +

Definition at line 1752 of file libtrac.h.

+

Field Documentation

+ +

◆ ntime

+ +
+
+ + + + +
int clim_zm_t::ntime
+
+ +

Number of timesteps.

+ +

Definition at line 1755 of file libtrac.h.

+ +
+
+ +

◆ nlat

+ +
+
+ + + + +
int clim_zm_t::nlat
+
+ +

Number of latitudes.

+ +

Definition at line 1758 of file libtrac.h.

+ +
+
+ +

◆ np

+ +
+
+ + + + +
int clim_zm_t::np
+
+ +

Number of pressure levels.

+ +

Definition at line 1761 of file libtrac.h.

+ +
+
+ +

◆ time

+ +
+
+ + + + +
double clim_zm_t::time[CT]
+
+ +

Time [s].

+ +

Definition at line 1764 of file libtrac.h.

+ +
+
+ +

◆ lat

+ +
+
+ + + + +
double clim_zm_t::lat[CY]
+
+ +

Latitude [deg].

+ +

Definition at line 1767 of file libtrac.h.

+ +
+
+ +

◆ p

+ +
+
+ + + + +
double clim_zm_t::p[CP]
+
+ +

Pressure [hPa].

+ +

Definition at line 1770 of file libtrac.h.

+ +
+
+ +

◆ vmr

+ +
+
+ + + + +
double clim_zm_t::vmr[CT][CP][CY]
+
+ +

Volume mixing ratio [ppv].

+ +

Definition at line 1773 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structclim__zm__t.js b/doxygen/structclim__zm__t.js new file mode 100644 index 0000000000..87824a642c --- /dev/null +++ b/doxygen/structclim__zm__t.js @@ -0,0 +1,10 @@ +var structclim__zm__t = +[ + [ "ntime", "structclim__zm__t.html#aa852df9602b1dfd0cbf453159dbf0e41", null ], + [ "nlat", "structclim__zm__t.html#ab3d452abf93ad1d5f39c2c20fc6403e9", null ], + [ "np", "structclim__zm__t.html#a3c0b1227fc300563dc460fef7b4b249a", null ], + [ "time", "structclim__zm__t.html#a06e634b21e38187593b011c715afa57a", null ], + [ "lat", "structclim__zm__t.html#aff242585ab3f0df6832c7417d90d8f2f", null ], + [ "p", "structclim__zm__t.html#a680339d53df354552c42829876d1271f", null ], + [ "vmr", "structclim__zm__t.html#a893d077ed8733dc568f87950ce40f5c6", null ] +]; \ No newline at end of file diff --git a/doxygen/structctl__t.html b/doxygen/structctl__t.html new file mode 100644 index 0000000000..dab9f5dac7 --- /dev/null +++ b/doxygen/structctl__t.html @@ -0,0 +1,6091 @@ + + + + + + + +MPTRAC: ctl_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
ctl_t Struct Reference
+
+
+ +

Control parameters. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int atm_type_out
 Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd). More...
 
int cpl_zeta_and_press_modules
 Coupled use of pressure based modules and diabatic advection. More...
 
int press_level_def
 Use predefined pressure levels or not. More...
 
int vert_coord_ap
 Vertical coordinate of air parcels (0=pressure, 1=zeta). More...
 
int vert_coord_met
 Vertical coordinate of input meteo data (0=automatic, 1=eta). More...
 
int clams_met_data
 Read MPTRAC or CLaMS meteo data (0=MPTRAC, 1=CLaMS). More...
 
size_t chunkszhint
 Chunk size hint for nc__open. More...
 
int read_mode
 Read mode for nc__open. More...
 
int nq
 Number of quantities. More...
 
char qnt_name [NQ][LEN]
 Quantity names. More...
 
char qnt_longname [NQ][LEN]
 Quantity long names. More...
 
char qnt_unit [NQ][LEN]
 Quantity units. More...
 
char qnt_format [NQ][LEN]
 Quantity output format. More...
 
int qnt_idx
 Quantity array index for air parcel IDs. More...
 
int qnt_ens
 Quantity array index for ensemble IDs. More...
 
int qnt_stat
 Quantity array index for station flag. More...
 
int qnt_m
 Quantity array index for mass. More...
 
int qnt_vmr
 Quantity array index for volume mixing ratio. More...
 
int qnt_rp
 Quantity array index for particle radius. More...
 
int qnt_rhop
 Quantity array index for particle density. More...
 
int qnt_ps
 Quantity array index for surface pressure. More...
 
int qnt_ts
 Quantity array index for surface temperature. More...
 
int qnt_zs
 Quantity array index for surface geopotential height. More...
 
int qnt_us
 Quantity array index for surface zonal wind. More...
 
int qnt_vs
 Quantity array index for surface meridional wind. More...
 
int qnt_lsm
 Quantity array index for land-sea mask. More...
 
int qnt_sst
 Quantity array index for sea surface temperature. More...
 
int qnt_pbl
 Quantity array index for boundary layer pressure. More...
 
int qnt_pt
 Quantity array index for tropopause pressure. More...
 
int qnt_tt
 Quantity array index for tropopause temperature. More...
 
int qnt_zt
 Quantity array index for tropopause geopotential height. More...
 
int qnt_h2ot
 Quantity array index for tropopause water vapor vmr. More...
 
int qnt_zg
 Quantity array index for geopotential height. More...
 
int qnt_p
 Quantity array index for pressure. More...
 
int qnt_t
 Quantity array index for temperature. More...
 
int qnt_rho
 Quantity array index for density of air. More...
 
int qnt_u
 Quantity array index for zonal wind. More...
 
int qnt_v
 Quantity array index for meridional wind. More...
 
int qnt_w
 Quantity array index for vertical velocity. More...
 
int qnt_h2o
 Quantity array index for water vapor vmr. More...
 
int qnt_o3
 Quantity array index for ozone vmr. More...
 
int qnt_lwc
 Quantity array index for cloud liquid water content. More...
 
int qnt_iwc
 Quantity array index for cloud ice water content. More...
 
int qnt_cc
 Quantity array index for cloud cover. More...
 
int qnt_pct
 Quantity array index for cloud top pressure. More...
 
int qnt_pcb
 Quantity array index for cloud bottom pressure. More...
 
int qnt_cl
 Quantity array index for total column cloud water. More...
 
int qnt_plcl
 Quantity array index for pressure at lifted condensation level (LCL). More...
 
int qnt_plfc
 Quantity array index for pressure at level of free convection (LCF). More...
 
int qnt_pel
 Quantity array index for pressure at equilibrium level (EL). More...
 
int qnt_cape
 Quantity array index for convective available potential energy (CAPE). More...
 
int qnt_cin
 Quantity array index for convective inhibition (CIN). More...
 
int qnt_o3c
 Quantity array index for total column ozone. More...
 
int qnt_hno3
 Quantity array index for nitric acid vmr. More...
 
int qnt_oh
 Quantity array index for hydroxyl number concentrations. More...
 
int qnt_h2o2
 Quantity array index for hydrogen peroxide number concentrations. More...
 
int qnt_ho2
 Quantity array index for hydroperoxyl radical number concentrations. More...
 
int qnt_o1d
 Quantity array index for atomic oxygen number concentrations. More...
 
int qnt_mloss_oh
 Quantity array index for total mass loss due to OH chemistry. More...
 
int qnt_mloss_h2o2
 Quantity array index for total mass loss due to H2O2 chemistry. More...
 
int qnt_mloss_wet
 Quantity array index for total mass loss due to wet deposition. More...
 
int qnt_mloss_dry
 Quantity array index for total mass loss due to dry deposition. More...
 
int qnt_mloss_decay
 Quantity array index for total mass loss due to exponential decay. More...
 
int qnt_psat
 Quantity array index for saturation pressure over water. More...
 
int qnt_psice
 Quantity array index for saturation pressure over ice. More...
 
int qnt_pw
 Quantity array index for partial water vapor pressure. More...
 
int qnt_sh
 Quantity array index for specific humidity. More...
 
int qnt_rh
 Quantity array index for relative humidity over water. More...
 
int qnt_rhice
 Quantity array index for relative humidity over ice. More...
 
int qnt_theta
 Quantity array index for potential temperature. More...
 
int qnt_zeta
 Quantity array index for zeta vertical coordinate. More...
 
int qnt_zeta_d
 Quantity array index for diagnosed zeta vertical coordinate. More...
 
int qnt_tvirt
 Quantity array index for virtual temperature. More...
 
int qnt_lapse
 Quantity array index for lapse rate. More...
 
int qnt_vh
 Quantity array index for horizontal wind. More...
 
int qnt_vz
 Quantity array index for vertical velocity. More...
 
int qnt_pv
 Quantity array index for potential vorticity. More...
 
int qnt_tdew
 Quantity array index for dew point temperature. More...
 
int qnt_tice
 Quantity array index for T_ice. More...
 
int qnt_tsts
 Quantity array index for T_STS. More...
 
int qnt_tnat
 Quantity array index for T_NAT. More...
 
int qnt_Cx
 Quantity array index for trace species x concentration. More...
 
int qnt_Ch2o
 Quantity array index for H2O concentration. More...
 
int qnt_Co3
 Quantity array index for O3 concentration. More...
 
int qnt_Cco
 Quantity array index for CO concentration. More...
 
int qnt_Coh
 Quantity array index for OH concentration. More...
 
int qnt_Ch
 Quantity array index for H concentration. More...
 
int qnt_Cho2
 Quantity array index for HO2 concentration. More...
 
int qnt_Ch2o2
 Quantity array index for H2O2 concentration. More...
 
int qnt_Co1d
 Quantity array index for O(1D) concentration. More...
 
int qnt_Co3p
 Quantity array index for O(3P) concentration. More...
 
int qnt_Cccl4
 Quantity array index for CFC-10 concentration. More...
 
int qnt_Cccl3f
 Quantity array index for CFC-11 concentration. More...
 
int qnt_Cccl2f2
 Quantity array index for CFC-12 concentration. More...
 
int qnt_Cn2o
 Quantity array index for N2O concentration. More...
 
int qnt_Csf6
 Quantity array index for SF6 concentration. More...
 
int qnt_aoa
 Quantity array index for age of air. More...
 
int direction
 Direction flag (1=forward calculation, -1=backward calculation). More...
 
double t_start
 Start time of simulation [s]. More...
 
double t_stop
 Stop time of simulation [s]. More...
 
double dt_mod
 Time step of simulation [s]. More...
 
char metbase [LEN]
 Basename for meteo data. More...
 
double dt_met
 Time step of meteo data [s]. More...
 
int met_convention
 Convention of the data layout. More...
 
int met_type
 Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd). More...
 
int met_nc_scale
 Check netCDF scaling factors (0=no, 1=yes). More...
 
int met_zfp_prec
 ZFP compression precision (for all variables, except z and T). More...
 
double met_zfp_tol_t
 ZFP compression tolerance (for temperature). More...
 
double met_zfp_tol_z
 ZFP compression tolerance (for geopotential height). More...
 
int met_dx
 Stride for longitudes. More...
 
int met_dy
 Stride for latitudes. More...
 
int met_dp
 Stride for pressure levels. More...
 
int met_sx
 Smoothing for longitudes. More...
 
int met_sy
 Smoothing for latitudes. More...
 
int met_sp
 Smoothing for pressure levels. More...
 
double met_detrend
 FWHM of horizontal Gaussian used for detrending [km]. More...
 
int met_np
 Number of target pressure levels. More...
 
double met_p [EP]
 Target pressure levels [hPa]. More...
 
int met_geopot_sx
 Longitudinal smoothing of geopotential heights. More...
 
int met_geopot_sy
 Latitudinal smoothing of geopotential heights. More...
 
int met_relhum
 Try to read relative humidity (0=no, 1=yes). More...
 
int met_tropo
 Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical). More...
 
double met_tropo_lapse
 WMO tropopause lapse rate [K/km]. More...
 
int met_tropo_nlev
 WMO tropopause layer depth (number of levels). More...
 
double met_tropo_lapse_sep
 WMO tropopause separation layer lapse rate [K/km]. More...
 
int met_tropo_nlev_sep
 WMO tropopause separation layer depth (number of levels). More...
 
double met_tropo_pv
 Dyanmical tropopause potential vorticity threshold [PVU]. More...
 
double met_tropo_theta
 Dynamical tropopause potential temperature threshold [K]. More...
 
int met_tropo_spline
 Tropopause interpolation method (0=linear, 1=spline). More...
 
int met_cloud
 Cloud data (0=none, 1=LWC+IWC, 2=RWC+SWC, 3=all). More...
 
double met_cloud_min
 Minimum cloud ice water content [kg/kg]. More...
 
double met_dt_out
 Time step for sampling of meteo data along trajectories [s]. More...
 
int met_cache
 Preload meteo data into disk cache (0=no, 1=yes). More...
 
double sort_dt
 Time step for sorting of particle data [s]. More...
 
int isosurf
 Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon). More...
 
char balloon [LEN]
 Balloon position filename. More...
 
int advect
 Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta). More...
 
int reflect
 Reflection of particles at top and bottom boundary (0=no, 1=yes). More...
 
double turb_dx_trop
 Horizontal turbulent diffusion coefficient (troposphere) [m^2/s]. More...
 
double turb_dx_strat
 Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s]. More...
 
double turb_dz_trop
 Vertical turbulent diffusion coefficient (troposphere) [m^2/s]. More...
 
double turb_dz_strat
 Vertical turbulent diffusion coefficient (stratosphere) [m^2/s]. More...
 
double turb_mesox
 Horizontal scaling factor for mesoscale wind fluctuations. More...
 
double turb_mesoz
 Vertical scaling factor for mesoscale wind fluctuations. More...
 
double conv_cape
 CAPE threshold for convection module [J/kg]. More...
 
double conv_cin
 CIN threshold for convection module [J/kg]. More...
 
double conv_dt
 Time interval for convection module [s]. More...
 
int conv_mix
 Type of vertical mixing (0=pressure, 1=density). More...
 
int conv_mix_bot
 Lower level for mixing (0=particle pressure, 1=surface). More...
 
int conv_mix_top
 Upper level for mixing (0=particle pressure, 1=EL). More...
 
double bound_mass
 Boundary conditions mass per particle [kg]. More...
 
double bound_mass_trend
 Boundary conditions mass per particle trend [kg/s]. More...
 
double bound_vmr
 Boundary conditions volume mixing ratio [ppv]. More...
 
double bound_vmr_trend
 Boundary conditions volume mixing ratio trend [ppv/s]. More...
 
double bound_lat0
 Boundary conditions minimum longitude [deg]. More...
 
double bound_lat1
 Boundary conditions maximum longitude [deg]. More...
 
double bound_p0
 Boundary conditions bottom pressure [hPa]. More...
 
double bound_p1
 Boundary conditions top pressure [hPa]. More...
 
double bound_dps
 Boundary conditions surface layer depth [hPa]. More...
 
double bound_dzs
 Boundary conditions surface layer depth [km]. More...
 
double bound_zetas
 Boundary conditions surface layer zeta [K]. More...
 
int bound_pbl
 Boundary conditions planetary boundary layer (0=no, 1=yes). More...
 
char species [LEN]
 Species. More...
 
double molmass
 Molar mass [g/mol]. More...
 
double tdec_trop
 Life time of particles in the troposphere [s]. More...
 
double tdec_strat
 Life time of particles in the stratosphere [s]. More...
 
char clim_photo [LEN]
 Filename of photolysis rates climatology. More...
 
char clim_hno3_filename [LEN]
 Filename of HNO3 climatology. More...
 
char clim_oh_filename [LEN]
 Filename of OH climatology. More...
 
char clim_h2o2_filename [LEN]
 Filename of H2O2 climatology. More...
 
char clim_ho2_filename [LEN]
 Filename of HO2 climatology. More...
 
char clim_o1d_filename [LEN]
 Filename of O(1D) climatology. More...
 
char clim_o3_filename [LEN]
 Filename of O3 climatology. More...
 
char clim_ccl4_timeseries [LEN]
 Filename of CFC-10 time series. More...
 
char clim_ccl3f_timeseries [LEN]
 Filename of CFC-11 time series. More...
 
char clim_ccl2f2_timeseries [LEN]
 Filename of CFC-12 time series. More...
 
char clim_n2o_timeseries [LEN]
 Filename of N2O time series. More...
 
char clim_sf6_timeseries [LEN]
 Filename of SF6 time series. More...
 
double mixing_dt
 Time interval for mixing [s]. More...
 
double mixing_trop
 Interparcel exchange parameter for mixing in the troposphere. More...
 
double mixing_strat
 Interparcel exchange parameter for mixing in the stratosphere. More...
 
int mixing_nz
 Number of altitudes of mixing grid. More...
 
double mixing_z0
 Lower altitude of mixing grid [km]. More...
 
double mixing_z1
 Upper altitude of mixing grid [km]. More...
 
int mixing_nx
 Number of longitudes of mixing grid. More...
 
double mixing_lon0
 Lower longitude of mixing grid [deg]. More...
 
double mixing_lon1
 Upper longitude of mixing grid [deg]. More...
 
int mixing_ny
 Number of latitudes of mixing grid. More...
 
double mixing_lat0
 Lower latitude of mixing grid [deg]. More...
 
double mixing_lat1
 Upper latitude of mixing grid [deg]. More...
 
int chemgrid_nz
 Number of altitudes of chemistry grid. More...
 
double chemgrid_z0
 Lower altitude of chemistry grid [km]. More...
 
double chemgrid_z1
 Upper altitude of chemistry grid [km]. More...
 
int chemgrid_nx
 Number of longitudes of chemistry grid. More...
 
double chemgrid_lon0
 Lower longitude of chemistry grid [deg]. More...
 
double chemgrid_lon1
 Upper longitude of chemistry grid [deg]. More...
 
int chemgrid_ny
 Number of latitudes of chemistry grid. More...
 
double chemgrid_lat0
 Lower latitude of chemistry grid [deg]. More...
 
double chemgrid_lat1
 Upper latitude of chemistry grid [deg]. More...
 
int oh_chem_reaction
 Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular). More...
 
double oh_chem [4]
 Coefficients for OH reaction rate (A, E/R or k0, n, kinf, m). More...
 
double oh_chem_beta
 Beta parameter for diurnal variablity of OH. More...
 
int h2o2_chem_reaction
 Reaction type for H2O2 chemistry (0=none, 1=SO2). More...
 
int kpp_chem
 Switch for KPP chemistry module (0=off, 1=on). More...
 
int tracer_chem
 Switch for first order tracer chemistry module (0=off, 1=on). More...
 
double wet_depo_pre [2]
 Coefficients for precipitation calculation. More...
 
double wet_depo_bc_a
 Coefficient A for wet deposition below cloud (exponential form). More...
 
double wet_depo_bc_b
 Coefficient B for wet deposition below cloud (exponential form). More...
 
double wet_depo_ic_a
 Coefficient A for wet deposition in cloud (exponential form). More...
 
double wet_depo_ic_b
 Coefficient B for wet deposition in cloud (exponential form). More...
 
double wet_depo_ic_h [3]
 Coefficients for wet deposition in cloud (Henry's law: Hb, Cb, pH). More...
 
double wet_depo_bc_h [2]
 Coefficients for wet deposition below cloud (Henry's law: Hb, Cb). More...
 
double wet_depo_ic_ret_ratio
 Coefficients for wet deposition in cloud: retention ratio. More...
 
double wet_depo_bc_ret_ratio
 Coefficients for wet deposition below cloud: retention ratio. More...
 
double dry_depo_dp
 Dry deposition surface layer [hPa]. More...
 
double dry_depo_vdep
 Dry deposition velocity [m/s]. More...
 
double psc_h2o
 H2O volume mixing ratio for PSC analysis. More...
 
double psc_hno3
 HNO3 volume mixing ratio for PSC analysis. More...
 
char atm_basename [LEN]
 Basename of atmospheric data files. More...
 
char atm_gpfile [LEN]
 Gnuplot file for atmospheric data. More...
 
double atm_dt_out
 Time step for atmospheric data output [s]. More...
 
int atm_filter
 Time filter for atmospheric data output (0=none, 1=missval, 2=remove). More...
 
int atm_stride
 Particle index stride for atmospheric data files. More...
 
int atm_type
 Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS). More...
 
char csi_basename [LEN]
 Basename of CSI data files. More...
 
char csi_kernel [LEN]
 Kernel data file for CSI output. More...
 
double csi_dt_out
 Time step for CSI output [s]. More...
 
char csi_obsfile [LEN]
 Observation data file for CSI analysis. More...
 
double csi_obsmin
 Minimum observation index to trigger detection. More...
 
double csi_modmin
 Minimum column density to trigger detection [kg/m^2]. More...
 
int csi_nz
 Number of altitudes of gridded CSI data. More...
 
double csi_z0
 Lower altitude of gridded CSI data [km]. More...
 
double csi_z1
 Upper altitude of gridded CSI data [km]. More...
 
int csi_nx
 Number of longitudes of gridded CSI data. More...
 
double csi_lon0
 Lower longitude of gridded CSI data [deg]. More...
 
double csi_lon1
 Upper longitude of gridded CSI data [deg]. More...
 
int csi_ny
 Number of latitudes of gridded CSI data. More...
 
double csi_lat0
 Lower latitude of gridded CSI data [deg]. More...
 
double csi_lat1
 Upper latitude of gridded CSI data [deg]. More...
 
char ens_basename [LEN]
 Basename of ensemble data file. More...
 
double ens_dt_out
 Time step for ensemble output [s]. More...
 
char grid_basename [LEN]
 Basename of grid data files. More...
 
char grid_kernel [LEN]
 Kernel data file for grid output. More...
 
char grid_gpfile [LEN]
 Gnuplot file for gridded data. More...
 
double grid_dt_out
 Time step for gridded data output [s]. More...
 
int grid_sparse
 Sparse output in grid data files (0=no, 1=yes). More...
 
int grid_nz
 Number of altitudes of gridded data. More...
 
double grid_z0
 Lower altitude of gridded data [km]. More...
 
double grid_z1
 Upper altitude of gridded data [km]. More...
 
int grid_nx
 Number of longitudes of gridded data. More...
 
double grid_lon0
 Lower longitude of gridded data [deg]. More...
 
double grid_lon1
 Upper longitude of gridded data [deg]. More...
 
int grid_ny
 Number of latitudes of gridded data. More...
 
double grid_lat0
 Lower latitude of gridded data [deg]. More...
 
double grid_lat1
 Upper latitude of gridded data [deg]. More...
 
int grid_type
 Type of grid data files (0=ASCII, 1=netCDF). More...
 
char prof_basename [LEN]
 Basename for profile output file. More...
 
char prof_obsfile [LEN]
 Observation data file for profile output. More...
 
int prof_nz
 Number of altitudes of gridded profile data. More...
 
double prof_z0
 Lower altitude of gridded profile data [km]. More...
 
double prof_z1
 Upper altitude of gridded profile data [km]. More...
 
int prof_nx
 Number of longitudes of gridded profile data. More...
 
double prof_lon0
 Lower longitude of gridded profile data [deg]. More...
 
double prof_lon1
 Upper longitude of gridded profile data [deg]. More...
 
int prof_ny
 Number of latitudes of gridded profile data. More...
 
double prof_lat0
 Lower latitude of gridded profile data [deg]. More...
 
double prof_lat1
 Upper latitude of gridded profile data [deg]. More...
 
char sample_basename [LEN]
 Basename of sample data file. More...
 
char sample_kernel [LEN]
 Kernel data file for sample output. More...
 
char sample_obsfile [LEN]
 Observation data file for sample output. More...
 
double sample_dx
 Horizontal radius for sample output [km]. More...
 
double sample_dz
 Layer depth for sample output [km]. More...
 
char stat_basename [LEN]
 Basename of station data file. More...
 
double stat_lon
 Longitude of station [deg]. More...
 
double stat_lat
 Latitude of station [deg]. More...
 
double stat_r
 Search radius around station [km]. More...
 
double stat_t0
 Start time for station output [s]. More...
 
double stat_t1
 Stop time for station output [s]. More...
 
char vtk_basename [LEN]
 Basename of VTK data files. More...
 
double vtk_dt_out
 Time step for VTK data output [s]. More...
 
int vtk_stride
 Particle index stride for VTK data. More...
 
double vtk_scale
 Vertical scaling factor for VTK data. More...
 
double vtk_offset
 Vertical offset for VTK data [km]. More...
 
int vtk_sphere
 Spherical projection for VTK data (0=no, 1=yes). More...
 
+

Detailed Description

+

Control parameters.

+ +

Definition at line 799 of file libtrac.h.

+

Field Documentation

+ +

◆ atm_type_out

+ +
+
+ + + + +
int ctl_t::atm_type_out
+
+ +

Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).

+ +

Definition at line 802 of file libtrac.h.

+ +
+
+ +

◆ cpl_zeta_and_press_modules

+ +
+
+ + + + +
int ctl_t::cpl_zeta_and_press_modules
+
+ +

Coupled use of pressure based modules and diabatic advection.

+

(0= no coupling, 1= coupling)

+ +

Definition at line 806 of file libtrac.h.

+ +
+
+ +

◆ press_level_def

+ +
+
+ + + + +
int ctl_t::press_level_def
+
+ +

Use predefined pressure levels or not.

+ +

Definition at line 809 of file libtrac.h.

+ +
+
+ +

◆ vert_coord_ap

+ +
+
+ + + + +
int ctl_t::vert_coord_ap
+
+ +

Vertical coordinate of air parcels (0=pressure, 1=zeta).

+ +

Definition at line 812 of file libtrac.h.

+ +
+
+ +

◆ vert_coord_met

+ +
+
+ + + + +
int ctl_t::vert_coord_met
+
+ +

Vertical coordinate of input meteo data (0=automatic, 1=eta).

+ +

Definition at line 815 of file libtrac.h.

+ +
+
+ +

◆ clams_met_data

+ +
+
+ + + + +
int ctl_t::clams_met_data
+
+ +

Read MPTRAC or CLaMS meteo data (0=MPTRAC, 1=CLaMS).

+ +

Definition at line 818 of file libtrac.h.

+ +
+
+ +

◆ chunkszhint

+ +
+
+ + + + +
size_t ctl_t::chunkszhint
+
+ +

Chunk size hint for nc__open.

+ +

Definition at line 821 of file libtrac.h.

+ +
+
+ +

◆ read_mode

+ +
+
+ + + + +
int ctl_t::read_mode
+
+ +

Read mode for nc__open.

+ +

Definition at line 824 of file libtrac.h.

+ +
+
+ +

◆ nq

+ +
+
+ + + + +
int ctl_t::nq
+
+ +

Number of quantities.

+ +

Definition at line 827 of file libtrac.h.

+ +
+
+ +

◆ qnt_name

+ +
+
+ + + + +
char ctl_t::qnt_name[NQ][LEN]
+
+ +

Quantity names.

+ +

Definition at line 830 of file libtrac.h.

+ +
+
+ +

◆ qnt_longname

+ +
+
+ + + + +
char ctl_t::qnt_longname[NQ][LEN]
+
+ +

Quantity long names.

+ +

Definition at line 833 of file libtrac.h.

+ +
+
+ +

◆ qnt_unit

+ +
+
+ + + + +
char ctl_t::qnt_unit[NQ][LEN]
+
+ +

Quantity units.

+ +

Definition at line 836 of file libtrac.h.

+ +
+
+ +

◆ qnt_format

+ +
+
+ + + + +
char ctl_t::qnt_format[NQ][LEN]
+
+ +

Quantity output format.

+ +

Definition at line 839 of file libtrac.h.

+ +
+
+ +

◆ qnt_idx

+ +
+
+ + + + +
int ctl_t::qnt_idx
+
+ +

Quantity array index for air parcel IDs.

+ +

Definition at line 842 of file libtrac.h.

+ +
+
+ +

◆ qnt_ens

+ +
+
+ + + + +
int ctl_t::qnt_ens
+
+ +

Quantity array index for ensemble IDs.

+ +

Definition at line 845 of file libtrac.h.

+ +
+
+ +

◆ qnt_stat

+ +
+
+ + + + +
int ctl_t::qnt_stat
+
+ +

Quantity array index for station flag.

+ +

Definition at line 848 of file libtrac.h.

+ +
+
+ +

◆ qnt_m

+ +
+
+ + + + +
int ctl_t::qnt_m
+
+ +

Quantity array index for mass.

+ +

Definition at line 851 of file libtrac.h.

+ +
+
+ +

◆ qnt_vmr

+ +
+
+ + + + +
int ctl_t::qnt_vmr
+
+ +

Quantity array index for volume mixing ratio.

+ +

Definition at line 854 of file libtrac.h.

+ +
+
+ +

◆ qnt_rp

+ +
+
+ + + + +
int ctl_t::qnt_rp
+
+ +

Quantity array index for particle radius.

+ +

Definition at line 857 of file libtrac.h.

+ +
+
+ +

◆ qnt_rhop

+ +
+
+ + + + +
int ctl_t::qnt_rhop
+
+ +

Quantity array index for particle density.

+ +

Definition at line 860 of file libtrac.h.

+ +
+
+ +

◆ qnt_ps

+ +
+
+ + + + +
int ctl_t::qnt_ps
+
+ +

Quantity array index for surface pressure.

+ +

Definition at line 863 of file libtrac.h.

+ +
+
+ +

◆ qnt_ts

+ +
+
+ + + + +
int ctl_t::qnt_ts
+
+ +

Quantity array index for surface temperature.

+ +

Definition at line 866 of file libtrac.h.

+ +
+
+ +

◆ qnt_zs

+ +
+
+ + + + +
int ctl_t::qnt_zs
+
+ +

Quantity array index for surface geopotential height.

+ +

Definition at line 869 of file libtrac.h.

+ +
+
+ +

◆ qnt_us

+ +
+
+ + + + +
int ctl_t::qnt_us
+
+ +

Quantity array index for surface zonal wind.

+ +

Definition at line 872 of file libtrac.h.

+ +
+
+ +

◆ qnt_vs

+ +
+
+ + + + +
int ctl_t::qnt_vs
+
+ +

Quantity array index for surface meridional wind.

+ +

Definition at line 875 of file libtrac.h.

+ +
+
+ +

◆ qnt_lsm

+ +
+
+ + + + +
int ctl_t::qnt_lsm
+
+ +

Quantity array index for land-sea mask.

+ +

Definition at line 878 of file libtrac.h.

+ +
+
+ +

◆ qnt_sst

+ +
+
+ + + + +
int ctl_t::qnt_sst
+
+ +

Quantity array index for sea surface temperature.

+ +

Definition at line 881 of file libtrac.h.

+ +
+
+ +

◆ qnt_pbl

+ +
+
+ + + + +
int ctl_t::qnt_pbl
+
+ +

Quantity array index for boundary layer pressure.

+ +

Definition at line 884 of file libtrac.h.

+ +
+
+ +

◆ qnt_pt

+ +
+
+ + + + +
int ctl_t::qnt_pt
+
+ +

Quantity array index for tropopause pressure.

+ +

Definition at line 887 of file libtrac.h.

+ +
+
+ +

◆ qnt_tt

+ +
+
+ + + + +
int ctl_t::qnt_tt
+
+ +

Quantity array index for tropopause temperature.

+ +

Definition at line 890 of file libtrac.h.

+ +
+
+ +

◆ qnt_zt

+ +
+
+ + + + +
int ctl_t::qnt_zt
+
+ +

Quantity array index for tropopause geopotential height.

+ +

Definition at line 893 of file libtrac.h.

+ +
+
+ +

◆ qnt_h2ot

+ +
+
+ + + + +
int ctl_t::qnt_h2ot
+
+ +

Quantity array index for tropopause water vapor vmr.

+ +

Definition at line 896 of file libtrac.h.

+ +
+
+ +

◆ qnt_zg

+ +
+
+ + + + +
int ctl_t::qnt_zg
+
+ +

Quantity array index for geopotential height.

+ +

Definition at line 899 of file libtrac.h.

+ +
+
+ +

◆ qnt_p

+ +
+
+ + + + +
int ctl_t::qnt_p
+
+ +

Quantity array index for pressure.

+ +

Definition at line 902 of file libtrac.h.

+ +
+
+ +

◆ qnt_t

+ +
+
+ + + + +
int ctl_t::qnt_t
+
+ +

Quantity array index for temperature.

+ +

Definition at line 905 of file libtrac.h.

+ +
+
+ +

◆ qnt_rho

+ +
+
+ + + + +
int ctl_t::qnt_rho
+
+ +

Quantity array index for density of air.

+ +

Definition at line 908 of file libtrac.h.

+ +
+
+ +

◆ qnt_u

+ +
+
+ + + + +
int ctl_t::qnt_u
+
+ +

Quantity array index for zonal wind.

+ +

Definition at line 911 of file libtrac.h.

+ +
+
+ +

◆ qnt_v

+ +
+
+ + + + +
int ctl_t::qnt_v
+
+ +

Quantity array index for meridional wind.

+ +

Definition at line 914 of file libtrac.h.

+ +
+
+ +

◆ qnt_w

+ +
+
+ + + + +
int ctl_t::qnt_w
+
+ +

Quantity array index for vertical velocity.

+ +

Definition at line 917 of file libtrac.h.

+ +
+
+ +

◆ qnt_h2o

+ +
+
+ + + + +
int ctl_t::qnt_h2o
+
+ +

Quantity array index for water vapor vmr.

+ +

Definition at line 920 of file libtrac.h.

+ +
+
+ +

◆ qnt_o3

+ +
+
+ + + + +
int ctl_t::qnt_o3
+
+ +

Quantity array index for ozone vmr.

+ +

Definition at line 923 of file libtrac.h.

+ +
+
+ +

◆ qnt_lwc

+ +
+
+ + + + +
int ctl_t::qnt_lwc
+
+ +

Quantity array index for cloud liquid water content.

+ +

Definition at line 926 of file libtrac.h.

+ +
+
+ +

◆ qnt_iwc

+ +
+
+ + + + +
int ctl_t::qnt_iwc
+
+ +

Quantity array index for cloud ice water content.

+ +

Definition at line 929 of file libtrac.h.

+ +
+
+ +

◆ qnt_cc

+ +
+
+ + + + +
int ctl_t::qnt_cc
+
+ +

Quantity array index for cloud cover.

+ +

Definition at line 932 of file libtrac.h.

+ +
+
+ +

◆ qnt_pct

+ +
+
+ + + + +
int ctl_t::qnt_pct
+
+ +

Quantity array index for cloud top pressure.

+ +

Definition at line 935 of file libtrac.h.

+ +
+
+ +

◆ qnt_pcb

+ +
+
+ + + + +
int ctl_t::qnt_pcb
+
+ +

Quantity array index for cloud bottom pressure.

+ +

Definition at line 938 of file libtrac.h.

+ +
+
+ +

◆ qnt_cl

+ +
+
+ + + + +
int ctl_t::qnt_cl
+
+ +

Quantity array index for total column cloud water.

+ +

Definition at line 941 of file libtrac.h.

+ +
+
+ +

◆ qnt_plcl

+ +
+
+ + + + +
int ctl_t::qnt_plcl
+
+ +

Quantity array index for pressure at lifted condensation level (LCL).

+ +

Definition at line 944 of file libtrac.h.

+ +
+
+ +

◆ qnt_plfc

+ +
+
+ + + + +
int ctl_t::qnt_plfc
+
+ +

Quantity array index for pressure at level of free convection (LCF).

+ +

Definition at line 947 of file libtrac.h.

+ +
+
+ +

◆ qnt_pel

+ +
+
+ + + + +
int ctl_t::qnt_pel
+
+ +

Quantity array index for pressure at equilibrium level (EL).

+ +

Definition at line 950 of file libtrac.h.

+ +
+
+ +

◆ qnt_cape

+ +
+
+ + + + +
int ctl_t::qnt_cape
+
+ +

Quantity array index for convective available potential energy (CAPE).

+ +

Definition at line 953 of file libtrac.h.

+ +
+
+ +

◆ qnt_cin

+ +
+
+ + + + +
int ctl_t::qnt_cin
+
+ +

Quantity array index for convective inhibition (CIN).

+ +

Definition at line 956 of file libtrac.h.

+ +
+
+ +

◆ qnt_o3c

+ +
+
+ + + + +
int ctl_t::qnt_o3c
+
+ +

Quantity array index for total column ozone.

+ +

Definition at line 959 of file libtrac.h.

+ +
+
+ +

◆ qnt_hno3

+ +
+
+ + + + +
int ctl_t::qnt_hno3
+
+ +

Quantity array index for nitric acid vmr.

+ +

Definition at line 962 of file libtrac.h.

+ +
+
+ +

◆ qnt_oh

+ +
+
+ + + + +
int ctl_t::qnt_oh
+
+ +

Quantity array index for hydroxyl number concentrations.

+ +

Definition at line 965 of file libtrac.h.

+ +
+
+ +

◆ qnt_h2o2

+ +
+
+ + + + +
int ctl_t::qnt_h2o2
+
+ +

Quantity array index for hydrogen peroxide number concentrations.

+ +

Definition at line 968 of file libtrac.h.

+ +
+
+ +

◆ qnt_ho2

+ +
+
+ + + + +
int ctl_t::qnt_ho2
+
+ +

Quantity array index for hydroperoxyl radical number concentrations.

+ +

Definition at line 971 of file libtrac.h.

+ +
+
+ +

◆ qnt_o1d

+ +
+
+ + + + +
int ctl_t::qnt_o1d
+
+ +

Quantity array index for atomic oxygen number concentrations.

+ +

Definition at line 974 of file libtrac.h.

+ +
+
+ +

◆ qnt_mloss_oh

+ +
+
+ + + + +
int ctl_t::qnt_mloss_oh
+
+ +

Quantity array index for total mass loss due to OH chemistry.

+ +

Definition at line 977 of file libtrac.h.

+ +
+
+ +

◆ qnt_mloss_h2o2

+ +
+
+ + + + +
int ctl_t::qnt_mloss_h2o2
+
+ +

Quantity array index for total mass loss due to H2O2 chemistry.

+ +

Definition at line 980 of file libtrac.h.

+ +
+
+ +

◆ qnt_mloss_wet

+ +
+
+ + + + +
int ctl_t::qnt_mloss_wet
+
+ +

Quantity array index for total mass loss due to wet deposition.

+ +

Definition at line 983 of file libtrac.h.

+ +
+
+ +

◆ qnt_mloss_dry

+ +
+
+ + + + +
int ctl_t::qnt_mloss_dry
+
+ +

Quantity array index for total mass loss due to dry deposition.

+ +

Definition at line 986 of file libtrac.h.

+ +
+
+ +

◆ qnt_mloss_decay

+ +
+
+ + + + +
int ctl_t::qnt_mloss_decay
+
+ +

Quantity array index for total mass loss due to exponential decay.

+ +

Definition at line 989 of file libtrac.h.

+ +
+
+ +

◆ qnt_psat

+ +
+
+ + + + +
int ctl_t::qnt_psat
+
+ +

Quantity array index for saturation pressure over water.

+ +

Definition at line 992 of file libtrac.h.

+ +
+
+ +

◆ qnt_psice

+ +
+
+ + + + +
int ctl_t::qnt_psice
+
+ +

Quantity array index for saturation pressure over ice.

+ +

Definition at line 995 of file libtrac.h.

+ +
+
+ +

◆ qnt_pw

+ +
+
+ + + + +
int ctl_t::qnt_pw
+
+ +

Quantity array index for partial water vapor pressure.

+ +

Definition at line 998 of file libtrac.h.

+ +
+
+ +

◆ qnt_sh

+ +
+
+ + + + +
int ctl_t::qnt_sh
+
+ +

Quantity array index for specific humidity.

+ +

Definition at line 1001 of file libtrac.h.

+ +
+
+ +

◆ qnt_rh

+ +
+
+ + + + +
int ctl_t::qnt_rh
+
+ +

Quantity array index for relative humidity over water.

+ +

Definition at line 1004 of file libtrac.h.

+ +
+
+ +

◆ qnt_rhice

+ +
+
+ + + + +
int ctl_t::qnt_rhice
+
+ +

Quantity array index for relative humidity over ice.

+ +

Definition at line 1007 of file libtrac.h.

+ +
+
+ +

◆ qnt_theta

+ +
+
+ + + + +
int ctl_t::qnt_theta
+
+ +

Quantity array index for potential temperature.

+ +

Definition at line 1010 of file libtrac.h.

+ +
+
+ +

◆ qnt_zeta

+ +
+
+ + + + +
int ctl_t::qnt_zeta
+
+ +

Quantity array index for zeta vertical coordinate.

+ +

Definition at line 1013 of file libtrac.h.

+ +
+
+ +

◆ qnt_zeta_d

+ +
+
+ + + + +
int ctl_t::qnt_zeta_d
+
+ +

Quantity array index for diagnosed zeta vertical coordinate.

+ +

Definition at line 1016 of file libtrac.h.

+ +
+
+ +

◆ qnt_tvirt

+ +
+
+ + + + +
int ctl_t::qnt_tvirt
+
+ +

Quantity array index for virtual temperature.

+ +

Definition at line 1019 of file libtrac.h.

+ +
+
+ +

◆ qnt_lapse

+ +
+
+ + + + +
int ctl_t::qnt_lapse
+
+ +

Quantity array index for lapse rate.

+ +

Definition at line 1022 of file libtrac.h.

+ +
+
+ +

◆ qnt_vh

+ +
+
+ + + + +
int ctl_t::qnt_vh
+
+ +

Quantity array index for horizontal wind.

+ +

Definition at line 1025 of file libtrac.h.

+ +
+
+ +

◆ qnt_vz

+ +
+
+ + + + +
int ctl_t::qnt_vz
+
+ +

Quantity array index for vertical velocity.

+ +

Definition at line 1028 of file libtrac.h.

+ +
+
+ +

◆ qnt_pv

+ +
+
+ + + + +
int ctl_t::qnt_pv
+
+ +

Quantity array index for potential vorticity.

+ +

Definition at line 1031 of file libtrac.h.

+ +
+
+ +

◆ qnt_tdew

+ +
+
+ + + + +
int ctl_t::qnt_tdew
+
+ +

Quantity array index for dew point temperature.

+ +

Definition at line 1034 of file libtrac.h.

+ +
+
+ +

◆ qnt_tice

+ +
+
+ + + + +
int ctl_t::qnt_tice
+
+ +

Quantity array index for T_ice.

+ +

Definition at line 1037 of file libtrac.h.

+ +
+
+ +

◆ qnt_tsts

+ +
+
+ + + + +
int ctl_t::qnt_tsts
+
+ +

Quantity array index for T_STS.

+ +

Definition at line 1040 of file libtrac.h.

+ +
+
+ +

◆ qnt_tnat

+ +
+
+ + + + +
int ctl_t::qnt_tnat
+
+ +

Quantity array index for T_NAT.

+ +

Definition at line 1043 of file libtrac.h.

+ +
+
+ +

◆ qnt_Cx

+ +
+
+ + + + +
int ctl_t::qnt_Cx
+
+ +

Quantity array index for trace species x concentration.

+ +

Definition at line 1046 of file libtrac.h.

+ +
+
+ +

◆ qnt_Ch2o

+ +
+
+ + + + +
int ctl_t::qnt_Ch2o
+
+ +

Quantity array index for H2O concentration.

+ +

Definition at line 1049 of file libtrac.h.

+ +
+
+ +

◆ qnt_Co3

+ +
+
+ + + + +
int ctl_t::qnt_Co3
+
+ +

Quantity array index for O3 concentration.

+ +

Definition at line 1052 of file libtrac.h.

+ +
+
+ +

◆ qnt_Cco

+ +
+
+ + + + +
int ctl_t::qnt_Cco
+
+ +

Quantity array index for CO concentration.

+ +

Definition at line 1055 of file libtrac.h.

+ +
+
+ +

◆ qnt_Coh

+ +
+
+ + + + +
int ctl_t::qnt_Coh
+
+ +

Quantity array index for OH concentration.

+ +

Definition at line 1058 of file libtrac.h.

+ +
+
+ +

◆ qnt_Ch

+ +
+
+ + + + +
int ctl_t::qnt_Ch
+
+ +

Quantity array index for H concentration.

+ +

Definition at line 1061 of file libtrac.h.

+ +
+
+ +

◆ qnt_Cho2

+ +
+
+ + + + +
int ctl_t::qnt_Cho2
+
+ +

Quantity array index for HO2 concentration.

+ +

Definition at line 1064 of file libtrac.h.

+ +
+
+ +

◆ qnt_Ch2o2

+ +
+
+ + + + +
int ctl_t::qnt_Ch2o2
+
+ +

Quantity array index for H2O2 concentration.

+ +

Definition at line 1067 of file libtrac.h.

+ +
+
+ +

◆ qnt_Co1d

+ +
+
+ + + + +
int ctl_t::qnt_Co1d
+
+ +

Quantity array index for O(1D) concentration.

+ +

Definition at line 1070 of file libtrac.h.

+ +
+
+ +

◆ qnt_Co3p

+ +
+
+ + + + +
int ctl_t::qnt_Co3p
+
+ +

Quantity array index for O(3P) concentration.

+ +

Definition at line 1073 of file libtrac.h.

+ +
+
+ +

◆ qnt_Cccl4

+ +
+
+ + + + +
int ctl_t::qnt_Cccl4
+
+ +

Quantity array index for CFC-10 concentration.

+ +

Definition at line 1076 of file libtrac.h.

+ +
+
+ +

◆ qnt_Cccl3f

+ +
+
+ + + + +
int ctl_t::qnt_Cccl3f
+
+ +

Quantity array index for CFC-11 concentration.

+ +

Definition at line 1079 of file libtrac.h.

+ +
+
+ +

◆ qnt_Cccl2f2

+ +
+
+ + + + +
int ctl_t::qnt_Cccl2f2
+
+ +

Quantity array index for CFC-12 concentration.

+ +

Definition at line 1082 of file libtrac.h.

+ +
+
+ +

◆ qnt_Cn2o

+ +
+
+ + + + +
int ctl_t::qnt_Cn2o
+
+ +

Quantity array index for N2O concentration.

+ +

Definition at line 1085 of file libtrac.h.

+ +
+
+ +

◆ qnt_Csf6

+ +
+
+ + + + +
int ctl_t::qnt_Csf6
+
+ +

Quantity array index for SF6 concentration.

+ +

Definition at line 1088 of file libtrac.h.

+ +
+
+ +

◆ qnt_aoa

+ +
+
+ + + + +
int ctl_t::qnt_aoa
+
+ +

Quantity array index for age of air.

+ +

Definition at line 1091 of file libtrac.h.

+ +
+
+ +

◆ direction

+ +
+
+ + + + +
int ctl_t::direction
+
+ +

Direction flag (1=forward calculation, -1=backward calculation).

+ +

Definition at line 1094 of file libtrac.h.

+ +
+
+ +

◆ t_start

+ +
+
+ + + + +
double ctl_t::t_start
+
+ +

Start time of simulation [s].

+ +

Definition at line 1097 of file libtrac.h.

+ +
+
+ +

◆ t_stop

+ +
+
+ + + + +
double ctl_t::t_stop
+
+ +

Stop time of simulation [s].

+ +

Definition at line 1100 of file libtrac.h.

+ +
+
+ +

◆ dt_mod

+ +
+
+ + + + +
double ctl_t::dt_mod
+
+ +

Time step of simulation [s].

+ +

Definition at line 1103 of file libtrac.h.

+ +
+
+ +

◆ metbase

+ +
+
+ + + + +
char ctl_t::metbase[LEN]
+
+ +

Basename for meteo data.

+ +

Definition at line 1106 of file libtrac.h.

+ +
+
+ +

◆ dt_met

+ +
+
+ + + + +
double ctl_t::dt_met
+
+ +

Time step of meteo data [s].

+ +

Definition at line 1109 of file libtrac.h.

+ +
+
+ +

◆ met_convention

+ +
+
+ + + + +
int ctl_t::met_convention
+
+ +

Convention of the data layout.

+ +

Definition at line 1112 of file libtrac.h.

+ +
+
+ +

◆ met_type

+ +
+
+ + + + +
int ctl_t::met_type
+
+ +

Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).

+ +

Definition at line 1115 of file libtrac.h.

+ +
+
+ +

◆ met_nc_scale

+ +
+
+ + + + +
int ctl_t::met_nc_scale
+
+ +

Check netCDF scaling factors (0=no, 1=yes).

+ +

Definition at line 1118 of file libtrac.h.

+ +
+
+ +

◆ met_zfp_prec

+ +
+
+ + + + +
int ctl_t::met_zfp_prec
+
+ +

ZFP compression precision (for all variables, except z and T).

+ +

Definition at line 1121 of file libtrac.h.

+ +
+
+ +

◆ met_zfp_tol_t

+ +
+
+ + + + +
double ctl_t::met_zfp_tol_t
+
+ +

ZFP compression tolerance (for temperature).

+ +

Definition at line 1124 of file libtrac.h.

+ +
+
+ +

◆ met_zfp_tol_z

+ +
+
+ + + + +
double ctl_t::met_zfp_tol_z
+
+ +

ZFP compression tolerance (for geopotential height).

+ +

Definition at line 1127 of file libtrac.h.

+ +
+
+ +

◆ met_dx

+ +
+
+ + + + +
int ctl_t::met_dx
+
+ +

Stride for longitudes.

+ +

Definition at line 1130 of file libtrac.h.

+ +
+
+ +

◆ met_dy

+ +
+
+ + + + +
int ctl_t::met_dy
+
+ +

Stride for latitudes.

+ +

Definition at line 1133 of file libtrac.h.

+ +
+
+ +

◆ met_dp

+ +
+
+ + + + +
int ctl_t::met_dp
+
+ +

Stride for pressure levels.

+ +

Definition at line 1136 of file libtrac.h.

+ +
+
+ +

◆ met_sx

+ +
+
+ + + + +
int ctl_t::met_sx
+
+ +

Smoothing for longitudes.

+ +

Definition at line 1139 of file libtrac.h.

+ +
+
+ +

◆ met_sy

+ +
+
+ + + + +
int ctl_t::met_sy
+
+ +

Smoothing for latitudes.

+ +

Definition at line 1142 of file libtrac.h.

+ +
+
+ +

◆ met_sp

+ +
+
+ + + + +
int ctl_t::met_sp
+
+ +

Smoothing for pressure levels.

+ +

Definition at line 1145 of file libtrac.h.

+ +
+
+ +

◆ met_detrend

+ +
+
+ + + + +
double ctl_t::met_detrend
+
+ +

FWHM of horizontal Gaussian used for detrending [km].

+ +

Definition at line 1148 of file libtrac.h.

+ +
+
+ +

◆ met_np

+ +
+
+ + + + +
int ctl_t::met_np
+
+ +

Number of target pressure levels.

+ +

Definition at line 1151 of file libtrac.h.

+ +
+
+ +

◆ met_p

+ +
+
+ + + + +
double ctl_t::met_p[EP]
+
+ +

Target pressure levels [hPa].

+ +

Definition at line 1154 of file libtrac.h.

+ +
+
+ +

◆ met_geopot_sx

+ +
+
+ + + + +
int ctl_t::met_geopot_sx
+
+ +

Longitudinal smoothing of geopotential heights.

+ +

Definition at line 1157 of file libtrac.h.

+ +
+
+ +

◆ met_geopot_sy

+ +
+
+ + + + +
int ctl_t::met_geopot_sy
+
+ +

Latitudinal smoothing of geopotential heights.

+ +

Definition at line 1160 of file libtrac.h.

+ +
+
+ +

◆ met_relhum

+ +
+
+ + + + +
int ctl_t::met_relhum
+
+ +

Try to read relative humidity (0=no, 1=yes).

+ +

Definition at line 1163 of file libtrac.h.

+ +
+
+ +

◆ met_tropo

+ +
+
+ + + + +
int ctl_t::met_tropo
+
+ +

Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical).

+ +

Definition at line 1167 of file libtrac.h.

+ +
+
+ +

◆ met_tropo_lapse

+ +
+
+ + + + +
double ctl_t::met_tropo_lapse
+
+ +

WMO tropopause lapse rate [K/km].

+ +

Definition at line 1170 of file libtrac.h.

+ +
+
+ +

◆ met_tropo_nlev

+ +
+
+ + + + +
int ctl_t::met_tropo_nlev
+
+ +

WMO tropopause layer depth (number of levels).

+ +

Definition at line 1173 of file libtrac.h.

+ +
+
+ +

◆ met_tropo_lapse_sep

+ +
+
+ + + + +
double ctl_t::met_tropo_lapse_sep
+
+ +

WMO tropopause separation layer lapse rate [K/km].

+ +

Definition at line 1176 of file libtrac.h.

+ +
+
+ +

◆ met_tropo_nlev_sep

+ +
+
+ + + + +
int ctl_t::met_tropo_nlev_sep
+
+ +

WMO tropopause separation layer depth (number of levels).

+ +

Definition at line 1179 of file libtrac.h.

+ +
+
+ +

◆ met_tropo_pv

+ +
+
+ + + + +
double ctl_t::met_tropo_pv
+
+ +

Dyanmical tropopause potential vorticity threshold [PVU].

+ +

Definition at line 1182 of file libtrac.h.

+ +
+
+ +

◆ met_tropo_theta

+ +
+
+ + + + +
double ctl_t::met_tropo_theta
+
+ +

Dynamical tropopause potential temperature threshold [K].

+ +

Definition at line 1185 of file libtrac.h.

+ +
+
+ +

◆ met_tropo_spline

+ +
+
+ + + + +
int ctl_t::met_tropo_spline
+
+ +

Tropopause interpolation method (0=linear, 1=spline).

+ +

Definition at line 1188 of file libtrac.h.

+ +
+
+ +

◆ met_cloud

+ +
+
+ + + + +
int ctl_t::met_cloud
+
+ +

Cloud data (0=none, 1=LWC+IWC, 2=RWC+SWC, 3=all).

+ +

Definition at line 1191 of file libtrac.h.

+ +
+
+ +

◆ met_cloud_min

+ +
+
+ + + + +
double ctl_t::met_cloud_min
+
+ +

Minimum cloud ice water content [kg/kg].

+ +

Definition at line 1194 of file libtrac.h.

+ +
+
+ +

◆ met_dt_out

+ +
+
+ + + + +
double ctl_t::met_dt_out
+
+ +

Time step for sampling of meteo data along trajectories [s].

+ +

Definition at line 1197 of file libtrac.h.

+ +
+
+ +

◆ met_cache

+ +
+
+ + + + +
int ctl_t::met_cache
+
+ +

Preload meteo data into disk cache (0=no, 1=yes).

+ +

Definition at line 1200 of file libtrac.h.

+ +
+
+ +

◆ sort_dt

+ +
+
+ + + + +
double ctl_t::sort_dt
+
+ +

Time step for sorting of particle data [s].

+ +

Definition at line 1203 of file libtrac.h.

+ +
+
+ +

◆ isosurf

+ +
+
+ + + + +
int ctl_t::isosurf
+
+ +

Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon).

+ +

Definition at line 1207 of file libtrac.h.

+ +
+
+ +

◆ balloon

+ +
+
+ + + + +
char ctl_t::balloon[LEN]
+
+ +

Balloon position filename.

+ +

Definition at line 1210 of file libtrac.h.

+ +
+
+ +

◆ advect

+ +
+
+ + + + +
int ctl_t::advect
+
+ +

Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta).

+ +

Definition at line 1213 of file libtrac.h.

+ +
+
+ +

◆ reflect

+ +
+
+ + + + +
int ctl_t::reflect
+
+ +

Reflection of particles at top and bottom boundary (0=no, 1=yes).

+ +

Definition at line 1216 of file libtrac.h.

+ +
+
+ +

◆ turb_dx_trop

+ +
+
+ + + + +
double ctl_t::turb_dx_trop
+
+ +

Horizontal turbulent diffusion coefficient (troposphere) [m^2/s].

+ +

Definition at line 1219 of file libtrac.h.

+ +
+
+ +

◆ turb_dx_strat

+ +
+
+ + + + +
double ctl_t::turb_dx_strat
+
+ +

Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s].

+ +

Definition at line 1222 of file libtrac.h.

+ +
+
+ +

◆ turb_dz_trop

+ +
+
+ + + + +
double ctl_t::turb_dz_trop
+
+ +

Vertical turbulent diffusion coefficient (troposphere) [m^2/s].

+ +

Definition at line 1225 of file libtrac.h.

+ +
+
+ +

◆ turb_dz_strat

+ +
+
+ + + + +
double ctl_t::turb_dz_strat
+
+ +

Vertical turbulent diffusion coefficient (stratosphere) [m^2/s].

+ +

Definition at line 1228 of file libtrac.h.

+ +
+
+ +

◆ turb_mesox

+ +
+
+ + + + +
double ctl_t::turb_mesox
+
+ +

Horizontal scaling factor for mesoscale wind fluctuations.

+ +

Definition at line 1231 of file libtrac.h.

+ +
+
+ +

◆ turb_mesoz

+ +
+
+ + + + +
double ctl_t::turb_mesoz
+
+ +

Vertical scaling factor for mesoscale wind fluctuations.

+ +

Definition at line 1234 of file libtrac.h.

+ +
+
+ +

◆ conv_cape

+ +
+
+ + + + +
double ctl_t::conv_cape
+
+ +

CAPE threshold for convection module [J/kg].

+ +

Definition at line 1237 of file libtrac.h.

+ +
+
+ +

◆ conv_cin

+ +
+
+ + + + +
double ctl_t::conv_cin
+
+ +

CIN threshold for convection module [J/kg].

+ +

Definition at line 1240 of file libtrac.h.

+ +
+
+ +

◆ conv_dt

+ +
+
+ + + + +
double ctl_t::conv_dt
+
+ +

Time interval for convection module [s].

+ +

Definition at line 1243 of file libtrac.h.

+ +
+
+ +

◆ conv_mix

+ +
+
+ + + + +
int ctl_t::conv_mix
+
+ +

Type of vertical mixing (0=pressure, 1=density).

+ +

Definition at line 1246 of file libtrac.h.

+ +
+
+ +

◆ conv_mix_bot

+ +
+
+ + + + +
int ctl_t::conv_mix_bot
+
+ +

Lower level for mixing (0=particle pressure, 1=surface).

+ +

Definition at line 1249 of file libtrac.h.

+ +
+
+ +

◆ conv_mix_top

+ +
+
+ + + + +
int ctl_t::conv_mix_top
+
+ +

Upper level for mixing (0=particle pressure, 1=EL).

+ +

Definition at line 1252 of file libtrac.h.

+ +
+
+ +

◆ bound_mass

+ +
+
+ + + + +
double ctl_t::bound_mass
+
+ +

Boundary conditions mass per particle [kg].

+ +

Definition at line 1255 of file libtrac.h.

+ +
+
+ +

◆ bound_mass_trend

+ +
+
+ + + + +
double ctl_t::bound_mass_trend
+
+ +

Boundary conditions mass per particle trend [kg/s].

+ +

Definition at line 1258 of file libtrac.h.

+ +
+
+ +

◆ bound_vmr

+ +
+
+ + + + +
double ctl_t::bound_vmr
+
+ +

Boundary conditions volume mixing ratio [ppv].

+ +

Definition at line 1261 of file libtrac.h.

+ +
+
+ +

◆ bound_vmr_trend

+ +
+
+ + + + +
double ctl_t::bound_vmr_trend
+
+ +

Boundary conditions volume mixing ratio trend [ppv/s].

+ +

Definition at line 1264 of file libtrac.h.

+ +
+
+ +

◆ bound_lat0

+ +
+
+ + + + +
double ctl_t::bound_lat0
+
+ +

Boundary conditions minimum longitude [deg].

+ +

Definition at line 1267 of file libtrac.h.

+ +
+
+ +

◆ bound_lat1

+ +
+
+ + + + +
double ctl_t::bound_lat1
+
+ +

Boundary conditions maximum longitude [deg].

+ +

Definition at line 1270 of file libtrac.h.

+ +
+
+ +

◆ bound_p0

+ +
+
+ + + + +
double ctl_t::bound_p0
+
+ +

Boundary conditions bottom pressure [hPa].

+ +

Definition at line 1273 of file libtrac.h.

+ +
+
+ +

◆ bound_p1

+ +
+
+ + + + +
double ctl_t::bound_p1
+
+ +

Boundary conditions top pressure [hPa].

+ +

Definition at line 1276 of file libtrac.h.

+ +
+
+ +

◆ bound_dps

+ +
+
+ + + + +
double ctl_t::bound_dps
+
+ +

Boundary conditions surface layer depth [hPa].

+ +

Definition at line 1279 of file libtrac.h.

+ +
+
+ +

◆ bound_dzs

+ +
+
+ + + + +
double ctl_t::bound_dzs
+
+ +

Boundary conditions surface layer depth [km].

+ +

Definition at line 1282 of file libtrac.h.

+ +
+
+ +

◆ bound_zetas

+ +
+
+ + + + +
double ctl_t::bound_zetas
+
+ +

Boundary conditions surface layer zeta [K].

+ +

Definition at line 1285 of file libtrac.h.

+ +
+
+ +

◆ bound_pbl

+ +
+
+ + + + +
int ctl_t::bound_pbl
+
+ +

Boundary conditions planetary boundary layer (0=no, 1=yes).

+ +

Definition at line 1288 of file libtrac.h.

+ +
+
+ +

◆ species

+ +
+
+ + + + +
char ctl_t::species[LEN]
+
+ +

Species.

+ +

Definition at line 1291 of file libtrac.h.

+ +
+
+ +

◆ molmass

+ +
+
+ + + + +
double ctl_t::molmass
+
+ +

Molar mass [g/mol].

+ +

Definition at line 1294 of file libtrac.h.

+ +
+
+ +

◆ tdec_trop

+ +
+
+ + + + +
double ctl_t::tdec_trop
+
+ +

Life time of particles in the troposphere [s].

+ +

Definition at line 1297 of file libtrac.h.

+ +
+
+ +

◆ tdec_strat

+ +
+
+ + + + +
double ctl_t::tdec_strat
+
+ +

Life time of particles in the stratosphere [s].

+ +

Definition at line 1300 of file libtrac.h.

+ +
+
+ +

◆ clim_photo

+ +
+
+ + + + +
char ctl_t::clim_photo[LEN]
+
+ +

Filename of photolysis rates climatology.

+ +

Definition at line 1303 of file libtrac.h.

+ +
+
+ +

◆ clim_hno3_filename

+ +
+
+ + + + +
char ctl_t::clim_hno3_filename[LEN]
+
+ +

Filename of HNO3 climatology.

+ +

Definition at line 1306 of file libtrac.h.

+ +
+
+ +

◆ clim_oh_filename

+ +
+
+ + + + +
char ctl_t::clim_oh_filename[LEN]
+
+ +

Filename of OH climatology.

+ +

Definition at line 1309 of file libtrac.h.

+ +
+
+ +

◆ clim_h2o2_filename

+ +
+
+ + + + +
char ctl_t::clim_h2o2_filename[LEN]
+
+ +

Filename of H2O2 climatology.

+ +

Definition at line 1312 of file libtrac.h.

+ +
+
+ +

◆ clim_ho2_filename

+ +
+
+ + + + +
char ctl_t::clim_ho2_filename[LEN]
+
+ +

Filename of HO2 climatology.

+ +

Definition at line 1315 of file libtrac.h.

+ +
+
+ +

◆ clim_o1d_filename

+ +
+
+ + + + +
char ctl_t::clim_o1d_filename[LEN]
+
+ +

Filename of O(1D) climatology.

+ +

Definition at line 1318 of file libtrac.h.

+ +
+
+ +

◆ clim_o3_filename

+ +
+
+ + + + +
char ctl_t::clim_o3_filename[LEN]
+
+ +

Filename of O3 climatology.

+ +

Definition at line 1321 of file libtrac.h.

+ +
+
+ +

◆ clim_ccl4_timeseries

+ +
+
+ + + + +
char ctl_t::clim_ccl4_timeseries[LEN]
+
+ +

Filename of CFC-10 time series.

+ +

Definition at line 1324 of file libtrac.h.

+ +
+
+ +

◆ clim_ccl3f_timeseries

+ +
+
+ + + + +
char ctl_t::clim_ccl3f_timeseries[LEN]
+
+ +

Filename of CFC-11 time series.

+ +

Definition at line 1327 of file libtrac.h.

+ +
+
+ +

◆ clim_ccl2f2_timeseries

+ +
+
+ + + + +
char ctl_t::clim_ccl2f2_timeseries[LEN]
+
+ +

Filename of CFC-12 time series.

+ +

Definition at line 1330 of file libtrac.h.

+ +
+
+ +

◆ clim_n2o_timeseries

+ +
+
+ + + + +
char ctl_t::clim_n2o_timeseries[LEN]
+
+ +

Filename of N2O time series.

+ +

Definition at line 1333 of file libtrac.h.

+ +
+
+ +

◆ clim_sf6_timeseries

+ +
+
+ + + + +
char ctl_t::clim_sf6_timeseries[LEN]
+
+ +

Filename of SF6 time series.

+ +

Definition at line 1336 of file libtrac.h.

+ +
+
+ +

◆ mixing_dt

+ +
+
+ + + + +
double ctl_t::mixing_dt
+
+ +

Time interval for mixing [s].

+ +

Definition at line 1339 of file libtrac.h.

+ +
+
+ +

◆ mixing_trop

+ +
+
+ + + + +
double ctl_t::mixing_trop
+
+ +

Interparcel exchange parameter for mixing in the troposphere.

+ +

Definition at line 1342 of file libtrac.h.

+ +
+
+ +

◆ mixing_strat

+ +
+
+ + + + +
double ctl_t::mixing_strat
+
+ +

Interparcel exchange parameter for mixing in the stratosphere.

+ +

Definition at line 1345 of file libtrac.h.

+ +
+
+ +

◆ mixing_nz

+ +
+
+ + + + +
int ctl_t::mixing_nz
+
+ +

Number of altitudes of mixing grid.

+ +

Definition at line 1348 of file libtrac.h.

+ +
+
+ +

◆ mixing_z0

+ +
+
+ + + + +
double ctl_t::mixing_z0
+
+ +

Lower altitude of mixing grid [km].

+ +

Definition at line 1351 of file libtrac.h.

+ +
+
+ +

◆ mixing_z1

+ +
+
+ + + + +
double ctl_t::mixing_z1
+
+ +

Upper altitude of mixing grid [km].

+ +

Definition at line 1354 of file libtrac.h.

+ +
+
+ +

◆ mixing_nx

+ +
+
+ + + + +
int ctl_t::mixing_nx
+
+ +

Number of longitudes of mixing grid.

+ +

Definition at line 1357 of file libtrac.h.

+ +
+
+ +

◆ mixing_lon0

+ +
+
+ + + + +
double ctl_t::mixing_lon0
+
+ +

Lower longitude of mixing grid [deg].

+ +

Definition at line 1360 of file libtrac.h.

+ +
+
+ +

◆ mixing_lon1

+ +
+
+ + + + +
double ctl_t::mixing_lon1
+
+ +

Upper longitude of mixing grid [deg].

+ +

Definition at line 1363 of file libtrac.h.

+ +
+
+ +

◆ mixing_ny

+ +
+
+ + + + +
int ctl_t::mixing_ny
+
+ +

Number of latitudes of mixing grid.

+ +

Definition at line 1366 of file libtrac.h.

+ +
+
+ +

◆ mixing_lat0

+ +
+
+ + + + +
double ctl_t::mixing_lat0
+
+ +

Lower latitude of mixing grid [deg].

+ +

Definition at line 1369 of file libtrac.h.

+ +
+
+ +

◆ mixing_lat1

+ +
+
+ + + + +
double ctl_t::mixing_lat1
+
+ +

Upper latitude of mixing grid [deg].

+ +

Definition at line 1372 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_nz

+ +
+
+ + + + +
int ctl_t::chemgrid_nz
+
+ +

Number of altitudes of chemistry grid.

+ +

Definition at line 1375 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_z0

+ +
+
+ + + + +
double ctl_t::chemgrid_z0
+
+ +

Lower altitude of chemistry grid [km].

+ +

Definition at line 1378 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_z1

+ +
+
+ + + + +
double ctl_t::chemgrid_z1
+
+ +

Upper altitude of chemistry grid [km].

+ +

Definition at line 1381 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_nx

+ +
+
+ + + + +
int ctl_t::chemgrid_nx
+
+ +

Number of longitudes of chemistry grid.

+ +

Definition at line 1384 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_lon0

+ +
+
+ + + + +
double ctl_t::chemgrid_lon0
+
+ +

Lower longitude of chemistry grid [deg].

+ +

Definition at line 1387 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_lon1

+ +
+
+ + + + +
double ctl_t::chemgrid_lon1
+
+ +

Upper longitude of chemistry grid [deg].

+ +

Definition at line 1390 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_ny

+ +
+
+ + + + +
int ctl_t::chemgrid_ny
+
+ +

Number of latitudes of chemistry grid.

+ +

Definition at line 1393 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_lat0

+ +
+
+ + + + +
double ctl_t::chemgrid_lat0
+
+ +

Lower latitude of chemistry grid [deg].

+ +

Definition at line 1396 of file libtrac.h.

+ +
+
+ +

◆ chemgrid_lat1

+ +
+
+ + + + +
double ctl_t::chemgrid_lat1
+
+ +

Upper latitude of chemistry grid [deg].

+ +

Definition at line 1399 of file libtrac.h.

+ +
+
+ +

◆ oh_chem_reaction

+ +
+
+ + + + +
int ctl_t::oh_chem_reaction
+
+ +

Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular).

+ +

Definition at line 1402 of file libtrac.h.

+ +
+
+ +

◆ oh_chem

+ +
+
+ + + + +
double ctl_t::oh_chem[4]
+
+ +

Coefficients for OH reaction rate (A, E/R or k0, n, kinf, m).

+ +

Definition at line 1405 of file libtrac.h.

+ +
+
+ +

◆ oh_chem_beta

+ +
+
+ + + + +
double ctl_t::oh_chem_beta
+
+ +

Beta parameter for diurnal variablity of OH.

+ +

Definition at line 1408 of file libtrac.h.

+ +
+
+ +

◆ h2o2_chem_reaction

+ +
+
+ + + + +
int ctl_t::h2o2_chem_reaction
+
+ +

Reaction type for H2O2 chemistry (0=none, 1=SO2).

+ +

Definition at line 1411 of file libtrac.h.

+ +
+
+ +

◆ kpp_chem

+ +
+
+ + + + +
int ctl_t::kpp_chem
+
+ +

Switch for KPP chemistry module (0=off, 1=on).

+ +

Definition at line 1414 of file libtrac.h.

+ +
+
+ +

◆ tracer_chem

+ +
+
+ + + + +
int ctl_t::tracer_chem
+
+ +

Switch for first order tracer chemistry module (0=off, 1=on).

+ +

Definition at line 1417 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_pre

+ +
+
+ + + + +
double ctl_t::wet_depo_pre[2]
+
+ +

Coefficients for precipitation calculation.

+ +

Definition at line 1420 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_bc_a

+ +
+
+ + + + +
double ctl_t::wet_depo_bc_a
+
+ +

Coefficient A for wet deposition below cloud (exponential form).

+ +

Definition at line 1423 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_bc_b

+ +
+
+ + + + +
double ctl_t::wet_depo_bc_b
+
+ +

Coefficient B for wet deposition below cloud (exponential form).

+ +

Definition at line 1426 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_ic_a

+ +
+
+ + + + +
double ctl_t::wet_depo_ic_a
+
+ +

Coefficient A for wet deposition in cloud (exponential form).

+ +

Definition at line 1429 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_ic_b

+ +
+
+ + + + +
double ctl_t::wet_depo_ic_b
+
+ +

Coefficient B for wet deposition in cloud (exponential form).

+ +

Definition at line 1432 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_ic_h

+ +
+
+ + + + +
double ctl_t::wet_depo_ic_h[3]
+
+ +

Coefficients for wet deposition in cloud (Henry's law: Hb, Cb, pH).

+ +

Definition at line 1435 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_bc_h

+ +
+
+ + + + +
double ctl_t::wet_depo_bc_h[2]
+
+ +

Coefficients for wet deposition below cloud (Henry's law: Hb, Cb).

+ +

Definition at line 1438 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_ic_ret_ratio

+ +
+
+ + + + +
double ctl_t::wet_depo_ic_ret_ratio
+
+ +

Coefficients for wet deposition in cloud: retention ratio.

+ +

Definition at line 1441 of file libtrac.h.

+ +
+
+ +

◆ wet_depo_bc_ret_ratio

+ +
+
+ + + + +
double ctl_t::wet_depo_bc_ret_ratio
+
+ +

Coefficients for wet deposition below cloud: retention ratio.

+ +

Definition at line 1444 of file libtrac.h.

+ +
+
+ +

◆ dry_depo_dp

+ +
+
+ + + + +
double ctl_t::dry_depo_dp
+
+ +

Dry deposition surface layer [hPa].

+ +

Definition at line 1447 of file libtrac.h.

+ +
+
+ +

◆ dry_depo_vdep

+ +
+
+ + + + +
double ctl_t::dry_depo_vdep
+
+ +

Dry deposition velocity [m/s].

+ +

Definition at line 1450 of file libtrac.h.

+ +
+
+ +

◆ psc_h2o

+ +
+
+ + + + +
double ctl_t::psc_h2o
+
+ +

H2O volume mixing ratio for PSC analysis.

+ +

Definition at line 1453 of file libtrac.h.

+ +
+
+ +

◆ psc_hno3

+ +
+
+ + + + +
double ctl_t::psc_hno3
+
+ +

HNO3 volume mixing ratio for PSC analysis.

+ +

Definition at line 1456 of file libtrac.h.

+ +
+
+ +

◆ atm_basename

+ +
+
+ + + + +
char ctl_t::atm_basename[LEN]
+
+ +

Basename of atmospheric data files.

+ +

Definition at line 1459 of file libtrac.h.

+ +
+
+ +

◆ atm_gpfile

+ +
+
+ + + + +
char ctl_t::atm_gpfile[LEN]
+
+ +

Gnuplot file for atmospheric data.

+ +

Definition at line 1462 of file libtrac.h.

+ +
+
+ +

◆ atm_dt_out

+ +
+
+ + + + +
double ctl_t::atm_dt_out
+
+ +

Time step for atmospheric data output [s].

+ +

Definition at line 1465 of file libtrac.h.

+ +
+
+ +

◆ atm_filter

+ +
+
+ + + + +
int ctl_t::atm_filter
+
+ +

Time filter for atmospheric data output (0=none, 1=missval, 2=remove).

+ +

Definition at line 1468 of file libtrac.h.

+ +
+
+ +

◆ atm_stride

+ +
+
+ + + + +
int ctl_t::atm_stride
+
+ +

Particle index stride for atmospheric data files.

+ +

Definition at line 1471 of file libtrac.h.

+ +
+
+ +

◆ atm_type

+ +
+
+ + + + +
int ctl_t::atm_type
+
+ +

Type of atmospheric data files (0=ASCII, 1=binary, 2=netCDF, 3=CLaMS).

+ +

Definition at line 1475 of file libtrac.h.

+ +
+
+ +

◆ csi_basename

+ +
+
+ + + + +
char ctl_t::csi_basename[LEN]
+
+ +

Basename of CSI data files.

+ +

Definition at line 1478 of file libtrac.h.

+ +
+
+ +

◆ csi_kernel

+ +
+
+ + + + +
char ctl_t::csi_kernel[LEN]
+
+ +

Kernel data file for CSI output.

+ +

Definition at line 1481 of file libtrac.h.

+ +
+
+ +

◆ csi_dt_out

+ +
+
+ + + + +
double ctl_t::csi_dt_out
+
+ +

Time step for CSI output [s].

+ +

Definition at line 1484 of file libtrac.h.

+ +
+
+ +

◆ csi_obsfile

+ +
+
+ + + + +
char ctl_t::csi_obsfile[LEN]
+
+ +

Observation data file for CSI analysis.

+ +

Definition at line 1487 of file libtrac.h.

+ +
+
+ +

◆ csi_obsmin

+ +
+
+ + + + +
double ctl_t::csi_obsmin
+
+ +

Minimum observation index to trigger detection.

+ +

Definition at line 1490 of file libtrac.h.

+ +
+
+ +

◆ csi_modmin

+ +
+
+ + + + +
double ctl_t::csi_modmin
+
+ +

Minimum column density to trigger detection [kg/m^2].

+ +

Definition at line 1493 of file libtrac.h.

+ +
+
+ +

◆ csi_nz

+ +
+
+ + + + +
int ctl_t::csi_nz
+
+ +

Number of altitudes of gridded CSI data.

+ +

Definition at line 1496 of file libtrac.h.

+ +
+
+ +

◆ csi_z0

+ +
+
+ + + + +
double ctl_t::csi_z0
+
+ +

Lower altitude of gridded CSI data [km].

+ +

Definition at line 1499 of file libtrac.h.

+ +
+
+ +

◆ csi_z1

+ +
+
+ + + + +
double ctl_t::csi_z1
+
+ +

Upper altitude of gridded CSI data [km].

+ +

Definition at line 1502 of file libtrac.h.

+ +
+
+ +

◆ csi_nx

+ +
+
+ + + + +
int ctl_t::csi_nx
+
+ +

Number of longitudes of gridded CSI data.

+ +

Definition at line 1505 of file libtrac.h.

+ +
+
+ +

◆ csi_lon0

+ +
+
+ + + + +
double ctl_t::csi_lon0
+
+ +

Lower longitude of gridded CSI data [deg].

+ +

Definition at line 1508 of file libtrac.h.

+ +
+
+ +

◆ csi_lon1

+ +
+
+ + + + +
double ctl_t::csi_lon1
+
+ +

Upper longitude of gridded CSI data [deg].

+ +

Definition at line 1511 of file libtrac.h.

+ +
+
+ +

◆ csi_ny

+ +
+
+ + + + +
int ctl_t::csi_ny
+
+ +

Number of latitudes of gridded CSI data.

+ +

Definition at line 1514 of file libtrac.h.

+ +
+
+ +

◆ csi_lat0

+ +
+
+ + + + +
double ctl_t::csi_lat0
+
+ +

Lower latitude of gridded CSI data [deg].

+ +

Definition at line 1517 of file libtrac.h.

+ +
+
+ +

◆ csi_lat1

+ +
+
+ + + + +
double ctl_t::csi_lat1
+
+ +

Upper latitude of gridded CSI data [deg].

+ +

Definition at line 1520 of file libtrac.h.

+ +
+
+ +

◆ ens_basename

+ +
+
+ + + + +
char ctl_t::ens_basename[LEN]
+
+ +

Basename of ensemble data file.

+ +

Definition at line 1523 of file libtrac.h.

+ +
+
+ +

◆ ens_dt_out

+ +
+
+ + + + +
double ctl_t::ens_dt_out
+
+ +

Time step for ensemble output [s].

+ +

Definition at line 1526 of file libtrac.h.

+ +
+
+ +

◆ grid_basename

+ +
+
+ + + + +
char ctl_t::grid_basename[LEN]
+
+ +

Basename of grid data files.

+ +

Definition at line 1529 of file libtrac.h.

+ +
+
+ +

◆ grid_kernel

+ +
+
+ + + + +
char ctl_t::grid_kernel[LEN]
+
+ +

Kernel data file for grid output.

+ +

Definition at line 1532 of file libtrac.h.

+ +
+
+ +

◆ grid_gpfile

+ +
+
+ + + + +
char ctl_t::grid_gpfile[LEN]
+
+ +

Gnuplot file for gridded data.

+ +

Definition at line 1535 of file libtrac.h.

+ +
+
+ +

◆ grid_dt_out

+ +
+
+ + + + +
double ctl_t::grid_dt_out
+
+ +

Time step for gridded data output [s].

+ +

Definition at line 1538 of file libtrac.h.

+ +
+
+ +

◆ grid_sparse

+ +
+
+ + + + +
int ctl_t::grid_sparse
+
+ +

Sparse output in grid data files (0=no, 1=yes).

+ +

Definition at line 1541 of file libtrac.h.

+ +
+
+ +

◆ grid_nz

+ +
+
+ + + + +
int ctl_t::grid_nz
+
+ +

Number of altitudes of gridded data.

+ +

Definition at line 1544 of file libtrac.h.

+ +
+
+ +

◆ grid_z0

+ +
+
+ + + + +
double ctl_t::grid_z0
+
+ +

Lower altitude of gridded data [km].

+ +

Definition at line 1547 of file libtrac.h.

+ +
+
+ +

◆ grid_z1

+ +
+
+ + + + +
double ctl_t::grid_z1
+
+ +

Upper altitude of gridded data [km].

+ +

Definition at line 1550 of file libtrac.h.

+ +
+
+ +

◆ grid_nx

+ +
+
+ + + + +
int ctl_t::grid_nx
+
+ +

Number of longitudes of gridded data.

+ +

Definition at line 1553 of file libtrac.h.

+ +
+
+ +

◆ grid_lon0

+ +
+
+ + + + +
double ctl_t::grid_lon0
+
+ +

Lower longitude of gridded data [deg].

+ +

Definition at line 1556 of file libtrac.h.

+ +
+
+ +

◆ grid_lon1

+ +
+
+ + + + +
double ctl_t::grid_lon1
+
+ +

Upper longitude of gridded data [deg].

+ +

Definition at line 1559 of file libtrac.h.

+ +
+
+ +

◆ grid_ny

+ +
+
+ + + + +
int ctl_t::grid_ny
+
+ +

Number of latitudes of gridded data.

+ +

Definition at line 1562 of file libtrac.h.

+ +
+
+ +

◆ grid_lat0

+ +
+
+ + + + +
double ctl_t::grid_lat0
+
+ +

Lower latitude of gridded data [deg].

+ +

Definition at line 1565 of file libtrac.h.

+ +
+
+ +

◆ grid_lat1

+ +
+
+ + + + +
double ctl_t::grid_lat1
+
+ +

Upper latitude of gridded data [deg].

+ +

Definition at line 1568 of file libtrac.h.

+ +
+
+ +

◆ grid_type

+ +
+
+ + + + +
int ctl_t::grid_type
+
+ +

Type of grid data files (0=ASCII, 1=netCDF).

+ +

Definition at line 1571 of file libtrac.h.

+ +
+
+ +

◆ prof_basename

+ +
+
+ + + + +
char ctl_t::prof_basename[LEN]
+
+ +

Basename for profile output file.

+ +

Definition at line 1574 of file libtrac.h.

+ +
+
+ +

◆ prof_obsfile

+ +
+
+ + + + +
char ctl_t::prof_obsfile[LEN]
+
+ +

Observation data file for profile output.

+ +

Definition at line 1577 of file libtrac.h.

+ +
+
+ +

◆ prof_nz

+ +
+
+ + + + +
int ctl_t::prof_nz
+
+ +

Number of altitudes of gridded profile data.

+ +

Definition at line 1580 of file libtrac.h.

+ +
+
+ +

◆ prof_z0

+ +
+
+ + + + +
double ctl_t::prof_z0
+
+ +

Lower altitude of gridded profile data [km].

+ +

Definition at line 1583 of file libtrac.h.

+ +
+
+ +

◆ prof_z1

+ +
+
+ + + + +
double ctl_t::prof_z1
+
+ +

Upper altitude of gridded profile data [km].

+ +

Definition at line 1586 of file libtrac.h.

+ +
+
+ +

◆ prof_nx

+ +
+
+ + + + +
int ctl_t::prof_nx
+
+ +

Number of longitudes of gridded profile data.

+ +

Definition at line 1589 of file libtrac.h.

+ +
+
+ +

◆ prof_lon0

+ +
+
+ + + + +
double ctl_t::prof_lon0
+
+ +

Lower longitude of gridded profile data [deg].

+ +

Definition at line 1592 of file libtrac.h.

+ +
+
+ +

◆ prof_lon1

+ +
+
+ + + + +
double ctl_t::prof_lon1
+
+ +

Upper longitude of gridded profile data [deg].

+ +

Definition at line 1595 of file libtrac.h.

+ +
+
+ +

◆ prof_ny

+ +
+
+ + + + +
int ctl_t::prof_ny
+
+ +

Number of latitudes of gridded profile data.

+ +

Definition at line 1598 of file libtrac.h.

+ +
+
+ +

◆ prof_lat0

+ +
+
+ + + + +
double ctl_t::prof_lat0
+
+ +

Lower latitude of gridded profile data [deg].

+ +

Definition at line 1601 of file libtrac.h.

+ +
+
+ +

◆ prof_lat1

+ +
+
+ + + + +
double ctl_t::prof_lat1
+
+ +

Upper latitude of gridded profile data [deg].

+ +

Definition at line 1604 of file libtrac.h.

+ +
+
+ +

◆ sample_basename

+ +
+
+ + + + +
char ctl_t::sample_basename[LEN]
+
+ +

Basename of sample data file.

+ +

Definition at line 1607 of file libtrac.h.

+ +
+
+ +

◆ sample_kernel

+ +
+
+ + + + +
char ctl_t::sample_kernel[LEN]
+
+ +

Kernel data file for sample output.

+ +

Definition at line 1610 of file libtrac.h.

+ +
+
+ +

◆ sample_obsfile

+ +
+
+ + + + +
char ctl_t::sample_obsfile[LEN]
+
+ +

Observation data file for sample output.

+ +

Definition at line 1613 of file libtrac.h.

+ +
+
+ +

◆ sample_dx

+ +
+
+ + + + +
double ctl_t::sample_dx
+
+ +

Horizontal radius for sample output [km].

+ +

Definition at line 1616 of file libtrac.h.

+ +
+
+ +

◆ sample_dz

+ +
+
+ + + + +
double ctl_t::sample_dz
+
+ +

Layer depth for sample output [km].

+ +

Definition at line 1619 of file libtrac.h.

+ +
+
+ +

◆ stat_basename

+ +
+
+ + + + +
char ctl_t::stat_basename[LEN]
+
+ +

Basename of station data file.

+ +

Definition at line 1622 of file libtrac.h.

+ +
+
+ +

◆ stat_lon

+ +
+
+ + + + +
double ctl_t::stat_lon
+
+ +

Longitude of station [deg].

+ +

Definition at line 1625 of file libtrac.h.

+ +
+
+ +

◆ stat_lat

+ +
+
+ + + + +
double ctl_t::stat_lat
+
+ +

Latitude of station [deg].

+ +

Definition at line 1628 of file libtrac.h.

+ +
+
+ +

◆ stat_r

+ +
+
+ + + + +
double ctl_t::stat_r
+
+ +

Search radius around station [km].

+ +

Definition at line 1631 of file libtrac.h.

+ +
+
+ +

◆ stat_t0

+ +
+
+ + + + +
double ctl_t::stat_t0
+
+ +

Start time for station output [s].

+ +

Definition at line 1634 of file libtrac.h.

+ +
+
+ +

◆ stat_t1

+ +
+
+ + + + +
double ctl_t::stat_t1
+
+ +

Stop time for station output [s].

+ +

Definition at line 1637 of file libtrac.h.

+ +
+
+ +

◆ vtk_basename

+ +
+
+ + + + +
char ctl_t::vtk_basename[LEN]
+
+ +

Basename of VTK data files.

+ +

Definition at line 1640 of file libtrac.h.

+ +
+
+ +

◆ vtk_dt_out

+ +
+
+ + + + +
double ctl_t::vtk_dt_out
+
+ +

Time step for VTK data output [s].

+ +

Definition at line 1643 of file libtrac.h.

+ +
+
+ +

◆ vtk_stride

+ +
+
+ + + + +
int ctl_t::vtk_stride
+
+ +

Particle index stride for VTK data.

+ +

Definition at line 1646 of file libtrac.h.

+ +
+
+ +

◆ vtk_scale

+ +
+
+ + + + +
double ctl_t::vtk_scale
+
+ +

Vertical scaling factor for VTK data.

+ +

Definition at line 1649 of file libtrac.h.

+ +
+
+ +

◆ vtk_offset

+ +
+
+ + + + +
double ctl_t::vtk_offset
+
+ +

Vertical offset for VTK data [km].

+ +

Definition at line 1652 of file libtrac.h.

+ +
+
+ +

◆ vtk_sphere

+ +
+
+ + + + +
int ctl_t::vtk_sphere
+
+ +

Spherical projection for VTK data (0=no, 1=yes).

+ +

Definition at line 1655 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structctl__t.js b/doxygen/structctl__t.js new file mode 100644 index 0000000000..ef79fa6739 --- /dev/null +++ b/doxygen/structctl__t.js @@ -0,0 +1,287 @@ +var structctl__t = +[ + [ "atm_type_out", "structctl__t.html#a5d5c0f111d122cfcc4e3de57bc1731cd", null ], + [ "cpl_zeta_and_press_modules", "structctl__t.html#a701fc0e40f8523d1bd5d20162a896cf1", null ], + [ "press_level_def", "structctl__t.html#a9c3d50e627931bf07eb25bd48f3620c5", null ], + [ "vert_coord_ap", "structctl__t.html#a02ac97541bf7bf01a68fddea04107f41", null ], + [ "vert_coord_met", "structctl__t.html#a233f535341a29d5a05357ecf99ec2cd4", null ], + [ "clams_met_data", "structctl__t.html#a10b1f23ec13eb1bf965890a50551aa9e", null ], + [ "chunkszhint", "structctl__t.html#abcfda1d37b13a5a28b13988a9673b8df", null ], + [ "read_mode", "structctl__t.html#a797dc709951f1405daec11d5ed11ea40", null ], + [ "nq", "structctl__t.html#af189b70e15b3ed95191357717b80a2cc", null ], + [ "qnt_name", "structctl__t.html#a8a96f7d7b47b13cf7359afb9f513f690", null ], + [ "qnt_longname", "structctl__t.html#aef44654a72cbb96ba47c6284bd5f2316", null ], + [ "qnt_unit", "structctl__t.html#a7dadf2efadc0802bd2c77aa8c39908dc", null ], + [ "qnt_format", "structctl__t.html#a0811163b931ce18a07fbad57ea280a85", null ], + [ "qnt_idx", "structctl__t.html#aeac7515d696805592f6ae25bf38b7ada", null ], + [ "qnt_ens", "structctl__t.html#ace61e592378505a9011133dc02d249a7", null ], + [ "qnt_stat", "structctl__t.html#a508aa1f5e4ba701e86557f114999b314", null ], + [ "qnt_m", "structctl__t.html#a084c47554ce3d8b615dfabc9abbb26d1", null ], + [ "qnt_vmr", "structctl__t.html#a323dd04f9b74b6bef349e3a91b649568", null ], + [ "qnt_rp", "structctl__t.html#a54a37ca01ed5643d41ee63768e5ad941", null ], + [ "qnt_rhop", "structctl__t.html#a08ad320f9953658f5346a123ba03ad86", null ], + [ "qnt_ps", "structctl__t.html#a4217d6043a9429aa2c47517680d44453", null ], + [ "qnt_ts", "structctl__t.html#a262aa775e7fe82b123a62633d1c3d8b3", null ], + [ "qnt_zs", "structctl__t.html#a458f7cdd42fb5e2d9531e7d48038b730", null ], + [ "qnt_us", "structctl__t.html#a88eb2c811b2a0c5482a020e41d26c270", null ], + [ "qnt_vs", "structctl__t.html#a62b169930644e817a7275df51d40b51c", null ], + [ "qnt_lsm", "structctl__t.html#a3256dff5d8ff24754dfc04af56ae49d2", null ], + [ "qnt_sst", "structctl__t.html#adb52d9a2f17944de5ed1b245ae0eb6b6", null ], + [ "qnt_pbl", "structctl__t.html#a39d8a732f074ea0275ecb84832f60d59", null ], + [ "qnt_pt", "structctl__t.html#a8cd31f8b17d847f8012e472c89dbe164", null ], + [ "qnt_tt", "structctl__t.html#acc25e4fc819f75115dc6ae202437022d", null ], + [ "qnt_zt", "structctl__t.html#afb9a716d40713cd9550a4a2d38389da0", null ], + [ "qnt_h2ot", "structctl__t.html#a6755ea47ddbf456c114fe69d85e0424d", null ], + [ "qnt_zg", "structctl__t.html#a7851aa93977a71a120361d75034a1808", null ], + [ "qnt_p", "structctl__t.html#a0545623fc0f39bea920d00bfc88c4d11", null ], + [ "qnt_t", "structctl__t.html#a91a6844a93bff2ff957aaf8bf31c1f3b", null ], + [ "qnt_rho", "structctl__t.html#a850b57e663a4a8cde2952ecdad2c905f", null ], + [ "qnt_u", "structctl__t.html#a0f4b7179eb39bf6a1679f46e8826e1de", null ], + [ "qnt_v", "structctl__t.html#a78f8fa92da366751d4fe71f85661f9f3", null ], + [ "qnt_w", "structctl__t.html#a4eff0a4676fbb4bb8a4b832900e16e48", null ], + [ "qnt_h2o", "structctl__t.html#a82e92a79bb65a2febe234d63f86fc91b", null ], + [ "qnt_o3", "structctl__t.html#a013bc90afda842d7312647bfd0364232", null ], + [ "qnt_lwc", "structctl__t.html#a22b2ba380a3c30089e5978c4a03311de", null ], + [ "qnt_iwc", "structctl__t.html#a18974d6fa7e5e9e14a56338d638e730a", null ], + [ "qnt_cc", "structctl__t.html#afc9fd7f2b1a29910d6c37c9cb3bcee0d", null ], + [ "qnt_pct", "structctl__t.html#ab7fd7495b74e0656e5a4c0a1e814899c", null ], + [ "qnt_pcb", "structctl__t.html#a0bdd43744dd2b92d5aa40627d028d42e", null ], + [ "qnt_cl", "structctl__t.html#a8dfbfb0242aca3ec0fa72564e8ceca6d", null ], + [ "qnt_plcl", "structctl__t.html#afcd6307f3bcbd275ba14b572c6337dfa", null ], + [ "qnt_plfc", "structctl__t.html#a274f366df1c6e8dff7b16fc4cf2e1c0a", null ], + [ "qnt_pel", "structctl__t.html#a0350a3e6ada50d40416094ba8d079e4e", null ], + [ "qnt_cape", "structctl__t.html#a9fce7d27388ac2b2a5fd8a0702243891", null ], + [ "qnt_cin", "structctl__t.html#abc63595c9161b9fd44ea2420514cb4cd", null ], + [ "qnt_o3c", "structctl__t.html#aa13722c873f7ec0c828c320546940528", null ], + [ "qnt_hno3", "structctl__t.html#a65efacd05321fc6c808732e77dc87c84", null ], + [ "qnt_oh", "structctl__t.html#a7c05d49d4f806a0f94c86ef932478cff", null ], + [ "qnt_h2o2", "structctl__t.html#a200b52904d3a14e04984a130528be5a0", null ], + [ "qnt_ho2", "structctl__t.html#a554a6ad70e586d7aa1ac342cadb8c41e", null ], + [ "qnt_o1d", "structctl__t.html#a2b485dd5916e7c0b346190afc5d2b437", null ], + [ "qnt_mloss_oh", "structctl__t.html#ad9a389376b1aa37b73df1b45d1ac214d", null ], + [ "qnt_mloss_h2o2", "structctl__t.html#ad1397317442e511e037568026f964bf0", null ], + [ "qnt_mloss_wet", "structctl__t.html#a402ce921786cefb5ce431bda7dbf7f3c", null ], + [ "qnt_mloss_dry", "structctl__t.html#a7900d5f3a8de6333a91c3794599a8e46", null ], + [ "qnt_mloss_decay", "structctl__t.html#a5bb49c284e2579630f1eae77a769aba8", null ], + [ "qnt_psat", "structctl__t.html#ab97b0cbae44a95ee03f10236380964ab", null ], + [ "qnt_psice", "structctl__t.html#a3d8b0a7cd91c255170233ef509a24a84", null ], + [ "qnt_pw", "structctl__t.html#a19e02cd4b17e850b32bfd5d68d73d5a0", null ], + [ "qnt_sh", "structctl__t.html#ae251e537db20eb4e1696488c89245d1b", null ], + [ "qnt_rh", "structctl__t.html#a682a2a90d1df78dd2a6cfb4fa77773cb", null ], + [ "qnt_rhice", "structctl__t.html#a8462c6531b8eba2bf01230b01a4b8a04", null ], + [ "qnt_theta", "structctl__t.html#a33a185ae0cb5badcd525d961875d3b2c", null ], + [ "qnt_zeta", "structctl__t.html#a9382d9e9b29e10eeee582e1e10ff365a", null ], + [ "qnt_zeta_d", "structctl__t.html#a6dcfd67edca4a35aeca78f6bfbd04487", null ], + [ "qnt_tvirt", "structctl__t.html#a2d0be917be3aba29baf2ed7f626bfa83", null ], + [ "qnt_lapse", "structctl__t.html#a98ccf2cdccb18924d50cdcda383580ba", null ], + [ "qnt_vh", "structctl__t.html#a20196705d4eebddaeff4005ad88a20d2", null ], + [ "qnt_vz", "structctl__t.html#a55330859df8034626ba300905e35bb04", null ], + [ "qnt_pv", "structctl__t.html#ad7e229a971d4aafe08bb607b7189b09f", null ], + [ "qnt_tdew", "structctl__t.html#affb8cb3c42f1f312990d97d7d49617e5", null ], + [ "qnt_tice", "structctl__t.html#a7606f8b8ba4df727e0c0c9386f527119", null ], + [ "qnt_tsts", "structctl__t.html#aa29a4ab3048a143622094d93886aa0db", null ], + [ "qnt_tnat", "structctl__t.html#a742e33a97813e9a50cb0e17a680e815a", null ], + [ "qnt_Cx", "structctl__t.html#ae56fa1a240420b87bd2b7a0d040e6d11", null ], + [ "qnt_Ch2o", "structctl__t.html#a9baf6b24cc12d9b589576a173bed3b8b", null ], + [ "qnt_Co3", "structctl__t.html#aa1dc44e429c2e407559577b86c9fc170", null ], + [ "qnt_Cco", "structctl__t.html#a63128061ebb75c105f1774fa894d91c9", null ], + [ "qnt_Coh", "structctl__t.html#a028e098ce1133fc1a3993ea74d330330", null ], + [ "qnt_Ch", "structctl__t.html#a7ef2d94a86e63af36c9022a55db08024", null ], + [ "qnt_Cho2", "structctl__t.html#a99d38b5d6024bb51436e6271202d8968", null ], + [ "qnt_Ch2o2", "structctl__t.html#adaa906f8d83e26dde37b9242f567e329", null ], + [ "qnt_Co1d", "structctl__t.html#a18e4fa9a68e03ee2aa1be7e2feb6130f", null ], + [ "qnt_Co3p", "structctl__t.html#ac04dce247fe52429fca4b3ddd32c4ed1", null ], + [ "qnt_Cccl4", "structctl__t.html#a1ba53bf2909cfe859cdd8d3e6db31e9a", null ], + [ "qnt_Cccl3f", "structctl__t.html#a8a43ba4811191565b719506351b40515", null ], + [ "qnt_Cccl2f2", "structctl__t.html#a066b3cab4ae3633d7f5a4cc178f8d655", null ], + [ "qnt_Cn2o", "structctl__t.html#a8a3a8cc8108f6dce4fcf6b82ceb97d22", null ], + [ "qnt_Csf6", "structctl__t.html#a9ad1be4d2d7d089ba9311f6c6b17baa2", null ], + [ "qnt_aoa", "structctl__t.html#a08aa70d2f116af5dfe779b6ecec4dd19", null ], + [ "direction", "structctl__t.html#a1a6d5b4003ebd8f9c77b3b45933779e6", null ], + [ "t_start", "structctl__t.html#aee3354b4dacf5d89944ae0b7faaa12c6", null ], + [ "t_stop", "structctl__t.html#a649752813806c995ee09923a44d0e974", null ], + [ "dt_mod", "structctl__t.html#a718d3200f867d9018369f12f66464807", null ], + [ "metbase", "structctl__t.html#a9ddc0221c9ee329efb265672a14026c9", null ], + [ "dt_met", "structctl__t.html#a2d7b8100a2949004420841d81bcc6ab4", null ], + [ "met_convention", "structctl__t.html#a6d866e961e374a254d7dc52ea52cb3db", null ], + [ "met_type", "structctl__t.html#afc013488cddf18deab78993e93068416", null ], + [ "met_nc_scale", "structctl__t.html#a034e61c3566760c5ebe4e16f3f3c3021", null ], + [ "met_zfp_prec", "structctl__t.html#a4dd5891ff4c8977a71706aec464f08d8", null ], + [ "met_zfp_tol_t", "structctl__t.html#acf12d9b7c41156651c59c420fce8e5bf", null ], + [ "met_zfp_tol_z", "structctl__t.html#ad18288e9f9e91cfa02b23bbd31dc3440", null ], + [ "met_dx", "structctl__t.html#a6b03cd434f6f12efc60dc4b8d366d6c7", null ], + [ "met_dy", "structctl__t.html#ae4da60e71dcd75d1b55f66036867f225", null ], + [ "met_dp", "structctl__t.html#a1eb5d7699fd84b8522a1d666d0851fad", null ], + [ "met_sx", "structctl__t.html#a4abb2ec4ff0e29f2648cb5e8b182e5d8", null ], + [ "met_sy", "structctl__t.html#a416820ddede3de831eb41413ed6427c0", null ], + [ "met_sp", "structctl__t.html#ab5296a9ff61f1f50c9733462cd294889", null ], + [ "met_detrend", "structctl__t.html#a9bc04b87ec1a0e2403117d639f6c1416", null ], + [ "met_np", "structctl__t.html#acd95a4753595490c2723383bd09ca035", null ], + [ "met_p", "structctl__t.html#aeffc15a483bdb95fea0f1b44982e7281", null ], + [ "met_geopot_sx", "structctl__t.html#a416596b692cca87f14e83f851db35e29", null ], + [ "met_geopot_sy", "structctl__t.html#a2ec0ba6ad9f46184228f1a1784596218", null ], + [ "met_relhum", "structctl__t.html#aaa5260e73daff92d01c55e87310ab837", null ], + [ "met_tropo", "structctl__t.html#a5303a68a713ead5d3e144ec4183a9a86", null ], + [ "met_tropo_lapse", "structctl__t.html#a93d3036b76a3f555c661cb25cc6aa9f5", null ], + [ "met_tropo_nlev", "structctl__t.html#aea1846c984d3602d070f0bf83e777646", null ], + [ "met_tropo_lapse_sep", "structctl__t.html#ab63ed3364cf91a4c658e6f4d47e95534", null ], + [ "met_tropo_nlev_sep", "structctl__t.html#a34489f996705366c6a29805123a5be05", null ], + [ "met_tropo_pv", "structctl__t.html#a4fa995de108b6beeee9d4e5c4f9f68bb", null ], + [ "met_tropo_theta", "structctl__t.html#aec254fc45d24615056f6b07643176171", null ], + [ "met_tropo_spline", "structctl__t.html#a2b8390b7a9e1335c03a0877f93b051af", null ], + [ "met_cloud", "structctl__t.html#a7bf33ce79322be0f34def9df722a2bfd", null ], + [ "met_cloud_min", "structctl__t.html#a8b64ba2d0f67c4352ae9bfc6d3be1b78", null ], + [ "met_dt_out", "structctl__t.html#a1f07329a9333e6af8f00ff9727d774ce", null ], + [ "met_cache", "structctl__t.html#a7ae3a516b2b17723a02f5e0627d886c2", null ], + [ "sort_dt", "structctl__t.html#a126d9eac2687f4aac95ab17fff14dd07", null ], + [ "isosurf", "structctl__t.html#a4438b70bfa3ff0fe6cc36f3d0086e301", null ], + [ "balloon", "structctl__t.html#a1aee054abc8c3fbaa1f6828f78f4e2f5", null ], + [ "advect", "structctl__t.html#a8eb0ca94791f79405c3b49da924f386d", null ], + [ "reflect", "structctl__t.html#a918275547003c50ad152b9d01fae6c8c", null ], + [ "turb_dx_trop", "structctl__t.html#a37abd3e7cbc687a515ba1bbac5ec77f2", null ], + [ "turb_dx_strat", "structctl__t.html#a3173408e0e9c39c17c39367aee1c5641", null ], + [ "turb_dz_trop", "structctl__t.html#a21f2e759e0c5d8cfae2ba9ed551c768e", null ], + [ "turb_dz_strat", "structctl__t.html#ae797044bfedbdf7e058c6fb02195e586", null ], + [ "turb_mesox", "structctl__t.html#a4c410e0dddb3e5a5cad1ca66f99967cd", null ], + [ "turb_mesoz", "structctl__t.html#a22edf991ef6c26556d13aa822a65da63", null ], + [ "conv_cape", "structctl__t.html#a18c1107433d1e9c7867025e8a0fbe6d2", null ], + [ "conv_cin", "structctl__t.html#ad6e15e5c23446b0ac2f5f48f70f575a1", null ], + [ "conv_dt", "structctl__t.html#a64cdca0c6817ba378fbde7385b8ee279", null ], + [ "conv_mix", "structctl__t.html#afbf21769a03f5d2b7eaaa992072b62b1", null ], + [ "conv_mix_bot", "structctl__t.html#a4cae2bde07e32cb05bfaf56c0ffe8044", null ], + [ "conv_mix_top", "structctl__t.html#a89c3c8786645ee7cfa48ffa73b710167", null ], + [ "bound_mass", "structctl__t.html#a25a01ebb0fcff6040d0003b88b13cdec", null ], + [ "bound_mass_trend", "structctl__t.html#a9feaa00a9e7de02f8bd661d735b8b280", null ], + [ "bound_vmr", "structctl__t.html#a4f7014dad580e4e745c910187468807c", null ], + [ "bound_vmr_trend", "structctl__t.html#a7a4b2ae4a45234a74df45b5adbe513cd", null ], + [ "bound_lat0", "structctl__t.html#a686563c65fdd2d03d15cfdddf294584c", null ], + [ "bound_lat1", "structctl__t.html#a3488ff97025f12fbe161d85b09ddc33e", null ], + [ "bound_p0", "structctl__t.html#aa1419e1cd3c485e89a5166c7e1f19caf", null ], + [ "bound_p1", "structctl__t.html#a44cbf78eb4bbb11036922bc40faa2b4b", null ], + [ "bound_dps", "structctl__t.html#a9e31767a1a873f2829a00cb15c0ae421", null ], + [ "bound_dzs", "structctl__t.html#a0c09fef6dfe4daa19ad717cd1e1b77ec", null ], + [ "bound_zetas", "structctl__t.html#ae7b26fcc7af034afe6144631986213ea", null ], + [ "bound_pbl", "structctl__t.html#a3e924116d2599fb79a734a74da11e8a2", null ], + [ "species", "structctl__t.html#a20f21cdf4fea1cfc948fc1bcc1f0a520", null ], + [ "molmass", "structctl__t.html#a0522c3f4f840a3fabbfa786c2dfba4b0", null ], + [ "tdec_trop", "structctl__t.html#af276258494c92c24ab0de0b54759e9a9", null ], + [ "tdec_strat", "structctl__t.html#a86977d0f97ee8db6974efc896822a7db", null ], + [ "clim_photo", "structctl__t.html#a5a52a92586476c70f20788fd481d98f3", null ], + [ "clim_hno3_filename", "structctl__t.html#adcb60205ef46f49695f9f06257dc0346", null ], + [ "clim_oh_filename", "structctl__t.html#aa7ad8811329e690f4a3c4431b16f8d19", null ], + [ "clim_h2o2_filename", "structctl__t.html#a711670450c0aa59e4ae6cc7b199ba63e", null ], + [ "clim_ho2_filename", "structctl__t.html#a2d8c402293e6879df38c55a4241b1ad5", null ], + [ "clim_o1d_filename", "structctl__t.html#a587e33a3eebf5c424f67d94200f598ff", null ], + [ "clim_o3_filename", "structctl__t.html#ac348a5d2c94d9e46c64904741f4726d3", null ], + [ "clim_ccl4_timeseries", "structctl__t.html#aa17140ad321005a763259a2ae7dcd858", null ], + [ "clim_ccl3f_timeseries", "structctl__t.html#ac6e501659bef71188874bf710d510635", null ], + [ "clim_ccl2f2_timeseries", "structctl__t.html#ad262595cbb226c73adcde30a4b7d3bf9", null ], + [ "clim_n2o_timeseries", "structctl__t.html#a0bdff7541fde7bd508072c44279519fd", null ], + [ "clim_sf6_timeseries", "structctl__t.html#ab08651e92983408ef0bebfe875c59851", null ], + [ "mixing_dt", "structctl__t.html#acf37a9e8e3b1a013d6106f83e14aedb3", null ], + [ "mixing_trop", "structctl__t.html#a11a33decd5490249e5251aaec901bd4c", null ], + [ "mixing_strat", "structctl__t.html#a54e8203aaa728ca33e8db070896eec5a", null ], + [ "mixing_nz", "structctl__t.html#aa027a38882f39332262de958c1e8880b", null ], + [ "mixing_z0", "structctl__t.html#a5b956c530addc8d909afaf00f5bf9fb4", null ], + [ "mixing_z1", "structctl__t.html#a12d69b44d99afb975f0df6fe5486f896", null ], + [ "mixing_nx", "structctl__t.html#a073b97a29712daaee8212c8a673418bf", null ], + [ "mixing_lon0", "structctl__t.html#aa161bb16963a0fb4340b8e6fda492be6", null ], + [ "mixing_lon1", "structctl__t.html#adbb72c2a4599dd7bc44ef279da5de7ff", null ], + [ "mixing_ny", "structctl__t.html#a6cc8f7e22a69a8fec9e11c2cd4a84644", null ], + [ "mixing_lat0", "structctl__t.html#a8bc3cf78a652568f5e5f04d7c28e82ea", null ], + [ "mixing_lat1", "structctl__t.html#aabd109b7477b116b0542aafeb8056180", null ], + [ "chemgrid_nz", "structctl__t.html#a9fab7dd94afddfff20c4596605e3f18a", null ], + [ "chemgrid_z0", "structctl__t.html#a1834cd1e787e3aa2f391cd942a7f37c7", null ], + [ "chemgrid_z1", "structctl__t.html#a080fa58f76fcfad970b76ca112706154", null ], + [ "chemgrid_nx", "structctl__t.html#ab7ed13e186108a02ff64f4bccc4ec775", null ], + [ "chemgrid_lon0", "structctl__t.html#a3e1bc34453198d5854a7f0271f503f7c", null ], + [ "chemgrid_lon1", "structctl__t.html#a4b601fe8e527664c96b12b9eafee4762", null ], + [ "chemgrid_ny", "structctl__t.html#ac43809de3c73cb9793c567813452cfca", null ], + [ "chemgrid_lat0", "structctl__t.html#a189dce731fb0c3210161ca328a93a327", null ], + [ "chemgrid_lat1", "structctl__t.html#a2e99a15cc98b378ffc96a6df73fe6048", null ], + [ "oh_chem_reaction", "structctl__t.html#a81cc25ede9c434e2ac0d7e341f3113e1", null ], + [ "oh_chem", "structctl__t.html#a3a6b353625c774d90aa5286e69f1fc5f", null ], + [ "oh_chem_beta", "structctl__t.html#a572e117f02cbfced576c216d366d1a89", null ], + [ "h2o2_chem_reaction", "structctl__t.html#abfeedfc5c515f8d03de56c2cd06aa633", null ], + [ "kpp_chem", "structctl__t.html#a92e02214da035478761cdcd7622780b1", null ], + [ "tracer_chem", "structctl__t.html#a7144e94dd5ef6f75941dd35a82eac9bd", null ], + [ "wet_depo_pre", "structctl__t.html#a96e4c97eb8f6a2b81d7ddb7a3ce4ae81", null ], + [ "wet_depo_bc_a", "structctl__t.html#a1550c0159a3a3374a1ebccef46604ad8", null ], + [ "wet_depo_bc_b", "structctl__t.html#ae49e5d87420514bf64f3150e75c8b07f", null ], + [ "wet_depo_ic_a", "structctl__t.html#a032306df4b235c20af95d5b30edc694a", null ], + [ "wet_depo_ic_b", "structctl__t.html#ae48763f1caad155cb48c8bcb536061c0", null ], + [ "wet_depo_ic_h", "structctl__t.html#a85a0e04fc184e8202b06d4c4e5546327", null ], + [ "wet_depo_bc_h", "structctl__t.html#a9a0cd464bdd8eac81b99b88a93e21536", null ], + [ "wet_depo_ic_ret_ratio", "structctl__t.html#adfd76ffde125821097d58b4b3978a355", null ], + [ "wet_depo_bc_ret_ratio", "structctl__t.html#ac2b6871df347638e7154410038690871", null ], + [ "dry_depo_dp", "structctl__t.html#a60da7ce4a7b610712585fde03773bf7f", null ], + [ "dry_depo_vdep", "structctl__t.html#acadcfbb95971c47b377fbd4443c68723", null ], + [ "psc_h2o", "structctl__t.html#ab4ab5f332a54f86eda5e850ac7380334", null ], + [ "psc_hno3", "structctl__t.html#abd6693699cf561e2628e46805ac9591b", null ], + [ "atm_basename", "structctl__t.html#a8b2706a512ce6a279091d8ff1b192346", null ], + [ "atm_gpfile", "structctl__t.html#a06975fa14d8c7f7813bf83fa4166f819", null ], + [ "atm_dt_out", "structctl__t.html#aad4b256a00136fe4181077c2b02b0f45", null ], + [ "atm_filter", "structctl__t.html#a9279f2a56adc9780721e00e35bed2b3d", null ], + [ "atm_stride", "structctl__t.html#aa98efec197e5a7bf0abd5f30ba44de72", null ], + [ "atm_type", "structctl__t.html#a2509f56c50085b3d0f47c495da91b248", null ], + [ "csi_basename", "structctl__t.html#a605a1904f8ff49d178ac462f8fbecc3a", null ], + [ "csi_kernel", "structctl__t.html#a378603f0fe74b4236f45f78bf4bc02dc", null ], + [ "csi_dt_out", "structctl__t.html#a466eb100ca9ab4f5f605e14a27a61f1d", null ], + [ "csi_obsfile", "structctl__t.html#a01ea628e12cf0025aa0731f52d13da10", null ], + [ "csi_obsmin", "structctl__t.html#a0a450754f8661100135aa790ea26df16", null ], + [ "csi_modmin", "structctl__t.html#a4aa05c61a9c0c1d0f3737f2190b1ebdc", null ], + [ "csi_nz", "structctl__t.html#a0409a87481145b01eb3fd61042f35abc", null ], + [ "csi_z0", "structctl__t.html#a98aa14528bd795eaf31eae63a33c630f", null ], + [ "csi_z1", "structctl__t.html#a55a1915a7e8ef2a91a2553a8393b4329", null ], + [ "csi_nx", "structctl__t.html#a21159a48d018215b1bb5af62214b9063", null ], + [ "csi_lon0", "structctl__t.html#a396d8bbb52aaf8408e90c207aa7f7312", null ], + [ "csi_lon1", "structctl__t.html#a0cd8031f829953cb90912d9eecfe67b3", null ], + [ "csi_ny", "structctl__t.html#a17759fe1c0d11bb19777559e24808d40", null ], + [ "csi_lat0", "structctl__t.html#a219b7e2f9f53597e84a87d349e32bcb5", null ], + [ "csi_lat1", "structctl__t.html#a015b2de1c61e25a2e8abb0fba4a05c24", null ], + [ "ens_basename", "structctl__t.html#a94b0a51a5281e718f4fbd38bf5b4d340", null ], + [ "ens_dt_out", "structctl__t.html#aa943823dbd2a4b5fa38e7d0cf8f9ccb0", null ], + [ "grid_basename", "structctl__t.html#a65f18a2f1aa44522f78fc364a0ffaf68", null ], + [ "grid_kernel", "structctl__t.html#a4dc20e7eacf1e45a61ed1910e0e88d1b", null ], + [ "grid_gpfile", "structctl__t.html#a30f012c96cb05d5a99004d9ce032277c", null ], + [ "grid_dt_out", "structctl__t.html#afe05b16d3cfa511feb4673706f6606ff", null ], + [ "grid_sparse", "structctl__t.html#ac7a96c566e02c9e88a73e53248a89cb5", null ], + [ "grid_nz", "structctl__t.html#aa315cd84c43255d483d552a0d2c6d18f", null ], + [ "grid_z0", "structctl__t.html#a0060ec5c97cb80d4721c3970c68012f5", null ], + [ "grid_z1", "structctl__t.html#a1a5460bac04c277c0e66efc9f2f85810", null ], + [ "grid_nx", "structctl__t.html#a235ea5cb832f13023339bafe9eeffd20", null ], + [ "grid_lon0", "structctl__t.html#a2b398376ae2ebe6e02a34465367943de", null ], + [ "grid_lon1", "structctl__t.html#a895d5f67cd12ab54481ebfa36f359b77", null ], + [ "grid_ny", "structctl__t.html#a9a533d295b5533e6a4ca9197694186c5", null ], + [ "grid_lat0", "structctl__t.html#a25bb036fcbb73ed2452d42212cd3c09f", null ], + [ "grid_lat1", "structctl__t.html#af89d6bfcdbc4250e2d30dd7e453b3048", null ], + [ "grid_type", "structctl__t.html#a37c580065a63c21f5421ee78e3c4b3d9", null ], + [ "prof_basename", "structctl__t.html#a1a4c8aa3a46d5a54c6ef2ca4eefdf3a1", null ], + [ "prof_obsfile", "structctl__t.html#a42d536f7e68997de273a245cff2af30b", null ], + [ "prof_nz", "structctl__t.html#a45940a490a88de1eee54ce2701db84aa", null ], + [ "prof_z0", "structctl__t.html#a4ef0c20dc2cdc73b2a3272e40a82efd4", null ], + [ "prof_z1", "structctl__t.html#a8fcaa080d02f579e45b99cd7e6a5a36e", null ], + [ "prof_nx", "structctl__t.html#a4fe06eb4b9baabf93694ed62d2956046", null ], + [ "prof_lon0", "structctl__t.html#ab5c52ba42d486204818e2bade09005c1", null ], + [ "prof_lon1", "structctl__t.html#abdbbc3e42fcbcf71714a8b86dd5b3729", null ], + [ "prof_ny", "structctl__t.html#a83da7c4b38e4b6044636bfcab0a0f8c2", null ], + [ "prof_lat0", "structctl__t.html#abbea8b15d0f5ea43ddd48ebb6a248916", null ], + [ "prof_lat1", "structctl__t.html#ab227d1f7a9235210bd3ba4e159398bfc", null ], + [ "sample_basename", "structctl__t.html#aa974f483b6ccf931730d2d929eee2b51", null ], + [ "sample_kernel", "structctl__t.html#a2c08850b82591f935ab0c498217b3d65", null ], + [ "sample_obsfile", "structctl__t.html#a64cde624042ea4b8d6b841660ff28546", null ], + [ "sample_dx", "structctl__t.html#af5696aca68db24fedc7bd265d4eb6d52", null ], + [ "sample_dz", "structctl__t.html#a857fdeffae577ddb41500ef0c875020e", null ], + [ "stat_basename", "structctl__t.html#af784e18ace4cd191ae100a7df4955b6b", null ], + [ "stat_lon", "structctl__t.html#a0fafec241b4112fa64cb69fe09403ea8", null ], + [ "stat_lat", "structctl__t.html#a995505c06bd35ecba593f807c1eda591", null ], + [ "stat_r", "structctl__t.html#a149be614c5eafb380c3c9f3ad6599971", null ], + [ "stat_t0", "structctl__t.html#a5721f8afc611b607db92678bb063f42d", null ], + [ "stat_t1", "structctl__t.html#a370c0a527e721ea64cd67685abd7bc42", null ], + [ "vtk_basename", "structctl__t.html#ac98ba3f8bc8b26ca6499ac79603de8db", null ], + [ "vtk_dt_out", "structctl__t.html#a64262df06556e7055245b9f96d317f92", null ], + [ "vtk_stride", "structctl__t.html#af662f58ab4cdf46b8e28945ca541a9c1", null ], + [ "vtk_scale", "structctl__t.html#ad1c66733dc34e0eb4bff6dea1ad9aefe", null ], + [ "vtk_offset", "structctl__t.html#a78c2f172f67203ddfc2dfb9db913f51d", null ], + [ "vtk_sphere", "structctl__t.html#a17e569920568025af14e66d706651a18", null ] +]; \ No newline at end of file diff --git a/doxygen/structmet__t.html b/doxygen/structmet__t.html new file mode 100644 index 0000000000..63bd167deb --- /dev/null +++ b/doxygen/structmet__t.html @@ -0,0 +1,1155 @@ + + + + + + + +MPTRAC: met_t Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
met_t Struct Reference
+
+
+ +

Meteo data. + More...

+ +

#include <libtrac.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

double time
 Time [s]. More...
 
int nx
 Number of longitudes. More...
 
int ny
 Number of latitudes. More...
 
int np
 Number of pressure levels. More...
 
int npl
 Number of model levels. More...
 
double lon [EX]
 Longitude [deg]. More...
 
double lat [EY]
 Latitude [deg]. More...
 
double p [EP]
 Pressure [hPa]. More...
 
float ps [EX][EY]
 Surface pressure [hPa]. More...
 
float ts [EX][EY]
 Surface temperature [K]. More...
 
float zs [EX][EY]
 Surface geopotential height [km]. More...
 
float us [EX][EY]
 Surface zonal wind [m/s]. More...
 
float vs [EX][EY]
 Surface meridional wind [m/s]. More...
 
float lsm [EX][EY]
 Land-sea mask [1]. More...
 
float sst [EX][EY]
 Sea surface temperature [K]. More...
 
float pbl [EX][EY]
 Boundary layer pressure [hPa]. More...
 
float pt [EX][EY]
 Tropopause pressure [hPa]. More...
 
float tt [EX][EY]
 Tropopause temperature [K]. More...
 
float zt [EX][EY]
 Tropopause geopotential height [km]. More...
 
float h2ot [EX][EY]
 Tropopause water vapor vmr [ppv]. More...
 
float pct [EX][EY]
 Cloud top pressure [hPa]. More...
 
float pcb [EX][EY]
 Cloud bottom pressure [hPa]. More...
 
float cl [EX][EY]
 Total column cloud water [kg/m^2]. More...
 
float plcl [EX][EY]
 Pressure at lifted condensation level (LCL) [hPa]. More...
 
float plfc [EX][EY]
 Pressure at level of free convection (LFC) [hPa]. More...
 
float pel [EX][EY]
 Pressure at equilibrium level [hPa]. More...
 
float cape [EX][EY]
 Convective available potential energy [J/kg]. More...
 
float cin [EX][EY]
 Convective inhibition [J/kg]. More...
 
float o3c [EX][EY]
 Total column ozone [DU]. More...
 
float z [EX][EY][EP]
 Geopotential height [km]. More...
 
float t [EX][EY][EP]
 Temperature [K]. More...
 
float u [EX][EY][EP]
 Zonal wind [m/s]. More...
 
float ul [EX][EY][EP]
 Zonal wind on model levels [m/s]. More...
 
float v [EX][EY][EP]
 Meridional wind [m/s]. More...
 
float vl [EX][EY][EP]
 Meridional wind on model levels [m/s]. More...
 
float w [EX][EY][EP]
 Vertical velocity [hPa/s]. More...
 
float pv [EX][EY][EP]
 Potential vorticity [PVU]. More...
 
float h2o [EX][EY][EP]
 Water vapor volume mixing ratio [1]. More...
 
float o3 [EX][EY][EP]
 Ozone volume mixing ratio [1]. More...
 
float lwc [EX][EY][EP]
 Cloud liquid water content [kg/kg]. More...
 
float iwc [EX][EY][EP]
 Cloud ice water content [kg/kg]. More...
 
float cc [EX][EY][EP]
 Cloud cover [1]. More...
 
float pl [EX][EY][EP]
 Pressure on model levels [hPa]. More...
 
float patp [EX][EY][EP]
 Pressure field in pressure levels [hPa]. More...
 
float zeta [EX][EY][EP]
 Zeta [K]. More...
 
float zeta_dot [EX][EY][EP]
 Vertical velocity [K/s]. More...
 
float zetal [EX][EY][EP]
 Zeta on model levels [K]. More...
 
float zeta_dotl [EX][EY][EP]
 Vertical velocity on model levels [K/s]. More...
 
double hybrid [EP]
 Hybrid model levels. More...
 
+

Detailed Description

+

Meteo data.

+ +

Definition at line 1831 of file libtrac.h.

+

Field Documentation

+ +

◆ time

+ +
+
+ + + + +
double met_t::time
+
+ +

Time [s].

+ +

Definition at line 1834 of file libtrac.h.

+ +
+
+ +

◆ nx

+ +
+
+ + + + +
int met_t::nx
+
+ +

Number of longitudes.

+ +

Definition at line 1837 of file libtrac.h.

+ +
+
+ +

◆ ny

+ +
+
+ + + + +
int met_t::ny
+
+ +

Number of latitudes.

+ +

Definition at line 1840 of file libtrac.h.

+ +
+
+ +

◆ np

+ +
+
+ + + + +
int met_t::np
+
+ +

Number of pressure levels.

+ +

Definition at line 1843 of file libtrac.h.

+ +
+
+ +

◆ npl

+ +
+
+ + + + +
int met_t::npl
+
+ +

Number of model levels.

+ +

Definition at line 1846 of file libtrac.h.

+ +
+
+ +

◆ lon

+ +
+
+ + + + +
double met_t::lon[EX]
+
+ +

Longitude [deg].

+ +

Definition at line 1849 of file libtrac.h.

+ +
+
+ +

◆ lat

+ +
+
+ + + + +
double met_t::lat[EY]
+
+ +

Latitude [deg].

+ +

Definition at line 1852 of file libtrac.h.

+ +
+
+ +

◆ p

+ +
+
+ + + + +
double met_t::p[EP]
+
+ +

Pressure [hPa].

+ +

Definition at line 1855 of file libtrac.h.

+ +
+
+ +

◆ ps

+ +
+
+ + + + +
float met_t::ps[EX][EY]
+
+ +

Surface pressure [hPa].

+ +

Definition at line 1858 of file libtrac.h.

+ +
+
+ +

◆ ts

+ +
+
+ + + + +
float met_t::ts[EX][EY]
+
+ +

Surface temperature [K].

+ +

Definition at line 1861 of file libtrac.h.

+ +
+
+ +

◆ zs

+ +
+
+ + + + +
float met_t::zs[EX][EY]
+
+ +

Surface geopotential height [km].

+ +

Definition at line 1864 of file libtrac.h.

+ +
+
+ +

◆ us

+ +
+
+ + + + +
float met_t::us[EX][EY]
+
+ +

Surface zonal wind [m/s].

+ +

Definition at line 1867 of file libtrac.h.

+ +
+
+ +

◆ vs

+ +
+
+ + + + +
float met_t::vs[EX][EY]
+
+ +

Surface meridional wind [m/s].

+ +

Definition at line 1870 of file libtrac.h.

+ +
+
+ +

◆ lsm

+ +
+
+ + + + +
float met_t::lsm[EX][EY]
+
+ +

Land-sea mask [1].

+ +

Definition at line 1873 of file libtrac.h.

+ +
+
+ +

◆ sst

+ +
+
+ + + + +
float met_t::sst[EX][EY]
+
+ +

Sea surface temperature [K].

+ +

Definition at line 1876 of file libtrac.h.

+ +
+
+ +

◆ pbl

+ +
+
+ + + + +
float met_t::pbl[EX][EY]
+
+ +

Boundary layer pressure [hPa].

+ +

Definition at line 1879 of file libtrac.h.

+ +
+
+ +

◆ pt

+ +
+
+ + + + +
float met_t::pt[EX][EY]
+
+ +

Tropopause pressure [hPa].

+ +

Definition at line 1882 of file libtrac.h.

+ +
+
+ +

◆ tt

+ +
+
+ + + + +
float met_t::tt[EX][EY]
+
+ +

Tropopause temperature [K].

+ +

Definition at line 1885 of file libtrac.h.

+ +
+
+ +

◆ zt

+ +
+
+ + + + +
float met_t::zt[EX][EY]
+
+ +

Tropopause geopotential height [km].

+ +

Definition at line 1888 of file libtrac.h.

+ +
+
+ +

◆ h2ot

+ +
+
+ + + + +
float met_t::h2ot[EX][EY]
+
+ +

Tropopause water vapor vmr [ppv].

+ +

Definition at line 1891 of file libtrac.h.

+ +
+
+ +

◆ pct

+ +
+
+ + + + +
float met_t::pct[EX][EY]
+
+ +

Cloud top pressure [hPa].

+ +

Definition at line 1894 of file libtrac.h.

+ +
+
+ +

◆ pcb

+ +
+
+ + + + +
float met_t::pcb[EX][EY]
+
+ +

Cloud bottom pressure [hPa].

+ +

Definition at line 1897 of file libtrac.h.

+ +
+
+ +

◆ cl

+ +
+
+ + + + +
float met_t::cl[EX][EY]
+
+ +

Total column cloud water [kg/m^2].

+ +

Definition at line 1900 of file libtrac.h.

+ +
+
+ +

◆ plcl

+ +
+
+ + + + +
float met_t::plcl[EX][EY]
+
+ +

Pressure at lifted condensation level (LCL) [hPa].

+ +

Definition at line 1903 of file libtrac.h.

+ +
+
+ +

◆ plfc

+ +
+
+ + + + +
float met_t::plfc[EX][EY]
+
+ +

Pressure at level of free convection (LFC) [hPa].

+ +

Definition at line 1906 of file libtrac.h.

+ +
+
+ +

◆ pel

+ +
+
+ + + + +
float met_t::pel[EX][EY]
+
+ +

Pressure at equilibrium level [hPa].

+ +

Definition at line 1909 of file libtrac.h.

+ +
+
+ +

◆ cape

+ +
+
+ + + + +
float met_t::cape[EX][EY]
+
+ +

Convective available potential energy [J/kg].

+ +

Definition at line 1912 of file libtrac.h.

+ +
+
+ +

◆ cin

+ +
+
+ + + + +
float met_t::cin[EX][EY]
+
+ +

Convective inhibition [J/kg].

+ +

Definition at line 1915 of file libtrac.h.

+ +
+
+ +

◆ o3c

+ +
+
+ + + + +
float met_t::o3c[EX][EY]
+
+ +

Total column ozone [DU].

+ +

Definition at line 1918 of file libtrac.h.

+ +
+
+ +

◆ z

+ +
+
+ + + + +
float met_t::z[EX][EY][EP]
+
+ +

Geopotential height [km].

+ +

Definition at line 1921 of file libtrac.h.

+ +
+
+ +

◆ t

+ +
+
+ + + + +
float met_t::t[EX][EY][EP]
+
+ +

Temperature [K].

+ +

Definition at line 1924 of file libtrac.h.

+ +
+
+ +

◆ u

+ +
+
+ + + + +
float met_t::u[EX][EY][EP]
+
+ +

Zonal wind [m/s].

+ +

Definition at line 1927 of file libtrac.h.

+ +
+
+ +

◆ ul

+ +
+
+ + + + +
float met_t::ul[EX][EY][EP]
+
+ +

Zonal wind on model levels [m/s].

+ +

Definition at line 1930 of file libtrac.h.

+ +
+
+ +

◆ v

+ +
+
+ + + + +
float met_t::v[EX][EY][EP]
+
+ +

Meridional wind [m/s].

+ +

Definition at line 1933 of file libtrac.h.

+ +
+
+ +

◆ vl

+ +
+
+ + + + +
float met_t::vl[EX][EY][EP]
+
+ +

Meridional wind on model levels [m/s].

+ +

Definition at line 1936 of file libtrac.h.

+ +
+
+ +

◆ w

+ +
+
+ + + + +
float met_t::w[EX][EY][EP]
+
+ +

Vertical velocity [hPa/s].

+ +

Definition at line 1939 of file libtrac.h.

+ +
+
+ +

◆ pv

+ +
+
+ + + + +
float met_t::pv[EX][EY][EP]
+
+ +

Potential vorticity [PVU].

+ +

Definition at line 1942 of file libtrac.h.

+ +
+
+ +

◆ h2o

+ +
+
+ + + + +
float met_t::h2o[EX][EY][EP]
+
+ +

Water vapor volume mixing ratio [1].

+ +

Definition at line 1945 of file libtrac.h.

+ +
+
+ +

◆ o3

+ +
+
+ + + + +
float met_t::o3[EX][EY][EP]
+
+ +

Ozone volume mixing ratio [1].

+ +

Definition at line 1948 of file libtrac.h.

+ +
+
+ +

◆ lwc

+ +
+
+ + + + +
float met_t::lwc[EX][EY][EP]
+
+ +

Cloud liquid water content [kg/kg].

+ +

Definition at line 1951 of file libtrac.h.

+ +
+
+ +

◆ iwc

+ +
+
+ + + + +
float met_t::iwc[EX][EY][EP]
+
+ +

Cloud ice water content [kg/kg].

+ +

Definition at line 1954 of file libtrac.h.

+ +
+
+ +

◆ cc

+ +
+
+ + + + +
float met_t::cc[EX][EY][EP]
+
+ +

Cloud cover [1].

+ +

Definition at line 1957 of file libtrac.h.

+ +
+
+ +

◆ pl

+ +
+
+ + + + +
float met_t::pl[EX][EY][EP]
+
+ +

Pressure on model levels [hPa].

+ +

Definition at line 1960 of file libtrac.h.

+ +
+
+ +

◆ patp

+ +
+
+ + + + +
float met_t::patp[EX][EY][EP]
+
+ +

Pressure field in pressure levels [hPa].

+ +

Definition at line 1963 of file libtrac.h.

+ +
+
+ +

◆ zeta

+ +
+
+ + + + +
float met_t::zeta[EX][EY][EP]
+
+ +

Zeta [K].

+ +

Definition at line 1966 of file libtrac.h.

+ +
+
+ +

◆ zeta_dot

+ +
+
+ + + + +
float met_t::zeta_dot[EX][EY][EP]
+
+ +

Vertical velocity [K/s].

+ +

Definition at line 1969 of file libtrac.h.

+ +
+
+ +

◆ zetal

+ +
+
+ + + + +
float met_t::zetal[EX][EY][EP]
+
+ +

Zeta on model levels [K].

+ +

Definition at line 1972 of file libtrac.h.

+ +
+
+ +

◆ zeta_dotl

+ +
+
+ + + + +
float met_t::zeta_dotl[EX][EY][EP]
+
+ +

Vertical velocity on model levels [K/s].

+ +

Definition at line 1975 of file libtrac.h.

+ +
+
+ +

◆ hybrid

+ +
+
+ + + + +
double met_t::hybrid[EP]
+
+ +

Hybrid model levels.

+ +

Definition at line 1978 of file libtrac.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/doxygen/structmet__t.js b/doxygen/structmet__t.js new file mode 100644 index 0000000000..24198b7c31 --- /dev/null +++ b/doxygen/structmet__t.js @@ -0,0 +1,52 @@ +var structmet__t = +[ + [ "time", "structmet__t.html#acf9d509f67dbc7ad8119d40a2757285f", null ], + [ "nx", "structmet__t.html#a2bbd96a0a7184bc730c14323a067a760", null ], + [ "ny", "structmet__t.html#a3a066580dfee9253cfe22b1e4ebf73b9", null ], + [ "np", "structmet__t.html#a5d4eb4cd28aa5db1ec672368921c0b8f", null ], + [ "npl", "structmet__t.html#abe8b336b71924b14d2badd0d6c0f7c27", null ], + [ "lon", "structmet__t.html#a85df96bff71dfa55576a995234a87b8f", null ], + [ "lat", "structmet__t.html#af7b2d03415a8164a3e0a29da55a9f371", null ], + [ "p", "structmet__t.html#affbacae5925ff68007396b525622ee34", null ], + [ "ps", "structmet__t.html#a3ea571f00b50e6ba8191ec620bc1d15e", null ], + [ "ts", "structmet__t.html#a61ef93fdd727e61639dc6408a4573149", null ], + [ "zs", "structmet__t.html#a52f25b39ae97c30393755cefc303ccd0", null ], + [ "us", "structmet__t.html#a4242ff2a85d48089d15fd5645923ee36", null ], + [ "vs", "structmet__t.html#aa6379067afe890ea9fe7146a1668f0dc", null ], + [ "lsm", "structmet__t.html#abe8e0b1c2d6241fa20e663db28e74445", null ], + [ "sst", "structmet__t.html#a04c8115782b3dc6697111fdeb7c8f860", null ], + [ "pbl", "structmet__t.html#a9a55672423267749087311d62e924794", null ], + [ "pt", "structmet__t.html#a86578dd751b3d5bcb696265f4a1ac47d", null ], + [ "tt", "structmet__t.html#a9677a606f7850c8143f698e9fb15273f", null ], + [ "zt", "structmet__t.html#a043690c89804f40d4a8940b7d3393707", null ], + [ "h2ot", "structmet__t.html#ac87fdccf57a65247062baccf2c2e85e8", null ], + [ "pct", "structmet__t.html#a29d404429eb9f4e95bf8fa1132455fdd", null ], + [ "pcb", "structmet__t.html#a7c44ec7c0c9f471ca8ca700adb3596c3", null ], + [ "cl", "structmet__t.html#ae45079d4c0137fa4416dd42ca1f117cd", null ], + [ "plcl", "structmet__t.html#a83441ce7588a1230c54f4c2174bbdcfb", null ], + [ "plfc", "structmet__t.html#af2f85f717aa775b52d4791c97c3ae142", null ], + [ "pel", "structmet__t.html#a7d6776fe9ed1966d6024567d423f0b96", null ], + [ "cape", "structmet__t.html#a1db66ae86edf896a545c0332dfeabb0f", null ], + [ "cin", "structmet__t.html#a827c930acd681d82336766f6744ac763", null ], + [ "o3c", "structmet__t.html#a0ab0cfbc1e5fe1a5c9ce3412cc4400a8", null ], + [ "z", "structmet__t.html#aaaa04cf36044fcc02d518fe667d63bb3", null ], + [ "t", "structmet__t.html#a60fe66c30f0f0b5abdb46f220e3137cf", null ], + [ "u", "structmet__t.html#a68b715eb9e5fa3a9c8f400e0c5667cc9", null ], + [ "ul", "structmet__t.html#a760447bb9eca0826b3705f30a9b8f165", null ], + [ "v", "structmet__t.html#abc29d5fbea8f527b849837efacd76eaa", null ], + [ "vl", "structmet__t.html#a4b4aaeb8f39dea0fb511744f84535303", null ], + [ "w", "structmet__t.html#a210cc808698557c4824a4a8d7908fe73", null ], + [ "pv", "structmet__t.html#ac8e46cfdfc9fc8cfef4e2b801834a61c", null ], + [ "h2o", "structmet__t.html#a135f6e1c898c2d206d9a032de0e7b579", null ], + [ "o3", "structmet__t.html#a5ce0fb589ddc187ab1191a9fd081a376", null ], + [ "lwc", "structmet__t.html#a40590e0c0c66a5a1f6903a474de87ee0", null ], + [ "iwc", "structmet__t.html#abf312f05407920f9ac855cede012efe2", null ], + [ "cc", "structmet__t.html#a5d24cf701c941649d83adad1e058898f", null ], + [ "pl", "structmet__t.html#af1a12a97613433a41a2714a2634a83de", null ], + [ "patp", "structmet__t.html#a4bba580a8a3628a2f52f0e6a2c13aae2", null ], + [ "zeta", "structmet__t.html#af23740c42f5085dbbf245004ea1ac3d9", null ], + [ "zeta_dot", "structmet__t.html#ab9f350b57a390ecf0eb91ddd360cfb0e", null ], + [ "zetal", "structmet__t.html#afdf65f900ff556c3d4faef4443e3f40f", null ], + [ "zeta_dotl", "structmet__t.html#a1153b31e69a6542d2ee83d60c38f7bb1", null ], + [ "hybrid", "structmet__t.html#a2a9a988f67219ff510846b9cd989055d", null ] +]; \ No newline at end of file diff --git a/doxygen/sync_off.png b/doxygen/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doxygen/sync_on.png b/doxygen/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doxygen/tab_a.png b/doxygen/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doxygen/tab_b.png b/doxygen/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doxygen/tabs.css b/doxygen/tabs.css new file mode 100644 index 0000000000..00d1c60249 --- /dev/null +++ b/doxygen/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/doxygen/time2jsec_8c.html b/doxygen/time2jsec_8c.html new file mode 100644 index 0000000000..af2984b60b --- /dev/null +++ b/doxygen/time2jsec_8c.html @@ -0,0 +1,192 @@ + + + + + + + +MPTRAC: time2jsec.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
time2jsec.c File Reference
+
+
+ +

Convert date to Julian seconds. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Convert date to Julian seconds.

+ +

Definition in file time2jsec.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 27 of file time2jsec.c.

+
29 {
+
30
+
31 double jsec, remain;
+
32
+
33 int day, hour, min, mon, sec, year;
+
34
+
35 /* Check arguments... */
+
36 if (argc < 8)
+
37 ERRMSG("Give parameters: <year> <mon> <day> <hour> <min> <sec> <remain>");
+
38
+
39 /* Read arguments... */
+
40 year = atoi(argv[1]);
+
41 mon = atoi(argv[2]);
+
42 day = atoi(argv[3]);
+
43 hour = atoi(argv[4]);
+
44 min = atoi(argv[5]);
+
45 sec = atoi(argv[6]);
+
46 remain = atof(argv[7]);
+
47
+
48 /* Convert... */
+
49 time2jsec(year, mon, day, hour, min, sec, remain, &jsec);
+
50 printf("%.2f\n", jsec);
+
51
+
52 return EXIT_SUCCESS;
+
53}
+
void time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
Convert date to seconds.
Definition: libtrac.c:5449
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/time2jsec_8c.js b/doxygen/time2jsec_8c.js new file mode 100644 index 0000000000..66cc6778fe --- /dev/null +++ b/doxygen/time2jsec_8c.js @@ -0,0 +1,4 @@ +var time2jsec_8c = +[ + [ "main", "time2jsec_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..121dd27876 --- /dev/null +++ b/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..aacbb1432e --- /dev/null +++ b/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +f166b7013cb888fe76163485f47cba88 \ No newline at end of file diff --git a/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/time2jsec_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a246e819e296797e70ce4ff10a30640aae4f4def GIT binary patch literal 1969 zcmV;i2Tu5jP)OJAb&q#XdtM8p@EFMd=a=Gp{;tEE?fZy zgIQ4n_cRdHz|cTY149Er4GawgH7*K`!C*Li_^@ln`UMsO5d-v|~`TT)_fxy7PP0Bh9>Y1j$zh5L0)z;Rgrltx6f)_7d z+`M^{&*uw;!dI_eA#EBP8?&>s6B842a&n$Mdj2M>-NJI3ep@7}%Z z-0$NItP2a4_V!n~x%Hu;Kj!Dl)#_g@mfz8;Y}>XC0D!~cMn*^X=&NFZ(nh7F`La+C=?tHr?IgS05CK(q);fXU%&q7(IcTy`04Kwqobn+ zgF!Brmz9;tWU`5g3CFB|QOxEgtJOL?yV%zDztgAdIGn4crLDjGqTTrMqp7JW0D#$S z4h{~sub0c^moHy_^X3f(gGowC5{t!Jt#)p1P9~E903JSkD3wZ^nwmyON7-!l$&)7m z01}BrE|=S6^?H3!P>@aV#*G_OQ&U>4wy&>GtyZ_Twyvdf|Ni~T%F5Q(*75Q2(9qEQ z{CvkQjw3TCkw_E>1OR}Tn3(SF?xRPK0sweCUQ<&O0D#SAx3#q)E$MXn%*@P+?q;+3 z{Q2{EJU%Qej7Foqd-sk`r#t4}1(?lC0D#|q`}p(EUG?=(>2%-B%*eSpoR^o`F~Nj{ zgaZc-000giJQxxZ5)%^x0Eml=o1UHq0Myjfl$4Z&hlc|IDl03=WU|3vU^1CV->$B% zyu7^3%*^QMXxrp5KR-_(5b$_Bl}a5R9!4rx)oEyGC@L!2vu6(gpt`!+;cMbZXuQ0< zkOBsS@%Hw%m65{2!h%Afc=__BPNxe92>7%+g+jsO@hf_*i&jex2)OKkTW5i+P!kg~ zKmGJy0Q`M?%o@%AdAuEHbx0%eZ2$;ru=E?pv#NUQ4Tbh;foP#gXf=Wm4Na(QoWZ$Ux9 zu3fvPr>9SxII*I^#)D#yzyGXQe9;*O*Ti6$mPpz@(*TF_Fq%PZFj5fM4-ePW)U2w* zU@*qU#x`%#`JusLu@nl0!C)AT#@gCitJV7c{rkitfw{Z_bp|HHXJS;3MFfg#bzP_@ua%5!W z)~#C{4yU4`V%08uKA%dZR##U?MMbe#EF@K{>Ij8GsZ_du|9%#WRbF1+(b3V}-Mw*d zHk==tjEoGaR4Nn-84SjS3l~f#Q)y{wNlA&*2l~=%*@9hKvikVolas&A%8LB%J2t90 zl0+g!L_`D!2M-PoZoF4+Zm!X2OiN3foSX~~4_B#FcsyRC(R6fl*pIGMDs2ZdDk>`S z^780(x~HdSa&odnB3Vo4)TvYB-O*Qt zSS+T|XkYp$!oa}z_ut>ZVlh@L@bvUZN%>DkMnr6Eh=<3@XG~!l2TAm;Fi&0X#T?6+dVg~1H{J0e)#agU8BRJ5fIeC&_GZFLjyq# z3=IS|t89cjJ3C!&V;v?ZCuuaAyIm|puh%y>H@n+~dsrnjWo2cq_pvU!ckgz$g=O^g z^dLX={{z9m|EGbV1@37esDYt@pazBpf*Kea2x|TSeL~EP;kVi100000NkvXXu0mjf DA(hLp literal 0 HcmV?d00001 diff --git a/doxygen/time2jsec_8c_source.html b/doxygen/time2jsec_8c_source.html new file mode 100644 index 0000000000..8fea7589b0 --- /dev/null +++ b/doxygen/time2jsec_8c_source.html @@ -0,0 +1,159 @@ + + + + + + + +MPTRAC: time2jsec.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
time2jsec.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2019 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27int main(
+
28 int argc,
+
29 char *argv[]) {
+
30
+
31 double jsec, remain;
+
32
+
33 int day, hour, min, mon, sec, year;
+
34
+
35 /* Check arguments... */
+
36 if (argc < 8)
+
37 ERRMSG("Give parameters: <year> <mon> <day> <hour> <min> <sec> <remain>");
+
38
+
39 /* Read arguments... */
+
40 year = atoi(argv[1]);
+
41 mon = atoi(argv[2]);
+
42 day = atoi(argv[3]);
+
43 hour = atoi(argv[4]);
+
44 min = atoi(argv[5]);
+
45 sec = atoi(argv[6]);
+
46 remain = atof(argv[7]);
+
47
+
48 /* Convert... */
+
49 time2jsec(year, mon, day, hour, min, sec, remain, &jsec);
+
50 printf("%.2f\n", jsec);
+
51
+
52 return EXIT_SUCCESS;
+
53}
+
void time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
Convert date to seconds.
Definition: libtrac.c:5449
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
int main(int argc, char *argv[])
Definition: time2jsec.c:27
+
+
+ + + + diff --git a/doxygen/tnat_8c.html b/doxygen/tnat_8c.html new file mode 100644 index 0000000000..6aaf64a5e4 --- /dev/null +++ b/doxygen/tnat_8c.html @@ -0,0 +1,190 @@ + + + + + + + +MPTRAC: tnat.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tnat.c File Reference
+
+
+ +

Calculate PSC temperatures. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Calculate PSC temperatures.

+ +

Definition in file tnat.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 31 of file tnat.c.

+
33 {
+
34
+
35 /* Check arguments... */
+
36 if (argc < 3)
+
37 ERRMSG("Give parameters: <p> <h2o> <hno3>");
+
38
+
39 /* Get varibles... */
+
40 double p = atof(argv[1]);
+
41 double h2o = atof(argv[2]);
+
42 double hno3 = atof(argv[3]);
+
43
+
44 /* Write output... */
+
45 printf(" p= %g hPa\n", p);
+
46 printf(" q_H2O= %g ppv\n", h2o);
+
47 printf("q_HNO3= %g ppv\n", hno3);
+
48 printf(" T_dew= %g K\n", TDEW(p, h2o));
+
49 printf(" T_ice= %g K\n", TICE(p, h2o));
+
50 printf(" T_NAT= %g K\n", nat_temperature(p, h2o, hno3));
+
51
+
52 return EXIT_SUCCESS;
+
53}
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/tnat_8c.js b/doxygen/tnat_8c.js new file mode 100644 index 0000000000..d40e43a28e --- /dev/null +++ b/doxygen/tnat_8c.js @@ -0,0 +1,4 @@ +var tnat_8c = +[ + [ "main", "tnat_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..c5b6448021 --- /dev/null +++ b/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..94d6663f92 --- /dev/null +++ b/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +03cee6dfff65b5d6dc912a80f6b39950 \ No newline at end of file diff --git a/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/tnat_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..21672a00aac4890d23ac98563c10f08a624ceaaf GIT binary patch literal 1988 zcmV;#2RrzQP){rz=yb)}`HO-)T> zV`BgSr_+gE>(S|hgM*col^hP|>eZ|3`+n9)T-+7_!1VM&clT&X$v@a^sY3BDvw1cQ zDVa=m_Uu_cpP!JBuzUCJp`jrFz`J+vnwpwYQd01EJe$o%_a=7i*Z}~Djg7TfECHqb z3VM2a7z{>IQc_u2ncZ$jdkF*r4u`XK>(+hy_8AO@($Z1_fxu$1rl+U91=ZEncsxEQ zCr78#p~?ZJT3cJo%gguf-5b=cOeW*=`KXk|V%fHBo1a3!7NHW(_vo`{&$e&hJ}@xA zX0y+qKTo64G#X8AZf<{nKLFtQ^XD3krn9qCr_=Fxyycs#R;$(FaHv$Oix)5U_4PTO z&M-V|G{67u1^}4Nv)_Gpo6VMf^;O6B-~Ti-^EM=r-rnBg;^LW^nUg0^o<4mV0MOmt zZ8DjRM&r!POm=oQx;OFiXVIcsZsHkXuejc63WHJQ;0cu98)vDEMy(WiHQlD&6bgov3xp_NQ{e%^P3fv zUw%o=$Pk9%_VY6QtyLRnD2RPiv z>y^b~Q79C8z20uOXJ%$5CMJez(rUE|1OhZ|D3gGb*e`Qyir`xS(D%S@#%eEaR$^)R?1 zBO{N8ho7wUDuMtU4gmo9`fJ+Mls-B6x77m*0=?75#zrcYs#2-wbh=8V3S&8*mX>zz z+_|QvCf|ei?%fMI(PT1t$1h&I*t2KPN>bire~w#kG_6*v_n=oHV2e;$|BT{rI3kg_ zbLY1m}>>G62pz71^|7m&on-@f@KckMc>@Z?E=6+MC=F)=uoYw^o3$@TSrDKBS| zNQBzjpTcXgWy_YVtSl0VWH1=ya(R4wyxZ+YqdYe^mztUy@E6#(fXCx?baXJ8ObUh4 z+uN&9C|0`D^5fydhnFv3ZfIy29v;@|bnWf!6bfZ^si1C?laue?zi+eI5Cmy&Z(rUt zpj+=%^fOuizdcn|RV^+q@_0P4SX@?CmYtm~7K_)tO9Y6GjR62qsXJO)4*vY}-*4ak z8=wDI5{a-DO}Sh?I57~k zx4t00%LuJj%jI(K-n|>D%0?rRNJu2oMn4NDl@9&z!yOzBal8K@lZkb8dn+pPXtcED zmFV+hf1+peWHQ;)r%%22_*iE7XB(k?raucr;S_kKej= z>)^qIk@tfUU`9W|=NE}YM{&5Q?Sjf=GMP-a5y~QwXd`4J1I*|rQd8Ho)`V;jaK9dc zbznvzSO;blf^}dwu?=O-EOB)C`%4` ze9&k#Q8E^snwlC9W~iyDiT3BQnejWqY$hEGYY{vFryHx12YQ2I{ycK W)%!AHsdC-`0000 + + + + + + +MPTRAC: tnat.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tnat.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Main...
+
29 ------------------------------------------------------------ */
+
30
+
31int main(
+
32 int argc,
+
33 char *argv[]) {
+
34
+
35 /* Check arguments... */
+
36 if (argc < 3)
+
37 ERRMSG("Give parameters: <p> <h2o> <hno3>");
+
38
+
39 /* Get varibles... */
+
40 double p = atof(argv[1]);
+
41 double h2o = atof(argv[2]);
+
42 double hno3 = atof(argv[3]);
+
43
+
44 /* Write output... */
+
45 printf(" p= %g hPa\n", p);
+
46 printf(" q_H2O= %g ppv\n", h2o);
+
47 printf("q_HNO3= %g ppv\n", hno3);
+
48 printf(" T_dew= %g K\n", TDEW(p, h2o));
+
49 printf(" T_ice= %g K\n", TICE(p, h2o));
+
50 printf(" T_NAT= %g K\n", nat_temperature(p, h2o, hno3));
+
51
+
52 return EXIT_SUCCESS;
+
53}
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
int main(int argc, char *argv[])
Definition: tnat.c:31
+
+
+ + + + diff --git a/doxygen/trac_8c.html b/doxygen/trac_8c.html new file mode 100644 index 0000000000..bdb9df009f --- /dev/null +++ b/doxygen/trac_8c.html @@ -0,0 +1,4328 @@ + + + + + + + +MPTRAC: trac.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
trac.c File Reference
+
+
+ +

Lagrangian particle dispersion model. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + +

+Macros

#define PARTICLE_LOOP(ip0, ip1, check_dt, ...)
 Loop over particles. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void module_advect (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate advection of air parcels. More...
 
void module_advect_diabatic (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate advection of air parcels. More...
 
void module_bound_cond (ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Apply boundary conditions. More...
 
void module_convection (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt, double *rs)
 Calculate convection of air parcels. More...
 
void module_decay (ctl_t *ctl, clim_t *clim, atm_t *atm, double *dt)
 Calculate exponential decay of particle mass. More...
 
void module_diffusion_meso (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache, double *dt, double *rs)
 Calculate mesoscale diffusion. More...
 
void module_diffusion_turb (ctl_t *ctl, clim_t *clim, atm_t *atm, double *dt, double *rs)
 Calculate turbulent diffusion. More...
 
void module_dry_deposition (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate dry deposition. More...
 
void module_isosurf_init (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache)
 Initialize isosurface module. More...
 
void module_isosurf (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache, double *dt)
 Force air parcels to stay on isosurface. More...
 
void module_meteo (ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Interpolate meteo data for air parcel positions. More...
 
void module_mixing (ctl_t *ctl, clim_t *clim, atm_t *atm, double t)
 Apply interparcel mixing. More...
 
void module_mixing_help (ctl_t *ctl, clim_t *clim, atm_t *atm, int *ixs, int *iys, int *izs, int qnt_idx)
 Auxiliary function for interparcel mixing. More...
 
void module_chemgrid (ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double t)
 Calculate grid data for chemistry modules. More...
 
void module_oh_chem (ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate OH chemistry. More...
 
void module_h2o2_chem (ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate H2O2 chemistry. More...
 
void module_tracer_chem (ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate first order tracer chemistry. More...
 
void module_kpp_chem (ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 KPP chemistry module. More...
 
void module_position (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Check position of air parcels. More...
 
void module_rng_init (int ntask)
 Initialize random number generator... More...
 
void module_rng (double *rs, size_t n, int method)
 Generate random numbers. More...
 
void module_sedi (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate sedimentation of air parcels. More...
 
void module_sort (ctl_t *ctl, met_t *met0, atm_t *atm)
 Sort particles according to box index. More...
 
void module_sort_help (double *a, int *p, int np)
 Helper function for sorting module. More...
 
void module_timesteps (ctl_t *ctl, met_t *met0, atm_t *atm, double *dt, double t)
 Calculate time steps. More...
 
void module_timesteps_init (ctl_t *ctl, atm_t *atm)
 Initialize timesteps. More...
 
void module_wet_deposition (ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
 Calculate wet deposition. More...
 
void write_output (const char *dirname, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
 Write simulation output. More...
 
int main (int argc, char *argv[])
 
+

Detailed Description

+

Lagrangian particle dispersion model.

+ +

Definition in file trac.c.

+

Macro Definition Documentation

+ +

◆ PARTICLE_LOOP

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define PARTICLE_LOOP( ip0,
 ip1,
 check_dt,
 ... 
)
+
+Value:
const int ip0_const = ip0; \
+
const int ip1_const = ip1; \
+
_Pragma("omp parallel for default(shared)") \
+
for (int ip = ip0_const; ip < ip1_const; ip++) \
+
if (!check_dt || dt[ip] != 0)
+
+

Loop over particles.

+ +

Definition at line 58 of file trac.c.

+ +
+
+

Function Documentation

+ +

◆ module_advect()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_advect (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate advection of air parcels.

+ +

Definition at line 675 of file trac.c.

+
680 {
+
681
+
682 /* Set timer... */
+
683 SELECT_TIMER("MODULE_ADVECTION", "PHYSICS", NVTX_GPU);
+
684
+
685 /* Loop over particles... */
+
686 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
687
+
688 /* Init... */
+
689 double dts, u[4], um = 0, v[4], vm = 0, w[4], wm = 0, x[3];
+
690
+
691 /* Loop over integration nodes... */
+
692 for (int i = 0; i < ctl->advect; i++) {
+
693
+
694 /* Set position... */
+
695 if (i == 0) {
+
696 dts = 0.0;
+
697 x[0] = atm->lon[ip];
+
698 x[1] = atm->lat[ip];
+
699 x[2] = atm->p[ip];
+
700 } else {
+
701 dts = (i == 3 ? 1.0 : 0.5) * dt[ip];
+
702 x[0] = atm->lon[ip] + DX2DEG(dts * u[i - 1] / 1000., atm->lat[ip]);
+
703 x[1] = atm->lat[ip] + DY2DEG(dts * v[i - 1] / 1000.);
+
704 x[2] = atm->p[ip] + dts * w[i - 1];
+
705 }
+
706 double tm = atm->time[ip] + dts;
+
707
+
708 /* Interpolate meteo data... */
+
709#ifdef UVW
+
710 intpol_met_time_uvw(met0, met1, tm, x[2], x[0], x[1],
+
711 &u[i], &v[i], &w[i]);
+
712#else
+ +
714 intpol_met_time_3d(met0, met0->u, met1, met1->u, tm,
+
715 x[2], x[0], x[1], &u[i], ci, cw, 1);
+
716 intpol_met_time_3d(met0, met0->v, met1, met1->v, tm,
+
717 x[2], x[0], x[1], &v[i], ci, cw, 0);
+
718 intpol_met_time_3d(met0, met0->w, met1, met1->w, tm,
+
719 x[2], x[0], x[1], &w[i], ci, cw, 0);
+
720#endif
+
721
+
722 /* Get mean wind... */
+
723 double k = 1.0;
+
724 if (ctl->advect == 2)
+
725 k = (i == 0 ? 0.0 : 1.0);
+
726 else if (ctl->advect == 4)
+
727 k = (i == 0 || i == 3 ? 1.0 / 6.0 : 2.0 / 6.0);
+
728 um += k * u[i];
+
729 vm += k * v[i];
+
730 wm += k * w[i];
+
731 }
+
732
+
733 /* Set new position... */
+
734 atm->time[ip] += dt[ip];
+
735 atm->lon[ip] += DX2DEG(dt[ip] * um / 1000.,
+
736 (ctl->advect == 2 ? x[1] : atm->lat[ip]));
+
737 atm->lat[ip] += DY2DEG(dt[ip] * vm / 1000.);
+
738 atm->p[ip] += dt[ip] * wm;
+
739 }
+
740}
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
#define INTPOL_INIT
Initialize cache variables for interpolation.
Definition: libtrac.h:323
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define SELECT_TIMER(id, group, color)
Select timer.
Definition: libtrac.h:721
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
int advect
Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta).
Definition: libtrac.h:1213
+
float w[EX][EY][EP]
Vertical velocity [hPa/s].
Definition: libtrac.h:1939
+
float u[EX][EY][EP]
Zonal wind [m/s].
Definition: libtrac.h:1927
+
float v[EX][EY][EP]
Meridional wind [m/s].
Definition: libtrac.h:1933
+
#define PARTICLE_LOOP(ip0, ip1, check_dt,...)
Loop over particles.
Definition: trac.c:58
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ module_advect_diabatic()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_advect_diabatic (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate advection of air parcels.

+ +

Definition at line 744 of file trac.c.

+
749 {
+
750
+
751 /* Set timer... */
+
752 SELECT_TIMER("MODULE_ADVECTION", "PHYSICS", NVTX_GPU);
+
753
+
754
+
755 /* Loop over particles... */
+
756 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
757 /* If other modules have changed p translate it into a zeta... */
+
758 if (ctl->cpl_zeta_and_press_modules > 0) {
+ +
760 intpol_met_4d_coord(met0, met0->pl, met0->zetal, met1,
+
761 met1->pl, met1->zetal, atm->time[ip], atm->p[ip],
+
762 atm->lon[ip], atm->lat[ip],
+
763 &atm->q[ctl->qnt_zeta][ip], ci, cw, 1);
+
764 }
+
765
+
766 /* Init... */
+
767 double dts, u[4], um = 0, v[4], vm = 0, zeta_dot[4], zeta_dotm = 0, x[3];
+
768
+
769 /* Loop over integration nodes... */
+
770 for (int i = 0; i < ctl->advect; i++) {
+
771
+
772 /* Set position... */
+
773 if (i == 0) {
+
774 dts = 0.0;
+
775 x[0] = atm->lon[ip];
+
776 x[1] = atm->lat[ip];
+
777 x[2] = atm->q[ctl->qnt_zeta][ip];
+
778 } else {
+
779 dts = (i == 3 ? 1.0 : 0.5) * dt[ip];
+
780 x[0] = atm->lon[ip] + DX2DEG(dts * u[i - 1] / 1000., atm->lat[ip]);
+
781 x[1] = atm->lat[ip] + DY2DEG(dts * v[i - 1] / 1000.);
+
782 x[2] = atm->q[ctl->qnt_zeta][ip] + dts * zeta_dot[i - 1];
+
783 }
+
784 double tm = atm->time[ip] + dts;
+
785
+
786 /* Interpolate meteo data... */
+ +
788 intpol_met_4d_coord(met0, met0->zetal, met0->ul, met1, met1->zetal,
+
789 met1->ul, tm, x[2], x[0], x[1], &u[i], ci, cw, 1);
+
790 intpol_met_4d_coord(met0, met0->zetal, met0->vl, met1, met0->zetal,
+
791 met1->vl, tm, x[2], x[0], x[1], &v[i], ci, cw, 0);
+
792 intpol_met_4d_coord(met0, met0->zetal, met0->zeta_dotl, met1,
+
793 met1->zetal, met1->zeta_dotl, tm, x[2], x[0], x[1],
+
794 &zeta_dot[i], ci, cw, 0);
+
795
+
796 /* Get mean wind... */
+
797 double k = 1.0;
+
798 if (ctl->advect == 2)
+
799 k = (i == 0 ? 0.0 : 1.0);
+
800 else if (ctl->advect == 4)
+
801 k = (i == 0 || i == 3 ? 1.0 / 6.0 : 2.0 / 6.0);
+
802 um += k * u[i];
+
803 vm += k * v[i];
+
804 zeta_dotm += k * zeta_dot[i];
+
805 }
+
806
+
807 /* Set new position... */
+
808 atm->time[ip] += dt[ip];
+
809 atm->lon[ip] += DX2DEG(dt[ip] * um / 1000.,
+
810 (ctl->advect == 2 ? x[1] : atm->lat[ip]));
+
811 atm->lat[ip] += DY2DEG(dt[ip] * vm / 1000.);
+
812 atm->q[ctl->qnt_zeta][ip] += dt[ip] * zeta_dotm;
+
813
+
814 /* Check if zeta is below zero... */
+
815 if (atm->q[ctl->qnt_zeta][ip] < 0) {
+
816 atm->q[ctl->qnt_zeta][ip] = 0;
+
817 }
+
818
+
819 /* Set new position also in pressure coordinates... */
+ +
821 intpol_met_4d_coord(met0, met0->zetal, met0->pl, met1, met1->zetal,
+
822 met1->pl, atm->time[ip], atm->q[ctl->qnt_zeta][ip],
+
823 atm->lon[ip], atm->lat[ip], &atm->p[ip], ci, cw, 1);
+
824 }
+
825}
+
void intpol_met_4d_coord(met_t *met0, float heights0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float heights1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatiotemporal interpolation of meteo data.
Definition: libtrac.c:942
+
#define INTPOL_INIT_DIA
Initialize cache variables for interpolation in diabatic scheme.
Definition: libtrac.h:327
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
int cpl_zeta_and_press_modules
Coupled use of pressure based modules and diabatic advection.
Definition: libtrac.h:806
+
int qnt_zeta
Quantity array index for zeta vertical coordinate.
Definition: libtrac.h:1013
+
float zeta_dotl[EX][EY][EP]
Vertical velocity on model levels [K/s].
Definition: libtrac.h:1975
+
float vl[EX][EY][EP]
Meridional wind on model levels [m/s].
Definition: libtrac.h:1936
+
float ul[EX][EY][EP]
Zonal wind on model levels [m/s].
Definition: libtrac.h:1930
+
float pl[EX][EY][EP]
Pressure on model levels [hPa].
Definition: libtrac.h:1960
+
float zetal[EX][EY][EP]
Zeta on model levels [K].
Definition: libtrac.h:1972
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ module_bound_cond()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_bound_cond (ctl_tctl,
clim_tclim,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Apply boundary conditions.

+ +

Definition at line 829 of file trac.c.

+
835 {
+
836
+
837 /* Set timer... */
+
838 SELECT_TIMER("MODULE_BOUNDCOND", "PHYSICS", NVTX_GPU);
+
839
+
840 /* Check quantity flags... */
+
841 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0 && ctl->qnt_Cccl4
+
842 && ctl->qnt_Cccl3f < 0 && ctl->qnt_Cccl2f2 < 0
+
843 && ctl->qnt_Cn2o < 0 && ctl->qnt_Csf6 < 0 && ctl->qnt_aoa < 0)
+
844 return;
+
845
+
846 /* Loop over particles... */
+
847 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,met0,met1,atm,dt)") {
+
848
+
849 /* Check latitude and pressure range... */
+
850 if (atm->lat[ip] < ctl->bound_lat0 || atm->lat[ip] > ctl->bound_lat1
+
851 || atm->p[ip] > ctl->bound_p0 || atm->p[ip] < ctl->bound_p1)
+
852 continue;
+
853
+
854 /* Check surface layer... */
+
855 if (ctl->bound_dps > 0 || ctl->bound_dzs > 0
+
856 || ctl->bound_zetas > 0 || ctl->bound_pbl) {
+
857
+
858 /* Get surface pressure... */
+
859 double ps;
+ +
861 INTPOL_2D(ps, 1);
+
862
+
863 /* Check pressure... */
+
864 if (ctl->bound_dps > 0 && atm->p[ip] < ps - ctl->bound_dps)
+
865 continue;
+
866
+
867 /* Check height... */
+
868 if (ctl->bound_dzs > 0 && Z(atm->p[ip]) > Z(ps) + ctl->bound_dzs)
+
869 continue;
+
870
+
871 /* Check zeta range... */
+
872 if (ctl->bound_zetas > 0) {
+
873 double t;
+
874 INTPOL_3D(t, 1);
+
875 if (ZETA(ps, atm->p[ip], t) > ctl->bound_zetas)
+
876 continue;
+
877 }
+
878
+
879 /* Check planetary boundary layer... */
+
880 if (ctl->bound_pbl) {
+
881 double pbl;
+
882 INTPOL_2D(pbl, 0);
+
883 if (atm->p[ip] < pbl)
+
884 continue;
+
885 }
+
886 }
+
887
+
888 /* Set mass and volume mixing ratio... */
+
889 if (ctl->qnt_m >= 0 && ctl->bound_mass >= 0)
+
890 atm->q[ctl->qnt_m][ip] =
+
891 ctl->bound_mass + ctl->bound_mass_trend * atm->time[ip];
+
892 if (ctl->qnt_vmr >= 0 && ctl->bound_vmr >= 0)
+
893 atm->q[ctl->qnt_vmr][ip] =
+
894 ctl->bound_vmr + ctl->bound_vmr_trend * atm->time[ip];
+
895
+
896 /* Set CFC-10 tracer concentration... */
+
897 if (ctl->qnt_Cccl4 >= 0 && ctl->clim_ccl4_timeseries[0] != '-')
+
898 atm->q[ctl->qnt_Cccl4][ip] = clim_ts(&clim->ccl4, atm->time[ip]);
+
899
+
900 /* Set CFC-11 tracer concentration... */
+
901 if (ctl->qnt_Cccl3f >= 0 && ctl->clim_ccl3f_timeseries[0] != '-')
+
902 atm->q[ctl->qnt_Cccl3f][ip] = clim_ts(&clim->ccl3f, atm->time[ip]);
+
903
+
904 /* Set CFC-12 tracer concentration... */
+
905 if (ctl->qnt_Cccl2f2 >= 0 && ctl->clim_ccl2f2_timeseries[0] != '-')
+
906 atm->q[ctl->qnt_Cccl2f2][ip] = clim_ts(&clim->ccl2f2, atm->time[ip]);
+
907
+
908 /* Set N2O tracer concentration... */
+
909 if (ctl->qnt_Cn2o >= 0 && ctl->clim_n2o_timeseries[0] != '-')
+
910 atm->q[ctl->qnt_Cn2o][ip] = clim_ts(&clim->n2o, atm->time[ip]);
+
911
+
912 /* Set SF6 tracer concentration... */
+
913 if (ctl->qnt_Csf6 >= 0 && ctl->clim_sf6_timeseries[0] != '-')
+
914 atm->q[ctl->qnt_Csf6][ip] = clim_ts(&clim->sf6, atm->time[ip]);
+
915
+
916 /* Set age of air... */
+
917 if (ctl->qnt_aoa >= 0)
+
918 atm->q[ctl->qnt_aoa][ip] = atm->time[ip];
+
919 }
+
920}
+
double clim_ts(const clim_ts_t *ts, const double t)
Interpolate time series.
Definition: libtrac.c:346
+
#define INTPOL_3D(var, init)
3-D interpolation of a meteo variable.
Definition: libtrac.h:337
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define ZETA(ps, p, t)
Calculate zeta vertical coordinate.
Definition: libtrac.h:667
+
#define INTPOL_2D(var, init)
2-D interpolation of a meteo variable.
Definition: libtrac.h:331
+
clim_ts_t ccl2f2
CFC-12 time series.
Definition: libtrac.h:1820
+
clim_ts_t sf6
SF6 time series.
Definition: libtrac.h:1826
+
clim_ts_t ccl4
CFC-10 time series.
Definition: libtrac.h:1814
+
clim_ts_t ccl3f
CFC-11 time series.
Definition: libtrac.h:1817
+
clim_ts_t n2o
N2O time series.
Definition: libtrac.h:1823
+
int qnt_Cccl2f2
Quantity array index for CFC-12 concentration.
Definition: libtrac.h:1082
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
char clim_n2o_timeseries[LEN]
Filename of N2O time series.
Definition: libtrac.h:1333
+
double bound_dzs
Boundary conditions surface layer depth [km].
Definition: libtrac.h:1282
+
int qnt_Cccl4
Quantity array index for CFC-10 concentration.
Definition: libtrac.h:1076
+
double bound_mass
Boundary conditions mass per particle [kg].
Definition: libtrac.h:1255
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
double bound_lat1
Boundary conditions maximum longitude [deg].
Definition: libtrac.h:1270
+
int bound_pbl
Boundary conditions planetary boundary layer (0=no, 1=yes).
Definition: libtrac.h:1288
+
double bound_p1
Boundary conditions top pressure [hPa].
Definition: libtrac.h:1276
+
double bound_vmr
Boundary conditions volume mixing ratio [ppv].
Definition: libtrac.h:1261
+
double bound_lat0
Boundary conditions minimum longitude [deg].
Definition: libtrac.h:1267
+
double bound_vmr_trend
Boundary conditions volume mixing ratio trend [ppv/s].
Definition: libtrac.h:1264
+
int qnt_Cn2o
Quantity array index for N2O concentration.
Definition: libtrac.h:1085
+
int qnt_Cccl3f
Quantity array index for CFC-11 concentration.
Definition: libtrac.h:1079
+
int qnt_Csf6
Quantity array index for SF6 concentration.
Definition: libtrac.h:1088
+
double bound_dps
Boundary conditions surface layer depth [hPa].
Definition: libtrac.h:1279
+
double bound_mass_trend
Boundary conditions mass per particle trend [kg/s].
Definition: libtrac.h:1258
+
double bound_p0
Boundary conditions bottom pressure [hPa].
Definition: libtrac.h:1273
+
char clim_ccl4_timeseries[LEN]
Filename of CFC-10 time series.
Definition: libtrac.h:1324
+
char clim_sf6_timeseries[LEN]
Filename of SF6 time series.
Definition: libtrac.h:1336
+
char clim_ccl3f_timeseries[LEN]
Filename of CFC-11 time series.
Definition: libtrac.h:1327
+
char clim_ccl2f2_timeseries[LEN]
Filename of CFC-12 time series.
Definition: libtrac.h:1330
+
double bound_zetas
Boundary conditions surface layer zeta [K].
Definition: libtrac.h:1285
+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+ +

◆ module_convection()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_convection (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt,
double * rs 
)
+
+ +

Calculate convection of air parcels.

+ +

Definition at line 924 of file trac.c.

+
930 {
+
931
+
932 /* Set timer... */
+
933 SELECT_TIMER("MODULE_CONVECTION", "PHYSICS", NVTX_GPU);
+
934
+
935 /* Create random numbers... */
+
936 module_rng(rs, (size_t) atm->np, 0);
+
937
+
938 /* Loop over particles... */
+
939 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt,rs)") {
+
940
+
941 /* Interpolate CAPE... */
+
942 double cape;
+ +
944 INTPOL_2D(cape, 1);
+
945
+
946 /* Check threshold... */
+
947 if (isfinite(cape) && cape >= ctl->conv_cape) {
+
948
+
949 /* Check CIN... */
+
950 if (ctl->conv_cin > 0) {
+
951 double cin;
+
952 INTPOL_2D(cin, 0);
+
953 if (isfinite(cin) && cin >= ctl->conv_cin)
+
954 continue;
+
955 }
+
956
+
957 /* Interpolate equilibrium level... */
+
958 double pel;
+
959 INTPOL_2D(pel, 0);
+
960
+
961 /* Check whether particle is above cloud top... */
+
962 if (!isfinite(pel) || atm->p[ip] < pel)
+
963 continue;
+
964
+
965 /* Set pressure range for vertical mixing... */
+
966 double pbot = atm->p[ip];
+
967 double ptop = atm->p[ip];
+
968 if (ctl->conv_mix_bot == 1) {
+
969 double ps;
+
970 INTPOL_2D(ps, 0);
+
971 pbot = ps;
+
972 }
+
973 if (ctl->conv_mix_top == 1)
+
974 ptop = pel;
+
975
+
976 /* Vertical mixing based on pressure... */
+
977 if (ctl->conv_mix == 0)
+
978 atm->p[ip] = pbot + (ptop - pbot) * rs[ip];
+
979
+
980 /* Vertical mixing based on density... */
+
981 else if (ctl->conv_mix == 1) {
+
982
+
983 /* Get density range... */
+
984 double tbot, ttop;
+
985 intpol_met_time_3d(met0, met0->t, met1, met1->t, atm->time[ip],
+
986 pbot, atm->lon[ip], atm->lat[ip], &tbot,
+
987 ci, cw, 1);
+
988 intpol_met_time_3d(met0, met0->t, met1, met1->t, atm->time[ip],
+
989 ptop, atm->lon[ip], atm->lat[ip], &ttop,
+
990 ci, cw, 1);
+
991 double rhobot = pbot / tbot;
+
992 double rhotop = ptop / ttop;
+
993
+
994 /* Get new density... */
+
995 double lrho = log(rhobot + (rhotop - rhobot) * rs[ip]);
+
996
+
997 /* Find pressure... */
+
998 double lrhobot = log(rhobot);
+
999 double lrhotop = log(rhotop);
+
1000 double lpbot = log(pbot);
+
1001 double lptop = log(ptop);
+
1002 atm->p[ip] = exp(LIN(lrhobot, lpbot, lrhotop, lptop, lrho));
+
1003 }
+
1004 }
+
1005 }
+
1006}
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
int conv_mix_bot
Lower level for mixing (0=particle pressure, 1=surface).
Definition: libtrac.h:1249
+
int conv_mix_top
Upper level for mixing (0=particle pressure, 1=EL).
Definition: libtrac.h:1252
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
int conv_mix
Type of vertical mixing (0=pressure, 1=density).
Definition: libtrac.h:1246
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
void module_rng(double *rs, size_t n, int method)
Generate random numbers.
Definition: trac.c:2144
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ module_decay()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_decay (ctl_tctl,
clim_tclim,
atm_tatm,
double * dt 
)
+
+ +

Calculate exponential decay of particle mass.

+ +

Definition at line 1010 of file trac.c.

+
1014 {
+
1015
+
1016 /* Set timer... */
+
1017 SELECT_TIMER("MODULE_DECAY", "PHYSICS", NVTX_GPU);
+
1018
+
1019 /* Check quantity flags... */
+
1020 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1021 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1022
+
1023 /* Loop over particles... */
+
1024 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,atm,dt)") {
+
1025
+
1026 /* Get weighting factor... */
+
1027 double w = tropo_weight(clim, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
1028
+
1029 /* Set lifetime... */
+
1030 double tdec = w * ctl->tdec_trop + (1 - w) * ctl->tdec_strat;
+
1031
+
1032 /* Calculate exponential decay... */
+
1033 double aux = exp(-dt[ip] / tdec);
+
1034 if (ctl->qnt_m >= 0) {
+
1035 if (ctl->qnt_mloss_decay >= 0)
+
1036 atm->q[ctl->qnt_mloss_decay][ip]
+
1037 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1038 atm->q[ctl->qnt_m][ip] *= aux;
+
1039 }
+
1040 if (ctl->qnt_vmr >= 0)
+
1041 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1042 }
+
1043}
+
double tropo_weight(const clim_t *clim, const double t, const double lat, const double p)
Get weighting factor based on tropopause distance.
Definition: libtrac.c:5583
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
int qnt_mloss_decay
Quantity array index for total mass loss due to exponential decay.
Definition: libtrac.h:989
+
double tdec_strat
Life time of particles in the stratosphere [s].
Definition: libtrac.h:1300
+
double tdec_trop
Life time of particles in the troposphere [s].
Definition: libtrac.h:1297
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ module_diffusion_meso()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_diffusion_meso (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
cache_tcache,
double * dt,
double * rs 
)
+
+ +

Calculate mesoscale diffusion.

+ +

Definition at line 1047 of file trac.c.

+
1054 {
+
1055
+
1056 /* Set timer... */
+
1057 SELECT_TIMER("MODULE_TURBMESO", "PHYSICS", NVTX_GPU);
+
1058
+
1059 /* Create random numbers... */
+
1060 module_rng(rs, 3 * (size_t) atm->np, 1);
+
1061
+
1062 /* Loop over particles... */
+
1063 PARTICLE_LOOP(0, atm->np, 1,
+
1064 "acc data present(ctl,met0,met1,atm,cache,dt,rs)") {
+
1065
+
1066 /* Get indices... */
+
1067 int ix = locate_reg(met0->lon, met0->nx, atm->lon[ip]);
+
1068 int iy = locate_reg(met0->lat, met0->ny, atm->lat[ip]);
+
1069 int iz = locate_irr(met0->p, met0->np, atm->p[ip]);
+
1070
+
1071 /* Get standard deviations of local wind data... */
+
1072 float umean = 0, usig = 0, vmean = 0, vsig = 0, wmean = 0, wsig = 0;
+
1073 for (int i = 0; i < 2; i++)
+
1074 for (int j = 0; j < 2; j++)
+
1075 for (int k = 0; k < 2; k++) {
+
1076#ifdef UVW
+
1077 umean += met0->uvw[ix + i][iy + j][iz + k][0];
+
1078 usig += SQR(met0->uvw[ix + i][iy + j][iz + k][0]);
+
1079 vmean += met0->uvw[ix + i][iy + j][iz + k][1];
+
1080 vsig += SQR(met0->uvw[ix + i][iy + j][iz + k][1]);
+
1081 wmean += met0->uvw[ix + i][iy + j][iz + k][2];
+
1082 wsig += SQR(met0->uvw[ix + i][iy + j][iz + k][2]);
+
1083
+
1084 umean += met1->uvw[ix + i][iy + j][iz + k][0];
+
1085 usig += SQR(met1->uvw[ix + i][iy + j][iz + k][0]);
+
1086 vmean += met1->uvw[ix + i][iy + j][iz + k][1];
+
1087 vsig += SQR(met1->uvw[ix + i][iy + j][iz + k][1]);
+
1088 wmean += met1->uvw[ix + i][iy + j][iz + k][2];
+
1089 wsig += SQR(met1->uvw[ix + i][iy + j][iz + k][2]);
+
1090#else
+
1091 umean += met0->u[ix + i][iy + j][iz + k];
+
1092 usig += SQR(met0->u[ix + i][iy + j][iz + k]);
+
1093 vmean += met0->v[ix + i][iy + j][iz + k];
+
1094 vsig += SQR(met0->v[ix + i][iy + j][iz + k]);
+
1095 wmean += met0->w[ix + i][iy + j][iz + k];
+
1096 wsig += SQR(met0->w[ix + i][iy + j][iz + k]);
+
1097
+
1098 umean += met1->u[ix + i][iy + j][iz + k];
+
1099 usig += SQR(met1->u[ix + i][iy + j][iz + k]);
+
1100 vmean += met1->v[ix + i][iy + j][iz + k];
+
1101 vsig += SQR(met1->v[ix + i][iy + j][iz + k]);
+
1102 wmean += met1->w[ix + i][iy + j][iz + k];
+
1103 wsig += SQR(met1->w[ix + i][iy + j][iz + k]);
+
1104#endif
+
1105 }
+
1106 usig = usig / 16.f - SQR(umean / 16.f);
+
1107 usig = (usig > 0 ? sqrtf(usig) : 0);
+
1108 vsig = vsig / 16.f - SQR(vmean / 16.f);
+
1109 vsig = (vsig > 0 ? sqrtf(vsig) : 0);
+
1110 wsig = wsig / 16.f - SQR(wmean / 16.f);
+
1111 wsig = (wsig > 0 ? sqrtf(wsig) : 0);
+
1112
+
1113 /* Set temporal correlations for mesoscale fluctuations... */
+
1114 double r = 1 - 2 * fabs(dt[ip]) / ctl->dt_met;
+
1115 double r2 = sqrt(1 - r * r);
+
1116
+
1117 /* Calculate horizontal mesoscale wind fluctuations... */
+
1118 if (ctl->turb_mesox > 0) {
+
1119 cache->uvwp[ip][0] =
+
1120 (float) (r * cache->uvwp[ip][0] +
+
1121 r2 * rs[3 * ip] * ctl->turb_mesox * usig);
+
1122 atm->lon[ip] +=
+
1123 DX2DEG(cache->uvwp[ip][0] * dt[ip] / 1000., atm->lat[ip]);
+
1124
+
1125 cache->uvwp[ip][1] =
+
1126 (float) (r * cache->uvwp[ip][1] +
+
1127 r2 * rs[3 * ip + 1] * ctl->turb_mesox * vsig);
+
1128 atm->lat[ip] += DY2DEG(cache->uvwp[ip][1] * dt[ip] / 1000.);
+
1129 }
+
1130
+
1131 /* Calculate vertical mesoscale wind fluctuations... */
+
1132 if (ctl->turb_mesoz > 0) {
+
1133 cache->uvwp[ip][2] =
+
1134 (float) (r * cache->uvwp[ip][2] +
+
1135 r2 * rs[3 * ip + 2] * ctl->turb_mesoz * wsig);
+
1136 atm->p[ip] += cache->uvwp[ip][2] * dt[ip];
+
1137 }
+
1138 }
+
1139}
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
float uvwp[NP][3]
Wind perturbations [m/s].
Definition: libtrac.h:1698
+
double turb_mesoz
Vertical scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1234
+
double dt_met
Time step of meteo data [s].
Definition: libtrac.h:1109
+
double turb_mesox
Horizontal scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1231
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ module_diffusion_turb()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_diffusion_turb (ctl_tctl,
clim_tclim,
atm_tatm,
double * dt,
double * rs 
)
+
+ +

Calculate turbulent diffusion.

+ +

Definition at line 1143 of file trac.c.

+
1148 {
+
1149
+
1150 /* Set timer... */
+
1151 SELECT_TIMER("MODULE_TURBDIFF", "PHYSICS", NVTX_GPU);
+
1152
+
1153 /* Create random numbers... */
+
1154 module_rng(rs, 3 * (size_t) atm->np, 1);
+
1155
+
1156 /* Loop over particles... */
+
1157 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,atm,dt,rs)") {
+
1158
+
1159 /* Get weighting factor... */
+
1160 double w = tropo_weight(clim, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
1161
+
1162 /* Set diffusivity... */
+
1163 double dx = w * ctl->turb_dx_trop + (1 - w) * ctl->turb_dx_strat;
+
1164 double dz = w * ctl->turb_dz_trop + (1 - w) * ctl->turb_dz_strat;
+
1165
+
1166 /* Horizontal turbulent diffusion... */
+
1167 if (dx > 0) {
+
1168 double sigma = sqrt(2.0 * dx * fabs(dt[ip]));
+
1169 atm->lon[ip] += DX2DEG(rs[3 * ip] * sigma / 1000., atm->lat[ip]);
+
1170 atm->lat[ip] += DY2DEG(rs[3 * ip + 1] * sigma / 1000.);
+
1171 }
+
1172
+
1173 /* Vertical turbulent diffusion... */
+
1174 if (dz > 0) {
+
1175 double sigma = sqrt(2.0 * dz * fabs(dt[ip]));
+
1176 atm->p[ip] += DZ2DP(rs[3 * ip + 2] * sigma / 1000., atm->p[ip]);
+
1177 }
+
1178 }
+
1179}
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
double turb_dz_trop
Vertical turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1225
+
double turb_dx_strat
Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1222
+
double turb_dx_trop
Horizontal turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1219
+
double turb_dz_strat
Vertical turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1228
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ module_dry_deposition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_dry_deposition (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate dry deposition.

+ +

Definition at line 1183 of file trac.c.

+
1188 {
+
1189
+
1190 /* Set timer... */
+
1191 SELECT_TIMER("MODULE_DRYDEPO", "PHYSICS", NVTX_GPU);
+
1192
+
1193 /* Check quantity flags... */
+
1194 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1195 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1196
+
1197 /* Loop over particles... */
+
1198 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
1199
+
1200 /* Get surface pressure... */
+
1201 double ps;
+ +
1203 INTPOL_2D(ps, 1);
+
1204
+
1205 /* Check whether particle is above the surface layer... */
+
1206 if (atm->p[ip] < ps - ctl->dry_depo_dp)
+
1207 continue;
+
1208
+
1209 /* Set depth of surface layer... */
+
1210 double dz = 1000. * (Z(ps - ctl->dry_depo_dp) - Z(ps));
+
1211
+
1212 /* Calculate sedimentation velocity for particles... */
+
1213 double v_dep;
+
1214 if (ctl->qnt_rp > 0 && ctl->qnt_rhop > 0) {
+
1215
+
1216 /* Get temperature... */
+
1217 double t;
+
1218 INTPOL_3D(t, 1);
+
1219
+
1220 /* Set deposition velocity... */
+
1221 v_dep = sedi(atm->p[ip], t, atm->q[ctl->qnt_rp][ip],
+
1222 atm->q[ctl->qnt_rhop][ip]);
+
1223 }
+
1224
+
1225 /* Use explicit sedimentation velocity for gases... */
+
1226 else
+
1227 v_dep = ctl->dry_depo_vdep;
+
1228
+
1229 /* Calculate loss of mass based on deposition velocity... */
+
1230 double aux = exp(-dt[ip] * v_dep / dz);
+
1231 if (ctl->qnt_m >= 0) {
+
1232 if (ctl->qnt_mloss_dry >= 0)
+
1233 atm->q[ctl->qnt_mloss_dry][ip]
+
1234 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1235 atm->q[ctl->qnt_m][ip] *= aux;
+
1236 }
+
1237 if (ctl->qnt_vmr >= 0)
+
1238 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1239 }
+
1240}
+
double sedi(const double p, const double T, const double rp, const double rhop)
Calculate sedimentation velocity.
Definition: libtrac.c:5305
+
int qnt_rhop
Quantity array index for particle density.
Definition: libtrac.h:860
+
int qnt_rp
Quantity array index for particle radius.
Definition: libtrac.h:857
+
double dry_depo_dp
Dry deposition surface layer [hPa].
Definition: libtrac.h:1447
+
int qnt_mloss_dry
Quantity array index for total mass loss due to dry deposition.
Definition: libtrac.h:986
+
double dry_depo_vdep
Dry deposition velocity [m/s].
Definition: libtrac.h:1450
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ module_isosurf_init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_isosurf_init (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
cache_tcache 
)
+
+ +

Initialize isosurface module.

+ +

Definition at line 1244 of file trac.c.

+
1249 {
+
1250
+
1251 FILE *in;
+
1252
+
1253 char line[LEN];
+
1254
+
1255 double t;
+
1256
+
1257 /* Set timer... */
+
1258 SELECT_TIMER("MODULE_ISOSURF", "PHYSICS", NVTX_GPU);
+
1259
+
1260 /* Init... */
+ +
1262
+
1263 /* Save pressure... */
+
1264 if (ctl->isosurf == 1)
+
1265 for (int ip = 0; ip < atm->np; ip++)
+
1266 cache->iso_var[ip] = atm->p[ip];
+
1267
+
1268 /* Save density... */
+
1269 else if (ctl->isosurf == 2)
+
1270 for (int ip = 0; ip < atm->np; ip++) {
+
1271 INTPOL_3D(t, 1);
+
1272 cache->iso_var[ip] = atm->p[ip] / t;
+
1273 }
+
1274
+
1275 /* Save potential temperature... */
+
1276 else if (ctl->isosurf == 3)
+
1277 for (int ip = 0; ip < atm->np; ip++) {
+
1278 INTPOL_3D(t, 1);
+
1279 cache->iso_var[ip] = THETA(atm->p[ip], t);
+
1280 }
+
1281
+
1282 /* Read balloon pressure data... */
+
1283 else if (ctl->isosurf == 4) {
+
1284
+
1285 /* Write info... */
+
1286 LOG(1, "Read balloon pressure data: %s", ctl->balloon);
+
1287
+
1288 /* Open file... */
+
1289 if (!(in = fopen(ctl->balloon, "r")))
+
1290 ERRMSG("Cannot open file!");
+
1291
+
1292 /* Read pressure time series... */
+
1293 while (fgets(line, LEN, in))
+
1294 if (sscanf(line, "%lg %lg", &(cache->iso_ts[cache->iso_n]),
+
1295 &(cache->iso_ps[cache->iso_n])) == 2)
+
1296 if ((++cache->iso_n) > NP)
+
1297 ERRMSG("Too many data points!");
+
1298
+
1299 /* Check number of points... */
+
1300 if (cache->iso_n < 1)
+
1301 ERRMSG("Could not read any data!");
+
1302
+
1303 /* Close file... */
+
1304 fclose(in);
+
1305 }
+
1306}
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define THETA(p, t)
Compute potential temperature.
Definition: libtrac.h:639
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
double iso_ts[NP]
Isosurface balloon time [s].
Definition: libtrac.h:1692
+
int iso_n
Isosurface balloon number of data points.
Definition: libtrac.h:1695
+
double iso_ps[NP]
Isosurface balloon pressure [hPa].
Definition: libtrac.h:1689
+
double iso_var[NP]
Isosurface variables.
Definition: libtrac.h:1686
+
char balloon[LEN]
Balloon position filename.
Definition: libtrac.h:1210
+
int isosurf
Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon).
Definition: libtrac.h:1207
+
+
+
+ +

◆ module_isosurf()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_isosurf (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
cache_tcache,
double * dt 
)
+
+ +

Force air parcels to stay on isosurface.

+ +

Definition at line 1310 of file trac.c.

+
1316 {
+
1317
+
1318 /* Set timer... */
+
1319 SELECT_TIMER("MODULE_ISOSURF", "PHYSICS", NVTX_GPU);
+
1320
+
1321 /* Loop over particles... */
+
1322 PARTICLE_LOOP(0, atm->np, 0, "acc data present(ctl,met0,met1,atm,cache,dt)") {
+
1323
+
1324 /* Init... */
+
1325 double t;
+ +
1327
+
1328 /* Restore pressure... */
+
1329 if (ctl->isosurf == 1)
+
1330 atm->p[ip] = cache->iso_var[ip];
+
1331
+
1332 /* Restore density... */
+
1333 else if (ctl->isosurf == 2) {
+
1334 INTPOL_3D(t, 1);
+
1335 atm->p[ip] = cache->iso_var[ip] * t;
+
1336 }
+
1337
+
1338 /* Restore potential temperature... */
+
1339 else if (ctl->isosurf == 3) {
+
1340 INTPOL_3D(t, 1);
+
1341 atm->p[ip] = 1000. * pow(cache->iso_var[ip] / t, -1. / 0.286);
+
1342 }
+
1343
+
1344 /* Interpolate pressure... */
+
1345 else if (ctl->isosurf == 4) {
+
1346 if (atm->time[ip] <= cache->iso_ts[0])
+
1347 atm->p[ip] = cache->iso_ps[0];
+
1348 else if (atm->time[ip] >= cache->iso_ts[cache->iso_n - 1])
+
1349 atm->p[ip] = cache->iso_ps[cache->iso_n - 1];
+
1350 else {
+
1351 int idx = locate_irr(cache->iso_ts, cache->iso_n, atm->time[ip]);
+
1352 atm->p[ip] = LIN(cache->iso_ts[idx], cache->iso_ps[idx],
+
1353 cache->iso_ts[idx + 1], cache->iso_ps[idx + 1],
+
1354 atm->time[ip]);
+
1355 }
+
1356 }
+
1357 }
+
1358}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ module_meteo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_meteo (ctl_tctl,
clim_tclim,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Interpolate meteo data for air parcel positions.

+ +

Definition at line 1362 of file trac.c.

+
1368 {
+
1369
+
1370 /* Set timer... */
+
1371 SELECT_TIMER("MODULE_METEO", "PHYSICS", NVTX_GPU);
+
1372
+
1373 /* Check quantity flags... */
+
1374 if (ctl->qnt_tsts >= 0)
+
1375 if (ctl->qnt_tice < 0 || ctl->qnt_tnat < 0)
+
1376 ERRMSG("Need T_ice and T_NAT to calculate T_STS!");
+
1377
+
1378 /* Loop over particles... */
+
1379 PARTICLE_LOOP(0, atm->np, 0, "acc data present(ctl,clim,met0,met1,atm,dt)") {
+
1380
+
1381 double ps, ts, zs, us, vs, lsm, sst, pbl, pt, pct, pcb, cl, plcl, plfc,
+
1382 pel, cape, cin, o3c, pv, t, tt, u, v, w, h2o, h2ot, o3,
+
1383 lwc, iwc, cc, z, zt;
+
1384
+
1385 /* Interpolate meteo data... */
+ +
1387 INTPOL_TIME_ALL(atm->time[ip], atm->p[ip], atm->lon[ip], atm->lat[ip]);
+
1388
+
1389 /* Set quantities... */
+
1390 SET_ATM(qnt_ps, ps);
+
1391 SET_ATM(qnt_ts, ts);
+
1392 SET_ATM(qnt_zs, zs);
+
1393 SET_ATM(qnt_us, us);
+
1394 SET_ATM(qnt_vs, vs);
+
1395 SET_ATM(qnt_lsm, lsm);
+
1396 SET_ATM(qnt_sst, sst);
+
1397 SET_ATM(qnt_pbl, pbl);
+
1398 SET_ATM(qnt_pt, pt);
+
1399 SET_ATM(qnt_tt, tt);
+
1400 SET_ATM(qnt_zt, zt);
+
1401 SET_ATM(qnt_h2ot, h2ot);
+
1402 SET_ATM(qnt_zg, z);
+
1403 SET_ATM(qnt_p, atm->p[ip]);
+
1404 SET_ATM(qnt_t, t);
+
1405 SET_ATM(qnt_rho, RHO(atm->p[ip], t));
+
1406 SET_ATM(qnt_u, u);
+
1407 SET_ATM(qnt_v, v);
+
1408 SET_ATM(qnt_w, w);
+
1409 SET_ATM(qnt_h2o, h2o);
+
1410 SET_ATM(qnt_o3, o3);
+
1411 SET_ATM(qnt_lwc, lwc);
+
1412 SET_ATM(qnt_iwc, iwc);
+
1413 SET_ATM(qnt_cc, cc);
+
1414 SET_ATM(qnt_pct, pct);
+
1415 SET_ATM(qnt_pcb, pcb);
+
1416 SET_ATM(qnt_cl, cl);
+
1417 SET_ATM(qnt_plcl, plcl);
+
1418 SET_ATM(qnt_plfc, plfc);
+
1419 SET_ATM(qnt_pel, pel);
+
1420 SET_ATM(qnt_cape, cape);
+
1421 SET_ATM(qnt_cin, cin);
+
1422 SET_ATM(qnt_o3c, o3c);
+
1423 SET_ATM(qnt_hno3,
+
1424 clim_zm(&clim->hno3, atm->time[ip], atm->lat[ip], atm->p[ip]));
+
1425 SET_ATM(qnt_oh, clim_oh(ctl, clim, atm->time[ip],
+
1426 atm->lon[ip], atm->lat[ip], atm->p[ip]));
+
1427 SET_ATM(qnt_h2o2, clim_zm(&clim->h2o2, atm->time[ip],
+
1428 atm->lat[ip], atm->p[ip]));
+
1429 SET_ATM(qnt_ho2, clim_zm(&clim->ho2, atm->time[ip],
+
1430 atm->lat[ip], atm->p[ip]));
+
1431 SET_ATM(qnt_o1d, clim_zm(&clim->o1d, atm->time[ip],
+
1432 atm->lat[ip], atm->p[ip]));
+
1433 SET_ATM(qnt_vh, sqrt(u * u + v * v));
+
1434 SET_ATM(qnt_vz, -1e3 * H0 / atm->p[ip] * w);
+
1435 SET_ATM(qnt_psat, PSAT(t));
+
1436 SET_ATM(qnt_psice, PSICE(t));
+
1437 SET_ATM(qnt_pw, PW(atm->p[ip], h2o));
+
1438 SET_ATM(qnt_sh, SH(h2o));
+
1439 SET_ATM(qnt_rh, RH(atm->p[ip], t, h2o));
+
1440 SET_ATM(qnt_rhice, RHICE(atm->p[ip], t, h2o));
+
1441 SET_ATM(qnt_theta, THETA(atm->p[ip], t));
+
1442 SET_ATM(qnt_zeta, atm->q[ctl->qnt_zeta][ip]);
+
1443 SET_ATM(qnt_zeta_d, ZETA(ps, atm->p[ip], t));
+
1444 SET_ATM(qnt_tvirt, TVIRT(t, h2o));
+
1445 SET_ATM(qnt_lapse, lapse_rate(t, h2o));
+
1446 SET_ATM(qnt_pv, pv);
+
1447 SET_ATM(qnt_tdew, TDEW(atm->p[ip], h2o));
+
1448 SET_ATM(qnt_tice, TICE(atm->p[ip], h2o));
+
1449 SET_ATM(qnt_tnat,
+
1450 nat_temperature(atm->p[ip], h2o,
+
1451 clim_zm(&clim->hno3, atm->time[ip],
+
1452 atm->lat[ip], atm->p[ip])));
+
1453 SET_ATM(qnt_tsts,
+
1454 0.5 * (atm->q[ctl->qnt_tice][ip] + atm->q[ctl->qnt_tnat][ip]));
+
1455 }
+
1456}
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
double lapse_rate(const double t, const double h2o)
Calculate moist adiabatic lapse rate.
Definition: libtrac.c:1541
+
#define TVIRT(t, h2o)
Compute virtual temperature.
Definition: libtrac.h:654
+
#define PW(p, h2o)
Calculate partial water vapor pressure.
Definition: libtrac.h:583
+
#define H0
Scale height [km].
Definition: libtrac.h:103
+
#define SH(h2o)
Compute specific humidity from water vapor volume mixing ratio.
Definition: libtrac.h:617
+
#define PSICE(t)
Compute saturation pressure over ice (WMO, 2018).
Definition: libtrac.h:579
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define INTPOL_TIME_ALL(time, p, lon, lat)
Temporal interpolation of all meteo data.
Definition: libtrac.h:380
+
#define SET_ATM(qnt, val)
Set atmospheric quantity value.
Definition: libtrac.h:604
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
#define PSAT(t)
Compute saturation pressure over water (WMO, 2018).
Definition: libtrac.h:575
+
#define RHO(p, t)
Compute density of air.
Definition: libtrac.h:596
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
int qnt_tnat
Quantity array index for T_NAT.
Definition: libtrac.h:1043
+
int qnt_tice
Quantity array index for T_ice.
Definition: libtrac.h:1037
+
int qnt_tsts
Quantity array index for T_STS.
Definition: libtrac.h:1040
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + +
+ +
+
+ +

◆ module_mixing()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_mixing (ctl_tctl,
clim_tclim,
atm_tatm,
double t 
)
+
+ +

Apply interparcel mixing.

+ +

Definition at line 1895 of file trac.c.

+
1899 {
+
1900
+
1901 int *ixs, *iys, *izs;
+
1902
+
1903 /* Update host... */
+
1904#ifdef _OPENACC
+
1905 SELECT_TIMER("UPDATE_HOST", "MEMORY", NVTX_D2H);
+
1906#pragma acc update host(atm[:1])
+
1907#endif
+
1908
+
1909 /* Set timer... */
+
1910 SELECT_TIMER("MODULE_MIXING", "PHYSICS", NVTX_GPU);
+
1911
+
1912 /* Allocate... */
+
1913 ALLOC(ixs, int,
+
1914 atm->np);
+
1915 ALLOC(iys, int,
+
1916 atm->np);
+
1917 ALLOC(izs, int,
+
1918 atm->np);
+
1919
+
1920 /* Set grid box size... */
+
1921 double dz = (ctl->mixing_z1 - ctl->mixing_z0) / ctl->mixing_nz;
+
1922 double dlon = (ctl->mixing_lon1 - ctl->mixing_lon0) / ctl->mixing_nx;
+
1923 double dlat = (ctl->mixing_lat1 - ctl->mixing_lat0) / ctl->mixing_ny;
+
1924
+
1925 /* Set time interval... */
+
1926 double t0 = t - 0.5 * ctl->dt_mod;
+
1927 double t1 = t + 0.5 * ctl->dt_mod;
+
1928
+
1929 /* Get indices... */
+
1930#pragma omp parallel for default(shared)
+
1931 for (int ip = 0; ip < atm->np; ip++) {
+
1932 ixs[ip] = (int) ((atm->lon[ip] - ctl->mixing_lon0) / dlon);
+
1933 iys[ip] = (int) ((atm->lat[ip] - ctl->mixing_lat0) / dlat);
+
1934 izs[ip] = (int) ((Z(atm->p[ip]) - ctl->mixing_z0) / dz);
+
1935 if (atm->time[ip] < t0 || atm->time[ip] > t1
+
1936 || ixs[ip] < 0 || ixs[ip] >= ctl->mixing_nx
+
1937 || iys[ip] < 0 || iys[ip] >= ctl->mixing_ny
+
1938 || izs[ip] < 0 || izs[ip] >= ctl->mixing_nz)
+
1939 izs[ip] = -1;
+
1940 }
+
1941
+
1942 /* Calculate interparcel mixing... */
+
1943 if (ctl->qnt_m >= 0)
+
1944 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_m);
+
1945 if (ctl->qnt_vmr >= 0)
+
1946 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_vmr);
+
1947 if (ctl->qnt_Cx >= 0)
+
1948 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cx);
+
1949 if (ctl->qnt_Ch2o >= 0)
+
1950 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Ch2o);
+
1951 if (ctl->qnt_Co3 >= 0)
+
1952 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Co3);
+
1953 if (ctl->qnt_Cco >= 0)
+
1954 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cco);
+
1955 if (ctl->qnt_Coh >= 0)
+
1956 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Coh);
+
1957 if (ctl->qnt_Ch >= 0)
+
1958 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Ch);
+
1959 if (ctl->qnt_Cho2 >= 0)
+
1960 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cho2);
+
1961 if (ctl->qnt_Ch2o2 >= 0)
+
1962 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Ch2o2);
+
1963 if (ctl->qnt_Co1d >= 0)
+
1964 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Co1d);
+
1965 if (ctl->qnt_Co3p >= 0)
+
1966 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Co3p);
+
1967 if (ctl->qnt_Cccl4 >= 0)
+
1968 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cccl4);
+
1969 if (ctl->qnt_Cccl3f >= 0)
+
1970 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cccl3f);
+
1971 if (ctl->qnt_Cccl2f2 >= 0)
+
1972 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cccl2f2);
+
1973 if (ctl->qnt_Cn2o >= 0)
+
1974 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cn2o);
+
1975 if (ctl->qnt_Csf6 >= 0)
+
1976 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Csf6);
+
1977 if (ctl->qnt_aoa >= 0)
+
1978 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_aoa);
+
1979
+
1980 /* Free... */
+
1981 free(ixs);
+
1982 free(iys);
+
1983 free(izs);
+
1984
+
1985 /* Update device... */
+
1986#ifdef _OPENACC
+
1987 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
1988#pragma acc update device(atm[:1])
+
1989#endif
+
1990}
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
int qnt_Coh
Quantity array index for OH concentration.
Definition: libtrac.h:1058
+
int mixing_nx
Number of longitudes of mixing grid.
Definition: libtrac.h:1357
+
double mixing_z1
Upper altitude of mixing grid [km].
Definition: libtrac.h:1354
+
int qnt_Co1d
Quantity array index for O(1D) concentration.
Definition: libtrac.h:1070
+
double mixing_z0
Lower altitude of mixing grid [km].
Definition: libtrac.h:1351
+
int qnt_Cco
Quantity array index for CO concentration.
Definition: libtrac.h:1055
+
int mixing_ny
Number of latitudes of mixing grid.
Definition: libtrac.h:1366
+
double dt_mod
Time step of simulation [s].
Definition: libtrac.h:1103
+
int qnt_Ch
Quantity array index for H concentration.
Definition: libtrac.h:1061
+
double mixing_lat0
Lower latitude of mixing grid [deg].
Definition: libtrac.h:1369
+
int qnt_Cho2
Quantity array index for HO2 concentration.
Definition: libtrac.h:1064
+
int qnt_Ch2o
Quantity array index for H2O concentration.
Definition: libtrac.h:1049
+
int mixing_nz
Number of altitudes of mixing grid.
Definition: libtrac.h:1348
+
double mixing_lon0
Lower longitude of mixing grid [deg].
Definition: libtrac.h:1360
+
int qnt_Co3
Quantity array index for O3 concentration.
Definition: libtrac.h:1052
+
double mixing_lat1
Upper latitude of mixing grid [deg].
Definition: libtrac.h:1372
+
int qnt_Co3p
Quantity array index for O(3P) concentration.
Definition: libtrac.h:1073
+
int qnt_Ch2o2
Quantity array index for H2O2 concentration.
Definition: libtrac.h:1067
+
double mixing_lon1
Upper longitude of mixing grid [deg].
Definition: libtrac.h:1363
+
int qnt_Cx
Quantity array index for trace species x concentration.
Definition: libtrac.h:1046
+
void module_mixing_help(ctl_t *ctl, clim_t *clim, atm_t *atm, int *ixs, int *iys, int *izs, int qnt_idx)
Auxiliary function for interparcel mixing.
Definition: trac.c:1994
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ module_mixing_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_mixing_help (ctl_tctl,
clim_tclim,
atm_tatm,
int * ixs,
int * iys,
int * izs,
int qnt_idx 
)
+
+ +

Auxiliary function for interparcel mixing.

+ +

Definition at line 1994 of file trac.c.

+
2001 {
+
2002
+
2003 double *cmean;
+
2004
+
2005 int *count;
+
2006
+
2007 /* Allocate... */
+
2008 ALLOC(cmean, double,
+
2009 ctl->mixing_nx * ctl->mixing_ny * ctl->mixing_nz);
+
2010 ALLOC(count, int,
+
2011 ctl->mixing_nx * ctl->mixing_ny * ctl->mixing_nz);
+
2012
+
2013 /* Loop over particles... */
+
2014 for (int ip = 0; ip < atm->np; ip++)
+
2015 if (izs[ip] >= 0) {
+
2016 int idx = ARRAY_3D
+
2017 (ixs[ip], iys[ip], ctl->mixing_ny, izs[ip], ctl->mixing_nz);
+
2018 cmean[idx] += atm->q[qnt_idx][ip];
+
2019 count[idx]++;
+
2020 }
+
2021#pragma omp parallel for
+
2022 for (int i = 0; i < ctl->mixing_nx * ctl->mixing_ny * ctl->mixing_nz; i++)
+
2023 if (count[i] > 0)
+
2024 cmean[i] /= count[i];
+
2025
+
2026 /* Calculate interparcel mixing... */
+
2027#pragma omp parallel for
+
2028 for (int ip = 0; ip < atm->np; ip++)
+
2029 if (izs[ip] >= 0) {
+
2030
+
2031 /* Set mixing parameter... */
+
2032 double mixparam = 1.0;
+
2033 if (ctl->mixing_trop < 1 || ctl->mixing_strat < 1) {
+
2034 double w =
+
2035 tropo_weight(clim, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
2036 mixparam = w * ctl->mixing_trop + (1 - w) * ctl->mixing_strat;
+
2037 }
+
2038
+
2039 /* Adjust quantity... */
+
2040 atm->q[qnt_idx][ip] +=
+
2041 (cmean
+
2042 [ARRAY_3D(ixs[ip], iys[ip], ctl->mixing_ny, izs[ip], ctl->mixing_nz)]
+
2043 - atm->q[qnt_idx][ip]) * mixparam;
+
2044 }
+
2045
+
2046 /* Free... */
+
2047 free(cmean);
+
2048 free(count);
+
2049}
+
#define ARRAY_3D(ix, iy, ny, iz, nz)
Get 3-D array index.
Definition: libtrac.h:262
+
double mixing_trop
Interparcel exchange parameter for mixing in the troposphere.
Definition: libtrac.h:1342
+
double mixing_strat
Interparcel exchange parameter for mixing in the stratosphere.
Definition: libtrac.h:1345
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+ +

◆ module_chemgrid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_chemgrid (ctl_tctl,
clim_tclim,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Calculate grid data for chemistry modules.

+ +

Definition at line 1460 of file trac.c.

+
1466 {
+
1467
+
1468 double *z, *press;
+
1469
+
1470 int *ixs, *iys, *izs;
+
1471
+
1472 /* Update host... */
+
1473#ifdef _OPENACC
+
1474 SELECT_TIMER("UPDATE_HOST", "MEMORY", NVTX_D2H);
+
1475#pragma acc update host(atm[:1])
+
1476#endif
+
1477
+
1478 /* Set timer... */
+
1479 SELECT_TIMER("MODULE_CHEMGRID", "PHYSICS", NVTX_GPU);
+
1480
+
1481 /* Allocate... */
+
1482 ALLOC(z, double,
+
1483 ctl->chemgrid_nz);
+
1484 ALLOC(press, double,
+
1485 ctl->chemgrid_nz);
+
1486 ALLOC(ixs, int,
+
1487 atm->np);
+
1488 ALLOC(iys, int,
+
1489 atm->np);
+
1490 ALLOC(izs, int,
+
1491 atm->np);
+
1492
+
1493 /* Set grid box size... */
+
1494 double dz = (ctl->chemgrid_z1 - ctl->chemgrid_z0) / ctl->chemgrid_nz;
+
1495 double dlon = (ctl->chemgrid_lon1 - ctl->chemgrid_lon0) / ctl->chemgrid_nx;
+
1496 double dlat = (ctl->chemgrid_lat1 - ctl->chemgrid_lat0) / ctl->chemgrid_ny;
+
1497
+
1498 /* Set vertical coordinates... */
+
1499#pragma omp parallel for default(shared)
+
1500 for (int iz = 0; iz < ctl->chemgrid_nz; iz++) {
+
1501 z[iz] = ctl->chemgrid_z0 + dz * (iz + 0.5);
+
1502 press[iz] = P(z[iz]);
+
1503 }
+
1504
+
1505 /* Set time interval for output... */
+
1506 double t0 = tt - 0.5 * ctl->dt_mod;
+
1507 double t1 = tt + 0.5 * ctl->dt_mod;
+
1508
+
1509 /* Get indices... */
+
1510#pragma omp parallel for default(shared)
+
1511 for (int ip = 0; ip < atm->np; ip++) {
+
1512 ixs[ip] = (int) ((atm->lon[ip] - ctl->chemgrid_lon0) / dlon);
+
1513 iys[ip] = (int) ((atm->lat[ip] - ctl->chemgrid_lat0) / dlat);
+
1514 izs[ip] = (int) ((Z(atm->p[ip]) - ctl->chemgrid_z0) / dz);
+
1515 if (atm->time[ip] < t0 || atm->time[ip] > t1
+
1516 || ixs[ip] < 0 || ixs[ip] >= ctl->chemgrid_nx
+
1517 || iys[ip] < 0 || iys[ip] >= ctl->chemgrid_ny
+
1518 || izs[ip] < 0 || izs[ip] >= ctl->chemgrid_nz)
+
1519 izs[ip] = -1;
+
1520 }
+
1521
+
1522 /* Initialize quantity concentration variables... */
+
1523 static short init[NP];
+
1524#pragma omp parallel for default(shared)
+
1525 for (int ip = 0; ip < atm->np; ip++)
+
1526 if (izs[ip] >= 0)
+
1527 if (!init[ip]) {
+
1528 init[ip] = 1;
+
1529
+
1530 /* Set H2O and O3 using meteo data... */
+
1531 if (ctl->qnt_Ch2o >= 0 || ctl->qnt_Co3 >= 0) {
+
1532 double h2o, o3;
+ +
1534 if (ctl->qnt_Ch2o >= 0) {
+
1535 INTPOL_3D(h2o, 1);
+
1536 SET_ATM(qnt_Ch2o, h2o);
+
1537 }
+
1538 if (ctl->qnt_Co3 >= 0) {
+
1539 INTPOL_3D(o3, 0);
+
1540 SET_ATM(qnt_Co3, o3);
+
1541 }
+
1542 }
+
1543
+
1544 /* Set radical species... */
+
1545 SET_ATM(qnt_Coh, clim_zm(&clim->oh, atm->time[ip],
+
1546 atm->lat[ip], atm->p[ip]));
+
1547 SET_ATM(qnt_Cho2, clim_zm(&clim->ho2, atm->time[ip],
+
1548 atm->lat[ip], atm->p[ip]));
+
1549 SET_ATM(qnt_Ch2o2, clim_zm(&clim->h2o2, atm->time[ip],
+
1550 atm->lat[ip], atm->p[ip]));
+
1551 SET_ATM(qnt_Co1d, clim_zm(&clim->o1d, atm->time[ip],
+
1552 atm->lat[ip], atm->p[ip]));
+
1553 }
+
1554
+
1555 /* Check quantities... */
+
1556 if (ctl->qnt_m >= 0 && ctl->qnt_Cx >= 0) {
+
1557 if (ctl->molmass < 0)
+
1558 ERRMSG("SPECIES MOLAR MASS is not defined!");
+
1559
+
1560 double *mass, *area, *lon, *lat;
+
1561
+
1562 /* Allocate... */
+
1563 ALLOC(mass, double,
+
1564 ctl->chemgrid_nx * ctl->chemgrid_ny * ctl->chemgrid_nz);
+
1565 ALLOC(lon, double,
+
1566 ctl->chemgrid_nx);
+
1567 ALLOC(lat, double,
+
1568 ctl->chemgrid_ny);
+
1569 ALLOC(area, double,
+
1570 ctl->chemgrid_ny);
+
1571
+
1572 /* Set horizontal coordinates... */
+
1573 for (int ix = 0; ix < ctl->chemgrid_nx; ix++)
+
1574 lon[ix] = ctl->chemgrid_lon0 + dlon * (ix + 0.5);
+
1575#pragma omp parallel for default(shared)
+
1576 for (int iy = 0; iy < ctl->chemgrid_ny; iy++) {
+
1577 lat[iy] = ctl->chemgrid_lat0 + dlat * (iy + 0.5);
+
1578 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
1579 * cos(lat[iy] * M_PI / 180.);
+
1580 }
+
1581
+
1582 /* Get mass per grid box... */
+
1583 for (int ip = 0; ip < atm->np; ip++)
+
1584 if (izs[ip] >= 0)
+
1585 mass[ARRAY_3D
+
1586 (ixs[ip], iys[ip], ctl->chemgrid_ny, izs[ip], ctl->chemgrid_nz)]
+
1587 += atm->q[ctl->qnt_m][ip];
+
1588
+
1589 /* Assign grid data to air parcels ... */
+
1590#pragma omp parallel for default(shared)
+
1591 for (int ip = 0; ip < atm->np; ip++)
+
1592 if (izs[ip] >= 0) {
+
1593
+
1594 /* Interpolate temperature... */
+
1595 double temp;
+ +
1597 intpol_met_time_3d(met0, met0->t, met1, met1->t, tt, press[izs[ip]],
+
1598 lon[ixs[ip]], lat[iys[ip]], &temp, ci, cw, 1);
+
1599
+
1600 /* Set mass... */
+
1601 double m = mass[ARRAY_3D(ixs[ip], iys[ip], ctl->chemgrid_ny,
+
1602 izs[ip], ctl->chemgrid_nz)];
+
1603
+
1604 /* Calculate volume mixing ratio... */
+
1605 if (ctl->qnt_Cx >= 0)
+
1606 atm->q[ctl->qnt_Cx][ip] = MA / ctl->molmass * m
+
1607 / (1e9 * RHO(press[izs[ip]], temp) * area[iys[ip]] * dz);
+
1608 }
+
1609
+
1610 /* Free... */
+
1611 free(mass);
+
1612 free(lon);
+
1613 free(lat);
+
1614 free(area);
+
1615 }
+
1616
+
1617 /* Free... */
+
1618 free(z);
+
1619 free(press);
+
1620 free(ixs);
+
1621 free(iys);
+
1622 free(izs);
+
1623
+
1624 /* Update device... */
+
1625#ifdef _OPENACC
+
1626 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
1627#pragma acc update device(atm[:1])
+
1628#endif
+
1629}
+
#define RE
Mean radius of Earth [km].
Definition: libtrac.h:143
+
#define MA
Molar mass of dry air [g/mol].
Definition: libtrac.h:118
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
clim_zm_t oh
OH zonal means.
Definition: libtrac.h:1802
+
double molmass
Molar mass [g/mol].
Definition: libtrac.h:1294
+
double chemgrid_z1
Upper altitude of chemistry grid [km].
Definition: libtrac.h:1381
+
double chemgrid_z0
Lower altitude of chemistry grid [km].
Definition: libtrac.h:1378
+
double chemgrid_lat0
Lower latitude of chemistry grid [deg].
Definition: libtrac.h:1396
+
double chemgrid_lat1
Upper latitude of chemistry grid [deg].
Definition: libtrac.h:1399
+
double chemgrid_lon0
Lower longitude of chemistry grid [deg].
Definition: libtrac.h:1387
+
double chemgrid_lon1
Upper longitude of chemistry grid [deg].
Definition: libtrac.h:1390
+
int chemgrid_nz
Number of altitudes of chemistry grid.
Definition: libtrac.h:1375
+
int chemgrid_nx
Number of longitudes of chemistry grid.
Definition: libtrac.h:1384
+
int chemgrid_ny
Number of latitudes of chemistry grid.
Definition: libtrac.h:1393
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ module_oh_chem()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_oh_chem (ctl_tctl,
clim_tclim,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate OH chemistry.

+ +

Definition at line 1633 of file trac.c.

+
1639 {
+
1640
+
1641 /* Set timer... */
+
1642 SELECT_TIMER("MODULE_OHCHEM", "PHYSICS", NVTX_GPU);
+
1643
+
1644 /* Check quantity flags... */
+
1645 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1646 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1647
+
1648 /* Loop over particles... */
+
1649 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,met0,met1,atm,dt)") {
+
1650
+
1651 /* Get temperature... */
+
1652 double t;
+ +
1654 INTPOL_3D(t, 1);
+
1655
+
1656 /* Calculate molecular density... */
+
1657 double M = MOLEC_DENS(atm->p[ip], t);
+
1658
+
1659 /* Use constant reaction rate... */
+
1660 double k = GSL_NAN;
+
1661 if (ctl->oh_chem_reaction == 1)
+
1662 k = ctl->oh_chem[0];
+
1663
+
1664 /* Calculate bimolecular reaction rate... */
+
1665 else if (ctl->oh_chem_reaction == 2)
+
1666 k = ctl->oh_chem[0] * exp(-ctl->oh_chem[1] / t);
+
1667
+
1668 /* Calculate termolecular reaction rate... */
+
1669 if (ctl->oh_chem_reaction == 3) {
+
1670
+
1671 /* Calculate rate coefficient for X + OH + M -> XOH + M
+
1672 (JPL Publication 19-05) ... */
+
1673 double k0 =
+
1674 ctl->oh_chem[0] * (ctl->oh_chem[1] !=
+
1675 0 ? pow(298. / t, ctl->oh_chem[1]) : 1.);
+
1676 double ki =
+
1677 ctl->oh_chem[2] * (ctl->oh_chem[3] !=
+
1678 0 ? pow(298. / t, ctl->oh_chem[3]) : 1.);
+
1679 double c = log10(k0 * M / ki);
+
1680 k = k0 * M / (1. + k0 * M / ki) * pow(0.6, 1. / (1. + c * c));
+
1681 }
+
1682
+
1683 /* Calculate exponential decay... */
+
1684 double rate_coef = k * clim_oh(ctl, clim, atm->time[ip], atm->lon[ip],
+
1685 atm->lat[ip], atm->p[ip]) * M;
+
1686 double aux = exp(-dt[ip] * rate_coef);
+
1687 if (ctl->qnt_m >= 0) {
+
1688 if (ctl->qnt_mloss_oh >= 0)
+
1689 atm->q[ctl->qnt_mloss_oh][ip]
+
1690 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1691 atm->q[ctl->qnt_m][ip] *= aux;
+
1692 }
+
1693 if (ctl->qnt_vmr >= 0)
+
1694 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1695 }
+
1696}
+
#define MOLEC_DENS(p, t)
Calculate molecular density of an ideal gas.
Definition: libtrac.h:482
+
double oh_chem[4]
Coefficients for OH reaction rate (A, E/R or k0, n, kinf, m).
Definition: libtrac.h:1405
+
int oh_chem_reaction
Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular).
Definition: libtrac.h:1402
+
int qnt_mloss_oh
Quantity array index for total mass loss due to OH chemistry.
Definition: libtrac.h:977
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ module_h2o2_chem()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_h2o2_chem (ctl_tctl,
clim_tclim,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate H2O2 chemistry.

+ +

Definition at line 1700 of file trac.c.

+
1706 {
+
1707
+
1708 /* Set timer... */
+
1709 SELECT_TIMER("MODULE_H2O2CHEM", "PHYSICS", NVTX_GPU);
+
1710
+
1711 /* Check quantity flags... */
+
1712 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1713 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1714 if (ctl->qnt_Cx < 0)
+
1715 ERRMSG("Module needs quantity implicit volume mixing ratio!");
+
1716
+
1717 /* Loop over particles... */
+
1718 PARTICLE_LOOP(0, atm->np, 1, "acc data present(clim,ctl,met0,met1,atm,dt)") {
+
1719
+
1720 /* Check whether particle is inside cloud... */
+
1721 double lwc;
+ +
1723 INTPOL_3D(lwc, 1);
+
1724 if (!(lwc > 0))
+
1725 continue;
+
1726
+
1727 /* Check implicit volume mixing ratio... */
+
1728 if (atm->q[ctl->qnt_Cx][ip] == 0)
+
1729 continue;
+
1730
+
1731 /* Get temperature... */
+
1732 double t;
+
1733 INTPOL_3D(t, 0);
+
1734
+
1735 /* Get molecular density... */
+
1736 double M = MOLEC_DENS(atm->p[ip], t);
+
1737
+
1738 /* Reaction rate (Berglen et al., 2004)... */
+
1739 double k = 9.1e7 * exp(-29700 / RI * (1. / t - 1. / 298.15)); // Maass 1999 unit: M^(-2)
+
1740
+
1741 /* Henry constant of SO2... */
+
1742 double H_SO2 = 1.3e-2 * exp(2900 * (1. / t - 1. / 298.15)) * RI * t;
+
1743 double K_1S = 1.23e-2 * exp(2.01e3 * (1. / t - 1. / 298.15)); // unit: mol/L
+
1744
+
1745 /* Henry constant of H2O2... */
+
1746 double H_h2o2 = 8.3e2 * exp(7600 * (1 / t - 1 / 298.15)) * RI * t;
+
1747
+
1748 /* Concentration of H2O2 (Barth et al., 1989)... */
+
1749 double SO2 = atm->q[ctl->qnt_Cx][ip] * 1e9; // vmr unit: ppbv
+
1750 double h2o2 = H_h2o2 * clim_zm(&clim->h2o2, atm->time[ip], atm->lat[ip], atm->p[ip]) * M * 0.59 * exp(-0.687 * SO2) * 1000 / AVO; // unit: mol/L
+
1751
+
1752 /* Volume water content in cloud [m^3 m^(-3)]... */
+
1753 double rho_air = 100 * atm->p[ip] / (RI * t) * MA / 1000;
+
1754 //MA: Molar mass of dry air; RI: Ideal gas constant 8.314 [J/(mol K)]
+
1755 double CWC = lwc * rho_air / 1000;
+
1756
+
1757 /* Calculate exponential decay (Rolph et al., 1992)... */
+
1758 double rate_coef = k * K_1S * h2o2 * H_SO2 * CWC;
+
1759 double aux = exp(-dt[ip] * rate_coef);
+
1760 if (ctl->qnt_m >= 0) {
+
1761 if (ctl->qnt_mloss_h2o2 >= 0)
+
1762 atm->q[ctl->qnt_mloss_h2o2][ip] += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1763 atm->q[ctl->qnt_m][ip] *= aux;
+
1764 }
+
1765 if (ctl->qnt_vmr >= 0)
+
1766 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1767 }
+
1768}
+
#define AVO
Avogadro constant [1/mol].
Definition: libtrac.h:83
+
#define RI
Ideal gas constant [J/(mol K)].
Definition: libtrac.h:148
+
int qnt_mloss_h2o2
Quantity array index for total mass loss due to H2O2 chemistry.
Definition: libtrac.h:980
+
+Here is the call graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ module_tracer_chem()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_tracer_chem (ctl_tctl,
clim_tclim,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate first order tracer chemistry.

+ +

Definition at line 1772 of file trac.c.

+
1778 {
+
1779
+
1780 /* Set timer... */
+
1781 SELECT_TIMER("MODULE_TRACERCHEM", "PHYSICS", NVTX_GPU);
+
1782
+
1783 /* Loop over particles... */
+
1784 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,met0,atm,met1,dt)") {
+
1785
+
1786 /* Get temperature... */
+
1787 double t;
+ +
1789 INTPOL_3D(t, 1);
+
1790
+
1791 /* Get molecular density... */
+
1792 double M = MOLEC_DENS(atm->p[ip], t);
+
1793
+
1794 /* Get total column ozone... */
+
1795 double o3c;
+
1796 INTPOL_2D(o3c, 1);
+
1797
+
1798 /* Get solar zenith angle... */
+
1799 double sza = sza_calc(atm->time[ip], atm->lon[ip], atm->lat[ip]);
+
1800
+
1801 /* Get O(1D) concentration... */
+
1802 double o1d = clim_zm(&clim->o1d, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
1803
+
1804 /* Reactions for CFC-10... */
+
1805 if (ctl->qnt_Cccl4 >= 0) {
+
1806 double K_o1d = ARRHENIUS(3.30e-10, 0, t) * o1d * M;
+
1807 double K_hv = clim_photo(clim->photo.ccl4, &(clim->photo),
+
1808 atm->p[ip], sza, o3c);
+
1809 atm->q[ctl->qnt_Cccl4][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1810 }
+
1811
+
1812 /* Reactions for CFC-11... */
+
1813 if (ctl->qnt_Cccl3f >= 0) {
+
1814 double K_o1d = ARRHENIUS(2.30e-10, 0, t) * o1d * M;
+
1815 double K_hv = clim_photo(clim->photo.ccl3f, &(clim->photo),
+
1816 atm->p[ip], sza, o3c);
+
1817 atm->q[ctl->qnt_Cccl3f][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1818 }
+
1819
+
1820 /* Reactions for CFC-12... */
+
1821 if (ctl->qnt_Cccl2f2 >= 0) {
+
1822 double K_o1d = ARRHENIUS(1.40e-10, -25, t) * o1d * M;
+
1823 double K_hv = clim_photo(clim->photo.ccl2f2, &(clim->photo),
+
1824 atm->p[ip], sza, o3c);
+
1825 atm->q[ctl->qnt_Cccl2f2][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1826 }
+
1827
+
1828 /* Reactions for N2O... */
+
1829 if (ctl->qnt_Cn2o >= 0) {
+
1830 double K_o1d = ARRHENIUS(1.19e-10, -20, t) * o1d * M;
+
1831 double K_hv = clim_photo(clim->photo.n2o, &(clim->photo),
+
1832 atm->p[ip], sza, o3c);
+
1833 atm->q[ctl->qnt_Cn2o][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1834 }
+
1835 }
+
1836}
+
double sza_calc(const double sec, const double lon, const double lat)
Calculate solar zenith angle.
Definition: libtrac.c:5408
+
double clim_photo(double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c)
Interpolate photolysis rate data.
Definition: libtrac.c:112
+
#define ARRHENIUS(a, b, t)
Arrhenius equation for temperature dependence of reaction rates.
Definition: libtrac.h:266
+
double ccl2f2[CP][CSZA][CO3]
CCl2F2 photolysis rate [1/s].
Definition: libtrac.h:1733
+
double ccl3f[CP][CSZA][CO3]
CCl3F photolysis rate [1/s].
Definition: libtrac.h:1730
+
double n2o[CP][CSZA][CO3]
N2O photolysis rate [1/s].
Definition: libtrac.h:1724
+
double ccl4[CP][CSZA][CO3]
CCl4 photolysis rate [1/s].
Definition: libtrac.h:1727
+
clim_photo_t photo
Photolysis rates.
Definition: libtrac.h:1796
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+ +

◆ module_kpp_chem()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_kpp_chem (ctl_tctl,
clim_tclim,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

KPP chemistry module.

+ +
+
+ +

◆ module_position()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_position (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Check position of air parcels.

+ +

Definition at line 2053 of file trac.c.

+
2058 {
+
2059
+
2060 /* Set timer... */
+
2061 SELECT_TIMER("MODULE_POSITION", "PHYSICS", NVTX_GPU);
+
2062
+
2063 /* Loop over particles... */
+
2064 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
2065
+
2066 /* Init... */
+
2067 double ps;
+ +
2069
+
2070 /* Calculate modulo... */
+
2071 atm->lon[ip] = FMOD(atm->lon[ip], 360.);
+
2072 atm->lat[ip] = FMOD(atm->lat[ip], 360.);
+
2073
+
2074 /* Check latitude... */
+
2075 while (atm->lat[ip] < -90 || atm->lat[ip] > 90) {
+
2076 if (atm->lat[ip] > 90) {
+
2077 atm->lat[ip] = 180 - atm->lat[ip];
+
2078 atm->lon[ip] += 180;
+
2079 }
+
2080 if (atm->lat[ip] < -90) {
+
2081 atm->lat[ip] = -180 - atm->lat[ip];
+
2082 atm->lon[ip] += 180;
+
2083 }
+
2084 }
+
2085
+
2086 /* Check longitude... */
+
2087 while (atm->lon[ip] < -180)
+
2088 atm->lon[ip] += 360;
+
2089 while (atm->lon[ip] >= 180)
+
2090 atm->lon[ip] -= 360;
+
2091
+
2092 /* Check pressure... */
+
2093 if (atm->p[ip] < met0->p[met0->np - 1]) {
+
2094 if (ctl->reflect)
+
2095 atm->p[ip] = 2. * met0->p[met0->np - 1] - atm->p[ip];
+
2096 else
+
2097 atm->p[ip] = met0->p[met0->np - 1];
+
2098 } else if (atm->p[ip] > 300.) {
+
2099 INTPOL_2D(ps, 1);
+
2100 if (atm->p[ip] > ps) {
+
2101 if (ctl->reflect)
+
2102 atm->p[ip] = 2. * ps - atm->p[ip];
+
2103 else
+
2104 atm->p[ip] = ps;
+
2105 }
+
2106 }
+
2107 }
+
2108}
+
#define FMOD(x, y)
Compute floating point modulo.
Definition: libtrac.h:307
+
int reflect
Reflection of particles at top and bottom boundary (0=no, 1=yes).
Definition: libtrac.h:1216
+
+
+
+ +

◆ module_rng_init()

+ +
+
+ + + + + + + + +
void module_rng_init (int ntask)
+
+ +

Initialize random number generator...

+ +

Definition at line 2112 of file trac.c.

+
2113 {
+
2114
+
2115 /* Initialize random number generator... */
+
2116#ifdef _OPENACC
+
2117
+
2118 if (curandCreateGenerator(&rng, CURAND_RNG_PSEUDO_DEFAULT) !=
+
2119 CURAND_STATUS_SUCCESS)
+
2120 ERRMSG("Cannot create random number generator!");
+
2121 if (curandSetPseudoRandomGeneratorSeed(rng, ntask) != CURAND_STATUS_SUCCESS)
+
2122 ERRMSG("Cannot set seed for random number generator!");
+
2123 if (curandSetStream(rng, (cudaStream_t) acc_get_cuda_stream(acc_async_sync))
+
2124 != CURAND_STATUS_SUCCESS)
+
2125 ERRMSG("Cannot set stream for random number generator!");
+
2126
+
2127#else
+
2128
+
2129 gsl_rng_env_setup();
+
2130 if (omp_get_max_threads() > NTHREADS)
+
2131 ERRMSG("Too many threads!");
+
2132 for (int i = 0; i < NTHREADS; i++) {
+
2133 rng[i] = gsl_rng_alloc(gsl_rng_default);
+
2134 gsl_rng_set(rng[i],
+
2135 gsl_rng_default_seed + (long unsigned) (ntask * NTHREADS +
+
2136 i));
+
2137 }
+
2138
+
2139#endif
+
2140}
+
#define NTHREADS
Maximum number of OpenMP threads.
Definition: libtrac.h:207
+
+
+
+ +

◆ module_rng()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void module_rng (double * rs,
size_t n,
int method 
)
+
+ +

Generate random numbers.

+ +

Definition at line 2144 of file trac.c.

+
2147 {
+
2148
+
2149#ifdef _OPENACC
+
2150
+
2151#pragma acc host_data use_device(rs)
+
2152 {
+
2153 /* Uniform distribution... */
+
2154 if (method == 0) {
+
2155 if (curandGenerateUniformDouble(rng, rs, (n < 4 ? 4 : n)) !=
+
2156 CURAND_STATUS_SUCCESS)
+
2157 ERRMSG("Cannot create random numbers!");
+
2158 }
+
2159
+
2160 /* Normal distribution... */
+
2161 else if (method == 1) {
+
2162 if (curandGenerateNormalDouble(rng, rs, (n < 4 ? 4 : n), 0.0, 1.0) !=
+
2163 CURAND_STATUS_SUCCESS)
+
2164 ERRMSG("Cannot create random numbers!");
+
2165 }
+
2166 }
+
2167
+
2168#else
+
2169
+
2170 /* Uniform distribution... */
+
2171 if (method == 0) {
+
2172#pragma omp parallel for default(shared)
+
2173 for (size_t i = 0; i < n; ++i)
+
2174 rs[i] = gsl_rng_uniform(rng[omp_get_thread_num()]);
+
2175 }
+
2176
+
2177 /* Normal distribution... */
+
2178 else if (method == 1) {
+
2179#pragma omp parallel for default(shared)
+
2180 for (size_t i = 0; i < n; ++i)
+
2181 rs[i] = gsl_ran_gaussian_ziggurat(rng[omp_get_thread_num()], 1.0);
+
2182 }
+
2183#endif
+
2184}
+
+
+
+ +

◆ module_sedi()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_sedi (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate sedimentation of air parcels.

+ +

Definition at line 2188 of file trac.c.

+
2193 {
+
2194
+
2195 /* Set timer... */
+
2196 SELECT_TIMER("MODULE_SEDI", "PHYSICS", NVTX_GPU);
+
2197
+
2198 /* Loop over particles... */
+
2199 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
2200
+
2201 /* Get temperature... */
+
2202 double t;
+ +
2204 INTPOL_3D(t, 1);
+
2205
+
2206 /* Sedimentation velocity... */
+
2207 double v_s = sedi(atm->p[ip], t, atm->q[ctl->qnt_rp][ip],
+
2208 atm->q[ctl->qnt_rhop][ip]);
+
2209
+
2210 /* Calculate pressure change... */
+
2211 atm->p[ip] += DZ2DP(v_s * dt[ip] / 1000., atm->p[ip]);
+
2212 }
+
2213}
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ module_sort()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void module_sort (ctl_tctl,
met_tmet0,
atm_tatm 
)
+
+ +

Sort particles according to box index.

+ +

Definition at line 2217 of file trac.c.

+
2220 {
+
2221
+
2222 /* Set timer... */
+
2223 SELECT_TIMER("MODULE_SORT", "PHYSICS", NVTX_GPU);
+
2224
+
2225 /* Allocate... */
+
2226 const int np = atm->np;
+
2227 double *restrict const a = (double *) malloc((size_t) np * sizeof(double));
+
2228 int *restrict const p = (int *) malloc((size_t) np * sizeof(int));
+
2229
+
2230#ifdef _OPENACC
+
2231#pragma acc enter data create(a[0:np],p[0:np])
+
2232#pragma acc data present(ctl,met0,atm,a,p)
+
2233#endif
+
2234
+
2235 /* Get box index... */
+
2236#ifdef _OPENACC
+
2237#pragma acc parallel loop independent gang vector
+
2238#else
+
2239#pragma omp parallel for default(shared)
+
2240#endif
+
2241 for (int ip = 0; ip < np; ip++) {
+
2242 a[ip] =
+
2243 (double) ((locate_reg(met0->lon, met0->nx, atm->lon[ip]) * met0->ny +
+
2244 locate_reg(met0->lat, met0->ny, atm->lat[ip]))
+
2245 * met0->np + locate_irr(met0->p, met0->np, atm->p[ip]));
+
2246 p[ip] = ip;
+
2247 }
+
2248
+
2249 /* Sorting... */
+
2250#ifdef _OPENACC
+
2251 {
+
2252#ifdef THRUST
+
2253 {
+
2254#pragma acc host_data use_device(a, p)
+
2255 thrustSortWrapper(a, np, p);
+
2256 }
+
2257#else
+
2258 {
+
2259#pragma acc update host(a[0:np], p[0:np])
+
2260#pragma omp parallel
+
2261 {
+
2262#pragma omp single nowait
+
2263 quicksort(a, p, 0, np - 1);
+
2264 }
+
2265#pragma acc update device(a[0:np], p[0:np])
+
2266 }
+
2267#endif
+
2268 }
+
2269#else
+
2270 {
+
2271#ifdef THRUST
+
2272 {
+
2273 thrustSortWrapper(a, np, p);
+
2274 }
+
2275#else
+
2276 {
+
2277#pragma omp parallel
+
2278 {
+
2279#pragma omp single nowait
+
2280 quicksort(a, p, 0, np - 1);
+
2281 }
+
2282 }
+
2283#endif
+
2284 }
+
2285#endif
+
2286
+
2287 /* Sort data... */
+
2288 module_sort_help(atm->time, p, np);
+
2289 module_sort_help(atm->p, p, np);
+
2290 module_sort_help(atm->lon, p, np);
+
2291 module_sort_help(atm->lat, p, np);
+
2292 for (int iq = 0; iq < ctl->nq; iq++)
+
2293 module_sort_help(atm->q[iq], p, np);
+
2294
+
2295 /* Free... */
+
2296#ifdef _OPENACC
+
2297#pragma acc exit data delete(a,p)
+
2298#endif
+
2299 free(a);
+
2300 free(p);
+
2301}
+
void quicksort(double arr[], int brr[], const int low, const int high)
Parallel quicksort.
Definition: libtrac.c:1715
+
void thrustSortWrapper(double *__restrict__ c, int n, int *__restrict__ index)
Wrapper to Thrust sorting function.
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
void module_sort_help(double *a, int *p, int np)
Helper function for sorting module.
Definition: trac.c:2305
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + +
+ +
+
+ +

◆ module_sort_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void module_sort_help (double * a,
int * p,
int np 
)
+
+ +

Helper function for sorting module.

+ +

Definition at line 2305 of file trac.c.

+
2308 {
+
2309
+
2310 /* Allocate... */
+
2311 double *restrict const help =
+
2312 (double *) malloc((size_t) np * sizeof(double));
+
2313
+
2314 /* Reordering of array... */
+
2315#ifdef _OPENACC
+
2316#pragma acc enter data create(help[0:np])
+
2317#pragma acc data present(a,p,help)
+
2318#pragma acc parallel loop independent gang vector
+
2319#else
+
2320#pragma omp parallel for default(shared)
+
2321#endif
+
2322 for (int ip = 0; ip < np; ip++)
+
2323 help[ip] = a[p[ip]];
+
2324#ifdef _OPENACC
+
2325#pragma acc parallel loop independent gang vector
+
2326#else
+
2327#pragma omp parallel for default(shared)
+
2328#endif
+
2329 for (int ip = 0; ip < np; ip++)
+
2330 a[ip] = help[ip];
+
2331
+
2332 /* Free... */
+
2333#ifdef _OPENACC
+
2334#pragma acc exit data delete(help)
+
2335#endif
+
2336 free(help);
+
2337}
+
+
+
+ +

◆ module_timesteps()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_timesteps (ctl_tctl,
met_tmet0,
atm_tatm,
double * dt,
double t 
)
+
+ +

Calculate time steps.

+ +

Definition at line 2341 of file trac.c.

+
2346 {
+
2347
+
2348 /* Set timer... */
+
2349 SELECT_TIMER("MODULE_TIMESTEPS", "PHYSICS", NVTX_GPU);
+
2350
+
2351 const double latmin = gsl_stats_min(met0->lat, 1, (size_t) met0->ny),
+
2352 latmax = gsl_stats_max(met0->lat, 1, (size_t) met0->ny);
+
2353
+
2354 const int local =
+
2355 (fabs(met0->lon[met0->nx - 1] - met0->lon[0] - 360.0) >= 0.01);
+
2356
+
2357 /* Loop over particles... */
+
2358 PARTICLE_LOOP(0, atm->np, 0, "acc data present(ctl,atm,met0,dt)") {
+
2359
+
2360 /* Set time step for each air parcel... */
+
2361 if ((ctl->direction * (atm->time[ip] - ctl->t_start) >= 0
+
2362 && ctl->direction * (atm->time[ip] - ctl->t_stop) <= 0
+
2363 && ctl->direction * (atm->time[ip] - t) < 0))
+
2364 dt[ip] = t - atm->time[ip];
+
2365 else
+
2366 dt[ip] = 0.0;
+
2367
+
2368 /* Check horizontal boundaries of local meteo data... */
+
2369 if (local && (atm->lon[ip] <= met0->lon[0]
+
2370 || atm->lon[ip] >= met0->lon[met0->nx - 1]
+
2371 || atm->lat[ip] <= latmin || atm->lat[ip] >= latmax))
+
2372 dt[ip] = 0.0;
+
2373 }
+
2374}
+
int direction
Direction flag (1=forward calculation, -1=backward calculation).
Definition: libtrac.h:1094
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
+
+
+ +

◆ module_timesteps_init()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void module_timesteps_init (ctl_tctl,
atm_tatm 
)
+
+ +

Initialize timesteps.

+ +

Definition at line 2378 of file trac.c.

+
2380 {
+
2381
+
2382 /* Set timer... */
+
2383 SELECT_TIMER("MODULE_TIMESTEPS", "PHYSICS", NVTX_GPU);
+
2384
+
2385 /* Set start time... */
+
2386 if (ctl->direction == 1) {
+
2387 ctl->t_start = gsl_stats_min(atm->time, 1, (size_t) atm->np);
+
2388 if (ctl->t_stop > 1e99)
+
2389 ctl->t_stop = gsl_stats_max(atm->time, 1, (size_t) atm->np);
+
2390 } else {
+
2391 ctl->t_start = gsl_stats_max(atm->time, 1, (size_t) atm->np);
+
2392 if (ctl->t_stop > 1e99)
+
2393 ctl->t_stop = gsl_stats_min(atm->time, 1, (size_t) atm->np);
+
2394 }
+
2395
+
2396 /* Check time interval... */
+
2397 if (ctl->direction * (ctl->t_stop - ctl->t_start) <= 0)
+
2398 ERRMSG("Nothing to do! Check T_STOP and DIRECTION!");
+
2399
+
2400 /* Round start time... */
+
2401 if (ctl->direction == 1)
+
2402 ctl->t_start = floor(ctl->t_start / ctl->dt_mod) * ctl->dt_mod;
+
2403 else
+
2404 ctl->t_start = ceil(ctl->t_start / ctl->dt_mod) * ctl->dt_mod;
+
2405}
+
+
+
+ +

◆ module_wet_deposition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void module_wet_deposition (ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double * dt 
)
+
+ +

Calculate wet deposition.

+ +

Definition at line 2409 of file trac.c.

+
2414 {
+
2415
+
2416 /* Set timer... */
+
2417 SELECT_TIMER("MODULE_WETDEPO", "PHYSICS", NVTX_GPU);
+
2418
+
2419 /* Check quantity flags... */
+
2420 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
2421 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
2422
+
2423 /* Loop over particles... */
+
2424 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
2425
+
2426 /* Check whether particle is below cloud top... */
+
2427 double pct;
+ +
2429 INTPOL_2D(pct, 1);
+
2430 if (!isfinite(pct) || atm->p[ip] <= pct)
+
2431 continue;
+
2432
+
2433 /* Get cloud bottom pressure... */
+
2434 double pcb;
+
2435 INTPOL_2D(pcb, 0);
+
2436
+
2437 /* Estimate precipitation rate (Pisso et al., 2019)... */
+
2438 double cl;
+
2439 INTPOL_2D(cl, 0);
+
2440 double Is =
+
2441 pow(1. / ctl->wet_depo_pre[0] * cl, 1. / ctl->wet_depo_pre[1]);
+
2442 if (Is < 0.01)
+
2443 continue;
+
2444
+
2445 /* Check whether particle is inside or below cloud... */
+
2446 double iwc, lwc;
+
2447 INTPOL_3D(lwc, 1);
+
2448 INTPOL_3D(iwc, 0);
+
2449 int inside = (iwc > 0 || lwc > 0);
+
2450
+
2451 /* Get temperature... */
+
2452 double t;
+
2453 INTPOL_3D(t, 0);
+
2454
+
2455 /* Calculate in-cloud scavenging coefficient... */
+
2456 double lambda = 0;
+
2457 if (inside) {
+
2458
+
2459 /* Calculate retention factor... */
+
2460 double eta;
+
2461 if (t > 273.15)
+
2462 eta = 1;
+
2463 else if (t <= 238.15)
+
2464 eta = ctl->wet_depo_ic_ret_ratio;
+
2465 else
+
2466 eta = LIN(273.15, 1, 238.15, ctl->wet_depo_ic_ret_ratio, t);
+
2467
+
2468 /* Use exponential dependency for particles ... */
+
2469 if (ctl->wet_depo_ic_a > 0)
+
2470 lambda = ctl->wet_depo_ic_a * pow(Is, ctl->wet_depo_ic_b) * eta;
+
2471
+
2472 /* Use Henry's law for gases... */
+
2473 else if (ctl->wet_depo_ic_h[0] > 0) {
+
2474
+
2475 /* Get Henry's constant (Sander, 2015)... */
+
2476 double h = ctl->wet_depo_ic_h[0]
+
2477 * exp(ctl->wet_depo_ic_h[1] * (1. / t - 1. / 298.15));
+
2478
+
2479 /* Use effective Henry's constant for SO2
+
2480 (Berglen, 2004; Simpson, 2012)... */
+
2481 if (ctl->wet_depo_ic_h[2] > 0) {
+
2482 double H_ion = pow(10, ctl->wet_depo_ic_h[2] * (-1));
+
2483 double K_1 = 1.23e-2 * exp(2.01e3 * (1. / t - 1. / 298.15));
+
2484 double K_2 = 6e-8 * exp(1.12e3 * (1. / t - 1. / 298.15));
+
2485 h *= (1 + K_1 / H_ion + K_1 * K_2 / pow(H_ion, 2));
+
2486 }
+
2487
+
2488 /* Estimate depth of cloud layer... */
+
2489 double dz = 1e3 * (Z(pct) - Z(pcb));
+
2490
+
2491 /* Calculate scavenging coefficient (Draxler and Hess, 1997)... */
+
2492 lambda = h * RI * t * Is / 3.6e6 / dz * eta;
+
2493 }
+
2494 }
+
2495
+
2496 /* Calculate below-cloud scavenging coefficient... */
+
2497 else {
+
2498
+
2499 /* Calculate retention factor... */
+
2500 double eta;
+
2501 if (t > 270)
+
2502 eta = 1;
+
2503 else
+
2504 eta = ctl->wet_depo_bc_ret_ratio;
+
2505
+
2506 /* Use exponential dependency for particles... */
+
2507 if (ctl->wet_depo_bc_a > 0)
+
2508 lambda = ctl->wet_depo_bc_a * pow(Is, ctl->wet_depo_bc_b) * eta;
+
2509
+
2510 /* Use Henry's law for gases... */
+
2511 else if (ctl->wet_depo_bc_h[0] > 0) {
+
2512
+
2513 /* Get Henry's constant (Sander, 2015)... */
+
2514 double h = ctl->wet_depo_bc_h[0]
+
2515 * exp(ctl->wet_depo_bc_h[1] * (1. / t - 1. / 298.15));
+
2516
+
2517 /* Estimate depth of cloud layer... */
+
2518 double dz = 1e3 * (Z(pct) - Z(pcb));
+
2519
+
2520 /* Calculate scavenging coefficient (Draxler and Hess, 1997)... */
+
2521 lambda = h * RI * t * Is / 3.6e6 / dz * eta;
+
2522 }
+
2523 }
+
2524
+
2525 /* Calculate exponential decay of mass... */
+
2526 double aux = exp(-dt[ip] * lambda);
+
2527 if (ctl->qnt_m >= 0) {
+
2528 if (ctl->qnt_mloss_wet >= 0)
+
2529 atm->q[ctl->qnt_mloss_wet][ip]
+
2530 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
2531 atm->q[ctl->qnt_m][ip] *= aux;
+
2532 }
+
2533 if (ctl->qnt_vmr >= 0)
+
2534 atm->q[ctl->qnt_vmr][ip] *= aux;
+
2535 }
+
2536}
+
double wet_depo_ic_a
Coefficient A for wet deposition in cloud (exponential form).
Definition: libtrac.h:1429
+
double wet_depo_bc_a
Coefficient A for wet deposition below cloud (exponential form).
Definition: libtrac.h:1423
+
int qnt_mloss_wet
Quantity array index for total mass loss due to wet deposition.
Definition: libtrac.h:983
+
double wet_depo_ic_h[3]
Coefficients for wet deposition in cloud (Henry's law: Hb, Cb, pH).
Definition: libtrac.h:1435
+
double wet_depo_pre[2]
Coefficients for precipitation calculation.
Definition: libtrac.h:1420
+
double wet_depo_bc_h[2]
Coefficients for wet deposition below cloud (Henry's law: Hb, Cb).
Definition: libtrac.h:1438
+
double wet_depo_bc_ret_ratio
Coefficients for wet deposition below cloud: retention ratio.
Definition: libtrac.h:1444
+
double wet_depo_ic_ret_ratio
Coefficients for wet deposition in cloud: retention ratio.
Definition: libtrac.h:1441
+
double wet_depo_ic_b
Coefficient B for wet deposition in cloud (exponential form).
Definition: libtrac.h:1432
+
double wet_depo_bc_b
Coefficient B for wet deposition below cloud (exponential form).
Definition: libtrac.h:1426
+
+
+
+ +

◆ write_output()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void write_output (const char * dirname,
ctl_tctl,
met_tmet0,
met_tmet1,
atm_tatm,
double t 
)
+
+ +

Write simulation output.

+ +

Definition at line 2540 of file trac.c.

+
2546 {
+
2547
+
2548 char ext[10], filename[2 * LEN];
+
2549
+
2550 double r;
+
2551
+
2552 int year, mon, day, hour, min, sec;
+
2553
+
2554 /* Get time... */
+
2555 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
2556
+
2557 /* Update host... */
+
2558#ifdef _OPENACC
+
2559 if ((ctl->atm_basename[0] != '-' && fmod(t, ctl->atm_dt_out) == 0)
+
2560 || (ctl->grid_basename[0] != '-' && fmod(t, ctl->grid_dt_out) == 0)
+
2561 || (ctl->ens_basename[0] != '-' && fmod(t, ctl->ens_dt_out) == 0)
+
2562 || ctl->csi_basename[0] != '-' || ctl->prof_basename[0] != '-'
+
2563 || ctl->sample_basename[0] != '-' || ctl->stat_basename[0] != '-'
+
2564 || (ctl->vtk_basename[0] != '-' && fmod(t, ctl->vtk_dt_out) == 0)) {
+
2565 SELECT_TIMER("UPDATE_HOST", "MEMORY", NVTX_D2H);
+
2566#pragma acc update host(atm[:1])
+
2567 }
+
2568#endif
+
2569
+
2570 /* Write atmospheric data... */
+
2571 if (ctl->atm_basename[0] != '-' &&
+
2572 (fmod(t, ctl->atm_dt_out) == 0 || t == ctl->t_stop)) {
+
2573 if (ctl->atm_type_out == 0)
+
2574 sprintf(ext, "tab");
+
2575 else if (ctl->atm_type_out == 1)
+
2576 sprintf(ext, "bin");
+
2577 else if (ctl->atm_type_out == 2)
+
2578 sprintf(ext, "nc");
+
2579 sprintf(filename, "%s/%s_%04d_%02d_%02d_%02d_%02d.%s",
+
2580 dirname, ctl->atm_basename, year, mon, day, hour, min, ext);
+
2581 write_atm(filename, ctl, atm, t);
+
2582 }
+
2583
+
2584 /* Write gridded data... */
+
2585 if (ctl->grid_basename[0] != '-' && fmod(t, ctl->grid_dt_out) == 0) {
+
2586 sprintf(filename, "%s/%s_%04d_%02d_%02d_%02d_%02d.%s",
+
2587 dirname, ctl->grid_basename, year, mon, day, hour, min,
+
2588 ctl->grid_type == 0 ? "tab" : "nc");
+
2589 write_grid(filename, ctl, met0, met1, atm, t);
+
2590 }
+
2591
+
2592 /* Write CSI data... */
+
2593 if (ctl->csi_basename[0] != '-') {
+
2594 sprintf(filename, "%s/%s.tab", dirname, ctl->csi_basename);
+
2595 write_csi(filename, ctl, atm, t);
+
2596 }
+
2597
+
2598 /* Write ensemble data... */
+
2599 if (ctl->ens_basename[0] != '-' && fmod(t, ctl->ens_dt_out) == 0) {
+
2600 sprintf(filename, "%s/%s_%04d_%02d_%02d_%02d_%02d.tab",
+
2601 dirname, ctl->ens_basename, year, mon, day, hour, min);
+
2602 write_ens(filename, ctl, atm, t);
+
2603 }
+
2604
+
2605 /* Write profile data... */
+
2606 if (ctl->prof_basename[0] != '-') {
+
2607 sprintf(filename, "%s/%s.tab", dirname, ctl->prof_basename);
+
2608 write_prof(filename, ctl, met0, met1, atm, t);
+
2609 }
+
2610
+
2611 /* Write sample data... */
+
2612 if (ctl->sample_basename[0] != '-') {
+
2613 sprintf(filename, "%s/%s.tab", dirname, ctl->sample_basename);
+
2614 write_sample(filename, ctl, met0, met1, atm, t);
+
2615 }
+
2616
+
2617 /* Write station data... */
+
2618 if (ctl->stat_basename[0] != '-') {
+
2619 sprintf(filename, "%s/%s.tab", dirname, ctl->stat_basename);
+
2620 write_station(filename, ctl, atm, t);
+
2621 }
+
2622
+
2623 /* Write VTK data... */
+
2624 if (ctl->vtk_basename[0] != '-' && fmod(t, ctl->vtk_dt_out) == 0) {
+
2625 static int nvtk;
+
2626 sprintf(filename, "%s/%s_%05d.vtk", dirname, ctl->vtk_basename, ++nvtk);
+
2627 write_vtk(filename, ctl, atm, t);
+
2628 }
+
2629}
+
void write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write VTK data.
Definition: libtrac.c:7456
+
void write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write gridded data.
Definition: libtrac.c:6391
+
void write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write sample data.
Definition: libtrac.c:7207
+
void write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write station data.
Definition: libtrac.c:7370
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write CSI data.
Definition: libtrac.c:6049
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
void write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write profile data.
Definition: libtrac.c:6979
+
void write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write ensemble data.
Definition: libtrac.c:6294
+
char prof_basename[LEN]
Basename for profile output file.
Definition: libtrac.h:1574
+
int grid_type
Type of grid data files (0=ASCII, 1=netCDF).
Definition: libtrac.h:1571
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
char csi_basename[LEN]
Basename of CSI data files.
Definition: libtrac.h:1478
+
double vtk_dt_out
Time step for VTK data output [s].
Definition: libtrac.h:1643
+
char grid_basename[LEN]
Basename of grid data files.
Definition: libtrac.h:1529
+
char atm_basename[LEN]
Basename of atmospheric data files.
Definition: libtrac.h:1459
+
char ens_basename[LEN]
Basename of ensemble data file.
Definition: libtrac.h:1523
+
double ens_dt_out
Time step for ensemble output [s].
Definition: libtrac.h:1526
+
char sample_basename[LEN]
Basename of sample data file.
Definition: libtrac.h:1607
+
double atm_dt_out
Time step for atmospheric data output [s].
Definition: libtrac.h:1465
+
char vtk_basename[LEN]
Basename of VTK data files.
Definition: libtrac.h:1640
+
char stat_basename[LEN]
Basename of station data file.
Definition: libtrac.h:1622
+
double grid_dt_out
Time step for gridded data output [s].
Definition: libtrac.h:1538
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 297 of file trac.c.

+
299 {
+
300
+
301 ctl_t ctl;
+
302
+
303 atm_t *atm;
+
304
+
305 cache_t *cache;
+
306
+
307 clim_t *clim;
+
308
+
309 met_t *met0, *met1;
+
310
+
311#ifdef ASYNCIO
+
312 met_t *met0TMP, *met1TMP, *mets;
+
313 ctl_t ctlTMP;
+
314#endif
+
315
+
316 FILE *dirlist;
+
317
+
318 char dirname[LEN], filename[2 * LEN];
+
319
+
320 double *dt, *rs, t;
+
321
+
322 int ntask = -1, rank = 0, size = 1;
+
323
+
324 /* Start timers... */
+ +
326
+
327 /* Initialize MPI... */
+
328#ifdef MPI
+
329 SELECT_TIMER("MPI_INIT", "INIT", NVTX_CPU);
+
330 MPI_Init(&argc, &argv);
+
331 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+
332 MPI_Comm_size(MPI_COMM_WORLD, &size);
+
333#endif
+
334
+
335 /* Initialize GPUs... */
+
336#ifdef _OPENACC
+
337 SELECT_TIMER("ACC_INIT", "INIT", NVTX_GPU);
+
338 if (acc_get_num_devices(acc_device_nvidia) <= 0)
+
339 ERRMSG("Not running on a GPU device!");
+
340 acc_set_device_num(rank % acc_get_num_devices(acc_device_nvidia),
+
341 acc_device_nvidia);
+
342 acc_device_t device_type = acc_get_device_type();
+
343 acc_init(device_type);
+
344#endif
+
345
+
346 /* Check arguments... */
+
347 if (argc < 4)
+
348 ERRMSG("Give parameters: <dirlist> <ctl> <atm_in>");
+
349
+
350 /* Open directory list... */
+
351 if (!(dirlist = fopen(argv[1], "r")))
+
352 ERRMSG("Cannot open directory list!");
+
353
+
354 /* Loop over directories... */
+
355 while (fscanf(dirlist, "%4999s", dirname) != EOF) {
+
356
+
357 /* MPI parallelization... */
+
358 if ((++ntask) % size != rank)
+
359 continue;
+
360
+
361 /* ------------------------------------------------------------
+
362 Initialize model run...
+
363 ------------------------------------------------------------ */
+
364
+
365 /* Allocate... */
+
366 SELECT_TIMER("ALLOC", "MEMORY", NVTX_CPU);
+
367 ALLOC(atm, atm_t, 1);
+
368 ALLOC(cache, cache_t, 1);
+
369 ALLOC(clim, clim_t, 1);
+
370 ALLOC(met0, met_t, 1);
+
371 ALLOC(met1, met_t, 1);
+
372#ifdef ASYNCIO
+
373 ALLOC(met0TMP, met_t, 1);
+
374 ALLOC(met1TMP, met_t, 1);
+
375#endif
+
376 ALLOC(dt, double,
+
377 NP);
+
378 ALLOC(rs, double,
+
379 3 * NP + 1);
+
380
+
381 /* Create data region on GPUs... */
+
382#ifdef _OPENACC
+
383 SELECT_TIMER("CREATE_DATA_REGION", "MEMORY", NVTX_GPU);
+
384#ifdef ASYNCIO
+
385#pragma acc enter data create(atm[:1], cache[:1], clim[:1], ctl, ctlTMP, met0[:1], met1[:1], met0TMP[:1], met1TMP[:1], dt[:NP], rs[:3 * NP])
+
386#else
+
387#pragma acc enter data create(atm[:1], cache[:1], clim[:1], ctl, met0[:1], met1[:1], dt[:NP], rs[:3 * NP])
+
388#endif
+
389#endif
+
390
+
391 /* Read control parameters... */
+
392 sprintf(filename, "%s/%s", dirname, argv[2]);
+
393 read_ctl(filename, argc, argv, &ctl);
+
394
+
395 /* Read climatological data... */
+
396 read_clim(&ctl, clim);
+
397
+
398 /* Read atmospheric data... */
+
399 sprintf(filename, "%s/%s", dirname, argv[3]);
+
400 if (!read_atm(filename, &ctl, atm))
+
401 ERRMSG("Cannot open file!");
+
402
+
403 /* Initialize timesteps... */
+
404 module_timesteps_init(&ctl, atm);
+
405
+
406 /* Update GPU... */
+
407#ifdef _OPENACC
+
408 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
409#pragma acc update device(atm[:1], clim[:1], ctl)
+
410#endif
+
411
+
412 /* Initialize random number generator... */
+
413 module_rng_init(ntask);
+
414
+
415 /* Initialize meteo data... */
+
416#ifdef ASYNCIO
+
417 ctlTMP = ctl;
+
418#endif
+
419 get_met(&ctl, clim, ctl.t_start, &met0, &met1);
+
420 if (ctl.dt_mod > fabs(met0->lon[1] - met0->lon[0]) * 111132. / 150.)
+
421 WARN("Violation of CFL criterion! Check DT_MOD!");
+
422#ifdef ASYNCIO
+
423 get_met(&ctlTMP, clim, ctlTMP.t_start, &met0TMP, &met1TMP);
+
424#endif
+
425
+
426 /* Initialize isosurface... */
+
427 if (ctl.isosurf >= 1 && ctl.isosurf <= 4)
+
428 module_isosurf_init(&ctl, met0, met1, atm, cache);
+
429
+
430 /* Initialize pressure heights consistent with zeta ... */
+
431 if (ctl.vert_coord_ap == 1) {
+
432 INTPOL_INIT_DIA for (
+
433 int ip = 0; ip < atm->np; ip++) {
+
434 intpol_met_4d_coord(met0, met0->zetal, met0->pl, met1, met1->zetal,
+
435 met1->pl, atm->time[ip], atm->q[ctl.qnt_zeta][ip],
+
436 atm->lon[ip], atm->lat[ip], &atm->p[ip], ci, cw,
+
437 1);
+
438 }
+
439
+
440 }
+
441
+
442 /* Update GPU... */
+
443#ifdef _OPENACC
+
444 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
445#pragma acc update device(cache[:1])
+
446#endif
+
447
+
448 /* ------------------------------------------------------------
+
449 Loop over timesteps...
+
450 ------------------------------------------------------------ */
+
451
+
452 /* Loop over timesteps... */
+
453#ifdef ASYNCIO
+
454 omp_set_nested(1);
+
455 // omp_set_dynamic(0);
+
456 int ompTrdnum = omp_get_max_threads();
+
457#endif
+
458 for (t = ctl.t_start; ctl.direction * (t - ctl.t_stop) < ctl.dt_mod;
+
459 t += ctl.direction * ctl.dt_mod) {
+
460#ifdef ASYNCIO
+
461#pragma omp parallel num_threads(2)
+
462 {
+
463#endif
+
464
+
465 /* Adjust length of final time step... */
+
466 if (ctl.direction * (t - ctl.t_stop) > 0)
+
467 t = ctl.t_stop;
+
468
+
469 /* Set time steps of air parcels... */
+
470 module_timesteps(&ctl, met0, atm, dt, t);
+
471
+
472 /* Get meteo data... */
+
473#ifdef ASYNCIO
+
474#pragma acc wait(5)
+
475#pragma omp barrier
+
476 if (omp_get_thread_num() == 0) {
+
477
+
478 /* Pointer swap... */
+
479 if (t != ctl.t_start) {
+
480 mets = met0;
+
481 met0 = met0TMP;
+
482 met0TMP = mets;
+
483
+
484 mets = met1;
+
485 met1 = met1TMP;
+
486 met1TMP = mets;
+
487 }
+
488#endif
+
489#ifndef ASYNCIO
+
490 if (t != ctl.t_start)
+
491 get_met(&ctl, clim, t, &met0, &met1);
+
492#endif
+
493
+
494 /* Sort particles... */
+
495 if (ctl.sort_dt > 0 && fmod(t, ctl.sort_dt) == 0)
+
496 module_sort(&ctl, met0, atm);
+
497
+
498 /* Check positions (initial)... */
+
499 module_position(&ctl, met0, met1, atm, dt);
+
500
+
501 /* Advection... */
+
502 if (ctl.advect > 0) {
+
503 if (ctl.vert_coord_ap == 0)
+
504 module_advect(&ctl, met0, met1, atm, dt);
+
505 else
+
506 module_advect_diabatic(&ctl, met0, met1, atm, dt);
+
507 }
+
508
+
509 /* Turbulent diffusion... */
+
510 if (ctl.turb_dx_trop > 0 || ctl.turb_dz_trop > 0
+
511 || ctl.turb_dx_strat > 0 || ctl.turb_dz_strat > 0)
+
512 module_diffusion_turb(&ctl, clim, atm, dt, rs);
+
513
+
514 /* Mesoscale diffusion... */
+
515 if (ctl.turb_mesox > 0 || ctl.turb_mesoz > 0)
+
516 module_diffusion_meso(&ctl, met0, met1, atm, cache, dt, rs);
+
517
+
518 /* Convection... */
+
519 if (ctl.conv_cape >= 0
+
520 && (ctl.conv_dt <= 0 || fmod(t, ctl.conv_dt) == 0))
+
521 module_convection(&ctl, met0, met1, atm, dt, rs);
+
522
+
523 /* Sedimentation... */
+
524 if (ctl.qnt_rp >= 0 && ctl.qnt_rhop >= 0)
+
525 module_sedi(&ctl, met0, met1, atm, dt);
+
526
+
527 /* Isosurface... */
+
528 if (ctl.isosurf >= 1 && ctl.isosurf <= 4)
+
529 module_isosurf(&ctl, met0, met1, atm, cache, dt);
+
530
+
531 /* Check positions (final)... */
+
532 module_position(&ctl, met0, met1, atm, dt);
+
533
+
534 /* Interpolate meteo data... */
+
535 if (ctl.met_dt_out > 0
+
536 && (ctl.met_dt_out < ctl.dt_mod
+
537 || fmod(t, ctl.met_dt_out) == 0))
+
538 module_meteo(&ctl, clim, met0, met1, atm, dt);
+
539
+
540 /* Check boundary conditions (initial)... */
+
541 if ((ctl.bound_lat0 < ctl.bound_lat1)
+
542 && (ctl.bound_p0 > ctl.bound_p1))
+
543 module_bound_cond(&ctl, clim, met0, met1, atm, dt);
+
544
+
545 /* Decay of particle mass... */
+
546 if (ctl.tdec_trop > 0 && ctl.tdec_strat > 0)
+
547 module_decay(&ctl, clim, atm, dt);
+
548
+
549 /* Interparcel mixing... */
+
550 if (ctl.mixing_trop >= 0 && ctl.mixing_strat >= 0
+
551 && (ctl.mixing_dt <= 0 || fmod(t, ctl.mixing_dt) == 0))
+
552 module_mixing(&ctl, clim, atm, t);
+
553
+
554 /* OH chemistry... */
+
555 if (ctl.oh_chem_reaction != 0)
+
556 module_oh_chem(&ctl, clim, met0, met1, atm, dt);
+
557
+
558 /* H2O2 chemistry (for SO2 aqueous phase oxidation)... */
+
559 if (ctl.h2o2_chem_reaction != 0) {
+
560 module_chemgrid(&ctl, clim, met0, met1, atm, t);
+
561 module_h2o2_chem(&ctl, clim, met0, met1, atm, dt);
+
562 }
+
563
+
564 /* First-order tracer chemistry... */
+
565 if (ctl.tracer_chem)
+
566 module_tracer_chem(&ctl, clim, met0, met1, atm, dt);
+
567
+
568 /* KPP chemistry... */
+
569 if (ctl.kpp_chem) {
+
570#ifdef KPP
+
571 module_chemgrid(&ctl, clim, met0, met1, atm, t);
+
572 module_kpp_chem(&ctl, clim, met0, met1, atm, dt);
+
573#else
+
574 ERRMSG("Code was compiled without KPP!");
+
575#endif
+
576 }
+
577
+
578 /* Wet deposition... */
+
579 if ((ctl.wet_depo_ic_a > 0 || ctl.wet_depo_ic_h[0] > 0)
+
580 && (ctl.wet_depo_bc_a > 0 || ctl.wet_depo_bc_h[0] > 0))
+
581 module_wet_deposition(&ctl, met0, met1, atm, dt);
+
582
+
583 /* Dry deposition... */
+
584 if (ctl.dry_depo_vdep > 0)
+
585 module_dry_deposition(&ctl, met0, met1, atm, dt);
+
586
+
587 /* Check boundary conditions (final)... */
+
588 if ((ctl.bound_lat0 < ctl.bound_lat1)
+
589 && (ctl.bound_p0 > ctl.bound_p1))
+
590 module_bound_cond(&ctl, clim, met0, met1, atm, dt);
+
591
+
592 /* Write output... */
+
593 write_output(dirname, &ctl, met0, met1, atm, t);
+
594#ifdef ASYNCIO
+
595 } else {
+
596 omp_set_num_threads(ompTrdnum);
+
597 if (ctl.direction * (t - ctl.t_stop + ctl.direction * ctl.dt_mod) <
+
598 ctl.dt_mod)
+
599 get_met(&ctl, clim, t + (ctl.direction * ctl.dt_mod), &met0TMP,
+
600 &met1TMP);
+
601 }
+
602 }
+
603#endif
+
604 }
+
605
+
606#ifdef ASYNCIO
+
607 omp_set_num_threads(ompTrdnum);
+
608#endif
+
609
+
610 /* ------------------------------------------------------------
+
611 Finalize model run...
+
612 ------------------------------------------------------------ */
+
613
+
614 /* Report problem size... */
+
615 LOG(1, "SIZE_NP = %d", atm->np);
+
616 LOG(1, "SIZE_MPI_TASKS = %d", size);
+
617 LOG(1, "SIZE_OMP_THREADS = %d", omp_get_max_threads());
+
618#ifdef _OPENACC
+
619 LOG(1, "SIZE_ACC_DEVICES = %d", acc_get_num_devices(acc_device_nvidia));
+
620#endif
+
621
+
622 /* Report memory usage... */
+
623 LOG(1, "MEMORY_ATM = %g MByte", sizeof(atm_t) / 1024. / 1024.);
+
624 LOG(1, "MEMORY_CACHE = %g MByte", sizeof(cache_t) / 1024. / 1024.);
+
625 LOG(1, "MEMORY_CLIM = %g MByte", sizeof(clim_t) / 1024. / 1024.);
+
626 LOG(1, "MEMORY_METEO = %g MByte", 2 * sizeof(met_t) / 1024. / 1024.);
+
627 LOG(1, "MEMORY_DYNAMIC = %g MByte", (3 * NP * sizeof(int)
+
628 + 4 * NP * sizeof(double)
+
629 + EX * EY * EP * sizeof(float)) /
+
630 1024. / 1024.);
+
631 LOG(1, "MEMORY_STATIC = %g MByte", (EX * EY * EP * sizeof(float)) /
+
632 1024. / 1024.);
+
633
+
634 /* Delete data region on GPUs... */
+
635#ifdef _OPENACC
+
636 SELECT_TIMER("DELETE_DATA_REGION", "MEMORY", NVTX_GPU);
+
637#ifdef ASYNCIO
+
638#pragma acc exit data delete (ctl, atm, cache, clim, met0, met1, dt, rs, met0TMP, met1TMP)
+
639#else
+
640#pragma acc exit data delete (ctl, atm, cache, clim, met0, met1, dt, rs)
+
641#endif
+
642#endif
+
643
+
644 /* Free... */
+
645 SELECT_TIMER("FREE", "MEMORY", NVTX_CPU);
+
646 free(atm);
+
647 free(cache);
+
648 free(clim);
+
649 free(met0);
+
650 free(met1);
+
651#ifdef ASYNCIO
+
652 free(met0TMP);
+
653 free(met1TMP);
+
654#endif
+
655 free(dt);
+
656 free(rs);
+
657
+
658 /* Report timers... */
+ +
660 }
+
661
+
662 /* Finalize MPI... */
+
663#ifdef MPI
+
664 MPI_Finalize();
+
665#endif
+
666
+
667 /* Stop timers... */
+ +
669
+
670 return EXIT_SUCCESS;
+
671}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
Get meteo data for given time step.
Definition: libtrac.c:717
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define WARN(...)
Print warning message.
Definition: libtrac.h:692
+
#define START_TIMERS
Start timers.
Definition: libtrac.h:728
+
#define PRINT_TIMERS
Print timers.
Definition: libtrac.h:717
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define STOP_TIMERS
Stop timers.
Definition: libtrac.h:732
+
Atmospheric data.
Definition: libtrac.h:1660
+
Cache data.
Definition: libtrac.h:1683
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
int vert_coord_ap
Vertical coordinate of air parcels (0=pressure, 1=zeta).
Definition: libtrac.h:812
+
double sort_dt
Time step for sorting of particle data [s].
Definition: libtrac.h:1203
+
double met_dt_out
Time step for sampling of meteo data along trajectories [s].
Definition: libtrac.h:1197
+
double conv_dt
Time interval for convection module [s].
Definition: libtrac.h:1243
+
int tracer_chem
Switch for first order tracer chemistry module (0=off, 1=on).
Definition: libtrac.h:1417
+
int kpp_chem
Switch for KPP chemistry module (0=off, 1=on).
Definition: libtrac.h:1414
+
int h2o2_chem_reaction
Reaction type for H2O2 chemistry (0=none, 1=SO2).
Definition: libtrac.h:1411
+
double mixing_dt
Time interval for mixing [s].
Definition: libtrac.h:1339
+
Meteo data.
Definition: libtrac.h:1831
+
void module_timesteps(ctl_t *ctl, met_t *met0, atm_t *atm, double *dt, double t)
Calculate time steps.
Definition: trac.c:2341
+
void module_kpp_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
KPP chemistry module.
+
void module_sedi(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate sedimentation of air parcels.
Definition: trac.c:2188
+
void module_wet_deposition(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate wet deposition.
Definition: trac.c:2409
+
void module_sort(ctl_t *ctl, met_t *met0, atm_t *atm)
Sort particles according to box index.
Definition: trac.c:2217
+
void module_rng_init(int ntask)
Initialize random number generator...
Definition: trac.c:2112
+
void module_tracer_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate first order tracer chemistry.
Definition: trac.c:1772
+
void module_advect(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate advection of air parcels.
Definition: trac.c:675
+
void module_chemgrid(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double t)
Calculate grid data for chemistry modules.
Definition: trac.c:1460
+
void module_bound_cond(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Apply boundary conditions.
Definition: trac.c:829
+
void module_timesteps_init(ctl_t *ctl, atm_t *atm)
Initialize timesteps.
Definition: trac.c:2378
+
void module_h2o2_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate H2O2 chemistry.
Definition: trac.c:1700
+
void module_mixing(ctl_t *ctl, clim_t *clim, atm_t *atm, double t)
Apply interparcel mixing.
Definition: trac.c:1895
+
void module_position(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Check position of air parcels.
Definition: trac.c:2053
+
void module_meteo(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Interpolate meteo data for air parcel positions.
Definition: trac.c:1362
+
void module_oh_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate OH chemistry.
Definition: trac.c:1633
+
void module_isosurf_init(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache)
Initialize isosurface module.
Definition: trac.c:1244
+
void module_dry_deposition(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate dry deposition.
Definition: trac.c:1183
+
void module_decay(ctl_t *ctl, clim_t *clim, atm_t *atm, double *dt)
Calculate exponential decay of particle mass.
Definition: trac.c:1010
+
void module_advect_diabatic(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate advection of air parcels.
Definition: trac.c:744
+
void module_isosurf(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache, double *dt)
Force air parcels to stay on isosurface.
Definition: trac.c:1310
+
void module_convection(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt, double *rs)
Calculate convection of air parcels.
Definition: trac.c:924
+
void module_diffusion_meso(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache, double *dt, double *rs)
Calculate mesoscale diffusion.
Definition: trac.c:1047
+
void module_diffusion_turb(ctl_t *ctl, clim_t *clim, atm_t *atm, double *dt, double *rs)
Calculate turbulent diffusion.
Definition: trac.c:1143
+
void write_output(const char *dirname, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write simulation output.
Definition: trac.c:2540
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/trac_8c.js b/doxygen/trac_8c.js new file mode 100644 index 0000000000..efdc017808 --- /dev/null +++ b/doxygen/trac_8c.js @@ -0,0 +1,33 @@ +var trac_8c = +[ + [ "PARTICLE_LOOP", "trac_8c.html#a11241b8a58cfbbe8cc92e1db4aff45ab", null ], + [ "module_advect", "trac_8c.html#a4ccd30026baf665758ff587cd2bebdb1", null ], + [ "module_advect_diabatic", "trac_8c.html#abb33bc155cb4f8a9f6e201212814b3c4", null ], + [ "module_bound_cond", "trac_8c.html#a6923dc8f54a49d376cf6a486c848fd94", null ], + [ "module_convection", "trac_8c.html#ad89c50ca0fa9258e086d457a72463346", null ], + [ "module_decay", "trac_8c.html#ab4353227dd6cb7d3392bf7bc804351fb", null ], + [ "module_diffusion_meso", "trac_8c.html#add049d36bf3caca319c1fb71e6fdc2b2", null ], + [ "module_diffusion_turb", "trac_8c.html#ae7a2e0f0de171b37383cd672db5e483e", null ], + [ "module_dry_deposition", "trac_8c.html#a9a6ba19e5c74160151ae3f26785daeff", null ], + [ "module_isosurf_init", "trac_8c.html#a94be7f97f770dfcd783e8ced0aa8e629", null ], + [ "module_isosurf", "trac_8c.html#ac5397325f4210ac4e89b977ca7026237", null ], + [ "module_meteo", "trac_8c.html#a7cb8e26541d7628230dad82325b61b7e", null ], + [ "module_mixing", "trac_8c.html#a7bd79a78b4fd2d384dc98255fbf1bf8d", null ], + [ "module_mixing_help", "trac_8c.html#ad5c35d1543ff9173bf682dd933e8405c", null ], + [ "module_chemgrid", "trac_8c.html#a4ce2c912d35ee727c5e8877d2f5c8958", null ], + [ "module_oh_chem", "trac_8c.html#a7ef56ba785c5a1ae4e73e7da0a141e1d", null ], + [ "module_h2o2_chem", "trac_8c.html#a6a9ad6d728173d5a51398880d2bc921b", null ], + [ "module_tracer_chem", "trac_8c.html#a42f35c3d4dac72ac9ba2406a97937dc1", null ], + [ "module_kpp_chem", "trac_8c.html#a0a46093dec056a5db7ec23c105456054", null ], + [ "module_position", "trac_8c.html#a7c82a7406882f89b0c6298d2f2cbfe1a", null ], + [ "module_rng_init", "trac_8c.html#a34704f73a61f2e7830081f0b010b0ad3", null ], + [ "module_rng", "trac_8c.html#a6ac625b4389d9c8c440342e137c57a81", null ], + [ "module_sedi", "trac_8c.html#a1d7701a95a327a1833ef16620838e71d", null ], + [ "module_sort", "trac_8c.html#a3226e54dbf610f7701d0e60e7c55d1e9", null ], + [ "module_sort_help", "trac_8c.html#a00942b9f17c8e2348d921f04cc282e95", null ], + [ "module_timesteps", "trac_8c.html#a071baaf1ed7856f4a3b291766591268a", null ], + [ "module_timesteps_init", "trac_8c.html#a69b6dde548bd6f01c0b244455f901976", null ], + [ "module_wet_deposition", "trac_8c.html#a288d5a40bb7cd1626ce343ff884fb64d", null ], + [ "write_output", "trac_8c.html#aebf12c1e87751c2142d687d509921a19", null ], + [ "main", "trac_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..2096fe44ff --- /dev/null +++ b/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..b212af3178 --- /dev/null +++ b/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +12944360e4dfe0afc4c7b3191b9be91e \ No newline at end of file diff --git a/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/trac_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..a6715ed528cc06dccf452159ba72c21a937ae68b GIT binary patch literal 231225 zcmZ_0by$>Zv_3o{rGyAbN+=SCNT;-<0#YI%NOyO4=Wnsk z`L65y^Ua=%J^P)Rcb-_!iu=CT4pUN)#JWpz7lA-vNlS^TAP~17A`qxj=tywogNQOQ z{0r4sR#FUcee+LhT}})FL5YwS6ISy~+L-jvQk5P?>?ESz5?OgO6``W0grg-aELIYT zq|q`(TI)XPHdt{yb)NspOtZ150I5%0NX&XgUg(!n|JJeOk%`xRk$^YI&VEr*ia!(h zTmsv>jLf$%QN@*!;b#$u18j|vTmQYnME;=m->aQl)aw6T@j*yG`0oY9OfVS&ky`vv z@O?`QI^Wx?<|*>g65$bH1mX-&Dj$JE%E~Hb%V=!zWP|%GXhh3M5`kFpr_4hVN*Wn` z)Y#aBoi4bud*2-y5padJ^#A)SLMkXXKlcmmW*}!VL1_1w^?$~JI`bF;PVo6^qNqwx;Sxad4D$bix}Ae@9U?cpux-$BqpQxb81?O{tL*5pf$ez3J%a zINe`HLq>MhP}kKgdP&UZZtLZBTBP^mXIpXdqqg`&^{^!r%6#gHzwO``$zkU0rQS?%pHpZemX?1qi>H6x@ z{@N03h2drouT<64GK-76+Nue8TXSXl6rb|$Gf)?LVW)XfE~tV()K*M9|w-5msKTB>S5N|(t?JqqbAb3w9NG{$B#v1bG4G#Jn*cweWHMuX(^UBKl#>RMG zym%=hf)v$uk3!(3q9O|egRHLZ4>Y^o(lP7;Yu#U+oeXSj&g(;kYin!A+tXYe9Gk+w z;0%yuw>6j{A?D3FCe%ovhKsOG7$v$K;#N>Jh;6UEMuz3_ZSMHS@I`KY+|v>aRs za>z9TVYfM6^{=%xD?NQ~yvhOQNi68+6GuEaRH(~J=5@HH?(q1&QU$md?jBW?fRUNB zsR^{Yec^{#+9lvi-pCed8r?{)OYkF`$oAtf0IM1bF&o8N)Q ze~0kqg+M^&jc-E)+%r^ofVkB1^BZ(%;8#h;wj=Q#mh|=*GcGGkUq$ zU)!Ol9} z#v8o#-)GF9@pk3zcrv~Y7_YQ5_B?s@Cl`SbN=?myDdgqn3((R&5fESz5V#lB#+pF3 zpsvOEd*bE#-vpiy3bznK6tFM>ei@aOth~I-m*+_+2vyCr`=%lo=5)ly* zNbIs_3TvBxMr68g9<|t+?8LqD0TmHYf8)&_7nVj}&5HVoiD{UcYUt>&q6V=(SF5NP zoGvlCSn16+EyE9_94->4rd_H^32Zd{+r^O<1bcBt1ZU=LQa0@?V`D#`7aTA~PR_VS z!__r<9^NnCbQb4UEFZJ5Ocq@z3KExV*&++?cs?YE7%esFOBYwrVr0B=#J+c7jm3~+ z+7%R8!ruK2fBPpqBBO6rPT}$5CVx|Jub902`_7u|Y-?v{6*o8e|5-y_1B0x8O{fS& z&)uN(5@RexQ=@UIpg;4?4Wj-W zofs%6gYd~D!HSAV85wFcG%8Y3UtL{aSy`r$%zF@B5%4J-e1*pkC=?^ZJD6FDsiLV1 zzquwS$vq^Kr;G-7`5Fyodye%4* z!GU*d?Dvt8m)$-3!nZbX;RFhCQ|7H5qfR~hTvg@a==kiIZE)~VS{fxu;pqrX$X6eq z4neCO-X5P!wgrLPqv8Bhl&jx92{6S=uYNa!tj#$2YY%xep2hHt>!`9-)3ed z<$52gXMED$jeQ3l#~mkd;M5z&_v-e?{MWyxrly96HAj?pB!39x59t}t&F8hZ2Qv~R zmdpOlS7$DfeV1x!_2~BE<^bzT1`+}t6;^GbWHkQ7b1mve3#0zVbL&r~fr0NzZr`L; zyl{ANc&x1GQ&KE2G1b7?q_DS5H8x6VCs1#s!UqDFA=eRm|5~^!l9bT!2R~f8#JEYs zddS0C0^Y$97HYT+dv@DE7Na~nTX;nIB1$+2Ra{*B4j;TZ^91af=p;YiQZ)36*JEq3 z;Y!BZ((=ALH&UZ1+jPAz2FCU+#2fUF^iI7!Js;xZwRCk8zkdB19o@(ymD3*+6C*1l z!+p(2N4IlybhN*3!?cs}_ANSRVlq6ElK!3|b#`{j%FEm7W}^)v37fEKJ4~B@({>r2 z@L4W1tAdzl@=S}rAit#KgG^SR<@ZmY@VleS%E}fN7M7NlIJ;N{eb4YIC=4_;hmR)U zk(o)&nK)^785tQ_T3V{Eu8tn~oP)#nWGAh*w$`rHJyO8`YGQQs^sE1s6)BkA0Zn`^ zGXXh-+~wt*f&yK2bx7B;a&tW)4dQZ`g6u;V!hCM-pVrpJt;rwv@85^pazE^znDBu} zN~W>6v{Y%>7#JTP9~g*4NJt3jRhEj2i^~&*B+uF?gjnVT;q^Lf1B=U-o6&yi0&+MSog!oqq%ZeU>WFY9V#WF#r+AtQlomWu!7 z;jnBR^Zl?ENG4&)ZES3KldnuNLhn&X;F$hP;eY-5wY9Z%-L(_M4-a9*!C%8YJtgqV zd>&gq7bmRnc=YI&@Q3VdT0y}E2F)UB8k)t$MdiE!w0q9P}pQ>{N#>U3l+uN0u zmDAGF6ciMsrKMT)f1+b!o0n?UfwROXy zUtFB-|N8X{gOC~j!2`It@5RaPM2$=5XC{;K(e3Gmul(LeaV!S7cz7P$Q@)#H9LU1& z$@q>S^Z5Dm=ciAfXkfytOb8~Yz$Z1M+Sy@?X^lsfrJm`Tv zmf!#W{R=w>D-DCJdsP8>5pEcKr7uhN#s;(eEG#Vkt0Ls&+aJ)Mq`@f4QW&5cK19)*L02Mf!~&CTm>upH&gDh z$6J$yZD0!BCc(%^Y0Yiufd|=R8sg$*ou4PywzN~Z;^hbeDO+2o-&2(-7KHIln{xBr zn^VyT@4TN{R<_q3^8^k;lK*=m*7Ur*)z$u-L@tM`qs_#uESg{u*a=~rHxd~YDZ#DA zu&*@({}%a&v@?D-Xh9&wk;)f~&Zj@!oyUKO9noqWFUM)21gZL;PT9PIP8+MI)>cm~ zE&r&}nKChnKU8?%zQDOTJTk(~$CoIP0Xh6*^pBrDiKQvMd-v|G*c|K<4GqnGWH7_o zPCHefyrHIadLnm=`2vWlq>22={IZlYM3|q$!#6%X)u^WsVKiGoAAXn5L`6jhN-bTYBSy;Y#R9W@YVxqbnZD@B(eTAe|PVVogr>Z!}PnnsSnV2?rJ6B73 zLr{Bl*pU#FA(VNz;>{teGrQchF|F1v-UQ+492}AGTwOIoMuLjrSpp*`sk(ad^{~Nd ze>UsemZOFq7cCtfUT*G_v$GfM^M#)?TUtA5_8(d7Z-2OwMJlIV0dgzc!3u& zF)@Mokdy?c#lpp9pInSN)%rE%%&rzKUTkb^67OKgxc8gLNCDI!VV^Cxf{!pKMMXuV z*Qr@qZs4W%_V(iAiKwVDR#sMedU~Lcg3~r= zZ8a`M4}236qLA`JTjs9&7%Bq&mYf=)_{Wc)?Cg=*N2nU z!IH(OaqlBH8a{*Lv4q(*vwH$1piBMWjoV~LMgsGYlEuqbsHk~^P%*DyM^n#O(jqTa9m2b*y2|u0Yf0J_AJJu9K ziiLdlw#{N#cAYnc-VXxd9FLzLab5?Ql=ngs&1L5t_lX)A74_`w%w6L_vO-i?n3J>f zoR1Bx-ss?<+hncVOC5{yQ3xG^5aD}y zb_g4)n8clyp1yZ+>cYgtw3Q?7@el(9pMj>Q33>n!;axbr9_;hWc*_Xf9@M_RM`L9 z85|r8CZ~lv2&KZQ#Ksq&{@GsbbE;=*`Z@fr)!D)Q`ufW3?CWye11LtWPc0tDwEv!U zq^Hl!khG|-#w5`A1>Z%?V1LZ7AL?tuydz!hO!JuU2UH*nOI_m0n?KEM3Mhz(qFRj! zSllPRw?mLg-_H0CNs59jl8=e$FDX}gce1y928Xwown6nXhaE#V=0!VOOh%@P_vFb& zR->)>bT>bOPDZWn`?}o}4W*TW@91Y`rBh>|vTWRYW%bz2Jw{Q{*tV$Kyc;byxLrUl ztj7#wLgPQUzLk``I6y?H_kfPRG>M9artkIbsSL@)yL^xTn*+gt+OC0eZ&fUV zLryk9u?~m(WUUjK1L}XHevMMUeYydLa=5;2WBI4S=d?U5OlSDX%{L8&0{A*lLfTDX z?zX+@>+`=8f!X8JsyAfVH(xv>p;q@%($L`Z zKFT^f`@FMrxLNt-21*Qw514J3>gXZ*f^uKEb(T;^qF?VX%ry$@onfLpcQdnYOlemZz%N*?}u6 zqS5|G>MkFEsjzj#nAeA5s(8Lv7X`MQug;HfZ%TC-!mmkx{&MHV18mh79B89Wit{ zwQW>_2!5+RX-w4pomm~ETTlLX%p&k5(!jtusC2y!t?^9NZoXiN7IN(gHHh=cj;dh8 zSHm3Bo2wU)mFp)9UMs5Nnauy*ZNf&rxtb1FQ`FRa8a#J5$0~}#!`YhN|7XJgz45YU z@4Xx?v(5tbhS1HYDbrygNFs-Pj_nUV(qz!k80ib%T<1lVRv)&XdMBc6y7dyx2<>Le z5xpqV>Vzw0RUFiQC)62-HeHUo*U;d-pJX zKBzgl9NWK3NhzzVODnnkpXuZVW#+4Pb-nB9x#zMxb}xY3;bt=EU~0*C?Rx|=3if0($LqR zD!e;6F#))!H<@NmHQEFPDH38Q{m^+~em*84;VJAb4!%@A@6k%Hd7h(?Tx;6?abdxXEd-8_|xP7OtFC0*X6{=TYkKf>k&z_ao zi82zbL)Dy;k|O(=QCdc3j$GZ`JiDQxAtz_KHG+_*v(}YJB9y7Nrse@YKBI1>?OaQk z#lMtAT*pu%%-?`7XUiq9IZXXrS+Qgme522a4E7(@25{U|JsH2(Ufyi8KcDB0lZ1r! zzx=hGpb6`xzX?gR4a_V7g0(Ko-HkzLkOjEx%m^b3mz9@me$$$roh^0W9P8`rOA*I_ z$*T;$Zn#$X7!yOnKc<#i2+NO*jC^u(0x1WetyU08`*RdEH8hTPcW3eA1$@s0uP>lx z1MK!T;MNBRuE@erpFp`$=ecXFu0CitURj|r$ZH!H9j&aUHc@I42x z87f2;?XniY=qD%n1qHv#uGd+iBYLn2A|Ur}H+_VzqOb3*5nxPy@>uZ$|>kEOCA9 z{3adHGkXBf#|BYK%Fl*@u`p?a{DG%`ih-V93BRzg(D(X^pQZRy90NO|?v_jb7%b2A zNvUHO$*_QBM0s(}n>S)V+UUZ~&CS2W$Ny<>cank97)*elk8gZnKuuaY%%!Kho0)|r z${X*ipuc(fXv`DErHk@!-~JAK(!G~dxY@Ao%)`wM)nIOJE=BW<^I3^eGxt5Hx|Q)4 z`Da)R>c89l85<)J{s1=9t+VYUy7}qTA7)+mh`5gkOtqRC13vHYn{7V>Kj_eKc{%Rj z&p@vb6;*t&WBECj#$Br(cHW};CE~}s1d%jGz1o4MCZLU)M@PNZ2J-Y$kZw@q{5nFG zK5FV6z)YL4L=_Z@z)2r|t*EGQc6JUA59i?EC`4OdTl0HSYIh4+7DRSjyMb#-&|#|)B<@VvPGnc;aSJ_w9qc({shWcFTK9M&xaa!&KTvVfPhu2yaD z$rQf|0Ddu9W`>ayhk=+4{BHyTd^`y<(sxel8}3s{0QVLW8mjo^`6|?Cn#KBhWv1;r zv&{|u*W~#43+wB;nwlPv=XZCttEi}~uC4-ormd}AtY7Es>S|kPak4Y}oCGVhnTMCR zY;=ReW(ZOpZEZJRwCjV_ekib@_CUjaNCb&)UEO7rk)uOtVK>s&&Y^~eM!nCeGgJw3 zv@Wwv!QiV_cS3tQL&kasGWBW~{>e%sQ1dYerylYiWH#pjtR2%%@2I`Zww5xT zsjlvHcWvGW1%W@wdK9lhT8$r}?*U~4$P*7WwdrV?85BY)%F44Qc!&c)(XTUV67CZx zRCpA}mE0EoW4aef%5`yh>E`MR>;6(t52`2yN}M8thOO;wnEMq}bzyi<2=MVK(aT_* zQ1D@3L@X_tD=Pl0Jfx$eds*)@+TX7VWM6ePfD3>|)x8{}!9foR3DIICh-ek?yQpq{ zR$Vpn`P(!W# zSC~P2&uEl@iGg~!F*uxbi>d1-TI zW=6oC5E1P>+eAuEc)gLxkT_F>o9<(Vdiyr!^<`9*1H1XZN<4S`K$=I7c8@l7cWucK zJ5)9{ljp~AQ6y&Xn!{Q;f*oTKmxN$G?H%+iOoe3puRh$QH39YP&Y7=EL=lDoIAPPW zVl6*B5=_emN{q(-Hx0bJ2j2;M`^VLp?S3@2BZ9%UTMyE`|Fi%Igpa2BAmawkFCo-B zEe%AN8n%ps?b0RZmyj>v5WLX8I-V9hJ2#M*e!5os9H=|#!G^iHTr4am1qBg(DIo9z z0-hyQFlfZ9YYuyRKK#l$FQS6`%^d9n^JBihxR@ykQSQnL-Jx&)bORS~Xui|TKys4e z;nhGw@3GBnXKS1Ae05=>Chk!Mk`MB_+NDj?8$1mS-iB*|WR?oI$_@-P>?e|xxj5+b zo+UHp`e3E9hPN=;22YLlbY(HK%v>4T@5nivCvjjffD z$uo59P&2ksEk^UvGU4p(Js&GV*Z-TtT6&wU=K#b9@WL3m*U?6Q3V#$meSNXcV%e)h ztvh$Ltk4f0QUf4Od3~|p`fpptdC!5KzRV}@*`r4+@Z_(1PLuUaupzuv#EF}cJj%|> zsFEq9(eOR_VKRqJ01FpXN9perEcEM0oaS0E+}vuQY#kYEYSK#$1v)g4Qc6y)2*|Al zHhN@XU}lasG0xAoGbbiw2r$HP-n1H5b>^06{r$pW@(6eZ#4McW;+L!NF#>*mGnV4= z@yg)moPEJ$_$zV$txQ;0yOZOyITP@F?}qy3IA26H&(g{fm3i$W3vj|%Qrm!1v!B*? zzWQmPrB#+VuB_#L>i|KmE+s13nWNZxbQI$AEk@|qip`YRaK2TKB+Eu*M$(XrRu_OpMbWfvC#&2plKXCq?aZz47hT?K^Tc4ih+`VhqPWlUk zCLgM~^OMO0+pchsy-xSa3)XwHY0uu=5!K-<0Q3nvw8q;b?Dgxr{)s>#{qlgR{!6j@ zHSeUFog^d60PILA1G!jBf0^{&!yWq{Ywclp z(BXmd60MVPf)W$K81kUbzn#%iNj_gU){ue8a6mUK!S3n z`|EMy3$Kx;;9)%6J*dKQ^ycc*&-${sR$Yg>5+hz||BGWWb6M7>ji%n7(mR_+g%F%Y zOKa`b@;>#<3Yp@7LDK zM3EP6I?5`rvt!*9)Tsu|^QD9=-K4x~ZU45Ny}Xi3ns22`eQQ{a2(OQg8$M*q>*%`V zwHZRWeLI%VHVkAVI?0+iXi!Kj)|b4BzWx?{nFr^ku*+LqoH27k6xW7TH*cj zcC60ormupeBp)Zu%_!d)HH{I409nL9(dkk$@E;u#n+cTa%e&utE^0n@u)#S^KrBgwfpXGd)v(Z z)o;Il6QBmQW)Zy(h>45)924^~E)K>6rO)TMID22pCr@Zt{&`Urrc%mNexLp*)uV*p zYG`;ag?MAQAQc2?ESIgPp=IvcsudFqGZ$z2#^!ymUe-FMnfz0ju4G#1&zUPJIRup9 z0?Ss&_?cE#R)x6upt$%nl$V_yYxMMMH!nIHV7T82VxptfK*qrkga5z`AKw%cOI?~e z{TpMn9PLLbF&>_$+S>46fHMNLz(^qa_`Xy16t)qhmL*z@B!xgV^jmf%VL!tcx3(cA z#?;W$GqJN%wX-vU7xMBZ094i1{vI2!rE?A(S!3m?S(#~UgF2S%g;vmZ>}^DKB5N}zQz12|2#SizVq@QfNj?_#iOK)> zRTglM5+nXo>X&sS_lb!7*N2Q%RXOU>hNfAG80jn6_T*FLsbtWNGin|MQno zQJzUgp2^zE2p63jcrrXZj{lzFd3j%=?~Ch@6tPSU3~~_Qs}aJJK%+{4?rGkv>ndQ| zhX?#Gy5VV%Ut@Dr?k`HQOnB4($gK(tZ8D;IG!xqz&^~)ImpqH z1~pn*caW0gLxM#@stV_afTh0I{z?Ea0p*q^5tHfq)e<)@gzpk)ghtC*>?c;Rsfdgf zD}H$PqQ2Yl9;h8Q<2eb^ZH0avp^+kG~o#RoCgcJ7)m|DIk+?L}A(ygww!ZD9Ut@PbofSE+Xcz zzAkQ1&?_qAV*Td9Cid0FR=4|XYHN?bS9wtxf{&5vGVJBXLr}i_od2X zT_wu4&bBxqP(Jx-s@ny$llwB>V3m(tCFL-kFRDv|aBdwP{RzS1=c`CdGlP8Av`o!% zWv$+z8v890Yn?J3Q=#V{oI?9#=l@CWYFsu^@Kp?~?ajr+%^F@Eo*u5V(9m!|#t60f z`LW{l>XUhFt~aQUA5&AebayMr%3=tA_$?t43N;kI@UtXSj8GH2Fh*ix-k2~uds-=J z)-yI8CykdcACi(XY|z!_<)YuYBmA>2m@HK3aLZp_LSnCv<~j^dk(~Fybh*3z;_lr8 zD&sF|;LX|mexhtIHuz;-o?6UpHz=+TH~9FR5A7^SuXV-sKbx=ITQE$^vJi#7>nn%IUYjU{uqd9cl%TsHQhOQ^-t%-_w4tw5!3_H90 zlwyq+yNt$XZr?NXMsXT$4h}5EuYRu%=%Ch56#4}q!p7+Q>YBAg+OJ%H|5nqo1i7JH z<=;VQHbkVV?;@Yl(&D3_ukg1lOyuRMw*C{|Bw=I*NzfKME0Y$}xw!Oy2J5V-VU0s^^@g_z>jY9S? zY3Ia=KBAQzh^>**gsrX5j@N`BRKb##zQ~fj+S+P!-@ZDZX`I4-8t5nX@W0ptIqkA9 zC5!6M`kw!!l_x>1!G}BX^YbtE=PW}q>3ibH zPeDOy6ngvYEqBq2PbvDw=D*iR46LntfmJWJ7{Bv8bIS0Umj89~bKkSkuYP0x*M3QH z!#jWe*a5|n%+ZO>M$dYK0s-bV%^N0W?B^%ozrIli5|QfKBVZ9ltkhgve*a!uUA@B> z?$_MaW!#RNV>d3cw?`jLhOt6rJgf==kyo!q7uq#me7=YIj_a8cF{_B;2jN2{Gn&or z=5MOAu^#QZd`u)t=)=`(Lo68HAWBh@`3L1&TOjyqa9LI`l6+11LUIp~Bfv=xgkRi# z0GsA_Y1Z|{+uWS*GjrYHg%?S3H@>?PlzGh|Sl+M%zibM~kZyUb4QxQH?9VZ{OM~cX zYuV!C=C4BzYQ!YT?3SHr=sTw-i!aSzUDsx&9yJgS@=FnW-soc!`OL$D8BuBYD&Q*T77jCLsa5G6(>WnpzT< z19_x`C=T_LCv9C_kq{u*6QOZU)k8%LD~Wu3KJ`fXJ3Yzg4w zT`sN(?{4o5x_N$(qDDnQQKtJO8AZN3m5VM)j5!1t7y(nQy?Lcc*Owol4KQaLt;^d5 zXbcuCCN{RBv^4D9yM>27=SN`6vERQRe0U_P|I@RP$8+Y_Ejv5A$I+J7)+8h(;goL+ z3T$L#I;x%K?WcZ*QA)YG9{h=>0;vqZ!BaYeQM3w4BVXS7U!KJZQ7$Ylx_Q2`wf&Zy zJPArJSTDUKz6(^}&xrp1^x6mYc9DJ^Jrh$GV92&dpct!!lcA|eNJ?6eoqe>_ zmFOPr`nJnFibC)T@VADmvvs(I(hammOG|4rTyzOYl9+?ec6`JUd;z{UeFGIxqTBGFwjX ztqECocW3)8GlJ6f1`%C3>-$4#f2UZOB6eg$%%0ae-q@ae&qw#Or z1Yat7bm7nzK!x5nFz_ipUMfxL>T*n?7g_@twabtfALa47Z;X7m z>Q}V^K_E4W}&s>;sHmb-ft+Z=XM)X2CU1NIx5XE!!{fPiTZz31)a<-~IdvK#J)@As=Y zdU;+Qb`UbGsPT%AxIZH#Kh#y&SN z7>D|Nr@oQ^fgZTBwszBlL3Zx|dQ2S2K{yF`S!QM?aBCn*8nW<83VY1JFg_+T4w^K4 ze0()EweMKJy1EKG?}F6R6>jNX#riom7J&Zy=-13ymbSJJ2?>X1S3$7~R#(XKCL=R* zp-ppmR=69gzAjiJ?ANK;Y4?B0Nc6zAXI&NN377|-zUl!M-TfNq{yk@4wM zE8l%ebYnw9B|w&Sb!{vyM~X~A76tN^>(k}0AeN%|Dvpzxno0@aIvri^;h!6uv;8DT z>+R_YVku^=k{M8O!Li%ga0MptZg5~*L=Rz78QbcP(R46IaTGDTWnX4m6E+%pIC|ak znUJrqtdUVgFp47Sz?)#;0Pj7H2`-_(6`pQn1SpljQ>MbheHX2oK4MO%+x$I?SOlOL z>`4_y4_sJSfcB3^q9OPM1Z7%`3Ll|l&q-@spQB0!X(1{qDl`>M@-l#04SbOFY6FwN z)yaGm&`RK|#tqb%k3D(zQ-*fJ8=^pIsn=9>g*ZMXFrNEEF ze3Z2GxpS6=i`Fb??MhLwSX-m_y7&30)}_-BU(rJw1f-SnUeF07@s8*b4NYuP(nQe$ z(3f8Yd|!cl&cM^)ydU&!eCOgK zZzm?1EdG{E)^dyt4GF2MYd}HTh~uuQ{WUx)2ke`L{%pvseQXRB4l8J$&M5QU0VivV z63oscE^%G$f|RHJ9^x%yW@58{p^5v|)fKS5V8x&d`^Y{<13PSImziw@%K7YO;8-O5nk9Hj9y=Y6g{_b~q1}h1U9~j?miMbWmT0l@C(pWv$dG)IH^XDO; zK6!oI^y*EgNbO_~La$xj{53QU9PH~&;MDprTe@2)sN35Yy?gf;I3nqcUT&9sAa{YH zmZnzG($azAL&LM_InAY=n8 zfsn3ZU;spyD!8VPAN#Zsz^cGo5Yi!^S$ep-b1=lsqcgsCwoFqpEBHPnga9pc+M=s= zgqIQgT**8yLR~w$ z$a}Rj^BTf+_yY!R6i~leSzFVyun0nH(3dYH_~PZ|<&a!JaE^TU4&-_Nc- zR8;IfCyw10?D*oqd@?aIz7$HKq>?cgVnl|HxZfgi7FduH+*lZ-66GH#bb(IHN)!ma=VNdbJMyi}^Sm0dLy zC#i)9qsCM^`k(e?^_5;ON>Hiy^bG2KJ~(a&r~Ff>8-YRrjWtqwdf;dNIZVAH;Z^fK zKa$4AmhkOoUNLw^B=?`lg~h;{3O5XEY37)gKZ?Za3B_@<~|u&pYC`=q-$L|7i&u8A@dZoAJ9(i z>zD27`jMhEIPv#wc!#?S`*zR=m?^e`qw5PCf}`D&-2@|}b;=B+$GJ5%#Qo9A8LujO zJy{AKD5>4XB#&}&BKFxznqK~Q4mh!k8wcKQRvn18hi3f?-hR^^_a^0hH{7o}_5G<5 zexLm>1LNn)$z32D>|E}y*e)}LP9qm~lMO9);m}W?HOlOCrDSB%8m@1ucEbXJp13cG ziC!#n)VL_SC_SClDENay>1mIySNq9%c&s4f$Aa|a_IX3B(63|x{_*DdlREEGmnGNB zSmd+&tZR84|B9hgf%rxB`i}(tIvEN!G3YZ;aBS?c>;kHz`UeHz%b*qi=}}C0qoS&( z!o73Jkb#Q_2s|(zQ{~G51s4J`aX~F1tu7%!Oc24!p+2vVDc-AD+^469!hJ+|KYDe} znft|y#fA3Kw6p?9My&qb@Cvto1IQ*LlgXru%;%4Bz{)Cw&xC7a6FuhQ@>*w6|hSy&3HK4Oh4XLw-&yJ^o?6 zN%arWR-h zkq)BxOPd2MUs~m15nx@x&4rXR2JBTZA)$+0! zqUy2VzR9Wl*H@>eW@=_i9ZW`u2zb(P!FC8uOQ42Le!-(VQi>43iOUS{lE@qA2*x0* zA%saipOO2Z%_n9&pof;P$T%a6nZb8K1cQcYm;m7xp`PZhl8uA3K%EMB) z>6s@6#Q2GQCF0p@@epfQ1EMDHnPC=k( zgo4U;e<_vAp;Cy;#s3L2-e7rI$9-g0HkDa@#>bEQ2h<`(9v#=WE}8!>((^CW^>6^` z094h%@9rK^C+-anjeUNq~>R-)Tl zTGEXo_tnwUW2vq@+e&UEtglB8Z=w)p$(c&4^UfI@uDVeuY$u{#&@fA@yB}%Z4W3wh z#dQCEf`Wq2N_NLzMh_1`a+0%I(71XZzY04!YfZgQSNg-t8~*a{jH8yGUKY@@q4&;Z zq@@qE4Ij%YDtc|}7oVIMEd9G)Jv*ecS)a5SzKTvfS08b@Rhpeof4*L<>M-&4KPHSZ zRkP(u-rCtvL$QGsG4Wy@#ku$HW4pf07@(s&;{>BfhY7tW5v*$3(%vUK^GjXAprXYt zcZbe^W~0w69)6dv%41^{rX}e*KE+Cta@DrAZI9KsIKO=8_BUP>&_2L&aot}E`JA4O zjf|`~OkY`Cug@df38@@@9T|D}f*cgFBZ(nJ`jJ}IJ7)uV8va)`GNPjOT?7v9i{H zH2csqg)+H&qKt<7KN}1y(1_gBra^q~ACbD=c_jGwG4$sGI!+YSNJNr9Hn!$4^33nR zQk6|RKRbJNwO_Gt5qROi)Xq3Qhp`3bM~|2(cBXzAvx2Ebky?-wC%Dc0GPxHu5AYz= zvz6aB`hWaFl$7)w?3YhhvDjXCVz6n;jLZh4;6&JL4Hw@Cxbb3`?JuEKa&y;m64)aE zL#1RH>isk&+s6JsEr9PM%+uHU)^Mb0m)hD?=jZp0O+`Q?>&^^bEWP0ey9UE25rw>n)q#6_7| z=bMs}PZ^S5H%I4bHnfBk--@fmChNVXL_eNw0QK$0M!4P&+T+wKXl4~`==6NCwL6c{ zC$K}Ck(8t5KI*85^rnV`$siqx=Mp_>7R~R=9^wT?EEQ5 z*XLem&u0b;4nPY~TSEqt>6On+c$k>A)lNi+`VTQNQg4bs@9Jbiw+lDQ(5vZvZNOG5?5?Axk`ftl zLhGrj?s#sdn6u-vveMqFiovSy1A)_$;t!L%f4<_FJ6MfVQNc~*^8OpoiW?Dp%|
uNlVjE`aG(z`ri^oT)|z!N}WEl^a^q9RXx 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

c-&b~nXcV(-y7!3enyOP)AVbE0Kdn6(a8y@ zlE~uTyDc>Sg1(A-$l*}x)knIuiqg{be0+QmWGo;s4K~e98dX4UqDhm_j!G7iIO%zdQqj^%&L(7lx>@xMTw13iqJU;jDs4>UN3D=1h;lX{Gf zIEPB2po;xIG8|SjP}bB;=vc0BbzOKk5xbkvw$U09!FAgoRT>GrhoEP*>htm5C{hnA zDZtt7O=`{%f_lF_FDv?nmvEo0|)|u4=fcNG=tr z7YwBd*DjXrK-JuwyzM!yxnmLQ1v}q8KjE?SaOtAR+`hxZZ+8mWq zd8MSKF`yqH7KQ22Bd{L=dJeuN5yvG--Qqg)bCp)tH@Eclf6>USe(lhC zqM>)YQ5SwwhQpbFtzN|YWc_PoAh`}o-a|&_J~$X&@0&>|V9recOR76o!pNK9or4eM zcqj7#?%~GP%qOh$kZx0RbGprq)5Rl-w_QPR&MqBYMQ(KLmK&eJXC4zUmY+@^>&?tu zSkj#-h$rBEayi+ZtXNyLegqqakS(O1N~NTbWM_{GibzC@7x29c>=Y6pql@*{(~E*% zgQzb22V?v^+@^?$nY|-&b63tGp~u>KXSU&{SWIdvNrL=6EG&AU)3Lzac#o9d0i>~D zVcXl=11AqCel56?>FMb~P=|{_$IGjwsyZ?<@*o*mUr(4kIX8C!!q}d6Xl=y`er)r- z9F)|mMdJ{Z2iCyPpm_|D10OLvC?>%e2vPbz7lI4dd6=OO88E7qe#-h4mrws`4?sWr z_iyA?HR!V$Sy&k8=`r-0S(o2=ZwC4fKM)6P!iF>6$NHp7SL>vV`TUO(#~|5DUA3^d z&+2lr`%t7=Df2189vM5+$HQ-7j9Y;ni-GUxu*g664-7ylkU`apKierpa*KJ-Haw;p z-B^`RaG*5msqdwf`!wZ~kP(X3#3{(5Ve8WEFpKW6K2z!D`0W zWr%2yvHGi>Lr-1(CgPQijiRh9+|*4gS}wG~9&F$4e+%T*;0tDDW$h7z_a#$M6W%G< zj7YK2J&qxU(f52W7&{K6Q30O~%8lB4;}{z3N7fG^Pn4O73520?S+*!L7$P6r>Q|$b6yvoX>G$3Y+o##SBG1Ttec{}qx-u4 zM+@KuI!s$I4en@H4Y{7_Fs5gH{P^#CMS-VhYFb)Ui&x?dtFu~BgmK3aRh>Oy5Nrr9 z2l(M#*`51n(0U0izlWK=PxcR*>U=Jg(1V|LM+$Kpe_4d0NL>hY=P>Gr$+WSHe1uwS z#@Ce=Cw6f48uX>Z+t?t4xK%$vi}m$96oo5j^BkY}B{b)JxZIsRRrZ+AKI41Cm{-Wa z00u>-E{!y4J+v{@)s1yWpDCy7d>>P~^X!xxTKo_Qh;lwAMm+mZ&KKV0b5;dv=SNIT zOziBSx$9nTwM_vHe_h7IOU|j9^70r(dSHQX`%~Wj0hMOP#vifc4i8%{zB;kqK+HC| z508&?^YI3l=N9BpZao5=y?h4X=3D$sqLM;E| z$2ab1LV9413}!t=b=+7%&ZiRB?uhmGR}-z%;d+1atV3r{639VCx~&GX(pkIc~w;1|s1 zCOsDzl+(U9x^6=5E!+^nm@!j%z2;+Np=?JDOGdPrWMPAhr)424o4U!gd!@df4ERSu zho8n?%&4(GpSCiumZa*wfBytj*XkfB zbp+j0S5=*^GzZTCSdC}%6cS_FVXXT2@gs=)LBl%x#}!pqSNATO^Y3p|g6SC_K3EtV zLw!)gQL0$Zh}+f=yax|BO*(Hc*4`nVp3H-NOU`mRl z?-dcaI6$L#c+eDHuZ2Pzx-pCnHHEdawrw|t zI^uxodWR`BF= z5*`+XF4xr`1dMQ5#jCCj@OyBLj%!G0L@qSY(ytCCJNpc!9l&kkKKbjbgJD6qqTS6u zZuIeU+4>G3AxMXg2TkbX0?Y&54nP=ENC z^5=;EEiqjAo8etIexAJv>+oA%^0}?Trp+a9q!>TA$}bp}#q?SQ5!!42uRB^Qjy_#c z_Pe%*2IwLotPOGN7K)R@sY_~G8=dzuU@D-py6TO)=iRN68P({?v%TEioL&y~$!<_G z{&MJ13TH>Y^Yal`KnsQ62!e%XaB|Y>|Kcu(ws=!+NM z!JX5&;#?zvi#L%bbi8!5b$k=8utfW@G0fD2cRS50Wg_^WsfxV=q`_E1;`yDCtKwo) z=(}9|cff8tr=9Win2cMtiGdv@@4)-~MYZ)5bcM;!&Pvhgjz)8^~p?+x383v9C8aooR)*u0?_9#a&DviB9MgL$S8Ra z=9IJF;;qDAziz;z5f*XC!|@F2IZolO)j*DuI%sKUF_`Z4v4q@LB6y?Or`dM?^I}Lq z|1n!!FBn}HGHS^4tc@xN`RY_*56Y2F{_GLg+w=>)!$GtyCnO}=yMSLHxz(fU&EYE= zzdOu$c;n~i%q?JkdzyR5k^Je-!_(e*3T%dgFnQ_+HxL>d?gCJY?uqz0>9k?SRg<6J z;+ng$-2FwFK?6kev){gbel^mgoHk?m;?Ynf3G_*z!=)NHH7m1Rd*9PJaWS#=oTOw+ zgO<+&9UU3HW(U$hDJjDp^w0EKcsLV^3b2`iZZ`8>;dWeH?_Uf1Y7VwueQ?Q1(D)8?pJ`k?ylLIK&qv$oQC%h{oic!UL9CodH2lEs$0MI(S>@zr zLms4mVtpvl*;T~MQamstlfFi?^0?50|DJ}gb=+!I&Fc~l} zB!20sULgeRqYR4t;32sH8A~f1%3WccvffzWP?K8u_Dadv_*`xifxr(3G?T-6vY}7j zQ+Exl3@Z>743C%h2qqz#cijtI&K3B$??0N^@HEL!y z1MlhYJ-8@m2MV5t;Nk-`)B&#zWoCV z_DA@^($+fl9EB|{4S$<};q2_RNf&gzjcOcoVVH}EQ8Cg|Qi5uDZ1U(E2vO{nCF&)o zvu!E8G-j^k{8Av?3yaUTHKk+Z)GaKeHaYO#KjX2|c$ppIdqrmb@+JT4a%G00 zEo_dv3-z%a76TuF7in)GnV2Yw8rCJ? zMu~o_c}2dwHmKKZZS6Vx3+zs#>S`XePy@cBPk(ngM50A?<{PoLKGYgsg>C+0_x7iI`;y!#3#feW%)$Z-R<=ydtt>z_{00P0A z`q;<2Ro?SKViHNRqWbeh$e?`{IV-}Ck*8FEbd|)AD5nuAW7M?|SiOkakp*1vG228WMG5Z)HBt4LIGUJ( zS19~@t8Y-79OR~$SQh5Ee*qC_UqPG@HgHA|TxU%;AK4BKJq~!bZ^NH|~ zcj{6(JWv4)V?{zA5aKdXQxiN(4lkIPgm;Xv(1!*~4tIYpAj6}FsbWLYWeXcU|CS(; zvz?& z`M8RjC0y^t3v~?*kb!(i){b(yrTUB#c>2wCrqrau)TCGNYZ9U&FmO$-^aea|OokO{ zVshG_D5t5Zq^TK+hZl(}{}{&(cBjz?H=H|45Rac>E zPIZl!JiF4PG-RJVM5!pYKd+dfH!OJ{%i&8UCv+=bvToEkjFEpahF4)6NK-Ngl-$J&pS zEiIvG6}GMGmzGx7TvKmX7cMPUZk8wqFpfME-^SD@Cp39EM+iAYOG=uPN)a6nuU~c#izk_zInixKH0um+Igt zdr#7+e*atKq(k?8@KEKD#bvkeiQwU={ZOi{OC-lr!N)8JQ@q^PaC|tStMdYw1X}Md zNL=_5X+c#!opzrBbV93CTMGQmg>fLQ>Ke3Nx;0fI6k5c;LDLvm%($fv3X5Q#B&|x?BN6yuLndejWtn zLZkDioSgA4hUzekjjxgJ%4s396{h>~OcH^^^yhV0LB@n=Th$PT;L{hckiCWR6slV? z@1JT~wl?)HwrOe}PS#mI0nx(Wzc+wK@a{g|iT>Vl;lge$QLFWA)1dQ95%N>+q5~nV zdl*TPxSEhI!!?x(3Q~`M6iyGgxcW$lQ^1bA^LzB;$I#{O)Qdy+?1%C3cndXMg2@Oeo)_ajS^3Vwe}oCp6Zy#2)Z*5EhEKtAK39&q+$RPI==^ z%~po=qyKjJZ0g{4QMl!#{)f1gRlVNEkYWYNFKKBSo6BE{3bR@~;#>jv zB(NcXl-OQiII630fyyy5{y4F90BW~$jGlf4UG4Q3+857~6!W<1&w{kISNQBJOZBK| zG+)osmRx<&*#H38Hm?J+72$2l#b;+I7@fPQOh}jn(dh`9He<7d@B4x!YWzeEO{p_> zh2{r{-Ar}O`ABY6Hj9WF2d3>6h@|N4>CI9 zZLTxG{e$Tw{7$(e+jHt(VkT&}@~)`x>%6&=j|@Ku-bB2uhPdFOV9GWEoj_xLhTvJj zTg-HMMn`{)$@KZ)s8O0Id{Y>m-HxV%Q*xGi%hYUS^rujvZf&{XL&Dj3QMpG+U_J26L2nwjiNtQ)$zz5$-L+?ed)6FKFf;oc%)-%W(8N~;bk7JTa}Yq!mwyn;4+2poZHySk1}BV<58$CaBMIj-aKWQi`gq#-lyVebaO zp3s501<0gS<*CYp>ouPbxV-;W?Nxo~2FKk4%@6$>BlNn7 z8u)md)9EXfn3kwoa{mB3D*^!nIAkyAbCTqRgE|c!45ehQde;;u21ZCVIMp;0A+@!! zadDL@bDqREQGG8>Kc=DC`U@NwFC@=OE8k;vlxHv9SJrgn)s~X_P)2+G(2Z*Zl#xH< zhou5m+QCfwDc5CK&xx#OLZC0JFm+bR(0l8t0dMV+irgJ3*(O5LZQUJSlp6&F444SG zHkOU)kV8@?*5{1}jLlf#T}KB^LS{YNaE}WNX1McbcIs?=YATw9Pg$0a_8RFC3-EmQ zsVO|@s^2FoHH^q`MeYgk!p09Wtm=vW&( z$mF&x-@Vgowhvu+P(u_M5y5Nwqmx7d@(y+(9Rea6;TdRfUZYn^!NtYREi5F&#@;>s zy9t(77DmQDGj%F5G7eVWii!j9pfng_5pi{nja5B7$SR+{2A^P8w*P?(N_S4{Ne&sA zDmDu|FavG_^?-}f)!uFlbus*;Sny+|K_(CwDg{hBLn2A|aBia_+Q7}7DeN%{>14LH z&90kT9v=VX;^@1+epOE5pyKA%kdUAO^%em1W?UZQg{mZcc9Qv4gAkSjX*W3vnfq5fTh4dUkM$t`wO=1SS3ZD?`Ni5 z(?G_8&hN{Y_n;pXA|70&p~TRPYtSv7&Vh(+N&DJWqT?r zU(o!rv$Fm?+De$IRRRw~c}t7D(60iR*wWLiUpbfU2&7n6h8!<;@Kw$M7;a$9+GnQH}rxBv8xw!?pHlIS| z87QoaLZ?3-rNNbPM<5PDx8C-x3N);2L^fc^d5Cb z@zhj|?8q~u!DkCF9fWoeBX(!(Tbto}*JT2b-RLNE2ZPap2~fb*RX6xGDOR@;hjNDS z^yCU4ukeLHKrRe?f;Z8zXzA!&O~`Q#V%lf}+9N>iyEBh2AkYiC8zCJ@-}4hkNR{Zc zCFV2<%*dFB^$#qsi|f2qA+P zD_F?;WET+Jm?DV2f%rp+G0ZPKi8JVjoe3h9(GZ_~uQJYbszc`C@w3E6rE)3;I*{Z_ zwdn3`|JN4@F#Ouu-ZY$QU0Feqk|MepfaUVmvb*?78%KQ*Lifb4|rYWj0jrnU0@4g(ugFp{z0Yf78nt67l6?f9<%@=AvYUc z8chuiAP<2g#=!ySc@KVcU|^@p!`hg^9LTtQgg=wuQ6Hb!@9Cj$z4o&OD|OC-5+hV~ zWL?R9`*W)!jhNc|-2AUS1D`l}ehpV!!c_Vpb*63?HB@qR61vKVhI)FEp87skh$uz&3VEO@2e)i*qRRitiiY)rLVa~n<%dDYmr zuO`M`Eu=Byhj$opn48hQ{wo|i`m`kt2{$3*jzgjG!L^Ybm7yX0bh}%=8yYL1408LE z^x5-o;Lsqb%KfQz>Zgl)L=xJKq-6>~3^`=tC`)@wM#dQ(Jq~;YGekj&P+u6=EArCT z+xr~OGQ(!ice5W=JFnAbp_p(xQG;0%rU@;r+Lo3K`xS`i0;@XksgUjop*(N4h+Bme zD6t{!K+tZMfBV7BfJ}SQ#l6>lWl|x()2}ZE&llt5%?XK-Ccz9U0 zNEX7U3uwodVJR}~^74&AfiCz6)^gg~k|csHa<+=EmjGMI8If}U(XU_QLhd;B^NL^; z1IFL#mBa39S1fe=QTFNHUdy9D)37aoEbkEu3j`B1`Cj?BCqpVRSo#07UY_f&Xs!E$6zcC~{cuuT+vS5I=!Rf)-SWA_adARZ|5- zbVASpL_@)D`XMF;ax*;uxP%Sa*~!WK%^L!C18Bhly$;oU*i+ur$c{yN#U$9nKbv-A z{g>Hw21#SrDF|~;Tg?%_)0s=t1hKy<{R@72mX;>p!l9|Ht?%KXA6z+}DJ+)|(-ujw zklfrF$3O#-P#zoOUz7{$VD!lf!Nx+*S0mD}GPPw5kT(aS<_^(-NyQC>4KD*-9s(gs zD+tVFS+RAh>mSqZsO#JaK0XS52O}`sLbmA2uci`(i%j23xq>m3%qNj6HcX6+klfka zM1N)8zFc9$D~aK@!#nR$X{tN`RQp z&)0hP%wee$P;}*O`cV84Alqf_Zxp;W+mf}_5-ue66$IlkK&G@V)iyFzvZ>-t7lr##SZBT`@ zrb3(G1PC-f%K${f%cYhW8*8(s19QO6!kTOL_6`h@a8aqXan!H9n@}zR2&NeL3^bSl zE{xrzrLt4sqyb_;t)ojy4M&C+2eiQ$7^9NZV*2{?ost2v@vG#j&tkNmQDTRV0=k`_ z?{gQe^)@Z)jobcUM#037*gYgI&dIqBG*|8imIl5W4B<%uK{pD5l8)|Oh_6#LbVB0c zH8gAi7XV+Op`j?Z9(;JDUFrSLsU<*s)v}AbNem6AGK6X_WEG zh?a6H*zlF{aEknm>swmxtmi9!=LB76sg0*w; z=0c~%Zf+1xl#`SCb8m2_VaT)mSZ9vy<<2b=CV28xPE1S(rlCoaPZlRv*lq(!Pp!*0W(S4ecr%Erta3;BM1^EIjx2$99x_dd#0?|QpP zu`+(JkK`bfHN5hARaY1Sk$T@QW$`MH2?)RYH9y5dH)z-w4DW)uDE2+w|H}n1C-X#= zgy$^WWqC3+Cgwd@5n|*U4Q~E>3s1U}Gf9n0QFHB)3b!BZ>^@;3>CCwV_p;x=T~T#< zI5BO5Wj_J|c90cKZQrysoEcv6BBG%|OK55%aP_5;k)pUb3~ifd&w6m-WQv|FRReok zw*S{PhKWfo9UY%DXv*TFVL*`mt#Lj{$Q_3|4V7#kb=;^(wdQps#bDR|D{{S5=)Fa9#9Cmrc2Odig!_Eb>w zFJjmJN?Yd=J05J}6_r+HO&vzno!x7sPiE(}!vFpqEY{L@ci`ANw5eJ^fk%#S)aPkY zett&TmGzm#^_A1q2RY+Klt1epdhC|_n6S) z%Dd6vM)dQSTtbuH4sg%4iiB{ zw`s$ATth^kH=N1tVMSnKEx+h$}jTcGyJZV%9 z3<^5>Ho#aSCo9YEx)EPkg6-}pOC}1Ng@lBdl2S{-#EoZ-vXY(M2WzIxEJbjDJ0Bd| zyt#|^#e`FGNtQ53AkBW5zP1(#8)~N^GxcGccZN5DasS< zdGOgvLGkTWX>+?p)s2(I0>BP|zFxR@+y4WrGobX1^}nQ&lDxlv7O4Ix#?07rPbqa1 z+toD!noej&%Ssl0IT&@e`%{)%MCN2JtW26(S(Av1<6NF@x?Vq_W`o3QGSN;;OBe#A zFT_!rY*V|-)Qy=v3#{7S+V3$CZ|O#-fHwN1BGl8zr>3O^W9RZ>Z5V*VI`n^(JA>>==IpTeM!AK@QpztthIv8H{DfinyS2*p$jGVI;*%J=kUclUGb zw^Z?PHPF#p8$2Fo382wa0%X!z~$4S^TKff}ySNN8YU-Pft9Y*Gw z2adVe_RqEdd42E%#KJy+m{uX3&t9J&G}YiM+w!RXQL&tnoV@zw9nBBlJB*C_xtkjZ zJ)&(xE%=@{Kk4v1pqtD}TsvaKIHP;l?qY^5#(rE^|~Juk=dg)j-w{+;mKf8Qk` zmax4K^!Ehv&gJEO5ME+KENi`S$NfPCoQDUX+JIRS4zGQY)`Oy~UA=g1iXS&ul&PQ+`#9h!8 z{KRu5Knv%iOYFQVI#f##)aet(w}dAoL=`bHF$52|JHMm6?cX+%<4o`f`?x?!Te}y) zLlDk>uUIw!ze4h3%vg&`#xL5RU$1}-XJa!}rxo%9=9|YZPnJ`wvEzC#!Ak*2J3T}6 zrWJ%(=&J{XF$GWTw7X9L0b zhKxS$;%9reLZZP-iw_6CG{msmjIuy1v9&;i4J3XvH>c|He&hCrCl~+soOJgvL(o3C zElUFsx~fnt{v{4Ld{`BtQ6PDA-TD#J*eHG5{{}*wT2~L0HNG`RGTAOj>~|`5*@BUi zv<$~3GWXDKI$poQ#Od>$x~IoGt$EVY8(W`f!=jWa9)CS72#^q8Vqq>!<^B6GbTNVD zIS8%*vaI^63s6WZWCp@bjv(>%@%9|thF?^zN^5JgR`y1;i}I5mZA|=H{#x^VQALsP$t;JU=h(&s z705^K-cEXF;c}anwS=4Tx29yL3>+Gj=0`v+{kbAXi`|9K?*I%<%TW{}KY9ifA9Hd> zcUdKhM+TyTA_4tx;IE|!etu0oxm$L*$Q!$izN^19Zy@Ub{Xx7vJgjsJ1J^X?Ld)RM zaVC{FVZeyfs$zU_aPx=BvR~@Qc%T8+@zU6mk+*8|yLtcWAchc3xSg8WW4^cD!Lx8B zOog%p;meHoh;t+P6u8-m3YCsdu>d}__i$@mQvx_Xxqa>bOeE$3u z`aIh$oFVlfm-h0=mR(o(rYgw{QG9~A{oKBwE3;GohjRBFCs0ez3|Z~@fJLgi%N!lO zTUshFIn^4#iIm6PT532`-@ZYKuNQsXJu!rTTW=iZ>OjRW5moSo;_P>)3HZS->n(?g z0<5BdU~Td5mZwyGBoa!4$6tLp?(%V0_w>p8+0Vrrm#Tx19!k23@{dHim_?e$`>nmb zKFBH#SlihAThFk2_KgKC$NaBV_mKYoVe7r4x$eXN@wYn^nb|udTSRt& zAbNm-CJI`dPV;i`+5;mzXn%l~j}IVmQ&d!xZ|muWF=vvVva*q-Wmg&`0k!q*OlSRq z_K%g7RfjzRGLVdZAZVf(XG*80rna`;K;aFY&D>vrzZTx|X=-ZDTv0ahPrFM%4*(2< z7XcU$DK$JW0Dk73F9DK*Hj7I59mJd9xFw08M2rW8^hhpB!oXOXLq-KRmYW)?Bq+hL%Y180Q3>lx_mu7KPDs2azB z|9xAKE7}VARaE>e(q)0<%Cs1@bG2q!Ma6EIuw1ggXn^xrR#WqVy9Ycw<8prK>;kCF z+7{kc-=d>iIXTDGiku}UUjSAmNUKp+_7Vh;q@=B;a*VM7pFbyj(^6VATe zU(YWnkj(*duUhq+$%CaXJPg#s^TSnu6d?cS0RooL9HapelaYbJF7$03sJ#8Eg+gF$MoX`+T@F&c5=R6<^k9ZMDm%L zyMBJJtgT7ZacO%Em%qr=kl^h&|G1}lLqKkSL9eog4-Oy0{Sl1=V zb8K_mP=+p}TUN(2{;h)mg!XzZygJ#r?ig}lNShl8mRn;Cim%&y0>0pg_wY1ZIo|Ee z@Us%8L`VPEwg(Rt9`D_@y%b)%AaN5>Q6!8uuvLam9;RX?2942ialPH$zQ$*O>;a$% zZq@L8;MM%;E6mMJh>eYnjQpIN3x6KCgX$U@QSOjS1ikU$;UP+LY+@n|82~{D3UzXE z0i;`W3z$|s7;OMC!}kKo!hfq*>jaHHw+1pY`M{tLSOAktq<`U2zNuiaPeB|2-v>kr zk*>Oi=Htz)&>1EcFvGB75EMF2&R#-7C111g?@<|QYJzd;v|!aSse*#M;k+P70IPdSr5hA~r5~rXS47XDhM7VSp%(QkC~Lut21*x+!YXg@J(c>0Cv$LfQ*ao) z4-3OQxbV5Xq(VI8BaFZ_cWdivSOZWQ z(^s!zz?3y30~^7?%Nr3MZct_-u^FY5{wzt@tFE~CG2+L>1Rp2o1ODQ?JU*YBcZm0O zb#;(oFV0Alno6J-&r&J^7-mJ2x0X> zpt#Zt`tYq({x+==N+p_W(*!ESK>8CeEMRiMod-2>wJqlDS=nAIO0{>%UTR{Z>&-ie z2C4&DI25`7JY1=NRI5?O4I5kAp}ab_Zch_rv9ZBK#U4xNT!yGBycEm`N}Hj9y^{EN z6Cf*UDH;DJ9=5GdZ1Q_uecN=Jx8MvVe57snOlm>0`(YE&L-6)UPO+}ExS5!c$3O)z z|9#{Wa8&_1gkghr1L^C(|6p3&JauNfn;3AG2A9y`by?Z@>9f72l~$AMhm5MA4M?3~#(ji}?KwRTLC3?aYZ!H+1^v(|g24&)Yv3pKVWX{rNMo zwg#U#&Sg&72L-M=Zm!|0zY#1@;@3EJd95jXspyVe!(`H;ze%s*?BH()jjk>LNmZ{^lob@NuP?2C|9*;u00JSnRGIfZ<8{ir0aCWtJH4?YM**Lk_9$8JH<~KSmKY)2)FR zgZlMjxPBkt0g=M=e6(N_kKyK1tu+FnLLa4}HGcR>-IxRC!$TFr`QPS__mI(kmOp09 z178|BoZi}d4;hW$i%w9Cdu|ir;z%f?>57SRJdcWvB%S4-_+{j0vwC&IcjHof56}M1 z`_=2Zl1qo_$q_9yYwQw6OvEzj@0vm>9x637=wnzIlFPqDGDJ+utaN_<-W& z- zp^XiygauDtF19PuW>JQ%UJOUZ;_vTILPBFSmqlw@>Xoj})S1oTuBy7a&)UGSOiZ|8 z4UVxn57U$Vyo`)H)z1o!jvUm6zYPtUfOGemiZdfCtDpE6{bt)KO92 zj5{J=5nYy~uO^W*1bHQ8+8Cir5D1N9&sSKmamuPBD$3^9vJtGNp{=cDFvn-1 zSk14`T-iH+Tkhv)?1M)RM*Ex`XOA@)Xlc2eH%_ZpBB@_Qs?sqr?IA=^r9tABh{sVLtX+UOJ-tXslHlL4 z84gzzIFn$uY+<%sY@zsf{|ts^VEFt^t7PbP1^l7=_wK={q^uqMaiNJwh>Tow=*>vS zrHr^eSOy+^4=9#^ZUFjS&=v>^%ZZC452~#lJgvPZdM-*L4Sa~5S+c?spP~NU;W}qj zG_=4H{ql{jt1}T2`21T94;f!iLvKP)pKx$sb!MYt_ulxdEwBNTtN{b_HaNIzuH3@j z;b6ZlP(eezMw5VuD8bHh{fT#j?Ay|q!a}!PDOws%s%JqWuC~q$lTK)83!;YK$Jnk4 zA_E`3p5Umq=vR$QskUuQ;ao<>XtT65>+XImDY+VT2@d(+N_?WP3nL@xoR4R>w|{38 z?`~eIs5y!R(h5B@kqn!fo{+vS8a|V_aAzQml72T%07MY4Iy=a#wAwfojygGUfrnU8 z@zj=WuHVoRKX$IgL^LXDo|R1~Hcp?Am2Y+THc8TYwOZv4L~?vJ>nVQydW%fE$jV88 zmXFVVuAv-0OHYC!gc$(9bshg}VBjfylIiNZPUi|b`U<2XHv>DfqI&bL&)cdWVg`?N zn~H56QN_theagV$cXmPkRuMa)Qq0DXE32kf#_&j)O5}lgANlNT6b5R~IIl}v0Lhkv z8$JTiDx~^f4YXuDZ%V7Hck8`?0|Cr@#SCH4CGNqF&(F(~PaN>yAqP|(@i`}Fd$L@e zz2sCv;+V_ACH}4W`J>o4psr2ZpS(F6D?0tV2p*SJYpai{Dl3=Xzjrg7hpg?Y<(^~P zxeCedU$uR+^<`4w&!#IZPlEBxwco6|5+Sz;x(fgJD-l7VJ4jTIt#`JfjvIVypPrmD zsi?t17-B4i1wp|hqk*Lvad8@>F*8&#Xzd+DK)R@?zXJg_Mc=ac_=s=%m@tH)xxr0h zq~!8AS{oP`02VrAC^#Ig4K{N{p`w`K`2B8bbYzH^w1#5yaDOs8fAVE3?y?px&JRj~ z3VAs>v;OoycJs`Q4Lm3PBtJ+GDMW%xTr2qf%(@K)uFu}Qow>-!kk_m{`!jf z*3R7Vvl(!rqNgVe45&L|;r?=ifQc;~O}n=exJA2U!;ruQKYt_7IVwi&csPj*s8kiI z=>C0~pFx9s{fPi?P{!vv@MXC&Bpn5X#@)br zdU_(EXFNw#VUM!2AUEW6a#EwNuI;gbp0zno{%)%!D`ADt?cX0iJ|3>J)su;*#cR5( z52g6sO|Y~+m7ZIR@a`OYie@QPnYL}JS8NUD7Cq97G7PHRK8L`_=`zx%#xBaa$wNj zXv&~Llw|1jix1E9Mn|sP69GmjtgHl&wXnxjUV9HALCE3es`yUIKSsrsuRdQ+A#3BS zj{mGT*WaPV0Nv*3XvCn|#ns`!5VRbIK1sSS6?TWWNlEiWMbTV$e^HyPJ;RcRzwUU^ z;gt$UBc7SrPa#j=tu1ph63hMHRY-S5tP2EO9+y4>ALX00uX>te11d`JVUjpL4A)3~ zWH}4|JBu0I^%pt2ayx6`1$eX?~99-@V`m! zXnrlNMtg@VHhFnCpNCO&bwHkn@^Gzw_(Ml^ety)siT1qc!_MGOoadefKpOg{S+tl1 zwxhG6nFD@)w-jS12g`j;#p06ZkKXbX*4GCY@06wqQmriM9iGfhEcYK9ymuQyLfS7Y z`xr$FE~GrmJp-HY{K(076jOMHdaSb&iF0S6Q@`HUm2j(Ju^WoIL*y-4@GIihfVt09 z?5U36gM7$({&O2u5dDCr9tlP=;+X?axe55$drU-`m>%85PIfte{rvfrFUnu{uc8Or zx@O?DU~EkBK{+KsOHF_Fr%4L}1NT8|nKn)c3U#1ynYMz0KV;X+$T$mLy1#!wo?2m{ z6q!D^Wj$VaG0pc7A75Bib?EJ?;#QWFA^fFsa&DktRq;>o4vC5yo35^>px9;8aoRsv zc9x4@yXmtsGXpK+*^eK{=>Ao&qg_R)I98hwoqLtsETqERUdl)It1EirZ=O z`j)M{hKj21^f)&DfrwW(C}yzZS_Jpk)oz0E*pX4}F;Ks?&A#=#Y~~6;K`xb*g(TQM zzy7TMpk`OpP-zk5o2i5dj8*Uo$)-i`rjj!;8B7x_TUa20S$=WxFEXCr+NPZu>udI!k{Y=x`r?wt)eam36&>_rhE4X9ipQuNY2h z(px$TUnciw>{e8r=rmpFJpZwB!=w@FJ2cKgT)5h=CL}b!x}*-KM6GSF+M*xT@saEB zaU0r(bIYFh z00p704h^9IpGKt+N$1|OT;_+CJgVChI4Jn|2FF}L*JtAEThr)CR9}nYa?Xeq2wK;B z=u^Kmc_|7*DZY^tu6#H4tIl615D~enKbzr7_W3ggY2>eBL06Mt@q*yszVpNQ82bFf zX~tNC?;gh^`+qgaDRz?*^^Oj{FYDcb3|&eboZB<|@1GyqwtotCaVhTzzjnXlnK3jq z)#UtbezhM3&UhiqMbEv5!cU)W4`vm4J$+!Y*ODF?=$*ATtS{$oiq36MBD57swRqYdMn?bvslB_dcw5j9NybBqz-JMY{ypNVjwK1>) zz4nacl#mziBEh?~=y!Q-iCI}%bADpO)7%U4926+apt>3!7jeJ7n9h-7fb!?;#71`{ zi*yZstJmQ#uOT{T$3rq+JIPzO=elHEaL9J9`38689336RFlc#Sdo0fI%QbnbJ3IHT ztnjL;%HFwCeeyGlnaL7#5baeqhbjw`>1`R(8n0*xoQSW+XXIgb$pq8vc3s2EdWet_ z7gay)>7sVnP(Vjl-P%~Wy3*k)mq|_N?JcskvRYTo+}QtX`r?HGWi`;kWaWatd=Xth~X(Ces^!K|Lk2thb} zjLeo{g7i(RzAj~93>Vc8AR`fn?AE!)5O<@w&mTk-H9CSo@mZVnm@x>CknpvY6#>qV z?-nDan|4;#OmwQ7O2a<;`zUS=6A{g*(%ECDyN>MoIz7w7f9@f-G&PmoUg3Ss%;d05 zb@2Aaj6u7;75yDXHr7zMv%vs4KK*IBMcH)De}4RhJ0pgncYsc)+vvX}ugwMAm;^0o z>$NHyZ@GBA@728Tt_2_<1B@H{Cf#qKXS!xKjE`2W zv(Ji1PA<&Ic!e$Jc6%cT20bgiWUfwQOYAM|xf_O0m=Vt%xzdCbUOq>JbcFne=O~F`0YKS@27a+H-?tr@0?%0ZDuVkMeEmxx@>7DChOEW zEIXfMbwreCmzmJ?hpubED|2t9mHxK!+f$j3*VrwU?$X&nNo|zR+y11PhKnNJQK|E!=n-3dX_ zuYKTt?vP!3zT~*dD#+YV$^U(3;>@>bo7MGH;#q0-Eu>Pp=KI4)8U^`{WE{2%Dj^QC zl$6Eg*}KrNN1;?D4jZxj{pRyu_HfbtZ@|t8TCJ7k(X|b%O}<07xdw1d#^&N;X=vd2 zemQo2F9d}`l+0wb+<5DduHGSk6Ta3@A1P2`O{VB437x( zYf8v{)*75b?M#6tvvC;4;t~UtUUd0rnNKgIx@I^RsBMAJrHJkkjt^LeB4x8 z>OEFC=Tw-ob8i;v1Nn z+F4qv{LsR7cB#BE&M~q=OKMpr3^Id~90~Xk^o8c8D`p!D%ax7Q_U!Bp=hLNCvwJB1T$Pm&uG;Uq^K9as{Eqb8!6DpRV7laVQuA!yKD!Zl^r(fnO0V44adJ zWBr+1>0~e4+cwl)DBo@-9(c#zfM--~M1Kbq1ZHOK+uIh?lf64`C@)B29}cB~XGy7c zWLeq2-d<=>3i_=k=N|Kw-)AoZ(*cn-tT%7}8wrw(%CNBN_lV-aA+$GBQ;CX-Hv$3$ z^)4i*Y3_cMO%er?p=YNNvorE!0_uR{(p3J3fMDO@;hv=>x=6J5{{CR@)u#wSNS%Gf zQ{T;Ob1yT56~NmP(%ASCls@0Fw@3E8toQJ+a^0D5K0SoT4~2pC_!tYbEISQ2`0Lk$*?JcThvt*}K!IJ2iwjdx@$_~s zq?VQXx9^EH#OMef-UD-=JM**}w;N1gejFT(#>6aZugxLUnA&3G{0RsIS6A)@{_U|% zEUs?X0**a|B5-jMJuVbwuWY`9>c{_XLR|*UXKTWdCdy;)k7|W9aN(5mZ9aTJgP!MG zfi%#Fu+gW+eALNRF7DAiJzkPQ#|nJHmEv@MFg2f)&u!dV8g!4>!UC+?N~nb2Z2U3m zlu)auH3(`GnQyS1rIOvc`}E4b0Is-jT$P{y8U-9=B*dQE z;HOXYE}MobD%W``=&8*n&~Gg*KN4&tgLHwS0-9reo3oAxcirka!{)g^yUlFM*zci8 zBbJp5sja^|Hm>$qPdntsNNhnUC+8<%L{ORHASWd$z`K0RJjzu={Qy#+Ww0rK5)q6l zrRJTC8?q#@XLJ&vQNDb+ABbJ;=Ju0ZPy!GM0^zRL2H z&Oxz0HXB>+mm>9M?D;yl7&IO{n9pSj2?CnyVs{T&t`e31GaYU1+u@(!Ne>>fY3=x} zZCucL4oN+D$HbI#a^k9>aIBaiDa361-D>pTIkq`=N%x?4co=nC#ezfoHBKyV>HS<- zkrWh|6yz8_-0Oav@83T>8_vCojLaSwa5DWes?2$WF{93GL=x!1SPZ zgC+oH$98b84@PJBq{-gL8yBPBa&I<J#?q&19<(*k}ec{6?e8h@pobFh`JI$CR6;R*R zpqCQsG%`Dje4K~M0x!vNmFBCWP_0Xmg@nZLWcjz@A;nZdi!SGgPra@Ff3v>0+(%m= zWUC`4jPGlYgW7ehuogrumwO9i25#zz_qx?4i+}Ii&Xh`8`_}$PMWZ3jEwK0u39$wN z?=8`hIFd9PLqm(uj7CXISQRA7=RwQhK*x|K6GTkkRxyZLcr zwX_7Mr-LJQC+tU`bBEQ4jTT0~fD@M$5aa##-y$HS1o(6bY{TW>InV4h-%veq%KKez zA*h(J3aYmXuat4l z{-^^*8G*ReGIHdiKmhMrM`bXm%^1$*?jGDI=9h@)?)*_LM)r!g)Za7GvS|SgUtWI1 zpty8EmQxgFY3HLQCN?qcnH7m6P!TQ&ivUmy0Hf>bR^UHwJr#?xq*xw3B2Y+ikyTYq z6wBlyE)4IFj(z~KbZ!ldsE60vA3J=S?*_Kzed{qUBbMnhBzymYz8cgX_yQPhm6fLS zcvdzxuQ(o(7Bx1e$>egaJ4r%(CW9Q9n#9KDRa7uePr|p0iYJUoNFe7FS5;Ir>BK=p zL4llrU;_*RR^|dft<^4F4qP@3~gS z=VF1;{f8C`-~GQ!f!NK^F_UmTeI{fhFYn}*p#eGqK4+`tk7#Wt+xNS=VN6q@p&Yq& z4Cai>w$m%Q`T1L$*5iUq8DnEE7OU@>)B@~g1xm)vKRfxdD~`I(A}`S|szXT_DP832 z3q5n;_h{sslB<`>%6AcG`D!^uLKSNJ3gY6w7TX2%`g`G^19E(zf9>bL8y=!B?o<|r zYO4%t8_fOt(vT=9rXL?w0W#ZUM`vdc2;#argJk4Fm>8vtfyFN%5F%?c-RM~s9}jL_ zd-Oxc2`BYQNSmn`;(Y@9FqntcxfC@4xD@?B z;MGoosAQFYphaFmcTF9s-2}&-YgTMc9D8Iqq+w!7E7dK?-&UA_*PO}Tv=Q^vi$eml(DgsfB;zd<}^{VbgI_Y zOyVZ@qomoG3*_Wk3kqncsgMxwYijlY#OdyKGc#Mye37G}o?WKRx+qsB>T3!&)`t(l z03gGA!xd<%X88XHP1anyJ|p}7nb2;{l0qvnw1E3aUf~#YN)4_}a#Wc)+(*#1@m4>- zA3}C{!e;M~Jb!4*K#wQjvUT3*X>V)$%hoo;W0szPG?^06l}+owKKnPu1nHpDN@BdMQ`b^Z z04q-*CrL_3TqOLr3m^>;6zt#D)SLGf0lIJAOKRjG3MZ$Pl>@m|W^&59hDLS)v#J7S ze!(a8mol*abH2uFYVuIC|BZN94AeFgY3ZQ=OfKj%&jj5+wqQm{V`9kHz_dm>J2`PJ zRm3hhJ_17%{r)B#xtLgr%2yPmvr#JeAYi4e00vr{$jQ!_H(k}+-)aKOp4_&G|E)2HHb1`x z2?+sg5PtqqWHIictlTd&Lgt}ETa%Ea&LtJDPRy^`6j+v;LBq`Kw3`lR5K>i@D}WY# z86x2EtesXh%<%QbL8*DN#Ue2G9bdzK-c{;m40F(;rTp@UI$c$vUM z|8CEIe|Sm2-gqV;NtVpQigD5Zx#)k4(tn~*;^Uu9t@Q_pWr8|%8%{z%Oi)nr&3fny z4Ml8b_z1kGkMZF6_4CVw!na8GI-a$5X}dAF906KIzpyagxT%w)^^N#`{E8_S$Sh zje4r8*?$L8e*KDHS~9`LCbK1xr>UHpaI>~z&Ja8eG@wb6XJp8Q5d;)+@I?c5O)W;j zA@^YbGCHLC5@4^1GTB!h%%_$%pFThA1I%%*kvfHEw$^*rxIX2E=8{(HOK`cTj9Rk>9!>Gfmmkg!K@=C*j>B+4rf z@W95Op9FB47uv#wg<`L4@r%H=j3YxSBx2^c@K|}ckWu}Z*w{2*$|MWxgF-B)YIIaZ zGHfySMox)+d{kpwJCc&*95b-3FNHUrWsEavV5QglDQVmE^ht!(skNnLPj`X5EVH6K ztD-a`RNR1jK>H~VsOy|}Rq+l7CMF7HLiV4x6ZeT&bF#%#)2{Q?FD{Nz8)nkj@rlN1 z7Z`c|dzVjvk4j^pOMS*K)t`?04f>vl6u<+uTkSziHSwO z5PPt>k?iaon8s&ZWzzmrSc7L>EjD%!>~=*wd1iXqzy@IH$TCFHGXDMhf6W{~x!{?- z!z%;^aEsrxvcf5JpLoCXiCDr^K8w5AB+kFsQRn8ae2&8kk3#K*G|to3=#w)RrngrB$nDk(tO1D-@ba)14wFy$SMOJK1i*f<2*C@cr}vW z7D4_bjnnMs+Tf>mS^`jj0C*l5i8EKuP*a<9^Y`AisHCVU1;!mwQF0i$m^`rxrT6mc zMPo5nO5~82vwqEvOscGm`qH8rq%pwS=trnRa2lH{%a=Tvq;=CCPrc+9%@ z^y?{2P1W5z?Zm$pmuU|qaV=0%J^?hu$A^a5U+iC6`pFvwfY3!mNOQFIaxP0Yr3r$? z!N`K+y`=SRvzi7wW6)oY`6x+ia8!1-e_}r0W>mVkcn{9=g-`i_U3$8E)i{{x&ogZw zq^+1=B(VF#0HC9Nd38k-3`X_!M{6BBb|%Z+x?^!0V?@@iA&44|2c=ZE!LeU6wT{%y zz3VR^zf!AkV0c(9gTpwn>O|Qd4YySIo_612wLT+bLsnxNV8Sla(yH?E;iaWNhH~(* z$h8G*raD`Asoo6IZ1270mFlSfhnCp4c?{7Vv*}(vzzY$AVo9M^c@LC~_rk`!&%v-zxsvKy2vF z1pSX9X$t~GM%AR1K#obUOWY0lY$Q*_ZcgvCO8X#Fvcv5{*j%fAo0*ft#uJZ&7lTKU zrlzkDosf_!;***-TS&qsdD7J!R#Zi5A63D<`>RtAl-o>zRe z6|s5w`AciBA^E$X+U!Xu4lb@<)tgp${1DO!FRwUMi4pL1hb7R;Iubq>fAryk@FvK| zW$PwObsbJ%=^bpuz{m(Q8(V<7H~|r_dTsxl)hS0(i}D!1x1=dE>}gRMsF_z8A(_Mry26Rb+$L2<6##cxl2d*`?0aAfAD%D zk5&)>68G=dyX~7KM39n^%{TiP%H-ci3PSn-_Ss;Wu(YglJ?AZD!*)LU4RY3pqN6{> z#pNWh4(gXn`rsrOIH6&*!A1e_yUJnNRCk)BuMg=yQTpk@)S2L-l{|fgm*bKtRh@krmTgCpzSud%so>vwBn-D_#EK4i4>YDMX*^1r(*0z;0I+{H*liU{Q zqvc5}+_bkbnx~fg`|iaO2OS+_s>{}B}c3x~-JHo5l3Rs#aDcTow{h4;1RVerNQ0Pw8d znk-*{>)&p!CaZ|;+52(!Cw?to2B!pFZn=4fp?7D*H|_rZ+W8m^@x(Htq>I`DUCGX2 z^a#}}1+50OA?Ww-6BEBhx4p)viP~6NYKED`uP`nj3kvVS8F_4M@CB#i7j9CPmNshf zwTDDF!y094oR2egZ6oSR;^G5?`;;LlX@VB#cMU==`FU+;a0m!0tE*S5sTr^D5#GPJ zs(naD2ke0uIQx^hR$yq_6R$u#^GJ<6uYhK9@;p9)SNL6xzYwpOq~ukLUoX5&V2mm$ zu>*bTxTHyVe;??6yAYw2li89VLFuo%r$bkipHF}ocmhT(@(GbR#@NV(1sB3uUu$ZR z5I-^nm}#@fegA~Fet+_WpUeF9RiDL!0Ana_$*~+4S`ovE#+;dJYi}4BZqe|Y6;VW49uDlGi{`?txfSHSNv z0dl;pEhQ0AAo&2)@Tc=WFr8=}9DKsYhFKdUnMEPu{SHL^kPHq~ej|1bL&J!x%il>{ zz-po3H7U~uPYNC|8gX)xS5VmQqxA8)1?GL~Gxr1dJ)OyulapZbe|~lD2qxwy+tUj2 z@?exeL_pwA-fzUwmo8KfBQ`R!6wtmqPJH{Ts&6~HtcrMlaNr;)SP$xCgL;>+!;4fy znOFmaDDbIKfPx^O_||D#r~lyK*Q*ZA?A(mKLr3jKj}59#6|ZyE*Cq~8U8WM^H7?0N z{acJu(}>Q_`NgFyQWEvRH);F)J6vHf(FhF#o29Rg)26Y-3zcgA+2;ad>affnJ(2){ z5MfAE96?C|O@3Y{7y`+W{SyJdi~tsF=R<=fdSFkr<9e5W?jAn8hHy9N+FZ!9hx@yF zi-bLnCYQQ8Y~H*pD3E4QDwbCgS=es0?}`?kqaO}FKkS%ow5Gz1s`a|0+SUT=iowxQ zXRyBodl9f{nXY#&@%L{B4x(m>K^VD_u`wKafsTx8z>}D(dd;-Vyf3#-^>cb!%%2=z=T#|CrnJIYI#e0skWI0|LN{p))x= zJRB(Yps3MqaC?I4XYc4ZJU$Le6nC)0NBrpShD&B@aL^vK_Q2f*&w|Dtz!;Cv$3Qn#QZlEVT0TYYm%ks>WIN9*`CZF)|L096{P@&(XS%e%;a6ii!{O zlKUAG6Ada^C$^J|9j4#UY~-jA2y*4#0lFzZ zI*R)U46{K*Hk$;NyTzb3DeDEN4HAqtR>IBMdRK5o2r$0qtFErTxVQ*z3qRZ2Cs!c+ z100@QtBE}GAFn&)EB5PDT0tJsh8dkeYS+wy&P=j(}pC2swO z^@H56FGu$b#?`6yy|<(Z;-*kVOJieS!+ysK#3dxOva_J^3zL;4<*SZ1H`h!~Q8J$o z4enCWO4zJS{4WNrwpM6pRAaWv#$Z?T4+#`G(APumXQt{pJ-vXa=rr`UVLVOLzms#^ zZ=3!GV9vozt;VJIQ-`0^1safe5D04OOvPI;a%X2(Qd7f=xD}>+ZfH0UCQKqCKED&6 zI5^CU*utuY$C_H*3Br+wog+u}(Gt$i$KWUJ@fvKq2@#MnT9B8g*XY5`#dQcwMlc}a zz*t>^;2OK3Y#GFRIB?*BepgR$s>SzBpL3;<0L}G3NwJ)330=1m6ANvVM;sx3thTZ; z^rDS!WySgH$X?g;%x)B>BV*Cq+q)0$aRXr?gwXPIi3tX*xr#+2!(>&icG8-f%SF08 zvzSE;I97`3?`j=$2Mb?j)mm|PEB&cdlc28#&|<Qa(*r_&{{Ub4P` zugo0Kr?9Ame@?nL0W0YFNWz9S)Ov1bZ$sinZCp=($R&(rI&V^dR|egKV6PZ)8t|HV z`Ev5>SNfAQQwJj2Btc390tXL|jMKDp|8Iw2@yrV{u(ClyfK~?{H;8w5czJIxcbj3+ z-$g`%C`UCvEqt}~|DNLeA3nvN&5n;5(_jqyDX3H26xY*<(S1|Gm3+?lCo48uzsjTJ#qIgHBii0!vjsr?;lixTN zvcK4-cJW6(2q~m7<;3(wVBEn#^<(sjkHz5^hfU2)eQ#{&f14oQ~-D;L*i76*sc zaFk9p`{aK$_fek*;(N0vukBc2GX(oRq7(P^tpe`eK$oTPhKh4Xg(a<**S0~!*~Sj# zJy8y55~SplIQ_+G{2{jx5ZO-=5&f6+ zR%(>}25?Qhu0{EjR$PJE4W!oic*+=hOziuP*BTM%#z(K)VXS+{Pi1r5bFP5|v+cIF zJ5Asi#sY4KU%3O_=@`9`cWE`AGUeZ{F(DApBmwGAc;AFW`}_Ar=mdbbJ*C4LsAr(5 z`G}G|;AaH_ks(ZA#F01`%*2s207Ih6%0K~u6IGP#-MnJ@^NU|7$Um#AxwJ~s7uWa# z58W*Bc>)4n?aVq()C>ZpQ?I5JHB5^d81J){u6(C`k-V8CRJ03w2qk0AvG zoC2G{9zOoDK4g`mBPQyczk!OYs){E~QL6j*WM^lmo4Y&w3MQ3s!I#xFbReu6cm>hzZ1*gGA%4*g`)&KAH#{CeEIrSQclhq z(uiniXoTiNFoAXt*ImR_j-%+h^h=T_PoE00vI?;k0Tct||LNITQ|MfgK6sPvt_rfT z+3f6mFg7On-`TSFY8@Rl^}EZe|AWwEnQL8agbrpecJzx&?6!a^D;4^j!1f#|!ny_y zg)-BwM<>0BiR5NxM9gtb4$GC9FZ69}yh20!+BoDNjxe&+!#Z}U4o}hjvoXp$$%{>X z?`6Z8s_R|HmF_rcpt8HWk2ZRGP^lQqxt;9|FSNOCZcx^~rS_H1KA8T3Bm<3W-Gwde z`gHscSO^d0yqkr#yQE>LZ6KuwL9?};U7&Gdi&2B;X?XjELBsqIG$hgBq%*h=iFe$f zfhZ{WBu@`IE^1doLPB~vx{At50zyL2H9G52y=36$=Vxb+D3@U+WO?!gT;eK*hef(q8 z4a$v$p=;aM#^(p$n3;=Tbx_Wf(LUrn(A6dLn|C>O1;yxUpHNng^IBV=-s8tW%KMz_ z>hvoVST7o21A<3SKKXr_l4xA&{1FGo@8PA+bfFf&vp;;$jY=so$g!DrX>Pb$1bZwH zL74XrfpYNZ&@t#!_xH+UYMeeNhEh`#2g{2i6@WyZ+XAz;{B@KfJL=}j>NqKx;Y7Ww z%x%6BJCkLN2lob0G62D%5G2&r*~p@vnO^{^D)jzu-k7HgR7THNUGWfO+(Z8_KK`mI z>;BaAbXZtD@=CKUsN?}8DZx;}ze%VhF3kRN<~>tYz{#|jn@ zg8S9(hpBU^7}Z_eDn3iKP%21uo2bp z_Eyj(i_y=aB$C3x|9Sl7<>^>aVrnYf>q75#&%WhT8`d4I3}$^aZZo|-w-}wO93J?B z{P??R@XqljP+{-hLqj{FNe%Wr$VF;fc7CFoH$Amwp3@(*KONl0rIoYcX^;+u6|PsT4$H#?hD|b z`L)eL0^xj(v5?)|MAI~Wj@%heest_r^<{*tO-v*XxWWI6@fjW(3jbLqD;wnDu`$aQ z9jC$XQphP7bg{11lw&sTB}C5WvQ=Amfg>f=^ymg;56a4mwT=t&^h-NUoh`;#q~+Uc ztgK%-k|I-dA>Zw-h|JlS&qsF|@h>h<`EhZRpf^`$JOV-}kdO>3q;;jF2sB=-aRc!> z5KAbD*N(iNy=0fqcqhz+2_v>)e-8IM-36`*STNO zgVm|;AW4WLzkV7J{eaT<4=_Qoq6!KNWvjL~o8*3&Q8Iv;9gXc%mmOYq~vUdBt-V#XsZeQ|0-_9yCma z+db-tc3&75&zHSgSZuFrR8tf)evvsaGxHxUZ8NCmoTjVXy|xo2#Z86XaCX-%+lqZ4 zqo>BnaywgQ1I%6(l-LjVN<}3w-BDp`PvPZ~{S`e)pO%?9luv`3d+Ef*+_gJ{1H-~h zgYD&)keSdB+MrM93h6U8+M7~qPQSpf18}GQ)bpOo?Pid(&1Sw(g029rSBF18hQbNV z8K3=VX(_FW|8AjFnw{MVFy+}l?5qTQg5589SU5RZ_-n<*#oxl;)92a@NSsv-4Rp;4 zWEk(Rb*gNpud8?@l_Q6b*0U}=>XS(!U=_Ryhk+|Hu}%%51w48TN2dl06Nmki?Xcz} zw%{Raw+;0&ZDng~&kju`=D5ey)V}KZ|H}%2N)Hb&1c89*p-Zi_galsjNI_B2ryj%+x&+-%hSh3D&v!!Z}+Cy0i_*e8n0e$1F;giiEB9`C48(O9HG+o zz}nyVg=vlAFYK!NKU5GTO7?C|qK%K?;a1`wH(_i`U(L|KNADfnw*}rk%+5jj zSW;?^sa*~o8HShxa)4gsQ|$rG@1Kjbqeffp9Bb}GNnZod#LNsYFGMUe|630UiDgo< z;`96cwTiD^g@p990bSO0`$9keDBTfA%0GWD4k#z=ECnJEoSchDNGTw%19D0_$d`6f zmrHn@Gp`;zb1ncz0pd?{RKf1L2oe%Gs-LLNE%10WG|cKe)y)5O%3UF`&>y*BTd0_LG6uNK(G#fEl(JE)S7*r(fs4N+*bu1s;W2-XW~YF1|m z&(4Wh2)l?X<217oS8%ZC5aTWfq9uDKmWCIciLoW2{LN;_lfmGdzvKI-qT)O7q!JTT zLqpN2sb>Hf@H~AC8CK+hEryKEFW$Y&EH4)!3~@g&73^2V0c9cN$n(3sC8=+%0iH!@ z`Jpcw-biZd4xl7&uN)+<7saV`!C+jpc->*+pG*k_5K7sj23`=5M)@9^i~v^pQ8dT{x2nskp5B zu*pjur311hP?qH76@u2Npx`&$?`f$k{VBZRFNp6f^BU(~t@Km50?7y%v2$C~LqjW& z+V(0yvY#vol0dI7Dlg;NPUG3?9rhP>)YKYKvgx3Dv|cbu)82Gzpz`_3w$FSY0&OBK>R9LbOCRF8*`K3nex#~p)$DlgAivXHKt zRyEaf$fTtAx#~U9()clDI42|}b@E96!+!nx^Uee=4wa$XQl|rq$s69aobLJnZ>U)B z<*i&wL7udT`*)zYY5}oLNuE{M!-=0cq~F;s^(O1XE%+$Opgagh6~ze~>r=e#P0pEI zMu+|bHknH{Gd0Xh#d8De=Nm|dM@AgZ-e!!$J9~F(JF`BV*%sK-_^wt?sU-KqQ~WvF zM~^P{76`e@H+gvGVE!iMWr)wSvEhJ)6#!pb4WT^`=Eaw+c?F-czm7RyL_E(k?SWrcMD?uFpzTUvJZ^R+=jP)h^;Rqr{DM1k{h2n`mKnwk)-7oVG#p!Xyp zh$A3~1E(b-@rWOt($)*D`?9iL(`Q3-ee&|G;bD*7T_q+Yz5LK(1nM-NH;H9NEqqTI z+g~NhuWgKW_9V~}v5z&n*<(f=w*G(RXvZG7FarSrB}k$!mj33FEBiLwV$$^B8m zrrXy~AsB;tF+-mIzOT`vNBPO5oFK(6{>sc-tpoV`&wK8O=O!k&sCU5SelDg65Gfc& zmQ`o;h8?cO1GxhbS`?HrYU;jbb>WCs!;z7tt1EKNqB?h={U5Fl);)?XZdoXWAMfNG zSX-Y0(w0V_3^Fpge;SLq#+Kw{Sy+^kl7DNbwY79)#eGe|*OP~LIO<_i%DhjD@vjTF;F+BD)ZpM0x%-vGxwlz4wDZaz3uGxvhqWUCniDg3B6PNhUS5h zTUM2BYa^7VKYg?Hvb#40Oo<-A901HRy$5O1<{te8(h}YSbU0>UDmp$A8D(-#D;3|L z#1-)3F1D=UowmJ3&kV4Ciwg)46aUC!NV@h|-{bIqq-@`Ug8uB5Kn=UKZs~_V1>y7u zMyY)n2oYMi3Y`!L&l4&Hup40l0nsa;1t%*&HhQAn4Rb`xVULjpaQ0xq#Prwr_Vp_M zcvekM57MLzEiK!Ydp0#oZkCxoGF~Io(gOc2flA~?Ohu);^-IYd8>3%nc;$AGHpHbN zyPiIGv8e~ino{%ouB9>1E(&}9zC4Rk*4AdAq2aTclD>NvLSmoj=rF&&_hENrlzVrM z;tbg6@oa}DJNmy9>cZi}z>B##PB^czXP(i)1DYrw@y1%7?d(Ri+rAl9Mwp)7RsYBF z#f<3aRtnoHBn0SUqyBR-Hbw&eSwjQFcUIMhK)?(47c{wCE^xl~_=5fanEJ}7szEmtqt6Yin*Gk#iQk zCl!Gon3+x5m?Q6HEv(glLZKMg*~O5^)walwaHTFw@67zEp%NM%R{gBH0($}?0PG6G z!rodMAFQX@ zO`IjL)|?&A5Z5c&;4*qloijZ+PXF$YKoAgo9|hwBP@-cw5`ibUF6>{S)Ttj-yNteg z?OcdD%>@U3@3?{8=CVj6gx35eM5agV@^z7(;PIK~v*H#Lm7~7xd2`?w^(JpNcvaX8 zGv9#q$3+tzO(0`E@tieOe*%OA42HZY*FGHH7~+qbsf zf~;oCQOiCRjT}^aW5qXN^mr4O)z!`5+y1`F(GB8=8mH#pgFAp%jDb=~c^er!b1kG9 ziIlUlMvjcC0;3A%hR>hJapE*{Dr?3Y)T+CWf4!xa`|j}_pY!+d2Y{skED<2xm09eT ziEVrjI)YwTCaTiy3~f;e4NV(#JAhjXyNPsk*ZqYlkC80xA-9LVT6Xb;!z++wDm+F! z%c{7JKu5nwRT-L^;AhGu11*70LQG7AKUt1(>8CP_W-Vy>_Gj(UB_dN(9iBZq1s*G- z5>?++tIE+kcte2`4-F{4{hsI9ubRyha%Bt#d~_0`VMe9|2>K6BTU zI4%i5AJ}rW8$Xn_^Y-v~6V)#RH{5f#jkfdqyCMfws4+xqo7XRuJWn- z{CTz|j0E^tOOYlPrl0Q;%&z=#bl9Hj9xKrWv#gDFI0!J~(w1?j$JAZP&X^=<2d<2q zr40-S2~cyNasytYj7Sv~uBKNHm)5C7&#uI&myL9XePHVd>Nm&}0yQkuhAlyY3(P*S z)zZ=!m7$h3ND^c~zGO*rEtnhFg4S0&V=Fni&askgA}oD*c}pN~td5cQe9YLM{}V!O zGm)BlehqPlDW9C&<{r6C6jf12uG;aC=RVTz@}eF1#Xz5X$V1U=XhMn;UsiSrOgpjj z#(7#g=?<{rq7peWZN_k5$~`_kpT8 zu1$P)iB_Xyp(8WXi>oHCEY!|hc(*Gq?>4!4UV#gD!11xm_qIq;AUlEVC-cG5_uh`^ z9hd|F_L{&UQ(MC}S0%`Nj!le>WX|jEU{?B%j08?G!8BkBC1>crurU?k>Z-B7H|&*J z)mLoi00wk>53Y8NlYPt2mARu#rvoz!9awx2lE`R-6yR6s-MP85^u(in zu?$eHz@&Wl=n)MotK;?@+4Z0+bvA^9d3pT$f_=X)6&w7eP=)jW6-m!)i2YcV)o8D> zdWKD@a?xVMDbM&!T>NWh=B<|;s&NTgK|Hm&Iq@(*e@oqu+T9(vs(ze!-7ZYm6?%I?IS4Uzo!I=;rD@o20S#jBGyL@6p3H6 zb8{O3hG_}2h8204`hn#6xWCN=%m(52!Exoj;X`!i4scj_GFijrWu#_>@X^J5juv4l zLjTz4Qxnl{Vo^Ka93sL|f=9wpyr|XQvofLvycf6s8q&^goB4&#mCzwP1h7Oz9?du% zlDj#6ySyS2-63j$0Rr%}S&(GGuWO0Hp!vQUGmnCT6yh7KuHV1&DJIE4v^YxuA>iLy z#|dEPI5=p8)BkL@AIXkn%-VASS#4s1*81Fz03i=hU8jZ&Y zVXyK*=;t(xQ+TWf9pRT3+f@8<)b>4(mhH8Ces6nTMnYYE6w+G{H}M8WHB%qy4s}?H z=uGrULB_(trhiJZZiCCx4?q$RVyJs0X-5F@15L2a=)c_o97@WOP|Pt(VX8tsPrEC` z%rE^RDWVzi>JJDB-bVTte?Q3mE_}uJgDYjA7a9W|dyxPI2IA8vnz&T`>`dCJ#nxAk z^R6Li{F`E9Rbeer9AM!p7NYJuOtkUpuK`p7tbvh&{r;5a!3NzIJc?<0z{FntE zX$KVYs{$k>HjV(8NwD*S!bZ}%b@mI;*;iKblRjFmuHX(0l67_0Hzg%eWKJk%RWLCn zNJ^VO@=bEyHQ#%GpU`FLLdVYA*jNR&c_56R$d)?LNM!u%OSuIJ17(dD9UZcV7xUEL zIM@CX1LeLyb^dag_1?X0ICp`l?7M3Y*#dO)Ae1A;ska%+`oc-V)Af^JS`ey}nQYPV zLuHigNfZVGDCL?O(Y0z%VHqqg&;tko6nSX$Ld0pI&H|7P^pdFjF2~j#Xu*n#qKb== zD=O!Sm{@bb9c6p&JU%_mPv3%K3g%+Ij)oBgsTNU^8JMq=3Jbg1+K3SWnVGS`8MIhB zhJ)efsODmp5COT0N`_*^dUW*jiOMMw(CV#5@$d}mmCMRJ2~zvO4DR&JbbqJnDDd!- z)58bOZUK7dcC@925#;)}#~RK>KUcfM{m967eYm)8D@=oC+N?SG;XTIUti&yiG2a8Y zxVu3nk9qwneH@iTVA5H3=2id>d*n1j`KfrN+d?L2ku5 zV0wsv;o(6+mp+4+DN|p)zO=ocH0v!J*>SrjDg~gE+QOcDSYY~$- z7)^G^eKAa(pzz?taj&I*^(ThOum>2tb+=z!Co>Szm|;41tsdQNaW0ILHNR zPu^ckYWgQ`R~Mg|2_j~Y9q8%dA&j{06BhuClLkuCG7GIkm&54Q^2$oXMvCRdeZNV8 zI9Q;M8tna3b|WhJa$;hd-o0BX)^9tjToi^H13CyXFLg{-;(7-|N25P{RJtP$v#uwb zO~ETyrb=gLn#2(dEG*X$KqNxty-Y2Gv_M|ok?RP6>AEs_=b_CURLyJ>b1z4oor^X3 zrQV}hdyUndi9i5=04_{(Chb=?VxONWh!BZNFjj#=mFAKFleeY@(!tdc2r3Rf^S2*z za^?UaYDmR+pSKfZ2YUuSZYUy+g;vT6tR`n ztC50|o}`gnwcM^(b1Gy+W#;>Sra!IDt)K-7}ZIw!(wM$9u~%#-&|khHs6y60xzfuVdJz z3-cRK*Zb`cYidcUs$yvsRv#VCBpUipy;vR$bgeubo~nBQ1hL6FcU!4evQ#{b>-sfZ zr=2l{kY;PpcqY%PIlC>8MJ8t7{J&g)fxTJHpI^N4)xEH<9@Ucj}SVV03}j(r7ULUnQz+)r74 zZn}6M*iumS;oaVseDbB}eJ6U$^*q((WS-}m(kO_pcvE0EVgJbEeX0NDFD2E}*lu2c zCq&%VN^%q$O7s%-6Y9cm1$Q0q_WPW>o@P9msMd+cgJ{kc+*cRYahl;19`Arr z8B?u}_Sn4ov%86JIqaO+MshIboD*-{0Df3iRiwAEPEvp()3!&CZk53ke03F$rt?#O zYJo3iMITY4B~9_EY_+c4dq$*wJM;xI zQPghhWOoP#h7(^25=Gp27v=xe%?^zi+wK>>px4XxTHDAn?LUd!N-C%p*VQ+5I`LSg z)>;Kxc%FOAyT2<)Zr$Setje3Ie}1xBVCeUhit|%&LF>zhijgQJrLq~HE|{3b$^Enj zovvv5b8Y4<)i6F?Em(%{v1mCA7H-@aZ;TQ3cz>~?aq;GMG%pG7!-w-fGsN6CDD-Rm z0N1YsSI;D+5LNy}u&svSxUJvf`g)_kf6u>xn|^28Q7AQU0j**sbd-8(DqCNtXNiQF zIhKpFq%08;am4n48y==nNU$dmz6w?7?6aixsHvlb2+dSCtGy3zchp?Wi6fF&FE3x-80RxQqB-)YC0~?Y%f}VqnZM zY!s>6QyaAUb7cN6P|3M*rTq-hp`u3uD007O&4RF8hp(oJYI zni(6i_4m`>e2lYW=*2VIOxll3~J zjYN`{;74M;qG2TtBDFOl)n>hnqm;-TGptt@$1l=gp$s;DnbA{$7M1JfG8EmJ6XkHi z0r@sjRF9lfWba0&q*PfAl|+!>Icj)Q)TNu@qkoit6obOUiM{_@L;PCvjNu06eai1L zo4am*hCk-xMW`<$5SsmA>C~&oyD8xj>UZfnHA@VafVQ1Au56yOwJ{Z|XGdBfaw?biT92`}@z9He3c;5Up+OA6_JJ7b1Ryjy3=5jTi27mkky>qVaWHS&lV z8tXrPl@6}mxlBXt?Nei8S?-&T)aiYqqEvoD(Jmc zDzUiuv|Q&pDEZsHJd`~}a+<^n{Qar@{o`T#?vGkrTzvC}sTN&KY_vBSJHPrNm0?B% zeycdEAr%K9sxKu`hyR&~dV<$y6+z70+RLsh&me8q&B%T|_J%LYze`P&k131vFF(ZW z-p925JzUp=!Ij7;da>LU7i4p>q*uB2s-&bn_Q4}-0bIH3fpQE~q9U^q9F-h8FYU*Q z9~Kkmy1nn_ZEX$zKq%!@TK`#6#Y<4kFkIkmp}p|utOyNHh<3f?NxRL=toY|-KLLmk zqRytqQW+e~`?&CN>gvG9xZ%V} z`fsG*jF_!U8bywibBBrQE%{jXo4Y}8rFSnc-0hCGD${+`pUT542 z)F!3R`4u)QNLPsrRa%v>R_ju21|p;st%g&n9*r^)2_)vlVl)_M=Zi#!SAxW!P#0Tyyv;@lC{MVNa2J+a0d{jX8f{>tj~y7eB9Z?`+4L+YgH%YVva z#eDCa=G!8H67~ordAD!+L$oObpOxs>VIV>yBOd|rOir$=CF~B2-gkC)3q*f|Np|5p z4>PRj!yU7YVHA`7wBDbeUcJ^82F&W=t;n#2h9C6A1ue!El9|W{o=wyF+z`ISLz}Fy z%NN=bh8g$*fj^k8|}3ly!+PO!0m2G*tyDQ_?^ zuCI@CSNdPt!TTQ`k!&oZ7p+$uEywFzqscx7eCtGcmINDmLf%Y~FiB*z>;vM0_ohPV z$hZ#kpc1aX{!@QNYe;xlF5i$eQ^)4-ac}IB;cy1 zQ+wGMMuT_Bi^sc@4c?o$l)rP7(iv~lN9M5q;d&OQQJz1g#bvvizC(o@1AmYF#lSnC@b8`4<>Aq91tgjm7$P>w>Or;l;c1E3Gqmi~^g7QoorJE@ZO_QK5;Z2%`Fe*+Va(9qV8fzsjJ5Ve=;Pb9f*_)j4`e$;qPqVO~NK-h4&^~6%`m5 z7ko~y_}CA7CRTEwqeT+icu zu$af;5j5DfC9r&GHU=l(PI)5pP#U-Qhq`vIC{QskbX-l zo}rw?XXgdp*`^H!C1AFmqs)Bm+BLAj|MY5=tj2J5`v{2rIyGCA-v_goDs(^qo0U2; zi#2L}JAwTX`J)q~7{+dkeo@~`KP1kC;a+_vb>-Rfi~-BctgPp(#K97v;J}_cWIpFd z)9|yko2+)~OA&;u2`k7zkn*;ht{)#8OXxLs82=h9oppa+n0o1f23cg9#PMTP=720# zFzy>Rd;8%zV^688;>(Bz_av3!6$#?c)@<`5uRZ1m503vPJDB&SSRHPf?|RsUt4GsQ zn{7_Vx~-4$*w^=T+ZZVS%p5J!a$ni=?N1ZKp{(_utbWp+(C#qhwR^OE(|zOf=Nw|2 z3TZq%YgtT(j`x~uIv%SpbMCTWqzdsKuZ-0ApI5An6u8#Z=$3uu6Z3EUJKfN#Roo-$ zC*lU@{p#p#-7lZ~ZEX)>iBJ;^ls^gi1P2*a)bdW%Q=-`L(5R>x2!93TOL%zrkLG5J z-Xx8I_&CEKcejU>#P;E~Rabi~cEv&V2sm{k0w4whmz47{GZ7?F_)XV){=emNFS0El z08z)`6XJZZHj}_1HdARwl(71(qkHFLFEPR>PR@O?Yd4ziu*!OWsw*zx;zD?L-aEee zFP_bA;n8+GH8(f68ld-ba!EW^VCHANH9M2H62%6hq$eS;T(==TcYJac7|xI#3e>^h zK(L3DlDrY?b%Ao7?@tf-vj%K=l2F5!_1?09uE7%6%>k_t`rB!ja{*cDTORU4sj(?3 z)a0jurF%Vz^t1&0rm~S_UQ0{Q`qTZ-n(+(;+4tyaX)_@U6A@qlv8o^=*qFSB*aAY$ zvusra?RQ5CITf0i0zJGQ8mY z2+uZ(j28>R2`*NY!fpXr#Ww5-Hk9of*fUPhyuA^_yKq! z`~o67!8JaIX}!M;Gl>FEQG=Fyh=9TSYOMf9^GUZJ`9zR=Zkv{_Pz)(39fi>~VdCkV1T-J<(f0 z0N6b~gD=QWfeF7UL!|WX-X1Hrx#zr{qGBJMHqprh6884Ry=A*uL0a!zSEM3{dp|w| zId>gA3D8%i3%ca&|3eC~BLbS5{1Xj7(IWrvk*LObgNCNQr0L=;D>*Ji;y#6_$Trm0 zzL)1Cyf$xsKSaZlOJ(5T;1Cd~M(S$%-O_r!Z+!y+xpRPno*o~^H97pMFMh_NaiD)B zZ~i)AtUjM2b&5j3ar0ZCH*RVslIFLDX1wF-XfncMaQV$rzl(0w!RfzueE!m*qQeCEEib1>S^VCP}-@b=c-cTZIW zcaH^VRp#eo($d})suzrm;-eQx#Kgp?nNv_j9j;f+NXy9hzibP~C`s8-bE%mGp;y7k z3LNHzIu%G3mQ~14j-w{YYcP0rm(syA8u_6m186CH4i{d(%VX9jZu%XYJ(E!ic{Rs# zJQ2)qpzAuje74h~3!pTmIwnm9NFVP60v zL*bCuuUQT1e_8UNA>gIIfR$WdFM|1Mw8YTRJY^tD#^Ki&kjRWea4nG4r)ynpAlD(# zsQImh%T`yZ;6B_#NHKTYoCYRl2n<`m+kasG>n{J-;NE%2yl3V3ki~!s{T`&t#Ax1= zPCZurut|k(quu?nI12AA@EoUVUEv!W3+wln7tIdvncx@dP+Wr8<|Zx$DYtnKN7LC= zK?Pai6E7EGZQjMYfq2YH>{6q5%I=e;!fB~opd&)@x~1idYy?S{ou(3d zCJPSg`|X-mwi~?WJs){(M!~16cVfaD>VRDZhnVwa1k zf3b2NYuQ+tg`m&HWFhN|5`*N?qGw-oX%AVh^J zI?vj7p$kyUp#JpLdG48R8+*sC%o>;ZjTwJXD|I_8?=*R@e~6A2rzgCP(JWI{Saj-R zl@eQHH*_A-ZgMT)8Uh)I`ycSqy%q;}db^3Ih`CqoHyzJW<3Rt5V- zny9)QudsPr=RJNi76-VU(3dwc~BK?jua$3rhz6E zejD8P^a56mz6jJSn!IuhFbeph4dIXC@744FZj+MAKUXuAmVOGAF3U4Zo}?nVk)WGa zH*O57WC@K*rd3zdmyOTqm=tDRWqm`-qtDhVlSd*k`aU!?XU1p9cYAJ^P3I`{y9P7! zrx$uhSHrTo3Y$CT{qO$$=50AH3_nKk@blO9mxKB%S_EbM3#D2R|&8E z+rt=UPnBn+e&jVgqKf!a9=<{rIs0TL9TyQmzkDaGI^1j6)Ew*jbwP(|qBn1L-sgje zXtpg{1Jh8BEzO8^QiEuFIA!o-pr`95FjeIQ9fBn#o@`2}Vm5qH8^9o6scB-or1 zCN4ruesWAw&E~kH47*xwUv%f|@No6Tg-}4LF3;2~_s{hkPJS41-lo#aiX98OdHHXm z3jB8K7=u22Qpfi9AN|`)7e#drQDlaIDnSxJ`_Ad6Lli|#laq<55l#EZ*G~d>mufD% zSTxMb;4kFHgooSmT(CS)$yYxCTi#^;V5lVNSRfuA65q;p?yqY=AG5hVUl>8cvMK~e zA120a>;0v4)b8I_UYoz`tE;otPEg8Fz>b#0zquqHq$5Sa{$VVe#USx!Z__@3QxT@!&p<5+B;+yG*UauUO?NNSoIOFsJfV=4AUgC8RvaRrEwTZDAYm7I!Sz71AdV6l z5~RRhK&F|s88az{bBzJ*z_aW(j0%&Trh8$lax|C;Nyz^Ggq`Ca9eD{xLZ_Q}?>1-r zAv3RuUH8Du?smj0Ro&saM@7>rIhkL5DMXIi8@wGj^ph5Kg75rnkep4h{BPqlKV`TZN% zCslUjf2^NB9xJ}Dlx|KJ8N>3!wh|DDV9H0N~abKM~D3g5<--dDpmzNp558hVjVvxR>pZk!RDKxD4y&vj4 zEweJ%UtYf^@$~#q$f{yrEX%5y*vpAP1O;w+6prI0%U`DM*^J>vL{1s7%#9Ef8~O{H zw4q)!GhX3x;8O#bsp30kCK-qu?CK-{g^m5pg$#`{&CHGmj=#Sf%!Oyt*EcUOE(g~i zu-r$kl-}(BV7)Ed!~!yZy*pt?)K`Q zPt4HiO>kZ;bo5u+j_b5zzaDi;$yJZTl^V0eQAdh14k2KJ3zcI~MVZZ+!QuV$)_85zV$_jb6>-$@3Cp7mg(t zQs2kasd3)Q)%y41&$sxrH2cz0nZ_gIiBgl&{k#)~WCfElE3;{V+Zbvp(IWg>DKT_? zodipN!yTr5QsWtaTHi(>(5|&Fad&^LI6HqXZ$2JwNzNyEuv+ChTA1Dsvw+4mHi#N; zFd513W?<+__fK1q$Zj$H`uQ`_*}1!>v$KJ*vC!O9LDxG{9HKizX6Glf#VhZRI{(za z>B=_A=OKF(ETPU^E{o9j?8*zWiiIB~dkPq)O^ z038i?Ag0#!)FFG^_5t#Pg+;{9E<;VthkB9DI``Hphg_Ooc2JvRjQ969kBv3M2xRrt z?*$;9(b3*8VDUZKi#jX^J1A858O$e#a_`_#gl=y;x$g{1WI!P5T6aGJ^W1DY-<^GAt%>3P1~L?-^TIEjpq7oWzGtM$AR z*ISL@f3t?dka40sv6p|ulO!{#csee2)ZwN=W$U&{B1yu(Mv z^1n>IM|~+tuX>+c8TER9wPd>Pu-HnCgPPi%ni>z@ZkUuL5#7EztGHTQcY?9|-`yLs z+WIr9__5D8aHfF;2EMDEF;`dpwM+^gEAij)Vtu2RFLMvpuNP^M@{%Cr8TM=m&%5Q__uG4`AR~G^~yY>pp7_H*3!w1gD4Ns;Dm? zzuk)Oe49_hw7NDk8}oaZS;4x8!Db2tB%Cb+Z{TwtIb=W!;7HEEP;F^9(ZFCsgbJXB z$mY_44-_|Uv<|FI`$8|Z3-C?FL~ZpK<%1owG>zyFojd{*jPxyKFk^ulpu&zE9|p&k zTbjvy7ak&QmgOINIn(=zu;Q`}*I)x`@ao{7@iB-n&JuXq`O{jg<3g=qUmZDM3HckQ zTnfh@^I_85B*wy~fKUAQ7#6>FA(_C>3n5HA>YSy;r;Qi2K~r?UA~kJ(Rc%)3*KP3F z_fT_wT7+7wu*MH=%nOMsKsSU8kz-)Mc2v^T7xC`G>d!YyCdC#Zv92P;@3TLv>>|R$ z1cw{E|GmFo1jQTQsSYN3_z#Ka;(_HrY)R*U`!n5?uA|2)gH>}?UE+i^ZymV7J%N%2 zmIlm_(l?bVeh*m zpoaRPD@N5+DT6CzN!f`O~4e~m~yLzs~a;t*)F=8@c7fO#&dH$y$?-dHkTLwU`gE<^zBXd z&izaT$2P`w*#5YEJamOIWKa|q%uvj>TJprmUS2`+-+Lp`5IBg>L-)FF=EKhZy8`=c zwWNG|zV2evf6RLBbjT8?>FfiT9;@w=5n)a3EN(;3L@D^SIs9(W`)U)aC`hvb;u9d} zRJ{4~ISPin3kw?V?kkDhYET6VzxXi=YfItd&yf+rnhzrdAs6TFkQkdgH*cZNLOqcb zseQo`(@9H&#KQUvL+ec1=Pxn}tF^DFC`Gy@H_(E4-QpyFz%8oLgK60x=X-kWsqH4t zH7}Kv7?TxBj2GF6VljYyL9*a%=X3TiYPvI0+Qr&>8xAIDFdDqI_BQmL4ARiS_>u6* z6VKUM0~q)=Hy=ZR9Lv$9$_5kR+2+G4ySneDs(wea1sxp+0+arSF^Sx#@`=tA5v>#g z_-c2S@Z=Z-o}eW19}WxtyXQ``xArw zt|a~3!A2w%r_t#ZC84h<^^*z(Zu3&z_Ay_Q=XXw4LX;$}84S;v)oJZpV2A>Qog`WCqaD1;)UTr^T>vBGVh%6eSEZ6@uEasGat zi%C85Dw^?}bXoL|8Wz?kGJ(9*X$qZJB$*Qw4DIjM;e@(J+;+ITo7Z~tJM4TcntH(F zf~5~pqyal4)HiV~3CLDzj9Wj6`jVBqe9I7+f0H+K?;0YTO~bn4TF`ei@TjlvH2v!+ zD)2x9*&vz8mwXLf9A5UT_fh!Jy~(dPB__+BC&~Y4HsShBzs<3dap=vul~xuP-M0Q5 zHTov=YOiPD;G_3`9GK{j;U6*MGncJ}KS!&$N4 zJ>@i(KO!UBj5ujnN~P&?-tGkclF~q?Mn$zx)j7a>*WDc>;uY(;_KO}4av`)pTE2sS zP`X3j>)Y^?!pz>2Lx&CY7b_$|7!^Bvriv*Zrmz_@DJimF{vCT98o7SaPQ3{^y#PK+ zj3E=`8G}1NtH(b1G(v`s7OY)J7@;9+p;@ZUM)&|u{3t53&{kxrwp|f_XuHWH5lgrQ z-M%H>PBl2h5q~!nx3@mk)~QWRJ=oZ=)Mt+s!oq2m$dIG)psvwY&Ftt;n6BQ|DdA5O zIsVfTEp`ooj@Ac6pZ=(k%;3$fS-bZy??8#b6syUf$a)iRdZKcjF{)j})!MnlU^dPn z%3A$ho8U&%PCW9_oFNVV7hArDx8sZ)N;u-mPs3hyXN&nFi^DcICu^FXvsy<{MXpn2 zgaZd!%xR85gbF}yJ$enQY@KokYLE5bknW6!OI8k3=Lh%ii)cMtK%>F@-RP^nIh_nc z+iH^#8>|t{8(fL__}_|K{A~Gjf&BnCBMd+883Q3oPL7B$Oo&@8l-abSju;K&dJSCk zBy;Gy#o29xp%bmulTEs$wouj8Gw)jD4YV81nZzXBP>{jC^+N)s45$wc7pbXeI%+79 zhYU0)34C^EusrI>Ob=B)(9n7P7^gQS-z*4_i(;GSvq;WeQ2Ry z$7gYN)EsnkQ^?JB5K!zI9a@ravp<2m2j0!!4H}XJxbeTZeK&px8)tX+b>$abMVdD6 zS7BpxCL>c2!Ioi@RtCcxpL1R<42P!mVO%4LtKFUWlMxK$L0kY~g&M!_0=G$DIX2lcb8^mNJ9%Gyv}+a`U*sO> zZjyYI=So$~90FJ%@H>qfGdfpdfRM}zHde4E;}9t0YxIDB0$elsoVadY_+6};_kY(& zW`2<4%}y@I4-=q2is}VK*1kyh6qqOU+pl_aTx#~ZX2S1ctrtGe_1eRX2wPq|dQ$lQ z?b{E_LrTEZjAy4LC7+lIK2KKZnn$~0o`k&6&U%P2s!MjZFMi#dW5Xi|bvkWk;?yo9 zy$CQat1M?t4l(0Q_;ef35A=M_Vj8^LfxprwUdF?Ni9R{qFi@bWpTxIrDjsP2yF9Hp zzT-yWb8bM9d@s(pot)IjJmMj=P26~;;A^Q|wia`F=qrtt^uAgyCK+3OO{6QIcjmw{ zJ=Z-Y#ycP7vAzO2mZwge33F;7o}eYZ%^i@1Ii`FY+#QS{2-Zv{zlR859os3{3IiAA z3Y{!P3t;jJrK%M0B8hY&+dd85gY8ep?&mTNGR`1-aP_5hoSdPKCz6{eQreX30j$K< zOfQe0Wc+^<4#>Pclwq5qq8c8Ie6$Ar>n_l0miivDpWR6pj4A(*%++7#-c<3NnY6W{ z`Y}pk_(5bFfUyIXNdLN??mHpD+t(1R#3LJA6~x#n@3&|n*&wLTFQ${r-%n5CM+7xE z2ehS)v1_xMpPvu}2BwS@a6myvW`w$d75v5BVeij(;V8;e8#ohyaX0-qi@=JTMlWlCv|J}kE?W)tQm05I>tV;@)kThw4O{yHoveTt6wM2$k`Xd>q%Q*< zHz_^lkDtquti(^U37rI3J_&#>Q#>B9U$33T%Ert`?WTbPId8W&R-n!9fC* ztXvl>@`GT9zbWTO$T-JZgoqpwx*8*y>Fd~o?K>*&pRWSC@; z>arPEQK#whM3vR?K)$TRkKHZDMmoZ6C|RqWLJS&vfJ7wSd-^Ct{YNOlx&Vcj?b^V{ zkLkG7X}^BX>HqCpKW(RWSn4@G{#{Y?PuGeP{Z^;*|r>Wgw<5H5$F9X zHAH|$L77BWwA|QmF|j(5V4P&zN&?@AtMflApHC~D_agt^<5mP-B?;Tf4+b=PdJ(X3 zmIpGD*o8oGc(Egq)+|MK*Vcev;$n@-6abihmAZ-HX@d(x)8wVY6@3()$!t^%y z-Eb`qUqgV>-~pa?PK~yGF?vKR(cR9Vpqj;kHLd8T3%R>t>J@3xxXoM8Kx|At6?B6w zAumOGC}$ctzouNhKQrng!cB{b+fm@HuT@L|JlE8g796c^NHxX>#ew@xyo*x5^Uyy= z#WA_SodR_5YJA|b^bc728Dts_-vs62PypUzzACI-<&x7dNc%MulQEVI1LachHb7X5 zbdEo5KmYvA^y_5p{z*57P0fu%pgbOKUiuE@lniLbvIn-C=+z6v zbZ6s{R|+#^{~VbUh-1^0&L279wJEOF!H3QZV%m3?(xJKl&}e-D1yJktn;ZC8abv~3 zb|1~&uX3bYqZu%v z6yKRYdv*thyfWlF4HJFOEi4HZl@V^JCYJZ5374B3pG9J*fXBi&^C(DbnV%J}sN3k^ zXrhP7nMOoo)9IlaSi*2R7|d+X>yIZOVBC{Us0162%hDgBBh3jY&bw*1NHn zx&o-r688?%HC`ZND6LDs9UrS^4Ge$HKIav4nDn@NN6qH9l9yK}SpGI0WgY|eVQnKH zoAj9G4=xo&ljH0-yxj-u5yelN)=yeNsPV|#UZ-MZuvp(jj}05EEBCE|Lz3vZ>F!@q zm%n?i@Ied~{r5*2HH*&PQKg0w1r-rr4P#%cGxLF)AC$^6$NR0LmSTbCt?&ph?*sUwl?|mG4o4VtVX=;qim(#1Z4Qyy22Rl#<C9JK^8}?nTuW z{o00xc)1Em@rP^3Oc5l2(O#;+_Ro>80$~7jM9UuC zWnr(qdN-8tGn54#3?|16tEz<0CvgD`%95tU#94r>GzF^?TshyCrwx|^DR`6q#1S_T zMy20u4{kox7>z9sKzOTC0bdIGPD39R?6hcjrvO%%`>(61Pl|doCqT@;hKJCu-9y7^ zo^SI#NrW-1)#*WAG#wre#V_NZpLEzAB3=!?Fa7^SL&A2d!4f2t=XWBdh5SSgW)x$Y z_en`w)KMcCW#jqkzDDR?$6RpIr(Sn$=2F+#_++uWEOpdeJ(v3( z`C*J?W}}xY?(aAMhQ2YhitRJT+ylqcSi7@?7&<7V-L#%uA-FS*3O1xF?D)*)Jp$vo zN<$CSteaeE!h?YEcKOxpdICq3nA=)lfteG=j4%J|?==3W>w;R?uU_qhz5hSi%a=My zV^2_;xxf5hQeTn67AhTm1hW1s*BcS3zLqkhpd1nV4n&CW^III@}66Q<~ zG)#AHZivNnqKT7U9cD$NkRJAwzTWp5L@RvdcL=AYO&XO{&l(Uh>vAHCEO%M5he!4m(5 zQPRP`8&5X|f#wC=v_M6s5mO4H1Wps_&Bg8}z0$e4fviJ)wut8CpZ6`#j*7eETlveO zC1I}U1K^G}+8XvrH4lj9|s)5G?12M3GuPb-Tky*LkBj+B%XB`9{PtE+dS4I8}ncNU+0_IDwJHfxxc;IipnA%Bk;Hy`vY%rPh+?brF6qXk3y$RM>W#IM( zqtt|dAGrL^jzU92f&U2({T{91ch@JXAj3mKR<fNXhmda9Jj)e0ut zz$LyL_Ibe43#c-=O6e%I+>_H&@Fw^|`%qO?wGrsU@YjJy37v3hb@dS_I5-UI^DIrX z1_VGV@$n<6sSiDWF(K+b_0n#?7%;g(%AwZecV0+lS`kR8r2T6!hKX873iVk#TfZGFg4WT=yQj1qT8^td>W4|xYlV~31t76P8WhpKGA{1m4s*8_ z^>aAxvj!#$w5ojxljP$;cLu8;^5N z^EDE%uvRQzUjv$Gt8t)3uTbwImu4}=TFO0``=tqN%U)jeCa_cfOS$)K9>R38pOGLQ zYinyeIyxrv*}XR_(!@qo17Zi{^7C`BCjpTSaKko%*yjeSHv&58*RNkA5IW_S1Ox=z z1J8@~>qc`Fk_!t9fi(?GWN?mH08S!b)!xAYI}$16^7pMIZ6c&6WJ*OK2_gF^cSr{G z)~$4|?(R|H;a8}v2yRH$fTbuBd@hnieT5JKa@j!S2ew(VMoIw=E(Z#ZCF!j3l?xaH zbjV?%Wpm5IM2#<*&6ZC;^2EulUCm5dooJrLx74&vPCg}&hQgy9#XgXeadce`tQ9sLhaUjbFs_I-VololyzQE4QkL%O>J=~6nBZX`sI5Gg^ClJ1o5 zMrn|4k#3~nTfG1HeU3XAINn3>$}UmgM6%keV}nwjM`CyG&UBJ>+y9@4hSz*=p{(Q zZxF-nfM(E`oo^{h1SaA3egFPb$aA~!#Z!WUgVT@_tI>Jj4(7ZZHwV*6Q7Fe=1I7ZC z8Ei00Npem%8ndH!K>50C*VVuIlR~TbHOh-F+EOa=DhfvUgmk3I20=#r%;#eKY!Bp{ zsi~>P#>Vfhv2F~EN&zfK4Y>7!0S_HS{Bn`Q*{bQF6rMYeXVI-Z+?ktO2?P6TAe^-d z^`c}zJykO2b)YC|GIFu{j4>8+7dtlTXlZFW_yipM)n494Xv;HZkD_j9k@xxL_yUYi zfI<0gYwxn&BbJqbajQ%U45MJhA8k$D9PBQe5o+;osV$%_sJ_>iJa0wDf7lypYmbA7^y2bT zNJyv%*h?sU;ZlMs+X^JHPW&_ckR5prIXV?OTQC6g=gnzrFz%_>l=5HIbg2TvM$jVr zKwbn0X8E1hH6%@9h$s7j2WA^@@?ENp{$P{L8K(nZrBZu4j z_khP{95ggRfBTc+EU$o_=ig-?-sZd+xNxif?c0EMe4wrxd~_HX9LI}iy0m)Zu)p$^ z;UeZ2S`WLr>b04H$1Btq$ghz~2j=bM6ete%nwrv?sy(Zr@99~}%G-nKubq!2bEGXQ z-l?Yh{Opa^YY^;BNcx-f6UrVelH$wSop-!{|B#_%e7hM(fd-V%N3c?vDp*=K@mCz+ zrB{2MQvfbd1_dkz!OY&3nUm z_KRYBV$@2w7)oM~4Xv>>>X4B8Fyg5i_0y(OEG7;zm ziRG!SjatEkT`~5$!(zUVKc?%IkGn9aw-h?Cd^HtC;u|CO4kHdsC&RNt-EG zFt+4C0+l*=EWkv4*~I>Z`}RPpZLu~mRtpC+jQ0x!VUh^=@hqp>FS#E-?p~Z7Ee~hW z2^5gI>$h5P%0B{#jpc?&jg?5l|1b(n2EB&dBdh`gD5`-L>He-lkBomu`M>d>08ufbo{OCo zsm$T-BS}#pVFg?xKpH(2au2sNa%b^IJ-SXLe6cGpCpQSw<>dN8Xzv!F;{@)_VXoox zHz8GX8Kf3jx!8*1WT|xNZ(u^f{RIaB@eDErW9m6KGq8W3=A9p&Ek(MDzbh{sdjjxL zd+3M3!Q_S|?pXSpW5Q`dEutS-#N!W`6^)2CX2_Fv(PD^kEb(p=a6N5gGz z6PTsq9}V&a274+3dFFdvOL}*(&C-?!uE{faRMBuQ8bG)U{u04TffgD!^P0SDc1?an zI7yfpg$s`|dUVu8)7gzmv=It;hYe|G(R33|{M|-u3wz`1s2U&ygoA8!G(3*AQHEwg zEC0la+?NfDn4pV;LvCmo<;4pc33o>37}<=ST4KO`|I<7j&l}mrKY0LrDd;%<<0P1g zDx8{&l~DyLd(G5(%vo_sM{@OR{Xm0-4W0Svn<|S-!UJ zd54|ff}U|RH5IwDSps&8fg;Z8mOB+X1=1#Q1x&D+-{&tsD$oUYSt;M^bp}n? zF>a=yb4$Dl0-DRc+%Mt{EAtIm@j#(|v~fYqx(}ec_bCS}Fksxepbji5l9oX)vi|)M z5>m5(ac2ZgxEiCHXbYZghY9PEytoZ zG*N1g)arfosR@8juI36y@}~y<_p9M5J=9?Fzc*r+fM1z=ZXn?R?bOwvmOnHa9pM|L zZ~kO#&$Q-}y?zhS2h3L7OfB#^zDg9|`S_-qmUcx&Cz1MzogDTKBbP+M*cXLY%tX4r zwrEGh<}n)d6fe`BlYLwaB*3_fppMN2%+_}Dgi7cv-oQRTE~CeSla4l1tM|hX@ACqP z7C${0&TIGp3E>JLsXy8OO1#DlRG7_I4Bu?pAvQITx?tN zUwGHJRFv(>Xm<4xg_F6$khNYtKOOIQ3A--g-l&%015CNc5BN^&K|Es01_EYw5|V%t z5xk}aW)iHh*5A4}~6kq?N)UKFPo_Qv@T{$wX z0mdYZ>ohHD;2Q6iN{mi%x zKano(CoB~eE6jjqPEcbPv-QJH!DkmI9m!#08VOf3SxDg5aP(SL2xALmUvY2@okc0} z%sUW8-$6q78F$&BzIyuU*7J@$BqYRwgM-X_lF{tk50R0|Yje|~Ph)a%XM9o1?xP|y zhav6?W)}nedHIv>+?)%!vH4Crvr|nX5nu_xNY=_$XV!f>Z?t`~r=RDJjMHZF*08Zp znjoj~x^Kt|`_`?^LVa;sh1JR2SVJSD3QzfT4NUwyzRO+TSsSO>ja#CgnrDu^?xjK& zCC5o>Et!duO=qX>d2XCqSFFN_M-K;-q$CIaoksKi8R)=n|9`dN@r5whfQ?F=9qrL! zi;3+B9pVsufA9aE08?94LXw%D@p(Q|J+MD= z?@+Z$8AymIBK-yLfjiL&?%UJ})75`G3EK$?AIHRI5D>P<#y-CJKIReHHz{cm66Vbr zvKM-K=bICtYjB^dJN4NZLpL{%R?k{#ZoWPH6r?|Z?riH;+JytWiIg;ZJ|IMbg=%V& zhL2xrf!?1mFI4A{TXW5&o|D8(ge*$0Jwg9CV|@CnhAP;is;Ea_<#euU6_ujR9=q<$ zcDA+ocXc`YQ=_TqPMvMOkkZrpH}%6kJY0j1uY}#y>3Hi4yGuUhe&;V!0)n<8gQJ9J zLKeMoQ;lqEG7i*uflkhZ@ba*+x3BPpQ*5B+~;h6QRP!>#-`0X{XoqZOC;7Qx?u+@pfQE~&KPxblO z?s9j0mU1IVxMJnwH3QB8Rk?o0aaUC-Y>cUHZVqPK7NLka&~a0j=_ z$lg8PPAaj|{G63F8g~DoXI-yZsg;!u{LZ{w(%xP&dHId*<(j|!PkVbvb#!X>L*T>b z<_^sWv9wKy;dxnE>+;y3yE>9_TaVG(eN7g#+&`)ZJGX!R!k7)$W_!d$m^65Sdv2S@ zpFF|eX|ipi%s|{ACyI49GjsjR!;54q?nf+&UHw_*E*W zEI@Q>d=<;=Z%PU=4Dfy7#_mE|;)Uxry1T9TM0ZS;nm z+&a9vmTOK&+`I|4-x;a z8LoX)AVne{3^^!-Nb605rx3W!ORtOj&8*L_D|xt7<>krbwV78pC*mP_<+Tep-|Lp> zrN7rGq+~hp#=uM)ZVw9!g@;EdCQ+En8;-tT1v-sasGdAnsMw;wQ1y{jvDV z^tkj*4DZ(OyYa#VInJ=R8jFS>Y?Mus*#lWW!e55b!8TPkJG{Q3L2UV2HrpT z7#R4sZWZ3Tqa5eb12+^t5zzphx{(T8heB3KPB> zni*W2W}KYMoHt+1;CtCe_ix$bh>(OqU>F!3yDfEutgMiJ6>^l6T$-%-4R+I&_O1s< z6rFRW;iaYTV0$t(eG1p?RY^+JL)kAp%84B9VKcLZskeUci{2DIERQAY9E?kXP=ry+ zuaLoK?%X#jx391829(=_Yx^ZJ_co$y*#rGHQan~ycTR4hT}j30hHL-wa$0tF`G5-5 z>~yWX+&bg}P*8pgY)#ElqIkVFq%AJ~k~058)7@P+J(;dF*=Qx3IiKUUJIX#^T8)XA zNht0otnBzc<)2I@TTmOH;NaeFpD>}rgMVoMfPvNURaEy;F*=(-aCTN!N>-K(O}B+b zSICEh>oqFlk3+Lc2S?Zx&-A>H*6+Ya*U*@ZWBKv&rDS^ASnHgg*8{q&_0xl&=KUP% zYN3)64yGNeltSwZiza86S+Fg)wTMBMs~EyBAYdU!{Qy~%_f=QxheN8`Ot5t$4Sy?k z3;p)~{^E-lf6B}wZzELb6%l@KrE~G`9kjRa%?UFd`?dSKY*z8ueQiijAGFtN_B%PN zfD~18h#Z1k%!z8p+~DALJWS_{2k@p*QGOl&YcR4c*jg~|ws+*cgAv5<;S>?jx=?0r zSg8BAt<3rHBlK6Vke`-a6H{7SZ!k0DFfryrCR+fV+icBIYFgUe=csYf_Z~)>P26HR z5w^56(?N(`Z%!WhiCH%I%)|$LvVoQEdHk%#g=KKYd!#v_%)RIfNC%$zFh_(bc%B`~ zOG>7PhK|6t1R3M2Kfammo0UaUeK_7ssB|l_rK)}4fcH&~(aD8Fn;9KP#>HhwS64t$ zQS-}}sT>VboZzTvvQ@V5wzk_$Oj|y}Pa`S4!9@0b_{^a$@c>m&5SMg>V0f4U7x(i! zI0n4#rT5c{c(Y$Sal&lYMWyZC%*d$oK<)tmMaU=hJQOzm;VShmLP(4|w*TQalU|9Vtd+T&}cUOy;qhCTN zgZj_>f{Jr&5o-9rM7ckHz$h9$0kSB>SP=!cl91375{w`aa6F@(Xx$c7QB!N~iN(1r z^aMv=*JD*w)M=|<5Q{9}v?}Z7_6cI&P7h|I>ApPZK^G6OoyvqWkJZrUF~7$W9@D#n zql(Bd1!x6VT7x%`3$!(5(DTwC7Ns9tOL?&+}l3hKh=U%TNZr+Bj{4* z#?GRmilUE)ZHEF14`;3Jya_!EPU{ypg^&;z4_+lOWEbO<`%6cqA)K7@z`Kf zM=GuKIqv!Tj&J(+?{;$y37Eu_yYo9)o+Sj7kz@iyPvSV<29@4L#S{$JXjURbFmsY7 zeKSCfe*pm@CMBzHBh|no>e`=?G1g^$q^$izCyvAWU&>K{jQV)Hd3a0=WmLi;fG#G_ za=TMi?USJUn{PjkgP>-qeni>DiiI7kRqzHKE9{K}+hPY=AXcle^B{d0}1Ub{wHU|tA6 z1%1iI;o9Ga(x1KwO&zM|jtFDwF%yz~IXYa6Z)qXDe_ypq+iIHE`_VkV%tFxj+qEhb zO4qmiT1*CELmJMCL`J~JOB-B$o7EKk>5MfShRO(I<#g*O_gtB;DTy#K?t}tM+-G2rgsOxgW+h1=>&Xj~-V6c>PXWmAs)O~tx_US{`5a%iV{q^UN+l%L zI59kJw}&|ce>5(MbNpfC-O&+kI#$PEw#$eOZB?TgMU&}y*p6xP*%=rSzNN3P>lij%kP^lc zQ6;yUl}bfCIz5}Lt@`{g`=JEM$gY&yTm5XD{s&^lY!;lPDAFFGAFQ>RE&Mz%s;grX z6XT#tI3K6u61 zw{>1v{z|g0aQs^jMsC;T5}*D31O5FaTr*C_#`-S2$U_9#Kfx*v@QMZ#Vy$V~`HYZobT)n`KtBD|#dtl&eXS*f%x@CAKsdeq@ z)2AA^eO+B6aAE`n7FSk!od5gfG -<(G`#dSq*xMEl&_pMg}! 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 literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.map b/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.map new file mode 100644 index 0000000000..6f5ea13fbd --- /dev/null +++ b/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.md5 b/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.md5 new file mode 100644 index 0000000000..f18c780874 --- /dev/null +++ b/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.md5 @@ -0,0 +1 @@ +4f499ec5eef2a2dd96a013a95c4ede2d \ No newline at end of file diff --git a/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.png b/doxygen/trac_8c_a1d7701a95a327a1833ef16620838e71d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..756695edb82da0556b1c6a1d1ada52ed1a61283d GIT binary patch literal 2057 zcmV+k2=@1hP)Ix+sF@9<-S7x6sT8P!kg{xB%l=W* zEmA=qrQn{=U#GwRe&>8|^X<96-g{Hj+}s?1K-L-~Lkoa>pFm?l^a3;%L@z*NLG*%& z_6vbPz~yocC1vA7p-@s%QVgx)Gh8lLAP^W@#s5f2Nuf|EnwRs8_4e&sKA%seQrBJ8 zCO{+-8Ct?T1Oh=@TbsMPyP<^u005uQ4-F0dswHTj5=BHrtfvgISWKhQ)@Q}d z!rr}mTUuHQ3JL-P16MW!+_3;2kAM2~si9STW?(@2+i&+PE8oau|1q={kdTm2Q&Y3D zS{;`gAO=LKR5dh+8XEqEAjZG``qz+zg-k(&=;tgVE8^q0V{r>QzEQg1^82nKNfJ!Iv*z#>K_?`ue7)r%z5!s;7#I ziqgy+5fRbV)up|bP$*1HO!W8nXEK?Zd2~`#R1^{tLZi`AQ&Xi<=_2I|Wk@8Fjdv=X zlgpKLb)E6?|Jb+h!tcMA)Yl7@O4V{_nVOo4h={;qu{a!#$z&>(N_D)TpnyaoVX;_$ zfB)g(VF19~+}zcxSMBZXEi5dOlao~{6#(GDg9qz+D(vp=Ha9ot^ZADlA7-&wL?W@g zyxiH@xwNzt05CE#l9`zq6BEPd^Mitd&YwR&IXNj7i?gz_qN1Xzs;Z70InvzRyyPk$ zK77c?$cT)LeDvs1SXdaF&7PT=(V6+?&711#>RY#NRaRDFFqo2(lCPDoK!yQPC_brF zb2BsY>gs>S#ugqpz-F;3+S~iS{SmsHoE)iC+Sk|D+1XiNUtd*K1ps*RqXps}&h)zwvfU&z2z}ni{C0A)^XmD|H z@$~cr0317Z?Afzt0)gP@(W479<#M@+i3x%rXf*or<;#ndOC*xz%Gd}f6rTV9)6=tm z{Lx-gBCxSB4+wCU$q)=izIfs6?5vrY8G;}<9In5=UmeWP&(FxnAd|@efZW_%EEX#k zi%UyO)6&w^H;8WEzOCLPR>Mk+g+`;*0~89ib?a8mSUr$RrFM39nq*sB+wt-7>FH?# zfuIR$k2QSpMI0R+ZE9+2YHHF%oSd9=>T!2>_xAQ?GMPJf?j)1RCr_TVwYAk*{{H>@ zC1otapMP50+5LT4C2NaP`3V3ZkxUg9z5u`qgHg1!^!)rY@oV`k7VGTUvv@q-+1c68 z&+pv1bKAFX9~>M^N=iyfO46ha4GoQqj1Y;R=h?Pxn~jalDy6P{^S*1>F6~xnWMqUy zBAJ<)357yU@ZGz2csw3xnMt8gOiWB@&$DC44jPTdVzHK75rsmXK7BeNA)%+I=kepm zEEcP{xL9X-Sy`D*8Q;i{KYmP3PW|@$6(EsJUAk1YNP?-Uu|o0bhaYyTRDD)f|6asZ z001j1D;|$0lgV0JTQf5=`}_Oz^Yg8(t<%!dVq#*nGYJGjZ*Q-9ER)GbM@LtAAZu?d zFE6j+;^OA!W)~Ni7cX9Pb#-05cu_8w7ZnvffBu|8p)@r$357yeS66d$^Rcn9&dyFp zN5_JK0wbe&4Ih3UrbQJ)APN#QwcgM%aD-;S6iNt2J z7b#yTVRSkd#_SCO1rbEsHg}J4{vO2T;-(S zC0SWnmX?+sFt706-8E8tq_E5SdCPExeSa-mx~$V>9LDt n7of2qdI1^>q8FgCAbR1y9|kkOE)Bpw00000NkvXXu0mjfu<6@E literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.map b/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.map new file mode 100644 index 0000000000..c53cbf4e44 --- /dev/null +++ b/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.md5 b/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.md5 new file mode 100644 index 0000000000..242cd5d72f --- /dev/null +++ b/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.md5 @@ -0,0 +1 @@ +a2eb0839401ff131ad03ba792ea8dd63 \ No newline at end of file diff --git a/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.png b/doxygen/trac_8c_a3226e54dbf610f7701d0e60e7c55d1e9_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..579d3a049a27de33905835ff4d4f65e282665019 GIT binary patch literal 19858 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 + + + + + + + diff --git a/doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.md5 b/doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.md5 new file mode 100644 index 0000000000..150e91fce9 --- /dev/null +++ b/doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.md5 @@ -0,0 +1 @@ +98c1ffd99198b5a92534ec6ffe8e9915 \ No newline at end of file diff --git a/doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.png b/doxygen/trac_8c_a42f35c3d4dac72ac9ba2406a97937dc1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7a701119852b9aafac4cf4675c78647c50a7b7 GIT binary patch literal 10900 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 SoE*kXkt9T9g?|d_ef~dYHp4Xl literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.map b/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.map new file mode 100644 index 0000000000..6267143e10 --- /dev/null +++ b/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.md5 b/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.md5 new file mode 100644 index 0000000000..59b99b4add --- /dev/null +++ b/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.md5 @@ -0,0 +1 @@ +5f78bbf5beb084602b4e3633d2122cc5 \ No newline at end of file diff --git a/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.png b/doxygen/trac_8c_a4ccd30026baf665758ff587cd2bebdb1_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..52d849ddfb4ca9ef28ca069e4e7bf06ee35738e7 GIT binary patch literal 8941 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 T?=UV04n~s@krmEE>bU<8qMW&E literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.map b/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.map new file mode 100644 index 0000000000..00e68a8f0a --- /dev/null +++ b/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.md5 b/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.md5 new file mode 100644 index 0000000000..9c16262bd7 --- /dev/null +++ b/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.md5 @@ -0,0 +1 @@ +206bbf86df4b0defd8851a0b20591bd2 \ No newline at end of file diff --git a/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.png b/doxygen/trac_8c_a4ce2c912d35ee727c5e8877d2f5c8958_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..aca073f58d8f5deb560c524e6d38511ea590891e GIT binary patch literal 11149 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 literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.map b/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.map new file mode 100644 index 0000000000..3e9315ba89 --- /dev/null +++ b/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.md5 b/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.md5 new file mode 100644 index 0000000000..c1bf34b1dd --- /dev/null +++ b/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.md5 @@ -0,0 +1 @@ +2e1e48ba0e4a0d040194df8582ec47d2 \ No newline at end of file diff --git a/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.png b/doxygen/trac_8c_a6923dc8f54a49d376cf6a486c848fd94_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..0f3e31a05876d1fc3fb5830e012680e356b3545b GIT binary patch literal 3502 zcmZWs2Q*yW7WPYmUyGLLMiN2vK6)=f^j<>zf<%oWM2i+df(a9&We|*sUnipl6C`?# zPP7O^W|Zi4yz{@e)?06_x9(c!o_p54`|iEZx4&F-&70babF6qH(oan4+dMpth-lpsUpTB;c+G?|#%M8I z)?n*4w#`(E=B0{x@VtPXDu$Qpf5)i35eUn*Yt_M9P5}=YPZ}E<tiG1GR$ZF%{r?~I{7%bm&R zK^{{MOo?CqdE}j}EVWl75^kmZpRWn-APC;!uAH{{mN13Ty$@}NZ;?nQM#hoS6)>ss zp005kD6DUin&?7{yRE~^%FFMFi&H*0+Fo*O3hZf)enC&NEo>$F`>LUGjrgd}M_MED zENl*=swC9HBUJjiS}?dP?lPx zs$L40q@uNJg;Pr}p%ORPCywj?+p2Wt{LjaN_`FnfWz9$L>9X-(p`?R)aVqN2jL)AR zl6Ep8&7GXQ(%dX9EhWMZydO%j^YHMXoUj+f+M&Af?wOhFLOuA8)zz1dV)*mJ1&<5T zc@mo>IVB|}J(v80z{XF(TkZ?35q!6ASBD?N$Y22h>?)x$a&mG>oY0i^c1=Xmh@(Bh z#`ywQgmLDR*{eJ{-r&8nE&}yE^WIsRYw(ZFlJ>ZX=-J-c`O$Gz%{y$s6g8Bq(l=G@ zT3uJy`SmM$V@4!G*1U9F#I}m8(J>_>gO&0s57E3%uRd?N3%*Pw_OFj(l$5tb5nR$o zOYx95JrCb0hopV}tS;v_p9Ef4P*6BJI(kB!k|gt8XdO7%m`zMcS^e3A5KK3ie}3x2 z!NFl#I{v{@2r25&iOGB3J62-R_+&}59yT^UUj39{ee>3>6F^S7;+mscVj zjvu#iUIDhXb#)8OOCEW8N@b6Z*`3fN>(Z!)govIV;-y1iOgC=aDMDW}w+O)L?RxwA zy0^t#IXXUmZ(XYJ^cPD{PY(+#DVudq10yuy9Xr?_ZM@_gPq20+sx9bt&TF;`&iaHe0*%68h3?QV*#N zGsM1jcD@AUvi$SsmzXOwRn^ruczL5v4;`Mb52BRfHQ)0J3Q{>ZIJggF$JN(ES;d`- z^7F~!G~1HcrK_-5x6SX3$`@z5bG@l~d2k#~ZM4{^16X|XhCvt3V`OHQI`SB8eupqo z-Z4L)i_Z;9`S3xo^=!v5HY<7LkxZFWOZE+|mx~0#YXpM%aC46E+je(%H%r2W+yZ0# zwYT>bFf^E}^4d~J_TO8?i87v?U?ZJx&GPZ*woe9A2H;ywtgRWDdKSfo2s4k-b=R*mipyZom;Uvw%$K*56gW+LZ8qzu;F3tzOYUk*9@BV#meSQ7z6&T=l+gf)z zJ3BiHg13u{Mnr@PBO@a%k1|_uaBx{!*@x0nLRFHmO@*nIl@1IhC6$%L>KvZBPnblY zP;(p2vvoclv$LEuG&C(kVI6#3wBFv{GbGW}yCAVXhs{<#KB5&B6&uA*{r%q;7r#6` z+zM`}On85qw03&=DSnWfnwnZM@cZxOE>7-PM=?KW%2G$Xg|oAtL@fq`X>-(yr+3?4 zyjbY@Sn(Q=Ly%Wlxu>V6;={*oBAAlewOSV~Mou|4zvf6e!#)iP=gIZJM_AFPCzCj# z1{j*$0}t&UY;7yEOIF^0yTom1Wp(YAZqkEc-j2SJuK9VM{Edvm5&YckjJ}@k?g!(4 zTgk}EGIDYCzq%&e6yYZ+EDTq*P%9aGc5cskI$mn!*kYepyX#ei$&hq2xKvTGBPMQG zZoRy;G*W@g&CUIZ$8(kk0Ejj=HiloEA5KkAKMgg6zj{Rt05f zh`cz3IyN6c3bzn&iVemMZ~F0YKAHw-ShXjCy)T6oy4;Gg2F<;XT@b@ zNx)qOCZ-tO!u1Jdnd})=Gu+vkIq5fC_$sw7{KByQ} z_#^C09g1Y4cK)KYw6skTkH^>gFY5yC%2JI`l*+od6|Y6+;o+gIqH_GZ3-T%5C{HgS z6LuO_Hoz+{p9$0fw$y&*?EL(Wh)5A|;>C;0JgVW{U69Cr06PtJb+Rj0uDpHwHs4eb z6u{Zp?vNwyIm)b1Hx-F24!(W)$`wXtW-U`w20-Tc8LSr{KR;~obF?wdxIyXoP8%hp zDsAROsHCu{2apF6d51>;CYxEnUbuIzv8)$fl#Cb1zdO8sI+Pyrg?z zK(@gb#AB4J1A*jWvYZhcuoDJemB`AXT9 z8@zC~Bob+AcDB}QQcTWgMjHSSq?J!a1;sAyo(Yo=)#qdSMIelLV#5#Tg70NX#Q~A) zghNaoJm5tlk#o5o0RgUg9~L%d4{7Btm5jv{7rQH~#J{&Zsd<=4eie>My*uIRI(j~r z1!#+&p5A+*6*Z6pwJrrC)s=Qp(wKHj{EtZlvTMysafo;zFD5U)E z;=n#H-`o7ORpUOu0jTy*AW8iEFR@;e2hZ+j&A9qdh>3~)lfkv&8)*o{@9phHRPcOT zTiYK|K#x>U)^5#*ZK-r7b9NQzypBRviWU?UOx5{tUcY`Fv?}X!jh{Y!VunCWJUxXx zu^eF6K?)vzWF%|eZl|%evjaR6jY4t1W)*io*<1H%+;a8W>>pfEkhoqkKnI{tr!FUgfY>M2PxbWEKJ3g58o33#)#8l#TdWFmEvA-nw zzg6OX5(!+~8@3<2A!t}k8~0u3y;(mTRw;GKEIK;+z9OPrt+u}Yrbs^=G`%dZQcZ|f z-4W#zmkQYLy_2tYK0}W>!w%dC6LD1mn3{!6bQ6PAX`30#=7%IbZ zB4(zxOj~hl?iLIN3ygY}pjQt8ofh2J`21z#lkZSXg-Mf7p-vTqyPW_ literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.map b/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.map new file mode 100644 index 0000000000..f871b03327 --- /dev/null +++ b/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.md5 b/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.md5 new file mode 100644 index 0000000000..fef7a6b5ef --- /dev/null +++ b/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.md5 @@ -0,0 +1 @@ +a3d8a6bda750f198bfc95b7966a1d9b6 \ No newline at end of file diff --git a/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.png b/doxygen/trac_8c_a6a9ad6d728173d5a51398880d2bc921b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd044b7764abfe7e1c45aa48635aa0ad7c233ca GIT binary patch literal 6694 zcmZ{JcRbZ^{PwYrJ>%G+P}#yMdkbZzV>>p-rW~1NB{C`@JJ~xK6~e*cYo_eIWy>B% zzx(ui{(7F*!yo5!_^kWB-`DlNuIrA`f1pWC!A1drK&bC&sTo2b1PS060VT!%WhAg2 ze307eXsSW};(v3R3g18=tdsZDl#S6DThjpuqenAjyPgct(lBS}>xlcNq~pf=RpmOj zjLip2inioxEAmHZ)H6kx&9JVub#|ruYemz=i?O1%mXK9pogOM9l4raNgg4n#l<4fq zdFaXKn?v;_)URF>B0V?`;L5^I1rFT#{^s-P@{I4!9ib>Bj7|m0^Hs;5{VpLm;G?}x z3qGFaEh$5J)I8tHL3tw9`nm=Q=v2D&%|F@4UVYYl%N%n(DoztR_;oP33YlXLHMH5+x5 z|M6qX+z#+OSD$o0|>8Yt=w$-UFD3qO? zynLGfY;cN;v$IWqrYv@Bd|ceAKLh#8Rcdi{72Dq4E_VO^eO+Z`0!hbS7{826ib3gc z+^bjAz6WatE0?%){J-pw$X1IlK9NXRR7`xlqph7CYZNl|=;#Um)vICSjRBH;Z@N=6 zGB`SCX0p0_dp9K?2nY!9i;C(o?oWO3O?&;CL8IKnKd?MDB7#^0``Ih56RhY*mVkhO zqRL7v7)Q&z7aa#joXiZGNHd;;AOVZnnyjyOpOp53bLhUmP42%lGyK-w*?I87{2D`R zdpq&r;oQmOXf*oZ?5Wtl<+L(3 zF=_kpgPwy%v!-u&_zEj4Yod0(mygf-r=8>G^KID-xHn;nsC86+{&j?qNdorXH3snV zWNuGJ4I%~y^_v#2K#9$)Y5BFeBIt%FpDBg?`QuYG?0Ww-U2KP!msd-J_oBY3Y0S~l zk%#pKxcgXxH{Zg-!tTLOJONJ{=e?-IXgOA}O&;OZMQW zrL~oShldBz;Kc*(;JLPqQr`ei<_Z9CB_}7peLax-ZlV1skMOmjG%_B0H9;XEZ0Myg zC&N9?iHQkn&i+J{iwi+)$NJ$;w?Ou7=b+m*51_2{6qNZdV(!pD=DZMddu4N*y_l0d zIryDd&+-;w@H>w$#>Z0G;ScYz9jjNrWME+M%y+e)m6ut9Fh-4+n2e15Zd^!re}9zmO*|ov9Q^*t!$cAN z`IW4{z2MCfC4(d;b@eNPf{8g56|5Q>ZVg{2T1Owfs1j2=IinDFdCllCUDB~Rp6yqP z9ZMx*j*ToTa-zE;MP}h~JliooKCU{EqWMf=$Dlr%SeBcCM~#J^o?c5=_qHDl_sPDS zfkQE5Y7j|f9*)z`w3vCmurT@FJ}E^YN^MBok}TUZve?Ly9=1kkZOs!DtS%-cwQZsq zC`%+$-`C(@d8H*()Ifeejz!@TPN*`!#x=R^Zm2ROY01T~dHCs}qvOh)hAP*c%-G2| zd%ioT)cMas#!HM{nOJ5uJSq^rCI)6t$+otrPJ(WooV}!@r-xWu(-RVAh(G-t`QY%= zxDYy!GBHJfG#V474`<5``O2gxzg$r}zmFZYN>{I+WrKp2_QGm=Dv3wt zQQ4i+2ESrLVd0wyL~2V<4?%M?Z{vlJ7#Oja|0?a-^}LQ)qAJHeDmZ+M%C+f#Yq065 zmy)dFcPeV?mm)+H^YfRfcZW%4W>l)iRTb;zmY2nr+!LGeRClmeTB%)yRF#HvNKZ|j z?CvwpXZo+S&d$b> z&aJt(w>MUcVu8%{rb(iAnvSVBezf#uZH2uN$n)Boz@D70`d2v(=pd>W$WKmV1icgI zgI9QxwSNo^eK>?gsyr)wR7q3B2@U`&SRKnqOY`#Z5ZG43>gww7gfKNVbyimYeff-i zb#Z-tcv4Wb67y5)W?)ArOAOEGkV+&G2^dRDRv6w$Co|qM6!VRSNqs z8o+SU9#b#Y*IgTT+b976D;XOzc}z8kUt4~0sjY*mdU{yD`{yY)yUe9%$m#Oek;262 z3Bb{Fi;H$uN8|x8(hJG^yh(FQ-EW{26e>PG5<`Dc;@^3xgGRiq>~dF z1Q09cN1mql`H?&P?%jp_6sza8wNj9rf&x-7OGPCm&%b|HoS2-Ha=%#Q{@ZfC^S#o= zf3nUUQS17!9=+sqXJK)XCrRrn6U81@@seIz`s;MEfw6JKA~qo$3G2;PHYFlN*$klMAD4T(fLySlcW9d6_r7U$>-R(VX{Ei%3-gs6gm8u|VE_j_rs zMhoA=^@oDV|A|bRnVavOZB#CT{spC_#kU({Xb zr3XJdfyW*&R-DX0iSbRKA)&wsaG#KvNP02_6h1VbMC`uG-* zdM~@Ww3e2Z!Uk4p&2SNGD18ySQsbL$GmWekA}nsw?6Usb?O@(OkN5g}8QjO%=;Go+ z2PJ+HA5S_c?%%&YT$+@eOp>OHmw)xMA?y$!p3067adB}}ah$Tup3SEP1@ZW2tgP?~ z3TmOoM@CG5(rfALB-NAKBQ`WN)HgB;-&@3@`r|;^CZ(pnunxstiKgKkn#gv_3Md%$ znfO>(i0SXA0qp}4R%}%Gp{NMzT5E>N7_G3}sNFF!F}WM6k?^`-&Cuv)1SWc5A>H%S z+(H}XgZi6lw0GFdA?~m;v?KfSpim_HxZJ${OlWmuBbHY2f)0}S=1us;S;1s;wQqXp@$Z z7}BM_nyfuPKmQ}Ytgukvqv4GupMaE&b|Ge+eM;>|ctKQF)*eO8etXgtg#xHK*X6Rq z#&7uq^o)%)^t>fiS63gaaiZ<*>#O#hRe;0c&RYp}J`-Bk7|>5I{iXGpV@VVhzbh>M z8aa+(6j;At{k_r8N!fTbag4hui}0BB*xXO;ztPySV757({%k-|FFZ1mb93`;Q7Ni3 zRs3D>h=GMg9E)|3!T!X^2s7Zl;CJV^rRNqR^^>UJnRBo}&`1@x@lOs~07Q>y4@a1E zbaVi8o{W!7O;NG1us~WeW&OWy8VNErja*OZ`Q|PuF8(Y!nv9p1_p96L{%LS$!IsYu zo|)Ev-DuqFWKR{hi*gLK#{DkOkal!*bOwr9_JMows0sIvOrUGur>9eoTy9T)^PX=b zv3GL%sTSHk$L0D53WX}Uxs^G3neZlE6&0nuWm2Z3qeD3pu*%tZ@uvrr9?-a5eSMK& znss$`^{uUGzgWZrS;`|UTt0~=8}yE~cXhp)k(r6Kvm;8=jnY#%B}R=_Z29*BFat%e zY+=EHmdon@2g4gi1#_aIr<5iY7BS*>oj_*L;0yj}YqIto`^)By=L3)CVnt1;T-bx} zY2R$G{Qk~GzQC6tchG{?ufl^@&4J1|4iKhAT45g-~7S^-OD?!j z$iZ(ccW8TIcF0TMNf2i1%%VK1zjOI%xw*N8EE?!aP0F9^3#zHBlbDp7MFJEML70Wj zB5F~iD%Titb8`uP7V42f;Iguq>1oc&#y=EjIWDxERf50JePBhv3Fy=16d;*EMFA_t z(U+za3V=okd9pe7!{OXWPd>6EmgRUN8@9f?JG#a;!%82On!c0Tlb`lLR^-fMBg5!`Rfc_=|_= zn{I&jpUXYX#l_?gA3g-@IUS-dB`y7-q=cfszdx~O*#<@$q`*yunFI7@Q#0=6?cMr{ zUFIsCUl9F8Gp=8{w4|hEaZe0b#LTm+Nm^gys_~8jcp7Inx6LPasMlbDYmIeNMxiAo zC1*l~_gBwtJUtUYWgfFSt)^({1@8@Ep6y8dN2JqnK`E0D8(3PtnwT&4NZHLlaRUQl-ZdL>O+rV+f9kf_l4jT6D?I55?=XQ3qj6N|! z@Q$MiefUtXH{;YTr6WfHckp*`FeeQ72@w%Fpu*=jZm|t@5KCo0}q%SKm|==w(;@bb}HZSPH8m zk*A)ah8B&2k-7yDV0E&x7U$+{!hikhk$>kh*BxCaxjX85dU;+05B>__ z4ifu|j5r(16X+%9!HfVpRW9ESWOac6Gn)r2-j5%9RkfBcCME)dS$J_8pdKWIq;3o9 zKfJ#2STPzynvR>T6q8PmthN&tcX-M8Yu(YJdFn;rv9oJ(u1ZQdlm|1^5j*5DI?>m6 z|0=_)&Is}+UOsG;npkl!pY;<)s0OM)7g;TBd$d_ACb`JQdw?YbR;a70eVL6%TAC_8 z-tP9jwoZ-n56(CTSJ#&yECSR^dk>eu3zC*Zq|4a>d8$J2^IQy!DL+4d&I?XtHtg4s zi%;(YS^)69KraK?&QU{UP7XxIb7r${2P|J#cXumb^xKob)<}EK#0i_%<$V08R?}2l zdnGb5Qoim-dRdv!=lc3Zpr$|ywNt|dtjfhj&}~4AWo2bL=S1pYDpW!Q?%ZKj$^F+f zfcmov+EWKI6{2Kj#+H$hvAbScxez0eh39ms^E$V2LO>AsOaw$wZDpo4gA)@k!DE2d zyL#&uW#NNNLWsSiV_SDOIdDf&z%;xQHZLgFOb67|c)tA&N=@Cd+>=r};=9tz3No3- zv-Q&5y}j0S&*m7*Z%?Ra*gHT1%0~)$lbD#ZzsJwdABPZf1gg^xh3d(;`}idY=v-V~ zZG(b?({Sg7&$rn+B-X4kI0D$`S09G1Gh`+S=I&Fl<&zdGIPP=dx(6VNonoK ^2U9=qk z_3QXdu(+baadT@c?aD2awTmq9q-)o%i8XzUvBT#fJm0$q2BJZr$Sj0_Kmb8Ajg*;& z1Eq=%48*jx5d!@Nfq*0l>Da`?5dt`_Kt#Od;igKqfE zEnC9j+kUe1^ft8Qv!&OuPEvBEe4c0m^_djUhHCMjtOMEquMMa4h`SnN&u);Akj(9$;+|SRRUul5p!>rP;=kUEJB%P=FinVA8gx%*DU^5xsNOdN7(IuP$Ff#%woz@5<9sgWTUz@VAHrH)3! z&CJXaladH(&8Vf*U$wQV;2V2$bMx-;F?J|lCkX_E-~Zxvpj1?9E-uAZ)vl#jELM{d zWoXD?YikR@7pa_Ck_8BVsanRalL`!k5E61SPlkW5*`R&uc3W{^zgcuM#;U1yfQ-gF zP}OLf`OR^_PG`3po0{eq7sD&RU$TK%S{c}IfTHIh>CORYc6WD2|ISZo5u*w@`z-)z z`Tety9tL|M`u&2zX&_5oMTHQ!q{2rT!Na}_?c~J7#B+nWs#SG$ouD?5j*imKJFNG+ zA3y_^;@WSFPXeQpoIJb{f + + + + + + + diff --git a/doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.md5 b/doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.md5 new file mode 100644 index 0000000000..712b405f80 --- /dev/null +++ b/doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.md5 @@ -0,0 +1 @@ +eca16daa23e5a87bc74455fae44b48f1 \ No newline at end of file diff --git a/doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.png b/doxygen/trac_8c_a7bd79a78b4fd2d384dc98255fbf1bf8d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..49f2bff0448e6dcff86bf30640b0be0223ac14c8 GIT binary patch literal 10239 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 PA42kptXS@&7jOR$wO4dx literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.map b/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.map new file mode 100644 index 0000000000..5b0149b8f2 --- /dev/null +++ b/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.md5 b/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.md5 new file mode 100644 index 0000000000..1bbe47486c --- /dev/null +++ b/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.md5 @@ -0,0 +1 @@ +e7d9036f89a43d521ea49a8af74046b4 \ No newline at end of file diff --git a/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.png b/doxygen/trac_8c_a7cb8e26541d7628230dad82325b61b7e_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..ebef32806d64ea7e3dba14941a309adac58b811e GIT binary patch literal 17693 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 + + + + + + + diff --git a/doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.md5 b/doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.md5 new file mode 100644 index 0000000000..f8bef95035 --- /dev/null +++ b/doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.md5 @@ -0,0 +1 @@ +5090d301f05310bf69f03c1fd285bc77 \ No newline at end of file diff --git a/doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.png b/doxygen/trac_8c_a7ef56ba785c5a1ae4e73e7da0a141e1d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..00214fa77cc6824c2685089f01035164b9041033 GIT binary patch literal 8443 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 + + + diff --git a/doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.md5 b/doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.md5 new file mode 100644 index 0000000000..55fdee0d66 --- /dev/null +++ b/doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.md5 @@ -0,0 +1 @@ +00c144e8ce531299e892e7b12678a55a \ No newline at end of file diff --git a/doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.png b/doxygen/trac_8c_a9a6ba19e5c74160151ae3f26785daeff_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8156f09877b5d3d465431388718a9e6d0c8a4314 GIT binary patch literal 2630 zcmY*bc{r5q9)5>0b}=DaNcL@P$q@$4*ctn-$r5F)NEl1@kTQHe*|RG&1{ph(goA@I z*6eGF7=2%eIB(~VbDi_N*Y!Tn^*-10-oM{{-|z4JrC3@Rva<-V006*lY=p7~00$vnmS!m`{vRdbVK&yM=ycS*F4tt6W(sJnj)){k5ea zvvFPuqMWJvFP@fcY(iR{Hl$5bZC|vBF_6o+<5AF3$isPw*CW%)dj{ZNf4%WLr4;Y z4o}|;#16!|Kha&kD}%gy_pT8J&zWwoV)2^WuEU}JMtV^e{{;Zy(O z^15~m2?955!oyqJ+`xU7#5{*s9E=IY!A1`iWBhM0Rv11Il9iQ}D@L4?Nnc;z-q=+^ zla-4l(M&SM`TN_FShF*X%CB9ETkB7&s~bh5){&7%LBufog-ZMP z*OT=`Iqz!}?Ckg>5QOFBcaiKOY)Wbtxnp;v_d}pb&wZwI5QKrx7bsAN97j zw*L6>V_REWUVgp^sI`+5Gtd%qe%66YkU5g6O^qDrna7Vw4Gqpajzb=+*02BQU0J3b zUA__85q0vLW-&Zx77Pv!mckTKr>99xO&ri(> z<>ha3`FACXkB-0lxVgEh37CuF+uGad>FFVWlamvXNDK`P)eurtP}m*Gzph_W-_oL? zsW~?|$o!%o+a79eXlRHYW$IV{6Blo8KvYzeY_>BN3yS%)e+?Al zPeT0NUMiJ4xmV_+g=7|p$Hn+n_4pZbcnwezQ(1zmdRlE_3+abDtZ2K>t(IS36zMZ*u zU-Lsa1DK$3FGP?Q7|hUtC^ri;ly0@hO4=5MLWPBe;czFQVOm|kWp=+sQz1)m;Lfx3 zDmYxjlw=bNCUHs8Ho79Vxw+C&>*OmT$@*Rnetg&=69AM{RAdo|;=H_wv(w|_?_2Hd z?Trl$&(hP&%F1ruyqWEiIk^7(ImhhZR4R3Uzdn`z_{@E#HQ2}9-QCTtu(R`5qtB?b zi_2)?4Jmla!T0YX$Y`^&@!#da*;zM_4cl;tn>~I{ozo6pz1Y2fDDt0+}vC|9uJyK zLP7$>R##VNWxNFrH@B$cgFC^&-$Ab-T&GJdt3l^%IC0S!TxlGTG@j$5ncAJ!q4F}% z_4f=3ngVqaaAPKDZSj)2h{&6=vRwa>?~fv*qL`uj1_nuB&LECI|9cN&W>!`}K)|5a z!@$5mXJ==yDuJ~kB&4aau`w|bZD#h&QQrQ6=n|3*3{^{bZ*wF+N73!)Mh+G{2ucGy z>0euDd2m%i;?CEpI^5wm1|Vb5i#Ltu(xs}B60!$zvvd4s%1x@CgXeR#h$QpmTc8QOX{xd)v#)%fkcC%L@bcX*72wK51^>l^)Rj zpXTN`M0DhN(`2|!A|p>bEMD9CT3b_gc4|Fp;*aRgUVgfRYHCuGfXncvd8?d%Tk~Ao z^sab)%(o-DB>3H`35+Z)VIRrF>Snxr8Fum` zV6wtKJ0SrohHsfOth}LV;OdrjP0bPj)SS}>=fCU)ZGABrpPDL|wpLd?)i7)^H8qWo zi{sATL#oya6K-{;rldGIBJVHv;IA5X9iUQBl!XNlT?phcmBUN9>D{~NlieWP;oRP0 zKsx!=WPnfNshRuzkPz3|T00w?EIgj<-AD`Tkkw>q_Mbgi!?60nQoP2fA9`2*q6VPs zqAQhZ`C#!Sr**vRCvoIgF^jXh{9)?M|JxGvDCvqmNK`|Ge^y ZaoKN(Q!!Fv4eWyeW3&b8t^Vz}e*<^)*)aeB literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.map b/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.map new file mode 100644 index 0000000000..57bdbaa7f8 --- /dev/null +++ b/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.md5 b/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.md5 new file mode 100644 index 0000000000..09f2b38944 --- /dev/null +++ b/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.md5 @@ -0,0 +1 @@ +73b991a58a6975d1d9bc747a3f564c73 \ No newline at end of file diff --git a/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.png b/doxygen/trac_8c_ab4353227dd6cb7d3392bf7bc804351fb_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..d3cc09c1a66954f1456fdc66a10155e50b88f650 GIT binary patch literal 7273 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 KL9$3(-{*h$ku;6~ literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.map b/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.map new file mode 100644 index 0000000000..1971d0e976 --- /dev/null +++ b/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.md5 b/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.md5 new file mode 100644 index 0000000000..a5739daa8a --- /dev/null +++ b/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.md5 @@ -0,0 +1 @@ +add506418838f92b3fafec942fea7bb8 \ No newline at end of file diff --git a/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.png b/doxygen/trac_8c_abb33bc155cb4f8a9f6e201212814b3c4_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7cacbdf1b187df93356ba4bbb400adcfe4ac71ad GIT binary patch literal 10015 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 literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.map b/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.map new file mode 100644 index 0000000000..8c8bf0eb53 --- /dev/null +++ b/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.md5 b/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.md5 new file mode 100644 index 0000000000..72e8fcad9a --- /dev/null +++ b/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.md5 @@ -0,0 +1 @@ +7578ede4b78e7bc527d00621db5abdc1 \ No newline at end of file diff --git a/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.png b/doxygen/trac_8c_ac5397325f4210ac4e89b977ca7026237_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..96082cbc2eefa12b2b528742bac05a4253f1ef0e GIT binary patch literal 2427 zcmV->3552EP)00006VoOIv0RI60 z0RN!9r;`8x2{1`SK~#90?VM{&lUW+aPibi=800EjZmC7=2s5HcO)II4io>N`!W|1` z2sQ{!i~$soI!YyxVksK=0$2#xDgzWTN+Ke+h*-QO8(g|eiBO=mauXb82uqRfhid7t*26sA-v0R)60Vx(^Y5D;Gr$lMSH3uJBxg9S1-gu#MX z`a&oa78MogON!w^Bofop)Ag<5zZ4Y}357y^tN6O4r>7H%MD@$h%snzPA`l3Ce0+4S z$^a3GMEaKS8A743yStk}An04j*Fqo=L`6ldXl@m`xw*PiWVn2T(?}o?>gwwBt>S9| zgTXXzlb3+&``Z0G=Q4x>F)B2W3B#MoV-B31}OcoFjuob%2 zrn$M9OeVLqwCH9y9m8U=5)%{kH9D8e4GId{!i0vfayvLUJbd_2H)Az4G^D1c`uh6n zX1FyO8k(e1%j)Z2{rTs=^{wSgq0wlKjg4EFP|H_=5UVgZH|OZ+sBabjV{vh@we_E^ zt^YDMHuCfPF(Sh2$dMnANIm~qr>CbaEiDxa1p=W@B^zG3MIsTMPQQ8cCYel*iHUjj z>Q!N3VMs^_g+l4+=~2bJeEE__qXh;Arlh2(JD)v!mYA66=jWG|l{Gy*tx6Ra7pKk~ z8ynl#*SB=6-rnBS)YQPhz~tm)b)MzCfB#-xmQ+<$MMg#j1O#McWK2vm|3^!N8qNlB4NBxz}BO-)T3owu)yQla?t=+Qq;o~&?lW1K$CfBd+2VPSFe>6FUC z!a^(-Yhhs#92`6{GNS6gapMLSi`}+uo3F3$z`y_iV0LzvN~Ky`Tbr7idV71Twytb! zYybep#>Ntf1OUM0a&b7Eg@r|6V4zegU1`wD%1TvP!eX(`oH-L38j8o`m$o;07n>o3%*=Fkb*-tX*|%@s?c28j0CKtf;>C+pDpep5goTBjKYxCDdRiuv z<>uzb#l}N7&d$y?NBQvKLw0udi4!O4>+7SVqZtgw?Ck97m%M)c`u_d<*RNl{ zd-txHnHitYUrCSF$d!2e_U+8fOm%g2Nl6I?gSmF?n!msQMkY*0C={O-7nQTK^Y`!n z{nua1-Q5|PnYAxo3~b`a{+&B_ii?W{0>R+mptG}cWMm`&puWDI!{IbEG|1)hJ$v?? zK7AShP+D3#FfbqziN?mp+}zw$TUV;ZLZMJ#Fqj7q9^~caRaaLJ4Gp=vy2i)HuSWov z%Z-SLXlrZJXm5zkJT=VB%wl3<004&$9qQ`p3Jnbf01%19>gs9$Kzn;T9*C>klKYqmH@yCxJ2LJ>G1+8c0YiVim^71--_%Hy#*VnhXxmhR_9y@kyl}qO5 z=Me}55{X2iP?s-XR&{FCV{L7{JaQ!#7Z>StIvfsP$J~4qC={On05dalzyJQ6&llR+ znFj^!`|B^Hnc4h0Gw^u4vuDqGdU^r?3JVKuY;440aYaQ%Mn;B*hX(+lxVTsqnUDt!hk6OxWAotAo*K^!WJr%*@QvQdMi&s0)~c$=yW=rPFME~4-c_SdV71-o$ubg zQz=#(NTESP&T7Q54y?ggEGc$QSo>o0tBUjS1 z{LsQW!D6S+oXObSwd-VT?2q4mYgi=!fq*Y8d~$ZSRw@T=ZD-fxYyg0RgM)evo|~JK z%jNd=_GmPEcz9SNGCn>YgTe6m{N1~E^ZEQ+w{B?!*xA{gJ9mysrLOy)006+q$Vh8@ zLu|ddj~qF|JH5QTo;-Qd*VlL9!iD+y`Kqd_*49=ck=W7E(c9aL$K%b-&Bw;Z z-n@C^;^M;Pay9P3$Hyl%HPy$*$HT*;r>BR>WEK|}tCth4)Ya8BH8m9!6u7v!?Ao=f zzrTMaJz67I*Ru&ME$4!R_kCfK)fpTd*J^HKW4J=`$;!$sEbKsVum>K$GdenY{b{LG zDucoB_V(Vnb7xLYj=Q@%4u_*qD0z8#BoYaW#pdVdx3#r(b#=kva4Z&UYis-b`Exd# zjY6Ro78X>?!Q|xRjvYHF6iR-6{{H>@9UUFZ%gZ?&jzl6sB9U7*1uL`l=0>B@OeV9m zwDiiAE6&c&`T6-)R#pH2CX-oGQgZd`)xCT7Mnpsa03011DHKXhPL7e05rsn0Fs_r6 z6NAAhD=U-9WOjCT85tR?I~xEH5)vX7i<6R)6bc0nhhs1pE9uc1xw@Y30t5oSu&`)q ziVO(&F(hRF(W86d@Xh>-QYaL;Tpk`CJ~cH(B9ZFr>tQfhLPCOEE+>=8larHpJiel$ z0sz2fvy+mN*lae5L}IhqG#V{0FYnT&O9u`dz+f<9u{bd?addPvC@5%reB9I1v$3&J zH_iqCz?N3JwY9Y|F){7!?YbG;u*uEMwY9bV+DA+W2gkj=uNWD@002lN!r%X=urSY` zfBwPPSo1?dR8$lIz_5?J*3{H2eL#Irn>a6CyvWMRTHYTYAAj=XN!{!DMnE9oK0dg} zNUvXhaYvzav?zWF+1c3z1qI9dA3uJ)wOha6lerHbJP18iG(e**-n_ZIeY>f?g=_#8 zi^XEGbTH8OWNwJ%n3x!wm>BC@#W#u}9GrrH&2VH- zO*1||Zfk3+Zxx>*l}c-CYxS){cW5y;lgZS*4uiza%}w7DKBK$4TXmfC{{$HH``i$Q t3RH7L7%Y&vAq*DC+z + + + + + + diff --git a/doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.md5 b/doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.md5 new file mode 100644 index 0000000000..a17e2ffeb2 --- /dev/null +++ b/doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.md5 @@ -0,0 +1 @@ +0eeeaf9c6fdaaf90e0addf6fa6a46b79 \ No newline at end of file diff --git a/doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.png b/doxygen/trac_8c_ad5c35d1543ff9173bf682dd933e8405c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4d19a769d2e6da9bf4021976e484092183a924d2 GIT binary patch literal 8620 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 Q@e3?TF}ddjBKq(DAFnl4TL1t6 literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.map b/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.map new file mode 100644 index 0000000000..a0d9d8b007 --- /dev/null +++ b/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.md5 b/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.md5 new file mode 100644 index 0000000000..add5f1c93a --- /dev/null +++ b/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.md5 @@ -0,0 +1 @@ +d7de317299239312af3c71d299ed3b88 \ No newline at end of file diff --git a/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.png b/doxygen/trac_8c_ad89c50ca0fa9258e086d457a72463346_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa18a2e6d547840e1aab5839cc0d9043c74b6b4 GIT binary patch literal 11220 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 literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.map b/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.map new file mode 100644 index 0000000000..c5319ee885 --- /dev/null +++ b/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.md5 b/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.md5 new file mode 100644 index 0000000000..c5deec02d4 --- /dev/null +++ b/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.md5 @@ -0,0 +1 @@ +051f9fae5a82df57df66cdd45d72b386 \ No newline at end of file diff --git a/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.png b/doxygen/trac_8c_add049d36bf3caca319c1fb71e6fdc2b2_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..b793dbd172febde13ca1005bcfead5ea230afa78 GIT binary patch literal 8070 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 QG}a+ + + + + + + + diff --git a/doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.md5 b/doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.md5 new file mode 100644 index 0000000000..30381543eb --- /dev/null +++ b/doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.md5 @@ -0,0 +1 @@ +0d3621fb263ba5a18daa8ee361153840 \ No newline at end of file diff --git a/doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.png b/doxygen/trac_8c_ae7a2e0f0de171b37383cd672db5e483e_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5982d08345576f8f458e37c0744d21c3217f18d6 GIT binary patch literal 10002 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 RA)JChD9NeI7NH(J|6k1)TtWZ< literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.map b/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.map new file mode 100644 index 0000000000..cf3de51202 --- /dev/null +++ b/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.map @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.md5 b/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.md5 new file mode 100644 index 0000000000..1ceddc0e6e --- /dev/null +++ b/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.md5 @@ -0,0 +1 @@ +6975a36a9ef1b4b2a2a3048bc80e85e7 \ No newline at end of file diff --git a/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.png b/doxygen/trac_8c_aebf12c1e87751c2142d687d509921a19_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a30e104d7474ec4b3ee18a1a17f9c0b4e6b41fb GIT binary patch literal 88706 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

FKIA{%X@n>h#Pj8{* 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

WXa zJVQaD3R3FdJw3EC|3CbxwF3l=NCCU?ONRP$2*51`K%0@#QT#^1yLS(l7$NFK zTeh~k3K=`pcW`r|$$$+M(d(F;gG`<8ot-N~4=`~HBE!g6uiz`pNB@m_yz%Y!${JpX zm{{ZI=Lgjr9B%5GtXZqE-@bW(o86fpMX|cRjvsZ1<7Grda%`+EY?r>z5%;X1KrV9> zR1Ji=2wDyewTA%#@DW~ku^tbxc}`C1lAvfr!0hU(nfx}_r=lXRvrBC@#U2kFX-meC zafvRYtFiI<%a@gud4Eava2C@3Hsv|%yiA`o2muBZDYBo&WOasQ`O`?K$) zz7qZZVX!2#m+&z_=wE#+0Xc-7t*zkMvz|yx!n%l#iZU1IA01^Io;pGw5IE6Cc1b`$ zKt-j_*zgjPcB0R3uB;&lWTu!tm~D=HCq4%BtLN(QD+sI69yPy3M94`#KKNh@Z3iC0 z^@#Oo@g5ap>0Bj&P+3*<-)iUPwj(8dB+2O`$JtjH`FFyqlEJKtq!vphTGB%YeoDv) zDl12VrM4hLzzt&k>4r6cJp<|tA04I;Yz}11iA)~HlfgYU7vTb^wF3dfTfq^J&|_~W zAA77-tS9;V!#ixFyZd2DcbD1z3m7QY6^f=6YoR;GS{F)f$ZcV1Qap5CQu6KDYo`ST zZIM@%o}QlNj^{s1w4_f3sq_Ia`lAvO+3(-mR8R`1`VdC?$HwyPN9%ziarr|3yFAl} z_f22$79$2L!Gnwkv$nD$MaFQv+V9^vLFyq>1c*sl(XH|31ZXQx2@4}dx)+-Qkcs^3 zeoVQ8B`pZJ8#KW?xlw!{X=Rq+negz(E`}67*ZMe^wc_x$OIvdw2VaJmCEfU2G#EWFBG(Q>qXnAwy2> zjWo*Ix=lDx2^0KWN-8IGKmEzTk#s@f0L7j?@R%gdJ6qum2Lzz10gO4uS}sm>aQQ-u zjQb4GXFo&bLWV=U6@CM&*7J7%H5XS`4qxDKiFYyOyT!Q0m7OyS0V4%29Jc~ z;!$tH`$$N5z`X-rLkmGZ@#pS(v#c#iwkfM6T8(7_s)e1v8 zga8$IZVk8@9JnASciY*yI78t7{`q;UST)q!D7aLN*qiFCY5w;Q{HH8q(SbuVsop}@ zaJO7fNl6zz(lFQ|0P>u*WRke9E#U zG86;06dZikKI(k?@x9KRI!H@*Ezau-&%3xdVieuUvb0BhZda8sUin7R1q#2x_nJK<;&p!LN&RGKCGUw9T z!PhU;Zr`qq)t{@bP9P=yQWflG%DT%a_1(KwNXDK&cOWK`5)@q7@}G5K0fz3{T=nxO zMT!g7t5B!;VOXPzlarqr+mKOGaw70tR#`&)XPrmEt)Gs{KMmhX90M18;r^QBo;}Al zwu=>Z@1ijDANgjqzGTL1^SH6DR4ZXFF%Y z8KU(rf!hsTR6zmJ18)V2)m81uU-sl2d|<`$^7_+sC)!$%WYtp<2>cJ9TE>34%#V=~JW_P4HfLVkS?K=#-V=uPkAIbDU@ki} zn`5o5pTI?%nmU_XR6qMS$mZp+pNXkt$ZiLqC)|0cZy5_!2AZ*_K?m#(&Xx51m^V8{ARpF_$r|! z9whqJw?SwpE@^5Cop$i?^Al^w6lnr`InNoCy5I~t3xCl}u(N$cix~J*%7a;FP^yyQX`xUzr*_u_yHWG=>X+zIpRoo4CMv$a zsJzp+?)(rz&Ya{2n5D$8mmKK$WUu~L^dS7)BFj_h`nmJ-RvR0&&QteLZ&r%Yq2+1H z^xV_h)ddHo@cZA?FJCU~T(vyXS4(}C(+#hF$y9awcXKr8VAAr?fRCRnWUs>{m#3DKCnX?pbsVo2)9Z!0wMYK4M3`y8XyI!O@>n*U;BR-=u%T> zt~zTX?v07bzq;|V87z~aiAuys3Emg7T=p#dyG6QpZ_=Yjr`s=VIj;Vj2TE98G0;oL z)6&|C02Hk|cY2|*BO!41#kQ6XeJ&S{j4SYxkrlx_MiW+Yj-B^*=ChJ9lpvYUuszKA4M{Y0bQ{XWDvBW_ z;o%W>aERr8YXLRvOxJ!!h>%9ja?FB{PrBn>&hHau729jjJkhb(opY+@vJ2qq_X?zD z4Ql|pgEZwU-((cicrM@VuY8)3ntC8Pf(&bQbykZ!LIz0EO(8$KyN_uom7*l|8%r-x zO|bX3kdYsQ26|~$H0_IK=Kzu?%EtxbAX=Sj&A>lfE$2;7G zM^(4G$U@!r`t@NrI1Zid9GnyV?}hlMOzh`(Yhmd{(F(E7;6Z&r$I-vD z!ovZKrx|*kj~S+lg)xRm&{|p!;wgjCwX&o zlf-RVer4V8Q}!FyecAfz>WmX|3+#M+YY<#FZ?C~S7#0?$E^?AUaHs#-E)BYUagh~T zJuUJJ6gyC1X6D^tB^0^dbl?<0Kr+&WxUT-|!W+3>vOo$MGxeDCyVTj&CnYRw|2KUv zfk5qd%PMwqQi+8o={*-f1z%by2w%Sj#_RJ=?E{kl&)2VSUxYJyE{qkBQfUn&E~0E! zkdtHg1=VJK=MH8N`Osp5XiioZnrTFZcEYNR5?CKSZcUB3mFA9l8ADfh`c+d?IvGT8 z_93<_C1nEU<=3xY%kL;MZet7zIw-WiUHSHAckWDPb|_GwBed?xYl3+XjXHW?F8$|A zONh(ihpiOzgM$yBe|H{1ayt<)ppj1K=78!^X?{gXC@Ip)A*-oN+t~y3g8;ejujeez z4Lv+#)qmAk9wgrIko|PY12=JJF+blsNDrwLYx+aWz!2Yd9^D>F<VO)rEj;pxXv?03PkL84@Cqb&3Ci5(j^YdLM&? zuKG5@dXDxC4-Ah{^6*hnQ7ts};Nlc0esy>Mtf_hCu!+oHGy)JVhd9+C5B1u=jlfA;G2B~tPv zm-}zq+rtB&{;oHHcjQNF>t_(`d3mD8j$!_eHEu6H=?)_B@d0{&aGUb?-Oy`USbSLA zhR~adiD~b8&G+vzva+&WrUnMR+S#|CI&5}i7`}P)rUjEnRv?Cd_5#hn4w&Yp2>h;6 z0-hZ6!Gn9g{jRB@L@-u~nMoZR=b1CsAcBKt15X?|@~zm*X!Ra;DYA-YoF*w;XW7jr zuCH5nvuJ%W^zK|5Hci_8(;SK;W8JnIyytD|b0HnHUA3j{501?R#Jy`s40SxOxXNcuU z5r<zAXG)3XUw@3TbVX%7HUlkO6f>=indm6x1M zGyUi`3mu&RE9=$SfA=aXr!zm_oEs8=$N|v?n7K_WbN1|6XvJcBs4x%A5|AR|yb!Yt zSETBV8zMqNYOp8bf|{9&^pOQ%iTq?F<_n=V2CBH@SZt;bi;P6Bt}f_pD5vp_vEHi| z#{sbXzs#(795Jb*cndj*@`XKdd{jL;WPe3TX>7UgmGL3d;hI1^)VqCK%-shF9CAGB z&scUmHdz@N<8iWwFMF6=GB;1o&0W?ivIlFJj#xJijtdED*jIqs0C>^KVDCePfL%`! z2Vwlefk)W)UKvPh@v6NqkY><)YR^3gOSGs5GUWZ)m449(a@$mC^A zMS$PO@b+F-ahA+zZ`bvlw%WUC4AX8Ns`{;^CRblpAfkh&|E2QwuLFhRDb?i&%dGC{GO& zP)kzG#@d8WMc`sE>-_DQA%Vo50rZd!X0qL%MRKd*J_2FP`-~O4rsgFB1Aec8-(SN3 zH^JT9NFN-zwe?`C+veiMTjaa)R@Ze=o}dUTGcIL5Dv%+sO!YI}g)i*>>b)2K{v4mn zO%vcSta}~%o-_6 zh$lqxNe(cjr1@dK3$pQ4RBHbsCViwTnChgS)>BPF&c$w`vD!%9Ln2*Uvp!T*cXqPo zhkAM}AzL_n_{!b8^%gBI`T6HuT}0>SbzNLE-o0xkC3VGV>EfCX&cww<)D;HCt%rL; z6px%dnMZdR^>%y81B9>0C8`XS@s*%wgTr)k>P!}8$y?}~cZO-bHQ1_R`zawoo%Kxk z9Ax1rV|i$2MbV9xarojz7^cJ>dW@4Z5Yr*%`d+CQ6ton4Riice!dfippOnPgjzT>s zu+5VFjt$x0aaSh#ecc3a!kg_);Ww8x;w(9{H5p(e+I{>T+VxmJkcg zZVFqQuG0$Y_H-T(Pton(t+khw5cIgsGPbY~VWG8&L^851it(iaMS_)lghNlBdVF!6 zcRX?87ZuZW44*S%H500?4#41B*oU9}V}{Sr^5gxr1@K=NzLElOX)jT0*$?F-Lin}L zR6;oh#e&3nbef*^(aN*S#eb$Hc~3iV1@4zVjUJYZ)momtfA_9uY@W8ecmE=gf^xY` zP_82x9_>*5ppp9eI~+A9PgrlP&xAz;)!#*li9*~CRrORi)8r1-7lulW8leMxm}vihsF>MlC4lrO2Jk&4~;Jj6t6HM(IzBC|jv}<$*CV zhfPwm*!O z&2aXw<{2~yetuo0KFW;zjqlQI;WK#TZ`OF*hhmomFE3*M6O_Xb7)3LqB{{6zCS6hC z2v{kCniUmE$b;~eV>eV)3rs3Vjg5QPmvjH~yqOKcMvDdy?YzRpVF&YrB zt+C``>hLN$&dPFHR@M;CPtn=z+tpE0#Y)$%QNM4+MW|^d?Ql!n+vD=~_U7WCXns#6wXSCSq$|}UpG0M{;bM6BJaPy`DJ`Df0IHtg0FwFdiF8 z+-nv?L@4=V63vWsX>1%=&zoKKx{l4kJmd&V_1p8#4}H`<*DU6~I$qbRI+)@-^8@^z zo!u&=?Pvm_Aa8GHhD~(a<;z6qmA4C#@1Em+)Z>2e@uxx%NXHPrOn*s+_;dNyIP^+u zi#J|`DwB|Oh>DsUvyQgt=(-)2I_a{I+&|v(9e3^TUo||q&h7>z5*@bq0`P{wv-7=9 zrgt=!7;*3)J=*kLhE-=UNyg1BBc`tc*$KM2?T488Oj*rN%ckf@M()?s+r`B-94#Kr zv_mwnEm%V9LAac$wnxLvOkpM`6$e++)j(pBjz(8KC#1A~a$jAAG<$uyIP#Pa-Bk}5 zX9Wzemsc@iaAf!^5m-$-JIzO0iVlK+=KUTP0j0~EuAOzLu6$1w{9l> z`c;=WpT{r2JDL{LM|v>Q;zow&IS(;lW{`Bqc9%n_QJ9|Y2@x|dFRRuR8oR_Y&NHgo z+FSv0iSs&I&dUXvnV)Tnv|I7;**D@u1|7bVC&8*hZ$HiEd4m%{Q|Mvp3P9Ld#zhPe$yQ_RQ2uD%mX%- zcxaGuZ4&M)A5jr&yzFatY9DVoo|<;%K$0jLhK)k6&f8`8hX=s0$F;%m0L; z&OQyk>+=b7n)WSE6%^dAD~$1SDznx9@a@|xMSf%<>OSHXNvZ*MBQ7-tf~nciMV+{X9|cr zP(S;TqnNVY*L3a8shJ-;U2~*XJQ)Uz&o7*gAANk`LOFmjv%2rGhhi2{P(c-eX88to z*1dbpiKC4^J});mUgK6lF@XWDNh(8ckS4TZXG2bI&2#=4F0$l6mdqX~31(qiKR^1Q zx6ndK@hBzb!|;_$jU5XAmWyA8FO2{!`pQb))UAvp)|g%tR42PEJ06fs0~8P}-n|<) z-6KU%%TKPP9FsQNjhGyG~2rYWHn3(6P za=KGGx%HT{cjC;M`)pZQ2L$_6RT796?dBq5;m4V76t0Olftk1JhZ~}_?nBZT)u2XpP{G!JN&sSe#-Ww_FO;vMRoP| zj*iw|19b%jPkIGldN}0ccFqG~ksI$Dv=GNHXmqvbzOI|2FaGM11x zY8*{WD6x$wBKtcznUXOR+r6g=yo&PANa|ktnCH)p5c+9aNexAZqAXIMMOmipk9QzU z^3R{!`oCkKXh*;WDhmuq`SJamKEhehU&9VqB}O3(AvvnyvK?fK?v%$K4J|Ey+ILs? zEWqBEZB_w;O+uMgOm$zM7f3g)q=efu(DR3dGbWa4F$vHkR0%GnCS!g<`OVFQHzM6TS3@Ao8?Q}IcVrwwuQG0%gCTka z-MKB$RFMBCeIQU7tr?Eqy7hG7+{vwxIt`)7!Kpp}^C!oR{FoIl-dfWLmaz(0UV<(V z-_84?pz|JB8zBuIw@qD!gbLml_|&7!o}B=97!*V;X1EPn&dJI4Rf8P#`xu^bWqc8Z zJkQ)iv{uB#T+?)C+G1!3-qEL)&o|+3`}i=3wMt*uHl0ZwdcC$KflersdSW5 zkwTG+YrmWtgW#;Gkuy6b-&rRTPIe_lW{SsZPbe85K2%f;p6+y7UN?>DlXM^N^d9$+ z+!*>4?N-13wP5PY{K;YsR@U)i-uYx+G||-OrDS2-^dKU-qWqH-hOi;pp0gh!&bv9` z>C5Rp@b;b+`QEuMUF>r<&(V>J}@FYkBAU$y3WqdE_gO5{eflT)lpO9xS6}*!B?L|9N3O& z<=!d}*az}4js=kZ@gX8;@t=h=T}w+8o^(Au31Q)Rd?h5llCJ;$K+8cy zK<9|QT|zRvN zsOtZAUtgN22yC!4chS$I{XbN_2Q=1y{|9`9kgO<#kYr@@Vo!b8UqwdFtjrBZ zYpf+o9tSB1{1Gw&+{+YcUBDbADBiv;NfCHVSa`;*d}!!emaxFdlfJM!hQSsF#2~dS zEiY%t`A+x90LTC|bSCa5B#z*U4>%s5AVBVM@BG&e=2v;N3bqVB#HmI`pUW%6+jE*# zQnpxW0xsVOnxD@=(vBALiYUH4hrhO$>(7 z0U`$pk=YLR_M`+zuF-9kBLg{Nd~UFBz1Pvc`m|?Ri8G3Xz_f`<5g_ww6<|phrH-`kO_=#@ zY;J0BU4VQDk6Y1F;PSisPSaQ^fT3aqjYtU{rG5&x{h|T`M*tKsQC2rKol{YH@%pv4 z-v04Bq40PkW-=lEWq2vG$-!4Fj+OSIy=``RRp871W5YBgN_Yx@Lcr*6YHI^5wi980 z>{zPz`SVXbuRfnH<`oo#>tLEU6)^!iLagQWgwnTfFTg-=2Tshu z*&`xJ%agGN8`)rSC$Wk;*{cn^#p1L$aRtOnE3~%y=gqD?=1H3Bwh~iEHpb93;Dtg$ zuMshir%yxxLb(GBDl2E2BX0;#3qcccPq#K{X&D%*uWc7M@(E94)j1u;Ee6aBD*@{c zYX$@gEKO}~?GiXbD$-w&JcpbyJPW=WT9SsRb2E)B$e*DkZEY37ZY6p4^(!;1QFB2F zd0moMS=p1CdO66NR_X#WgoufV@O`)CT&k$50!j*lL4bRKVyLYb=z9T`# z7T=@!a65=l>RR#(38hb@T$zUzNij&miX7*zH#u@=H1#EJ{tjtu8s?TxOl+p2BA&Js z6;InkLPtXr{G7FBxQ3C2z2wBoP52-!FD~Nl1yBc^9wZMsWC4A4&3*I6q0tPiCVA7q zl2vQs1j&^Nd{OwI*eh73?X9f<`e3DyMxNlyBY-!-sud?Tf|rXn7mGs$IO9*Ltf;7% zyoWN!-*>Z|m@xK?Nk=0Dkq+qy6%B;R9u!2POkr?xVQ25h2EoI`_9v6seHWx#Qo4{A zV2_R1QTjRIPjdo-VTPur&>jb$N?BN3 zEVApiyn0nJs&G^LTUC{+3>uHNx;lQ`OgcI<&|*cun()7v(i5)dfqa5HA{0z3!^6n& zU)JSu$nybTDFM9Rt<)HP4FCS4itm08?8YSLDhFF(UA1Zz`h2C>1ry1Stktg##| z{n>6_Tx|OD*QP-@bEpNw{@?rQhKBz9p`}Y@%|njS9tx*_^Uer_a(3k4+_P)2G1y=7 zoS9j8TxXN)d|JRGItSZOmk@RaLjl+1h7eqjGu=gvU}ht=3kd;bcXtopWKkZNnJKTW zRsR?am|LPhVkgW335EIjqHK{kTJatSIZE>O9TqfUXK-a9H2wT}MgLb1ew*}eY;Qly z%8oDf70iBZpOtHOH0tViJ|;?fVPO_&>G(X6*gO%KdB)!-k9|lRd!M}MAuS^fO*Veh z<%Hk)Iwq1u${95!^P*SwlvP%~=%*sSmnafLNM*-*!Br=` zIr?YRa(I+2k8;=8kw>q{R#)+m&fdPAt1?8(84~=b|1<)r9-3Syxu-#$b|bl^Wo_D? zGvQG=9sN$Ti8$>SH9Lye$1&$aUp#vBsj?CU38@O#VGa@6uq=PxkU5twvVV(bfBkxr zC?7xlcMJ?%roGG$xGXIt*x6+{AJNis)2jVa3=EWn%apP4X60Z64)yHT7GF}54^7^d zShos^q7Pm?c%Vk)|I=CO0o#ND7a+;hW=i9Jl3ixyW_nZ$lZ=Vl5h4nuKM#tpEG~>T znLCj@tEiVdDk^HAt4kO9^6Z8H5s}Hk3tYEd>0Xs}RqWU3>B)({YPa(~!^r>p=iiH4 zwe;<4>*;}F!DHYKUz&pwq-=0lTU_7oPiSv*9iHpu-Tzb}$@V!F%WgY6F4v_kFLR%b zm3^TJBU4iWRbsZbnuCsSNlD+HI`w?`=3#l10pe0iK^$MJt8wdESX4PWU4yR4!y_E2 z%S4JnW&{H5{z`K4t9gbJ;^LKMWt9~HaUh~nT5+3eROt*^PzegKD68yMoa5U>x{q>xwk;1~)JUS&367Qs?3MHiqPoMU) zzrmar!i3)IdpzS#dwSIWA?erOeo8z9ctC@U98!2~gGrqWe|dQBzWOP}6`G)*iYlCP zwrwT+1{W_IHofhjqH5wr_sC)q{+=vr}VbHiZ|? zIGqJ=o;(Q$i)3QFcEIuNi4!eMl*BhZ9@Sny+n`%j^}fE|TI?V|4M`58}9PoRwF=c5fA@V-Eo;qk!Uc?xBAsqh~*(KD!M#U*YiWW9F~N)K72g> zJm>jy-eM{?>=KiI|EB-`?G2zw`>+xgKJumbFDXr)s$w!(KYL{v?s1IFr;tO zbgHS)mH)nbSn`~sV|8=dc?G}3^ugz=tH?990(?3-DekC-RIa(cKH*o3TVA`An&yUM zY};>y7wErxnUd1bExXlMtap3yQca|AY*d_BJ-w{#p3KbEJ$q#K>_Jw=+0;~TeC2p= zuV2@{SR+5_$T3wG5axeHg+QREXAZpE(-ZUQL)iNyULvA|u_>;F2@NsUD3u0lWxTJI zuMe5W7REF1O2VcsZ_~H@iOn)I6?AoJ#9Yp)TJb39FS?tU@KY`i@9r+7!iCM=QphP@ zFxHe(>Qjrl&>5dBeKS}hcGZuHhbrebn%so63p*iGRqeyvzhpHZaAuQ9p@eU8ze}XyYhZS${^b7pXire0XDSVZTOnSYcMyC>u_zkE^8u->`8` zduXU|QB?z9l9!X??xI*r&Cd2(7;E-Tx~5Kb-O}~Es>Nu&d7ZW7AmS;6u6UP?@y#jt zU1UGGvC*6 z3MHl2hh!a>ma@jj6%2Ads2)T&nW+{M*I+;T?==J4i9NQmIlH;ZT6C)XdCm^JLvaX6vnuBeHJHEjJp2P%>QQ z@Y?ur^ei{4AKod1O`kj$Uq(mg#m4Ge@iezBk&d8}d>0+<=&~T?x}>mrh>bDUXLi7x zDM%;r9kXT5f+9@LeKs$DZ)kv2+2X25`#0-8Ca;2xEtA+skAV8kuPxFraq}Ph(bOFE z`jvH9*v7YphEG1SKgyKCQ;WV`hl7}bhK3+>I0`V-)_VF+K6tchsNC}sAm!lL(5Do7 z#7p+G%r93x)tW<1kEjBg0aAjpY8HFU?pcaEk9yy7maXV~y?a{rea6=~G*6 z96{FO>KC76TsjQGCzsb2efjwIJ=3zb^#awCPvqg;g`w>1cxv_t_bs{Zwu@B_b~cS? zcJ-GU3_1S6(U>IPtrVHg`8WpecB*4v{r3kSUF}}J6>G>EJ@>^RKR=0{&ME#`S7xHv z?ZwVbhWji%1xu5ReGP(~N00V@KQlgdKGauJ?p=`^`w2v6hS}-Z-9zV+NXhl+m8^!l z_ufTW7sn_G3yQ|$HJ72`v1?#91?N`Kh+%TF@gOhL{!X%MBEH+NgE`doq9eHrM*bMQ z%wQBTKFfjrA9c-?p#%?))Nyy^e#Zg$Yvf$X1yZwOu!nY$Wp!xw6zH8p&i22Z@P?VrI(4MN()lnfFfb`uzv1!+VDR68C<5>^*PUlA-f1#Js;$K|nCP z?7|R~@UDM7R|b`v6}HEw`|KpHSN$&iFXsG87Y+xwX%*Sav}Q_49F2z(h37~bA*j|+ zAU!Q@Z>UAv&*<{O>r_;K7AN|ccedG8cQ@(r0VQ!VGD*@;Ban!xopzJXPf5wO>hf!( zwy)Ty@sp_M$N>#pKKO`J)7(S^4)VJkU#kL5inP6YPuQ^~ZlBuy(1(L`czNc;<=w=R z(r$9T&plRV>C{%GI3EKdI>^S>46n|{#J|s^9lBJEBsBavtp8pX#4?y{??;`uG^MF27prBW2WxChGYa zXKTByYj7PP4Jjf*Vug92fVgg#`^DyQ-)u1n00_WUXq(cuBbnePv>WUY^x_LopU+7E zW0B95K(Ax8pWA_7K>RJS(4GpJ!S!0F2SyE*%&dX=3UZaqr$h+Uc3@?#~+= zZDQ83bZA^ph_XiM8MI$E={44Ey-+_$Foqyp!R!-w94tJR|y(Iz4nNhLkTm&s!O zPkcAs9%^!TbB8x4I`6KoAC+2y8hntIwPV)NK=S=1dOPY0*pm(o7mW6N`~z!CORHE9 z&&v@)a<3f7+R{!7uDM=SO*_Ar@r-~m@2!(4-0b_nUmxBcjrMf ztBd_uV0kM)?>_M1xytGPFG|Vpu2`rzIqqo1vlTf@0Cernq4Kx=x6L z{d7-}u*+~YL09)D>2A}<;XDK{<#+FIQ~6M1TJl;5Xy;bck*G6g z*idh6Y_`69sk*V*?z8RtZ_6hZ-xC>)c=@%sMEUiuj*eUZUi@l^*KW<2Pn2DTv!1fS za((S%9UQEzCB$3R;V*`Uy3DB66ctypuUe|<#FZZr7QTTC>xVt8mPiv5W2EhmFU7y@ zqGt*^Oun)9tG>eAX=%!tC}lbQd?^k!h=lxs?yIUEm6Uw)ZvdqOqktirC~h7eMs{`` zk6C~)@Fz7CxOn;U2~JKT0%WPPBXx|d)PH7XXbA4}qv3Fv0(yZUy4zVLi05{8bR-bK ziAPxsifi?cA6r9JdnaxoM#NEIhLNq^Qsp9x?)^ zukTef=%0_1+344p>1VX>a7+phKPu%a`!c`1O~%p5FBtsMWa5^fUyh8=;-jU`St7j4;?~g`W2ivRgx-O-vMYLTgDJSdU`7I z(5v~(8IratBB6tD=b(6XmOr|*zAvkA|NVV7WM+!%x!h`Hqwwuoy4BW<+$i3z{3AR( z%q*XMsvdM}#$KVI?rY*_dpH3D?_prEbQJrGX?%*y z#f6p^KyXSkFJ~00nVhT>Mn**sAb_+C1ogD4 zDzYdAuYBofX`v(JIRTmDHy|RwZ2Fw3sg8^$U~f;Yk+J|XaPeSP8eIUIZjzkG(13`F z5-n2@jHu$CK1Ch)s-{As#FR;k_{kGVv}iSn6H}A%oI*m$x$@71;)fM4UaT#&qnVhv z{KoiJ-rEa_*3MhN%vRD;3twNpUDNXKhT+r6`nbF73Jf*Xz9FG?Lc$IZlQy+JzICga z&D-3P_UhBA@q<3g_TNi43(6N(?ZQ8Wy57i_ z3<`NPzTm#jvU4uHfegmDpRtKHef70|b`tm#LB{Xu?hV~_(J)Sys zcP-=IJr%&j=H|mWmx==W6_sN%;OsmqfP0sty0 zu|33U&vG!~bXqgM*$Wpq>tgsKes=$2B=Udf<2BowVG04Vq<6*v1%=@7@CV`HXRLT& z@RW){KVE&Z-BdfiIy-|0dkHg^C!ByJNr=K~q=k)KEo!KHek7*qEBiiE-M+i*5Lf%go~=Ba48uAw}jpb_^o-Wj*cv7*0Sm zFgZCX%Sn8WSFiNH&q;f>c1}2!FCYZpsdSvW_b!x+EYjU)N zmijmFKndY$X8HA8bgayuF6rtzO+ALkB3^L)uhAvPSv9Kg&a|hyLM_tWzst$TqU2{_ z-xfT4n1^@F?v0rWCne#7yXe;6Zd071hmRfHwJSv!C$W8Bj?TOdCP_Nak7MRxW^KKK z$tU8q72o(5jXZQE#Pd%7K;WtFZ&${J~Q>OcWud4yN$2Z4+@zvSF=#>v2rcgQp zI6VnZ`5(_S>Fs{76TQFM7|PhWd$;?Uvc$>uL$_~R5D3)NMTPc0voE%Xxr*2dX)z;!9N^q~mAFt(S?jG{RxA{X-y*!C3e$%i&aJj8xS~~qIgGapj zz>bnXC;%(d-F*d9JZP;Uo=!aJb8P2Ea7TyfPfUiQ-?HJ^0Xn*J;5%S>gEOoC-w%A9 z3R6?dTU!1>&3fX*33w@U(uIKGOin@3RqE%5j7sFrV5%X%g(|`L4W)9${D~7{!8F1L z7b)SJZ&KQ)Ai0=)ukyOhi(kJ~x7PO4 zOs}eJoSidr|Avo_Ms#%i-INkKL=99VBEpS=Vs>!wHC$IDKHc>bl`LKvshjcdOXJC?RIIxO{`G>L5 z`X7VneY7h{n=DyH{6~fvDIXs=V0E+iQ%8sUmf`{045`3m9P>}_3 z2nqcFnmjWM{`tvULnH|d7F<+6o11%^nxtZA*1mknDsu4KP3DlCqHlg!V5$Pu6bP1c zb6(Ynv;BLO%4$>R$H?Ne(mg-Z(E)7F<_+&@Oe#u~aAJ2N_4SST`V|gDvC?)Fv-3u> zsRK%!`}*?AN|OoOEBX8lpnMLD)EVDM;sDx6OHcoxWgR3?0wfua)kP>PK7Q1%uI@W~ zR#^7LKO1|}iaE0FR8_^508uF^wry$QBR0w3zjG75zO(s~mRMH9V==0=%g&Ck>!9Qr zloQJ{G@%h&?_6_ZKFb!f9)zg6qE_m<3fvqUpYL(GO{H~at@-CqAwIsF*2ib2F0sI6 zDT-SOnP+{aGuOYbd$*^^%L2F$L`&osmnBY7#{?pBJeA~sY`$;rRE#N5PS z!wU$AqxQ#uzjE+;4b#t@7hJxBcZ;)alf&xw%YF{5kQr%t3C?&CkfbNkl{Ie{INUui zdwO1`mJtxi3y7ro?7Qi7BCbqvgKEnZUp{lW`i^2T>d67|i3hdOLUR`{o_Y8FhRVa* z-_Rk#Zd1?5Xziax@cEiSPUKC;n+6A!r2e`Y6Z62dG=}XsE%y;|xL>-=mSH2wy9rJI zpiDfk!_jOLx-z>P196 z6zP&3KuNWi;ePl~CA-2gaWM+^lh5x&ue=sYjW<#OG}`t4^6ALS3j$3whVEWo-QC?f z31^mx+TeNz21n}hv4G@sDcc%qWtvDP{a=@y|7lJ@)&j*ZMOUIt@- zV!PVfeqoFE^eAza;~OC%%1jGr>OIRvt4<)84W4a(ec*icWA*-!%KAaKM^@yZ_>g%% zh>|#GF~Yl-Yi;F4eWKutmy&&ab2yEKgqF`}PR{h1*xfj>OaH44xqd9D1!f{lYcJ!^ z<`7cz%*li#CH?ARlHqolpSQ8j#>bcG>=xORr*zuX@5k{DP?)@atKTcxV&&(zz=3Ee zFn?U&0ZQfI!$*&@GRB^5J`q4rBHT?Lt`S`C-QEf?W1>P%b!SV9%mepi6eHihMNUr- zC+slh3ha#XUhxXcPq4S#1Azz^q@ZaDE5Q-IL$FEjb;ublo8RO_oQz-i=3Le=FEO4`cq712v z1OhlskN|~-hC)CnC?L>eEkPK7RX@mEOp%l9OcKnuM;;JUyKU9SWlT>q5C}K|-yU`B zlIYu9Z>Vmdq}!vd{w+MRvFuvh*|Q@t!UioZkC=NeUW0td%8G}P(Ewa1#Qh-~1_6QS z{xQ_Ubx4yna5N!Jkb^sDGVd2mDa~mH%ydgO?Qy8GvWWArBe&R>MFF&(X{)!Kl z-|J3aV&xT?6%-ful>1zXCOmNOE!(!0AxCHPYlS-6fCN!7I=Z=$5okjyA$MVuak}TJ zb7&Iu|iF0p{*2BIf9v^6IY{%ul zx>}8J2TrtbPGLrrJDWUWtxg^E7;ic1X*{LAkA8T0*3k8jw$tS<9m3bu`9|RIrM|sU zp9CeSlh5%o1=U`6I(^zr?`O>u{+ap&FYE3?GRzN-zY+rSje@ zc~H6a^lX6hMz{lQ5nMZadW_}RKnnK88`~+0L%w|RMze(fNK9m7i)437fs+Y7skV_3 z2EH?=f zOKS>BJ2W-WMWJoJv}#%h0#TvIyyXNRTsy#gfguT^6|yrkZ@IZ)=cCXsAP~S6bDQqz zL_O3W2yz5CJK%w#T--zW02f^pn^sm+X6mF<sTjLj21NV}JEl#S! zam3g6BtvL#fmI~BtfVA%!dEanjEuY>M}vqH%@>$&ggY>F1p?1@-0|yw8ZM-6kia9+ zw%dX0oDRZMX8KE$AR`{{xD7*|ofVCw=T_9P0JKmVLS2V~IN&*sc99bj5|%m%-*Gf{ zEbjpEAC7~R$WqgC$3F$0Sg^rU!!^`@tvt7}Y0$07O^ z9~mv2onRLtrq%?b9hj4#FF})ph5{RX|3p7kxzc4j@3jS}KKVpM9{#gJJBn6Y@d)f| zH1;VH?%*o{f1D{MHrBN8W+%E%1e?B!*Qp>2h-2Ho;QGQUoLsf);2Tpv)6YwZ@7|G< zC@oxh%>#I0i6usTZnC|tkd)-b`dT{55xS7)ckc!qkVs9=%6d?BZ5IJPT5)0)-}B9D zcq83hUANX2HKEFktWf}O6TA};EYJFd5Jn-HR---YvKxb^_9&FTe|&8D z+Vh=WvZ(0hx0D#V0;{~{+XPFjzkIE18WI`(`55A z{V@Cq@G!{~ws^y659=yWK|%aP6se??)Wvh>b{Ku9PJyl*uC^SOns#j1cM#0rGiO?U z{gMaw5v!8yGWo{LS=D`t+g^j4Njodc`$4E}K!A98`AJA-t!*?sJcSe-IiPzaznhbz z_apKBYF(YTNEm7PaC~6k>2&{{Irq1f19Wdgw7JiZPjj=KWZlR5Jl~^Wt1Q5hcYnoC z1qo5nOYd*!o13S-c_R#dCiqF9R)WkS{oEO3lzv=D2s%L*NKiyi&dzRHdIaP#yuV8q zE{K5`PPl_0Y20Mk2q0rF&GbV9-O<(t+inB!daZttUqCX(6-g;>D!&b0MC44aEpDx? ziGhA;TGAssapiUz2gg7-%8^o?lykHsO4r3MowbWe=q(SXX-sMUUAFt24lb9S{n}|= zHau5k-}~&u?FqPB+4p|3aB!d@9EW|H#S0h=57$HjRo+Da+>HAvKnuEaZZ0lhmf^TJ zVenl4R5YzWP|d1OM3`#Vpm4_L_!Z37laq^VY!m|T9na0xznFU=qw+;{jTO8r0@T59 z;vk>uviRUtG^f%nJBP>0Ty?Uk_cI@WglEqlxrl|Fx_$d`XsF+nD=#A(ndu*|x|oEH zf=(wbA%Pg#*||A{S#4u)XlqB%)r-=C+se&t2}Tca9(Y*cpu~TGg$kMKnX_mAF7L;b z-Q=^Y&3_iu0H^?j`|dD8s;-oH%Lodd1*cM6To-(@GdCb5q13*8yS1-4B_d*ijSYXd z@AYecbbm+e&gdv}ke^CJ8j=8@Qk%@{Hks-+MRd$3-mZ*+?`dmojdMf`M(OC`!Aq{b zDzcL~+KU5O9?S}a6GO-PR^k8hU~xMgq^B20*3@Ah=)X;Hl7QuxmYTX|V(l^-K1Q^U zcIy<{&clai*yTOjo0`&74tq?-JPrvlZj^wFH-!q#t2$ z#N=nr8?gZct*(w&hK9Uhsi)HLrGW51VhFlAIBeY9_}`;=BzTad1XzkiaNae@G0cY{ zfS=z^#5TTCKtDAoi6kVxfD4VcaqZeBBOhG%@wbIWc7*g;(^=R=J4fPz-00vS0F)-h z(M8q}kZxaQhcdBm&s0Z(npIppfidYO>G8?&S~&00l2?BHN_FOpcy<5J+C362T-_n3 zRI8jDm>U}6gN>feO#G^xY=3;xR}Qtz8}_JZ0*9SlCXf>zGXnM*fJ)rR!-Ys}lDjpe z(qB_mS=sj5M6>%n$g^-o7;{@*TT6F$S2?X_pXO`W^J%fGj=%8F5tpMJ15{OhU=ks6 z}Cj11Lhfa#YEBqYbB>{<%m z>0vm=T-<&N&F+45<7sIMyGcuGe+b1(YJU5r-`{uT$q)lO9eUOUsmQ^rlvF=EI{JFg zvX+oSvjn*6alt(8h?d%E6O+jxs^wB|zD?p2SDP3>9lUWye7L2#x%k$w&!tWqSy!ed zZ`QlWp8ZQj`Qwlb-L1Ky2maa_2h!7>9?wog%bu(^r=+OJWL4rTNJZhvvM)-Nvn(iR z9wd<)H_k*jZwDyQR5vO9`qeUBOIrG|2x0gFQMKS0@4V%8YK~5hL zZ-lHR-BaajC46b+<;Hz|OW6kN$M{0tTz+}-@F?oN4Sk3sD=WQ`KJyop1U|l~1X(JB z*Lr^j$4&Hzz>E*txgK^ADtgGi*Yf!-zZQ{*UgDdJWVf2`q)*M{L*`6tzp>r~4L2v} zWOJGu8hKUK^~U*{!Rv0*641Wozj%?CHBou`>rM+A^;JYhya4`t;&O72;||)H1Nf3P)nTA2(h+q5<8lx#qH%)I=d8M`uXByhiK>?t%qvK z?ENKAW_npZnFT~dHGfeG`rBm@onTUEqx*IK&u6vE1r#VN%pCD@6%`7|gM|eTKM&8u zII6qM?Xu9>@J+Rt!cvAMz=b`LKA{2CRV#GG*YuU%wi^k$}n6aXnd z9Sxi66lF~^_K;Ib25(*)zy1B_acl4W`-0!B=mGh6_?tO-t~KIzxOJ-&u!^(uZuTTe z=RcggPmS+2w@w~pRHvly3@sD6bg4P#k`21}XObl&BUCi(_Id_Ms@XRCxDSvJje~Ws z!L`yR_$N`niu7)1s3h-L(o0QYhYrX7{(g(&8DaaslX0@J>}9B{Eb~Y84YtS7Zxy*b za&kXr@XPk?yR#Szb6ydmjj)51F&Ga9^ncwk#}4sfH~$Oss7N%`EK9 zuW>GT=cT6yU7W{I&}aRWg0DcxgRbft>7F({%!rp~J{uzPvs7Vf!^7yAl~wY&hw(<0 zjY-Abx^T)h6VYO26}WkmiGjh=-oA}pfn;Jb`_GTt*Q^|d2CUO_4~FfgngPz|sm$^4 zO6e9Dk*iak2EM+oEb)Q-23g@cZki;={%@fK7aU!g>TJ)-LY>y-5<)}$Z`2%xJIhRy4 zH0YQ&XP$ij_RZSHrulkEfmIR)m1`?G2W^fbbTvO-I>Fd@IzQh`PTpqR_vO{=5^wVI zVpLMkToEIjGhocm4#mW#)0~4L@R_I`^Q|@kSMs%Nw;wj{1{@qsk>%yjf@%5#?|sRB z;jg2X{>70uf6E(Vj0oS(H zY%F2GK>_)Twst6YK=7bLkf;QbXF`()Xqm^li~eDFsH`jXGeI_VPu?bU|`otcVA8Ubi~tEM`>goJr53scA~i7ifbhpN@F%-quG)DRz9gQ}6O7H}fK$%(VY~g+Rg& z#o2l1=W-vtdrt_`L|Pklvy6^X020y7_!s6`4i@Uo{;jLMCvtIQ2D8cY;{Oz(1nVF< zC1tZmM)uiFU2uLc=+3LEu6A{OS}SSO(z4!9;pA*IF_bF5^d4Bon3Aon0s8*DJYd=T zA@syB#mXw<7{_de&v9`H%4GkENhA2B4lGk0J-W3rH)6heAn}R*Tg&jsWDbLyQ`Nrf z)7r-x#UpCK+F)c zufG}qXzv%9s}0P#<~7#CUoRJGMMXyTR*hUyRZWX*e0HAfp}qm!Z%4t+L(SrLdtYVM z?)xeq+JO!o75d@#=f{MCWj4*OL7IS;c22Q>z%Iqao-xwB-7{`0Dr0u1WbWg~1CYJ7 zv`}lPFZ4^Z5FA&X%5#n06ugayIB`S(EQh7PWfKzx_PtJtT>F~zp2f>1%B}uexiyNx zD)4FW>nf{#G0I4zR!lojOM)25_2p>ciD~Y>FRQ3*RLsn##jS3t{bmlm|E=reJXrfd z85u|Ia@RIii*Po>1%sHVjb^;~|3hZIcu|zJ;zg<$eeh$Gw5}~cW_Q>{aGoBBE@9Z(vcZSIfTXbS7-mgW3f=q7Hp~cA(T^TkIrvSkFF)?- z*>qDsOlPM5YZwr-y}hzt(Ilf-ocFL=3#3|*kQz%SfBqa&Tk8S(6>8`+oMj+_LbwpU z;Ez4v?R|mQG#ncP2jTj1yRadLR5N#^G+<+U`+Xn_8s(q*)!XZR+)T8{p>$~>tn;15 z%lO*`e_QgAHy{Z7nT)M~~j!VI({2>sc;&1^0iB zb^Wal{AKV|NWAo+z`&2=Rx-Gk?|&UODlhNTUB8@j`6W92s{;5`t1B;z5h~fr6X{QC zXlT5Tc3^hVM7AXk?L~X;eBBSB&$lXSzh0g0sDH5wbkLegZ_kb6fCw(0IddI~4;Gdu z{`V4M+A>W`XR#_0PTFmfkrAjKS645Y*QB0OR(KlE@9uGFxz~Gof^)iWlNU?=qae_ z_;q{k#j#cZ%M9hh_-BTv)kfsrWU%rN#4mH9X$w`1$Ql&~t<-;CNg5 zyH`-?^7UqqlQ#1Mfjous9*h z!cyJj*atQX{#kAvMYu^WOIT4h^hK#KMvx*L0@w#}B8Oz7ra?bG&iA z9UY0!o&j{HXHRPF>4D0@&5b@*Q1^>tneTqSn_vslQ~wW7T3Vfd^X1Fb=qRG>^_1zv zw+T!G^dDcpev(wW{b3Ds&9N~Z9_=uJqlu3gu3r<|-oZX+G*5d72L}28xZw9!Z29%% zBVM?c&f|A1$=QM5l~+C&?&z<;%m&{V$ocClXMeWEd;$>M7f6!X_c|=h6oJQOcMlpB z2}y}Y#mne|AQP5$I_<%O8?TKo$=JrwnlxY-mwXs3k+QOxQ_B7Azuw=lR=-k;wY`#d z^^On6-cWugr_`Fr<;T_D;}%4=qk$Qhn8h%wiBgD5M8uY%Q8$=M zH|%n6f`|F%fcSGR@AZq84u07sC3dxRfw)S?7A`;j|8uc{yr-wX@GmnylD2AWygmH) zd*d6-tdx{?`A)V~#Y>GJVL1i5c-*x8P$=Uzt~k0O@bp|=^w?FqsLHv5cb&XX)K5@$ebHaLRg&Oh>1#mNqEz&Yh-EsC<-_72xlTiE6%e^VCk=p!M6jBaPPVLK$I4 zsu>>nCaK|3hED0gTmvehAaM-?##@tZ$sl{6D{g2wU~OlvfaU-o=23wuWX0q^r2T^` zLNm5Y*qB$8T64SMt4L>~@Z!oG6Nr|v!f$99Mk8=l74RT};4OtoNiEPVH8pB= zz|GiPBl~Y+zA+yekuvzjEa)KAnJ1$p-w^$3NY^ z{F667k{uMJ>HN3Xh=`2Um?MZQemnG|%5cITXvRiHEnC}S#Qvk`Itc7i!-?J7!-})6ml3+SmTf%w5+l zdSM=Fb7M=Vp#h48BWZhqSA{ZAMbVjFxKQLYV#m49cXoh%EikS8e?28$3F;BBtZ>7k zomS7!ne$h&y_aqt22222zxtig{_5-PFpGJQgFGyIVbEUhZT4TQk4cm%qzYD2w>q~dy`7JD{-k5IVj6_n|k*KS{8jklEvua<|){fS$ zZf`H@{j&P~KdLJd7?r)e^trk9OiZ#1RD%#0dU_=z-vn@XVT@ z>1j?*|Gs@m!^5R%=N?8i8}sw;_E5CXZ`mw{s59jMMf6BZ2r9t z$z~@{dM<2XlD;thg@NG#u2$-nUkCizz)1%28CTNFyLUTQ=UtVnM;@xrV)h-$RxImW z9ppK`u;6N86`TK7%+^{RSO~C^>Re(C3ya}!mN!Ji{SZ^y_1?HsBW?QSsUqiQ_pt+a zzm7J9(i{>~Uit%LGFT2G!;#)@H}MgUt2BhHv|+E)HEvAPtVOqZ8jI{;^#>b&6(dnm zLnEW$z`*m{&!$4d%lp9y9ZQVBb{-doi(dQL38oqcgR~>@?w;Ab-h4} zb$7SK*bf!nQO)1N#(6BSTIq>QJm!YFp)^`t%*8|_1% zJm1ocWkvqz#Q4G1Nj@fS1>fhtIyzkc{9t}jNP8Fa?UIv+*0(sDVlW{LkxF6TDmNN~ z>baOLZi+pfit4YN+)a76OQ3*7L~LeM(v!ac0ZjF@pPW~l<;a;u(bwAHI~Ux~wzikx zn}9O>*5ZN0a?WAO$IuSe#nMmrXe3H%@^W4aeb$v@miRQ*;K|dcs0olT3&h0s#u*U# z;vYVo97vX`|3@*bruUPFe4<8!s$v%N#HlHJQqtG#=Rb>rk3w?KH*RVtRHxYBETd_^ zp84=9#9lsRpyJwf3}B!gRazQavh_SaCqC9-@ptW?rY4$~FBdTq0BO?DC>v`t+(P?a zz9Luo&T>XC4@C~PRIP@&`WxU1bDQhsSOr#%B^NJB{U5!sz@qNjp+h#5L3;>}(>?Rb z!R0bC`NK^bzE7`P#rmxN^Gdb~Q9+0O$fE9bP>}s8I>Q}4O7%CKLl_&#$!*)f-}h}! z&QMKc(ZZoiCcW=&{OaxMia|GA{ODVd4)zV0juqu6@p5Mqz60&Cawv7Y_WAn}0s*~j zF1H;b;2U;)anqSa8{pFmOET2FQ z94v`LRqMVxy}lxN!si6T-K+~2u3fkQVuA08$O_F@NBxuwss`*TQ%eJq|)=T5)Gb%8IgM}FeH2-9u4Ov)hs zZ`Uup$$%XIhNOrmIV~?^=g)CJAb>bvmH%=>TC>x2rvsG3!K{0fjI9@pnS=rc&k)pc zEMvN*Jeua}Mh{XeBSRY`qUPVDZwZF$c+||zE#96=Jxoqa*h`X6xZ}^kKrrMWpWm)A zBrhkrvx~q@d*R#fS|Bp{A9R~9)+s}j6HCpE*#?cAH_%J8&|a3iDKtrG{fj>#I2}JQZ0@npYM7{ zcQ^cbTkA_S6#JL86-x5pgEd!hU#Y1z-sQlAw~r4`BzOFC$^uNwD}Mheavg7}LtDVf zSs3BhrjMAU<8SVZkVorisGUBKpIcvfi{PIF3K6UW(#{DS+ME7AE&#pp4YPlSEyC~# zE+{H8{pfTQ#DNE3Wxl!ccVtAeS&d5F);2aMsJ-W-uALp@vv~gd_qAgFh8Y#vd&bF#!7E;oG_ATe`YHHZd|W$;EguD~p0KX0wMzXZv#= z;$vW|MN0yMl=DP%yta$)Wsv=I@?;4@W-(91qukHvq^qk73k^6n=<23Tw=KNC&VluX z+$aJ8-b_iCQ$<6A@P%MXBD$jPPZ>s8v_)T^)m?N$9V zf|@R5KMTwHWVqMhFKV{R)F9hS_Lmy zR!rwG=K_W7!nt!Ck86=0gAahTWen(uZTexm0`F4rzrpsjhr%_WY(YL$ol8ws6<#TV zCZ84%?F9=P3W_84_fH;tDNR(q0&`>czg=12WP2^QaCb4>D~+0%NQa33as#@$KLZ0- z35tk}i4(Va{`~o@`xj8ju@F4NwKO#my3`Ny11JF6iE<$ogIAe^VEi2$OG85gM`kf` z@z3saLl5~cjLIN)OI0-x_9b}A$OD2!QedE}mKG%;xv=n}hQ>Gu7&r;R6hYebp&x-e z+7c6!;^brwSy`hiR}doNz!Bft+KLxI3f-Lhmx6+MydeSsOeq-j-wzAR$;x`0pa0Qu zu>Ahc_wkY(lv51OC@VxLVdC(ut`4=xlj!KN@$tbq<IShP@ts*0)vTpLBpl^pnw<7oRnwn>on~IqrKXbd(*~Yozt{>lac|v%?g3A6z}c z#7o{nMARZ*J+xf2zU8|5C{3wx{ucYPXwm%1Kku80UH>6cdOapaDe=vzj8+YOpE7aK{8B8;#~&&qYunY8r4z>~Wh`k0hRetZVzFS$V+9rt z;SSar`*Fvsuwwe=unZl~#)daYc4BczTA@2|V25p=she@-qtkA}!1&InXdIW9gRE&x~k@+sv!O5Tb^&`N}63D4&t-Zf2J6GTtH-<%00l-j|xO zpq2rax_PswYi;Iw)3hiYbc{=VeGtPyxWlKLuA-)f1Tc0)upzVAgA;RMwNn$KbVMob z@??y1%p^we}9jTm;Xg#EK~V@QH+71Y*MMv`JZa(Q3Sus-dCQ z(ri;vfiC+wd7OthsK3?MUpF_0zts72=hU^dZra$aZf$zO44*o<8!23{vIik=VsdhG za}z6-iZHvlsDB=5J~*$~WL@i9TXi)x`B5Unr0U3#fbei!D`ziVT7`W_@nQwOASiZl z+%LHQ!tn=2VX5!tgNi|^n;jx!2Q)>NT(O(S`)hd_OHVINT}*uNuHk8p0a!*A zIVdIInUca?H>0TLSW<_6peHbn{0tYXz`pXNS8DWDoFg#35pd}}P zv5abIEI3^;b^6K%5ivGL{PEDSZ<0;K! z1Oi21Omy`8?^LVQm4K)B9J;jyvcrWmpMR@!L3!b?)L|OPS$1*V7)vc}g%0@I3)s>YU@Lhv^x=TvU zo|Es-{rLc|K3p&yVC#J9)Fxu|k}#5sH6vWLvMRx}5`%@BKR1#yt7 zAoljemMBDRiA(Z~)!8qy9!Tgl*X5-pbKd*+?_g_E=lkmeF|ug}2G)N!t$$FjaV@SE zLrCy9GA9TQsjJ(=RHA$5t%cPP!~@o)MFNa(c|AT3eUvKh5N3bC4So}m{9A0;0~^QV z#|F6nlc(>m{pFxk@H#&`dsQ!!p9vCsTJxhJQ|xTz$7yqss`G#`p&iO0CRgSu^2(&) z;eA?{pB`ah_7g1$5=k*>z+Gs`X~et#_T5WhIeS(u-#Q~M?v|R`Ygo;7w?^3RY=;Q= zU+$qin0;x*%uH?%0gth-pzt_218vlTGKTNa>VY)!QU|fETW-D=aB#?CD{o zqsxQeIY`)abVB+q?1Zb>Ysj2FoqurOJE4L2wz4uD59r41)|Ms!!t&3~wk$9%15`NX zPCzQOJ_v}?g$SHJ^xti&@dhw-hRzmDf;Tpp{U*l8f!$(Glb>H$0Hg;h4Xv6i`58z^ zJQts3WMw^Iqe2815y{8Jij-_0q34&KvZ7)|Wn+vSsAHXFw<@mvNHDzjptGejlAk^^ z(h;hCgTvoSYPKhm3Oqa8uBYBl2o3GQMnIT)!LM@rb`=r|Y7Qj;{quBd8EHLSiZsBY zA!if@Fto$p-ydpPpnUHk0BW4~7^3uG=fJZ=hU)N*$aUssEGcYx`NfEZVwG|r?LUuR^FY+H(tGbdGG#x+K5cz$2-ze|H;XQ>HH~u4T9ne z(?)b>m8GO~%seCcu57PpWI$>Uijtg)sajOD47JtORFC8Rb2ZCUH8rgsUFjUX#Lquh z?qhl5hEIFilB$Xs3+sV`2p$A3z_w2jA2Gq}chY zZi}SmW_2HZ)51hHT*TkMG|eioUF)tk@ZNca#4JMY`+xc^OgTiHoJr2kf6%cB6R`n= zTY^qO*z3u|;6S3x({Z0=|JU)Mh-(e(zNua-fc3xgp zMa2zC$untz*6vYd{^zMaI69UD3z)(@1JH4xe1Sr}e&Yr{2DX?~$BzS`37ZU;)k=3Z zc4~>}hU+(S7#K2!tGTa|-+Sk-b$;WTrKKeZReV;MdXNr6zYYLN$bTVZ!R!=S zy*2zyfh|37;J_(CGswC$q8zEJsR3j!$HCzmNWtL4de`r_*I;N(kwqRhWvjy6%Gywu~fQ4ler;`S1^IqkOG{)~rEM*YwClHY{j^!JcO3m9A?Sr1f`ZY#vtTFU%a?Rl*I#LA z!%XCB$Vq0Gmp!2=Tv;gyw_W7;_;Ilh$K&LG>`LQ3DS?=|Q9gWx@#Zl+Iwu=y_VVQ+ z5|RO^m*twpIy)l=1fmrIuRON}=xDI>mb=e1c%!2RWjZ_uLJ|x%ZAWStz^o`Nyoz{F zxC+8zgoLYibQ~TXD;C21B++>qzTq4k2{p3M!wr{cGI3#;m|UKZW%7}Rxe1a?AoI6i z`2hqkQVOsmb7kd5k9fEMaL?i^R6gj5$7p%9d(xw$8P>!;--7p~CKn9`qGp1TDJdQ@ zy1f7S#6DCqH5K}NOaEDf99vW7mBRsdSn-dwZrRvSq`eRv7}lAw*b(NX{i8v6^@^U) zBLBPI?cPJ)U%pV!=Nswhe2b5F@2aS(ax*JHy4(eA&x;pH0^URTH3g!ozkgo`JQ4D_ z?9>Nr{%x3wobASL#KEfiJ}iMqXAM#8+Eb_-}p)78AlC%ayVBC%fBe`-0Pz-*6!5yynjmNR5 zyu6%1XzS>JxK(9K%OmI!h)2Y$+Yc?us#PJFsI_5jXG)jyPEH#|cVs za2rCnf_W5o71{(Du!2r3`1-XUI~Is*WRjd0FD|UCh}o`k9d;hyh`aXl1@nhn(R&CN zF3=Vihq^im2k_o3|9e-rg@=+qcEIWnVEDN@9)H6p zuKh9-vs(uxO0zSwQ%R}8bc8lHTQBYPtWdz6*K_?ugmCC20;n4vt^x8rJiYLNcu}FD zp{P5gT2ycgb?2I2WEG#dJ!kQQzZBQd%#|%ypFtlGd)!|of$HS8b3RjKKqJrVb-jJ{+ zrjBvZBYOx;2=HglyzSavThKK%MMLR@gaj1tp;pm|$P0}1*T_iRH0ySMNl4bxGc1;u z*%-Z8DccV2XLop0GVpT$UUILp`FY@gLDDuF4pBW!d9XZWr)OHlB`Ao&SzP|nmE{(; zdAo1%?7u8i07b8XPQ`}ZVFc)Mx_YbTqdW)p68KTF2nq3=f)?1+WgbT_uiC1r9}6PV z@^GNGT1$1^Vipz=2{2StR_2+R38qAq1bgi4DradHyN5#N<4uefu~SERXgwrLV<;i> zTn-5UhiSKt-0KZe6V;DXc@S-fIn!TeFP%Df?nx;rB)b`o9V2?ABeL@SHuYQgbFWsDVZ?e))7(8xjc?xFFYG__iz6i7`&Ma#nJ(MrO~}1;SO((6HqJu->zKkyc>1 z+?CY7XXGkE2`V9C0@{zr7j3sUPr@s3L3g-m8hjtL=U|Bp?Qf5gpezv+G@#KsFyISmi?b~fUeY7$U`Al8dROQZ z-XLA*xk55++k92s>7GOcvUg`^`Jy6OPe!}=uV+Lp68qdwc5JC(?xu*qiemzuVq^ne zr^L{~K-D1=$ooEE0TR)%3)^G}kVrgsZR0B|;X8*&iwz1!44MiECW7Ei;cm_2dx*jNu zK#*EUKQGX(q8{u$dj!UT3&Y%|Of3?$mp}wC>Y04;?`nMX(BSDypLMxtq!0WasbxJS zw%wNdUq|uNR5!OP&XF#}4l2rJWiZgN>m!J9TGA$A`&d zrqC%zJ*xHiI7(x!N@rv)JRcdMi`X>&N2Vt!(l0@vg+zPxX0w>!7-9Mc`^Ws z!c2ZJyH1@KbaUei6-WzkM1O;k09x6D7Ac=|@j$trSU&gzDo{{5( z2i>gtGhB(615_aWi~0&2&Y8B90W1rIq;-s5{jRO;mGXOtwvD3VNuC1qAi<{?<36za z`_KC~6%}(3jLYc1lYkbagN|SZ+8b%xlh%$!FTzAa%r}DRZwJG&|tW33$Sz)<3-9;pGJq^&SdihTFj5BgC;QRcMT0y8wq`m(|5W>K*jLL z!Toq;;M}71*j->B78X{Jo$bG-Cn1p}##4%h1+j-@{TL~v7@bM(4*%t$I&rG`nC)r3 zr+othbnAyhi_E65uFx(A+X;?JW22*JsG@_gl1D_8n(qWJJxr?*9I@GlQ^s_0qB&UL01JytZokXg{Ktwx zY>z~xj5w%QV}Igcu^fGdiv>toaLl%srF-pc=`Jqm~ zr47ln?VF=n373oj)!p9OK=ro=S`0zEX(#k@@jlS^c=LupMC6PJvfJiX;dnDj3jgE4 z=#k-X`bLSoqXP7l`^m~ROqd`whBCodnuYKtGjkavG@q%8jl$Ym`^mPHUAi?b?MLY- zXUL!3x`jq7h-&#+MphU;pjhDi<%X!6ro+`B4%(?VuLM|W5;=!3w;9e;ii8>3v zMuvtGlroU{%Rn2;(NO||;Se6f_XQ!Uvoo(ZHv1q#EhnefpQo`8pBqftD}O-!oI=x( zZ2GFjdUF-b$gEJ&ZgzHI|BM!X`frhrGA#Y7D(T(bON&eAPUkUdX_HAgTClcZuR+91l$3kRrnj7B059C6QmFJHtprgDgql_g{zjgoG0uO1NyIzJK@k^-a?# z+N-sps>6bzjGgNTgB`(7nbzzlsi=6LHL!4Vr{Meu@$>K6?r`}d)yJseZm4h$=5`D0 z|6a23TW%}360X@(KO8wvRKEB`OI5ZP!t}V*cI!>{ZIoFO%YAx=hDZj)w;iB@k9bs0 zeGSbYY;jcP(kaNwkhp?^w#VUh>3Q^Puzaj6EZN!Hst>C*xF9uFr?(h&)7Qk*6#p6A zP5&hX!O5Qd4P@BTI|WWo`{%VASLC;h&Rj+k3bN(B(E}emw%o-dARRy;J$CGdg@uTa z(9*R2J2^J0i*qo#?tj6rwJ!?!7aRw;{J5|dG&D3!`RwKGHDLWBE>9kwx?oD>1~fDhXmD5Dte zcSG=b`*ttF&hVm;4om(NYYBT{O-;|%O|tI^J!nnmW9a$lQRYI^BpO5bKapg0bSM!! z*01OVy1E`9z_U7T#-+4w)r)fcDa{TCE%g9L=)K0RnHnZP0WSLw=vpA5AKro%K()Fh z2=dh;N3jotY72+@`ku%Pm)F!tW`3T0d;N?6KR+CXECQZ*h)4LxL~`4h^bZVF$&cGVcZh>lr|M+^=s|sC$EUV^0ZF;0W*3g!p-Z~9$w=rAgR|g8(B-+ z{k&&tRELSi)+R8Y72)NDaz+F=5(?~J+RvcYnb$5gpmG-H*3EgEqA+aegcCl(nOqa` ziu@VxOOt-t5T()nqw}?5oOZVByeECzrg?Bd)q#?jAMs zJRstg{eAY#W{WM6vt`l;xQ;$qkve^FUDIPLAQnXcsH-%I9SFmvvs6*1m68iB%gFsA zCeI6-AVUfjvlneha32n!*%uwnimAfi>27XG$@vQxw&G!L7b<3#d*MW@hKvO*FEevw zjegC>Zr||e%-BJBq327o2hrx-r}UiQkx(;XQ|cu)%lruryW00B+eWTZ`bH1&i)2uV z$E)h2?pbJ6Z)Fr!DJ!aP?TQcJk$OR)KT4qse)5b?Z(TOFpYWt>38^!-M{3@`Fi9k| zRnmK_0cMe>Aw?SpWqMglQi0X5`^aeUF!43j)%Eq|%wX!b3K5Z!2+QS07JT>I$JYia zdFyXV&pJC>iCBMnIecg5_5moOhR=}>U!~;b`t}XXznTN&!gp>}GEM;2@;1E4Q2>`o z+x*a@>1pdKKlSbPjQE`fuv+V~n@ViM=YEC=|HeDOZWn2}=dSN4NaZYl?ONK!3$)Z6 zf-C=uI!<32nwYZtX*Op5=n)Yg-yW|rxGx(S2{U??45VB?<8Za`3?EdLCMOM4R1C@k z1|<&d6GtE!Bo#XN_O*@3;8jOa8-wdlxPlD~jv5;F?ji68zmO_Rx&%UvZ%fM^TEn_S z^h#F?GxGDZ6F6KY>567*`sPQf-3Es;qUDe=rx8YVr8wzjoM0|^=aPXjXZZaIN!|4iqBp+OcWwTP9lKkQ zbhIg{<^ZiYZY91PnG&F45 z+UP}V)~HQ`jZ@6ukyu%Y?Z}b#nV!#CnfE_^CaSJxSz7wT&%eF#BmpFP+(@LgTKvK` z%LefhG^`IVV1CAPK2|{`nBTaEip=9z&)bh5OI;}z(1vO5x^v|CP*d~q=7yt+zig?g zh3;$qI)0qY$mkqS|JSdN<`zuJ7w3QNl*&KON>JU1>b)h$2Ig1&B!iTQe)O7ZU2;{`Muu^(W0_ZhlER&y6ivxqWvYfT zcQ9N)Z$EY{?egVY@X=*w|MX4vaY}~#!0_}$c6!m;T3S!{7S(|R$`6|^i2m9WbImR- zncv&5HKQtxhnH5{ApXU8)7K&fE#hmGi|2y41Skm_$j&k{{`&YJ{SU0JUQSZd&e!p{ zJF=ITR)p!_^3sIy%H&JspKWGrhW}mpi2C{{-NssbnsIQj<McK;UskYq~4wBIw9WD2kj?2s(KYX~PJsPuPKK+)P zjEu_@t$rkj$aF86%>FCk(fueWXw9$B;C5r*n~u~!uZM2wTUPVqpfKHuq8}}Cl>PBY zbz_xVPR{!x=2?RkF`Vk#9A}CfquZQG&I?)eEX;9JkOm7Z&bWN|;L_Gsi~jb>ldMml z{v;=-H62ENadXk0m3J=un>Iqt#r<#Izb~E}SjhEr|6pD4 zQqw6U#9F$1ukdTj<>H!(*moXVRL4Ir4@h}@{P-QSgvoZ|`}a3X?hEiTB_w@LRmzFb8tvr zEvNrSlGqz>e~3>VJyvj*MeCQ9uWV%f($cxRLElW~2Yp>!GG(GsQt|PHNVp2~3rH;q zUq<}ut-fCA09=-zn$hz!y}22C36M&X8XP=(_ipSoEAaW#6C04KX>ukJmDn_zaF@}I ziasuCIlER9vIv<_RaHd_3OjHw&%A64e53GCP7c$fkio%VA`uz$ z=7v$REwN)n0*Azz*p5#9@(Qw4<`^6t+qEG+<9P{*6CIsD(kzdER6BQ8$8PQZEvA1M zbOHr-ljT3H54E}GSwPlGxRjv8Aa@n9wag3(GP2JQN2J~I*AS@N+BmhfSuFONl#22n zFg}Ti=T4HA=G(j$k!f55Y`(A9R9JYjHId`9H_dQK+j*+zCMGgwW=gi3CvbS4aJP4> z*4D@{;0iI8kn6=K^`;D5a(E+TR<7B>`?*LSGPUddf1rh1?c|i?;i07!Ro$-mK-Re7 zs_TQ;ht^jMr)FpQUcYX??$r2U$#ak1a?EGqL_LekRafD%sp%a+$7k zXDkPNfK;stR^ojcTzbck&zX);SCtAy!utE$><{IWAz7(Tg&@XPjm zMwS@55?-dP!nUz-%RXc z$L=-O)#Vzi8(6N=>FOqIZRnC||6m-JRV3wX!q?mJ_KR%HXU_b`lXge^t?}@k5UT~!10r#I$w2-7R$$NTEG}ZA<(V+WWiVY# zf8J){EQRAWI-2tKw(o-cdhguQ()Y+qO1@8;5hJ`w=Hir*+4MaZaOhCLvu8J|>o0*@ zH_fwdgDGG_08a)7`&o*ywX0a|oz~w~4tV40S<}NKwRu)n0t5oC2_2mc7+x#qm^?T3 zGc&7eNz6Zj@VGi>70Kmu=3LAfK|v0|bvteCNE~HX*HBm2Jzc-FsW2|HnEq)o(IO-( z>#LflL*Ckc1gdLEYD3UlK{c8Y`yMidAGEmaR+cle9)yYh?Z}vT{p=Y7f%Mun_$h*T zpD-N><=<;{{{EH%a;BzvxN;m1i0saxrv*${wu_wyKYdED8$3x$JkXX>R_4hXuP)n> zTx3Mme_cmbN-Cy1ZzUojq2%}VBJAm+Yx@$1PCoNu)Hdj%In7pXzMeiZdx^o=7`;hq zIB1pr(caut^ooKGP#kuFzcB_sRgE!Vxig)dF07};a*AHKV1|TK)jGv=B)>h4jGSSf zCTHPTt{y%$YE#ID*6~_r+xOhO2}Q;8CGQ!SF{85^ei;~(_d_kjbc zF*N?cikFvXg^q^(*7M48wkMh;;}f!}Dfi%%Ky`d*4}ps6VS<{S$i<0~UVEYSRsWSM z_h{cDJm2+4v)#j-bf08&Lrs|M@*KAWu~4#tyVL&O2nnw{cc|8TlBJZD0rlL(Du#*q zwROaK$WXui^A%FDAt4z*^Z&B2tlob>A`>Q)Yr7`@@+GXwH%7ly$3O>zxu_ zo!wZur9W}LWLpg&^s&)$SV5v%htb~1&=%a#4c8g?~0qgIVxdZUZ%?i z`v_O%!;mFSXRM;Kcps;0FED#mUsS1& z_Wv@g(9Qnx32Z*5AbyJg#;C+g0bd@$e0TR|v$D#^iZsPms(#5kLH&qme-{Wo0spx* z4~Xt&w?{6YHf18b@oOcb^CdlL{q|?p z-my6CANTGcAAt#%#7qH_B{sS%ZPqqHMG@Ti4&2=LOvBOfj>l^jv3oqie1U@A(sFIS z>eHtJALGDZ&8=DM>)Q)!rWIq2Zp3yqo5|tzqeM^Y*VCv4!K2D497a7e~CnUDsN zD(FP!<~ktypoTiZX}vJ_((`8Fv8wmS4!Kg4C8_GCJ@d8eWfd}{3xQbK74`%1A1fH7 zL*BnvtoDciX4>~-Dso5<_rWY9bNad>-Q6%kdAEuFAm9cTTV-B>8!L}3el7Hs)M9Jo z*lln!Gh0zlZ2;EfgjHt}|Lr8ZsidMh-V2z1k#CJBY$jEPLY2O?i=+g?Z ztB^mV$e?$D&CGanG%c+NeIT*{5;}ECGKR;@OiP+YUP#Cs zN=+MpBeMSUz=Z|-fS`+0ZQPEZ$^J%0HcGQ(JP|%f@s??n zg4e+`94Iu@WieHfM{VN)QONynH0Dx~ULo`;8K7DBsu@4RL_YVjT1~6#Ol0D!KHn)ytus1th7wc_y;O=J_WuHGUst$-CgxBdMYrB=G+uwCG7W`iZ{ttU3*<2sZ{k7UK<1rHe zB2ykG{(Sn)!4(5ZzfNkXEL4z)xi6n|Fh>YO$6eja(tq*ol!CP3*}#C4@-WH2hnFv!%;^{J*9 zCho}G0au)SGagkxirNEKXzi=?O3w{ge*7?&(Am3m(CyE^7o&|aBCbP|i|3?3wezNEqO*;u0s^e_PR(eEt4?y&?Jp@Se=Ra8E>Uwj-bP zFcA>4HbFCOeZry(0tlKf^`4GgCA=wd9Wd&$^!t(-xglu^?4rEkJf;o#p zw>6x8rhdO)vzuw;sf1rcn)Yp~ke=2&7u%2|by=l?o>yJ3GrYWO(%hf%=ElYCPdz1T z>==Y(hC|`StFil4ZwN8>$jz??26f`(UQ)I8@q65^jKqZF;zh_}W~HVo7;7UwGJQJ~ zwhwn=P~bELh58lqI1@kDTeqIa$cUt)9`(D~$bRcC$L!LUl!E`pytX>%^p|gU{N-5e z&MRiLpq7l-{`(pzOd3)u!W-%MW5>4~BxNVFvej?iyeS}X9O4(=&BN7p0jLw6Jb7B+ z*PFM}msC(}F%v4lxcqLM&atSjr3dg+O=BW1yidoD%)g4)9MF;G4@~iZ2<{I^mwK90 zQSQI1aZD6AgzRjmcWw)z0t4+^5H<~kPT|gA#aSZfB7-?N1E*QeImg9)BRTO?vG;}E zAQz20vgPGvMo9?*;qF~6!4Pu7?8*wp7J#cBAfUhNY=d{GFS-`{MlJgNFqnxG4C0Pq_Jn5wbyH>vT048NKXc zx>vCG>r5Nja!1tk@#y@`ghVS=rQDL3jkMxCZ>bK%8$4} z;>Ti#oss-bqr=ylR4}(FEEZb89B~b;vlEvr`TomDP`1#t9VP>sEjBhkM#_5hUwqv2 zf&K=+PlFqcXa7i0?oXNKQ=dT0z88atfv$ei%$P0@sL92;mH#F_VtLPrtZmuxDE{b)5s&wZhQ>+1@X&S} zPs>KaD`r1p!gc#L-H_xi4NObx%OzF8%Bj7CM@gC7mp`s7kQhII>lnJF3@u-Hyeo3< zU|feGn~&Rpw@mNM3vQwo@aL;dj*s6)6wW{1mSy}%nU0l>&FCE&a(FL>Ae&L|GT5Z$ z=W}i?_kIHA)Y>}I&OqAIGCMk28yewkStJCg@kB(B1O-(Hz3O7vYS|c?wC(>_th$3^+!-bB4>4V2^B&8 zoTYeiYs6#z=gZUG6N8I0^^}08VXRed2n}TnTnU7O`^C{X07er)1Wa&26T?b6Iy$ZZ zKwvrdlyFs1F~H4@1i&`H>VOZ}&~v-WJeji}RQRL7UFWPi}vWjP7PKLJ@az{Ga=>X9!XjPvtcui*6J^(l! z>~sK-`%_WTURO5@b$-~CpYZ`65jLMBQPpsnz#<&nUyMQROjnL$7t$ic@Z;b}*w}1f z5F;9Bxw)DGkf)C{=JC2MhX^250O{-N?cMgvPH5LNem^ns2RAp@b;~`?^(mcWOkQTJdn=nxAst;P|vcM*(Vqxs?tnOw2Myr z>a`ch3k*gdUdVut_f;m!_t!6c2IBht|Ioq+>x^DmfK%1fe5=<3gb8Cq0EhHj;t#=w zmW#$rP!$Ne-rjhz~a8JD>mf3KJ1KP!cXn0F928o zbg|3Cv0e2p(%4*TRmY%uawS0W`gQj%UF_QK-&(z0Il844oge%!Yya?X>!{gz@0R5I zNrm%tN=^OTYKDFignww_^DhI72mCkSl~_W+UtsnQd@iO^NJ8*uVD#Vtjm6u*U@zbf z0?Jo!Z)6m3I{Y&*2U8X(rSjV>vlBD`=@w~$fp%d<#mVEx!D~k$q9-sOm&toaPjLt`HZt9*rS=e}J)=|E9ig+ya6}I-+ z)z;SQm}X+$b^pNw(88d;`8_7)9NX$l;11CEU_0iNRbdt7?%z)ZAeQQ|ww_)#3`}q+ z@Wq!}R5UcgfyN{-A*cbV3%E=5I!2$6kf`j-II$9+~ zPBEs9<(x}OW_?{buwNvT{QllyT$CiNNTW`Vlu(G&85pS)q_m4;asB;NRB<~6-DZMY zz>h1iF9Qk&=s`=oBH;~a1uA*3IIdiI1wLFx#*SwOzxD!x3Nlr;2I&c8{98gxk_l5uzrMqHK*!N=pUI)?J2myF$F?!k z=j&&d>OnuHH<7q`GZw&!+}uD#djyyCbY9b*UA=!0N{AO#-d!I+-9l_uag~U;hl2E{ z*w?$so*@jaof73=r3FKdoZ8tve5s3J_G;{E1}$Z-D%Y=rE4Y_{Q;qe(uK)@~B_(hZ zz(gGUKOC?$H3eSHCI1vrlKC@jhQ#it+MzaJMLZ}#Ga zzmNqOJ&E}Cm}iHDsgIB#zx|YxjU1@D!`#n^Zgx-wH zk7o}aI3x0+!8keT>FiXUm2!_EF;MC)^fUkzz{mqS>3}cKbmxJ1WZ73tq~lO?UgiYg zf?)Il*~p#=Bw%=aJShQC%#ywrkO!z<$A}*~$JZk3y?MW*H~<~us%%uo5~P5gx2wpg zKi}%joFb?7=*aIp?#8gOX1d!p*Pj@jy2nm^H@YD@YE@odAW^k*WU9OMAxGVqD)o^g z09NE6xQ|F>8Fqr-Vlh8>6L}mcEi9ZqpFUkLO{2t@$xkr%^Y$M7`D1TG{XxQa_?Q|Q zNj8LIkdCm&OUpn-l@2xm2%^EFb{#b}(;F*lCoIt_CJRbobfGB&c}cD+7*;Q6t}#D{9#<_JGEHb-yuXo=QgE)F+^xWq&?C8b+ueG$PDBO>Z&CI}^n$!>9rKmdRpu5^O(C$V$iJ>cwc_f3_a9s7Om^ekcylW*k%9h}6;*bgwCbY1)kM`x zJw3xEj1oph(P-bBn{&j-a$e?nK)bxYD~E(btAm>_&|}%qEe^VRC;m zq;__G2sR-ffLQunRmFYy?~>#VR>)+6jmb}6+VaS*gWq0C%{O8r)oo`d!bjk{Ct&Ha!BfqoF&-S5E za)!SKqX@0o&-}XsWC3?1mws0pw0%?d$O&hnfFt!w&EIV<*O>l&laVJUQ}qwX;bgCF zES1c#*~?oA__mGhij<+$U6f8mYu&@wnMp|p(FB7}7_bxF78T|b24TV#N@>Hxm|N*B z&c+|n?C&pjb+&>m;nUhse|Pr=G;M{2HQSxJOpuuwcMZMy*VlLOkRmACWAENI37D1| z#M+vq?pSu(0#ZDkWxoO-2gg?E7Fq!SIZpTPC_HX$u;6B=wp$#9F_r!1Lap1c+vMbj zo#&S_-hEK|>~rtArfF1f;(0w`o-1DfJ-vWQG04x3Fl`M6Lw=rQkO2A zKHa}GQMEfO(Uq;n=&sDGc4%OLzUM4bH?U1yvT9yJD*yGXVtRp^8YPH-pz!_k$BKdB zzp@MNzd{5|bpV9e1#HgVL9^Utbft^g2lhoe8p*mn!XkRd>l z%S|Ai0rdd|DOl9+Uk=*sE`^6@)A9BEv@h`elQ76AQmK%;IFGQ?81uv3%z*HwRC0d! z?-7bqIzaHGz2Z3JxE3OH&R)z+P_sKX2wBfh%X*uR^!nAp-6>oNQ5wt$Q#_w&-3?@+ zqFukPre;}5#r>%A;)M@X)Q?nu`d_xm+#@8^DedZ7rWq2P9u>8UIl$uLvoAna&*Xab z8y|8O_mPf+28fiGXiM|w&tJCFtpDMSo=xv9XuYNq+}fiyFxfs5uZ|>?ot-)jgTQ+e zEDN)BUT(^*9k)*Vc*0chnHjCK3lXuS=xf{1kdR!zR%gt7Q^--|9(>w7(@U`*&TIn$ zFVECBn51S~?(jrH%|KY@_U-Y1MN*raDqEqM+$#I`XA282!pWJO!5aR)PoI8$^T%^e zK#tO_PVW;C0g8%SzwA_V|MK+OxoncM1YSR~V<@=k zobmbh@5N?QY)m}8EwRS|{2UyoqX!XOB456Y+^X0;#tMruiwNsyWvR(XZo?YBp@p%K zSC^Hwetv$vt`3$Gf*6uBpHTBcpTDbnY0lC>PEN(d1XxGm$;bYb@2m+S*b5qYIjEImbsU@@6d#vmc>6O>yzx@7{gZT)K7=3BNuVtH0bbB&bL`UtH302|J{;;axiZo;Y)(FKonvUfahZw{{!(-30 za&lI$%j4dvlbZ&o`@(0V=W+ZdeM{G{1#~^1+$I^Si;%+c4GO&Q;^mQ2mZN%Cafg6) zYqc#b#Kz_+6GKN^NyfJ0f;Et=3H!VcD5q~RCooC1vK*xt6+eCY>l;EVwjXRCQ&ZnE zQ>pbPE2KL+e@sa!_MkIHAUb`zNX#mA)c^WkvV#;9AlAd(%O zqTMh4WOrM6dGYY`*Y~K|g%HC89Lv&u?2TxK~z=lha%J``mk~ z$0o(HOb;lwv#DI^A;2y)m~{1jP@h;C!UXp2UBld5-?p}7O@3DFR=k zSWEzHa!|wEE+tE>^zYql(=y}gtk*a1a zj_qb^nO7@}tw?PQ9N)MnPqrTeI&JUX;CpPzI)CpDhWyc}v$YMLo14HLQzm%l`$fT! zx!JyveFqr7d~W_5pqY&G^-t7$_tItBj1Z7hru$Q<;T028@$K%iV_sMN-2MXxIXjr*`xCeEgk|WBoUjdrVt|c(?RzdEAd;J=FZBZZammf}_-WB-*T7mgUA5>PdpEd4|D|_=V zjs|xCMTa}5GmFT`DECEl8^2Q#EMlYcf8Lq1gnLrOlP5O|UjG*x_hBV(GdVXGj4VU5 zw}5i3Z{bNO30DCH!1aKzfIf#~c5ql2CSPW?p$DEm6&@e|Si;cF)ZCI8uWAz_9$}sn zCZmf4eQ5kQe1?@X>Fgq}CIEb%zZPlM5(c=2GYuS;G*0cX2=hBv+*M_!vow8rF%)Njn zP}L6uBcm)pWVQ;KsQc#lF|;){HobPOf2#9YQPKO}g2#Zfy?gh<;yjce-J+t5EvBQ6 zy>}`an!{(=XN&P6zOY?%b8!;(`84?WfiH~;+1axnV85*XbG5ixUbmVeiH+^MQr7fY z56PJXg5w_G42FkY)B^?>sNL!tJ_0+@TIX#GT7VDp9A?b~0xRo1_T}C+T?~<)>oM`r zxC8Ko;VbCe?qRXdcAv2Ll;F9*XK3-@W5n#I#YP_l)6yzUO?i%t#44^l&ETB zw>-IUO6>Xfhk~>o#ZS2(UP!PBqde>^XsWY2RnR=j!g~-9KTHd|3U+)#LjIOW*tcJ< z8Xwn@DjTTYMf%;lH#**|{qf_#SFxkJz4g^b)9~Qn!}=59xBYAl44a8nE3%A-YHH36 z*YcrgH>c5@PzH0+#>Qr4Lr72$QpZF@%`jHY$tf@~c?}QJx-n9gi{qo=dkKL3=a?=m zEon<~bZ~<-_WpOTZmgBIwgfgUuwJl8!8So4eh|BJcN1ADJ^iZN3A;OYkNaD|Puc56 zRHOr>PdvzK4!APuNpCNr`SWkeF6HOX)0d38<<63bS$~3>(~xG_a7}UzMXJT%S+9@}rL~xvzY_ z^UHbNcJkc859BvYWIa`Q7PhvyH_{#@Ue=)xTlpbYY7siKV5>7+Z!288vLQ^zSK88Y z#oY3+S6SZ+y@Ar4i;rt`PMs`nEr6R4C=s)QhY5xMi1V(Tv9~8NT~MFysu-(Moi-iT zv$T}EVwfvzl}g`gbPQA7&P>A%&tr6SCn4oWM&=S2$SlCvOaM$sM$NU3b9L>|)2HI< z=dK<+z5H_|RAkP$_YqXUyhV7>z`t_Xxp<0gqa7#NieWE7gY6CdK@<$e&jrz$R{r+Q zcVpgSVfgPtYMR(3W$M=p!+}XN{bLlUy}=n&(bMCC+{FGQiBV4bO`oD#FJr^0&3+3~ ziIfyC6BAJoH0e)AefvfnvY$W@B)T|!+6fI1YEJbpEN6$8qmPP;+A8>847g+VQUE&N z#j$M!y`+?sq2a$LR9UYYkP=S}RUN&sglU9VR{B1O9+H|cIZ@t!d9++10x`w=-WZmW{_*!e-t8CBSde^b_eCto zCjQWWO9qzzKYj0gTN0{vi<9lX%QHJwZ3-D)7LC=x0;2qFJ-uQ&o0em13o$P*h!ZHq zBc*OHzCHr)(6_M%&nGd7r;@c41^EiSl0@$~yl#>*nK z6E3O!pP5MesOMVPu zuVL0+Tvk^0=a2IpxUrnGw~&WV)h%dhtLPC3b^H8DHoVLy*f}`t@5ayVax{}G1LIiA%V~lOvWd_C7{m=p`en!;hK;i zQBh8m<8t!o^P}N|xhnJ$Vq?#fyXvd|13_vMYYp})pHbKM#6&1DhH+~Wi@#$S_vc2T z-!JJ&KQ=hX!dC9MV){?dP#gTV%~Fq;;^McNnMz>Pwl>SJPj9KA#ePb}8ZwZ7YHQV1 zRSos^-6)|4fYBZ7#xl_Xh7yI}9a&lX)!DvsA7-$K+Vx*Rv|$Se2W`585x~VkrV(^C zCMQOi7lnp`KK%lsJ50Cr8tQ5;M0Rj3^5G~5|U$(q)tfC zJ^*X#EwWOFZOn~|+7y=j)cJX+ST5Xh|6qavmbr!3U`6i)h8&Y(@u0Axap#Gt#2KgU z)d7m-Qxo8YlaP{{Sy&_`Ccef%y7j?5s1-t6)63KI(uE7DnVF*CkUu8t#uz|W7IrvX z7cbs^@PJ3GV8FH?L{i;qe;-iVKtV@M`tRRAa-xpCcwk4^iGVwd;Q>Z9UF!B*pBbLN zc#-VpcH7EoEmXt?+D=Vn7COnylrKn$NlN4-Buot^2b@W~p6S6%d+X{DWSY50D?Q@T+o4p9F(a2cC}G=O$~g3KNo4d zSmwY141Myi;4)8dMP;JQo$8^7&H@6b&dGF*4jupVG=*ROoXZms%vG{qJXz8HKaEl6 zC;s^SZ{Kt}2f%35q{)Q17N)b%{UR-aP3K5Wh}#pIjn2f3jN>I-|0lTeN*?cpp8M(k zyxCSLqd;+|-K(UeBuv<PblKb9sW^DfO{q1LYe$(p&RY2`QRe+S-pTR%62dox7N4-H~1x9!^I@q)p>;+6mOg z+}ODE^oI%x*~!V2C0xLSM?~xj8-j;-IiOnf-4lNh!XY1sDZ~5g{h;r*9e_Mh7Bm9L z$1gU+Z<#TmWv?71HlkYnzL+dmXmGV%h%BEg~N5v z&wV1lE)fW$Wd0-*dL8L0595^N>c|dj_glzbO6Pm_(LljJC~e_9k@FEczM3f;=X|Jc zrs({orFL7I?JGgU8_|j3EkWz z*nUq7dm6GHnA749VA83}K15d=VxNd(U}s_|=Rw~-#K^GA#l2#nAr>lXm+SAZpr*zs zF0HPvuAo43nuV3Mxr*Dd@>bu%$j6wONXH_erzR(!P8v=uL97Lh3pqp`wksD3unkQikcw4 z885NzRr@@5>=^_(prEuNR0S&xxrYx8F6KOMzOd|w#lz1LrmmLRs3D-Y zH0(?V#(#giYZ}|+*qS7kkug*qGPS;5S+JF9*&MgPEcLOwi{TIADoK)%Bzt9)NJbJW$t)|%UL|`x*ZKZ_&p*!}&w2Ig59gfE`Hc6t@9Vzq z>w4%9`4jUvEX>9v(#^<7RBurNMWK4qUAF<#7oMJO*4F#I#!o@6jPqs(DXl9w!^2&H zd-chM%UkA;--tTmJ#%ZbqnHYUw7ky>67+=`Bbu7Th3?q(y&^d~naO)Rb;uAxXF#X; zVb7)Ss5mv;Aab%-M5OaVBQ_QNhq8M`MQQj^pke0W z>E)+hSzqkO2e3U{WA1@yn*7a=5BBeY0vR-s_|YU2d>*@rhrKNZ8PD%WY8XXKmAs&ex9A2#v zd_kfR7gF`}34h;mMWIT9@gW?`!NbD?vxihMvA9=YfMD*zO*IP=JR%|^ z=-$=V)^?%n$?8E1JTz9&7m7t3k}~W&cM9^ieiNdI*vHKn(XfYJ^Wnqoh<|Y7x+Vma z6y~KbJWokMy3DyftOyFa*n6?xtMIB{p6o&-fo|5G?rsP_se#P{t5k?ALU9~rnZ7AQzTr5CR<=1ih<@!J#8=wU>?hzvIQV8v;YS6@cFY(*Nfh9c2VdoWehE>Wg!zi*(f7GwboTDEr3*>QE=?cQq|8`( z*+yinHR3z#+&^ETqyu*Y@b$pnmzTKE-)~V)E<1F@Ic8+O!*DGhRMoijg4d( z1bNr9r%!j_oWV6QNK$IQy!xpVl4>bwX|Z?i@QaE*fPqzBX&{N3ksF08e_ZI3BT?W4 zKyYo3uy6-CsKY=Y>-0c-4a5X&c-@Qd%9u!~tRh%nU%JmAh9Y^r&G96qcYPNAeJaOw zb-$E#6ky3gJ=xyQZu(o<3<0QA#duCPK46p9Q2M5+S7oEei=?dssT&x5EA%T zQ6SPFql}Njk!9yjTUXZ&+)ZrCEO66d-@k<)WPmp8Yfzj)4Dlv-^Raf?;M@`v*a~JI z>Cm8-se9~Lk=skeHj>rW1ts=uS=n6k^H*NK)(;5GExc_yW$8GH)!+lS(Sq~tUT?ifuFP7TRKMR1m4 zLd#o6OY3uIJST^5{?n)7#d3POcWi7R~c4Z?ua@=nye&qsMprE1qc6W z&rVZSi551PocPJc6U`;Ei)ZSBy?1lVJ^?Yumm!1z?i6ZlO<)6v5SNb%J}D>&N!hKQ zpudwyWZpT%UN!tXlDCC@wqe!@GBR1;xt0 z#yB9fn$sW@@>bgTpV_f^OIH>eAK}<`6331mSkKk)Z*OLOnd>g8v)3=$cCrx&>^1{j zW%fQQt_`=AWlb-mcpLmR|Cw;`uV%x&dzXWPT6+TuDMFZ^7_~EN^e&=5@7MS^wAj6l zAJ1=Y(b3$3Of>1r#T1L>!3bJb*70v;mTjGu4Vk?%J#Foz?M&WYm!hnsO(K|-7d>P} zg@nQ?m-v@VQ3t>MJ^G}1;EQ|r9L}FNmp{L>L<2{N41;}bt+d@GP9spcC}-uxtrozo zK8^hBPHWYrkuR$k+D`7-(;mg98nia|BHs9G;W_n%2N$3Ws;8^_S4U9uDkOvaHM9At zB5Kc=W^Hb))^?n>v;QP;jX5q0T_&Q!!jofTjZ;hI8YEJQOTQ(7u;f}`FfZR#sSIMx zo07cDidsvTYJRQ%?J`S~IEz?Pow>FY~-?i@*sbWpjpRE{tu{CACA6X<9&l`&&6Ly*r8YH!||2_w=x!(9e!e`RwP>7#+{QHsT@`zP~B+ zKBA*;QZ@}~`yV4BG_-SkibdA~-vB8M>AT83nt0x>s<>2*n`6w*?qIqlm)~+xUE|ob ztSo2SVZ$d+>VjP8W={ugWGH(Vu@H-7Wcq1oW-mC28)d@#`(c`Pq?c*c>(>T);>@+T z^YVT~vPd2{ki@nX2{yy~&?>kYoIt(!s6pT7{*z2EU#3T~B}0tNynJB4hoG~a;!|n% z91+95-tsxfqaMRw%$z@7-n3ZcP$8~>`f)FyZRq^wp=)QC=_Q}7C zWhRAB`r}8IXH$E+mrq@i8TxUANhtl!dN22=o17fO;`FZ14&8uCawze&P9s>C@*i%lncH;-aF;-XD>|UnC!f>Bte%q<_W6 zM#b$z)f1!98AhOsx89Cr8Sw&qAgzCxaXyKY%Z#33aco?SNAX8<(k~U2kEof1hfB)r zPpAuHJ>0)PA*Z?7Th{dB)VDKXVL$h1Uw`mGAI~N_`qbbSDa193xJUiH6^iN`K1zsU zLPNK+Jv?{d441sctw>*XZs#`+cO=x_kq-T^B^`&irF!-wS^UX+N5rImM# z=9-;RQ)B!3b=WZZa@<{klHjcLutIt?V7mp>A<$imcV=Q#^b+OTffu*v~K(SkApJwm}#jQ*Ge4Q z;nt8_&e|+Jw-HEk92e)@2kY*9m(r$Y=Nm;u^!b_?kFzbisegn#dKAOT`ew3!W?)!0 zHgW39n5Bwp8t{zD^G&algARavH`7Nl5?wVlOHkk@!$Ck$hU`={iBVyd0gZh{vLl%6 zHa0ck;bOoJTUs)1H)_1Tg)N9YuCB`~y*C#5sD7n>Y7O#?fDRFEHDZ}lp z7qtTeWx|R+RUcX|>u0_6=C4jnU(Q+Is?^j312?VFWTtzEs=@wkb8xEYxwJhX7k$%; ziZK`|x{dY+&Nw>$J~eJDM#^1x-h&CBO5w5l*78JtPIAx<6jW04Ki&L!MM+dVjf;~C zv3s$}W>5<5cw;Q|@B&u+EsGE1i-?V3B)7?=E_yQ4(a!FqRm?$bQ#H7qg2tV*#`zzJ zES;C^U#2Wvo{pxY(}Nl*&n@h7TwJ+nI`Qs`k3;h_Gyl#FmBDsoZtfFeOL5WYlz)V4 z{v9-YxWX?DF`nDcCs!z+U-#2r%%16Uv^<^yT-ws|Z3RPkmV5XRH!DX1E4$CsidTQ;$(Nq{4}@F)`NiY6 zFd4XdrhswQ=X)3(@6Hce)7NAPKSzRJT@q2|=U3h{#B=986o&QFvrc3>g2rwUL4}(o zk1Ld>uYHuH2`MxdVh1sD?W_af0w(p%0O-UzUSn2Q=ezoLZAGSj=%R+k6Qp$@5u(PbfNuWb@2V)#O9bqC$Q_`H^l zUB2HKQ1kQliY^qq^`f4?*|g@|m+|x|lBnpw&|)lj-ogUZ<@tU!%qPsvp{zMHFi<^l zh(Nf?b#_;)<&~>bH*a3`o_fX0?fhxI12|K~N;r6q@wb^dIF+-IUrSmBiK?!bNGNuWCJe#gKzgy#s3z8*+k;bw>5|oflly>g#NY`L)aOPX&#=|BSkMc?FAz^pAM$ z#JHj2Q_0`T{y{?GYi@4F%4!3410S9yW~$hic(V!%>$r zu(U1u=jipeIPnCGYF{2K!UVzwrQ$zur4v?CZ2A6r*#qcD{<&pdXe}Z~czp}chA<%g zKD69=^)i>W_1pGrDaLnkG|=`Q9v=4LpKr5h6gy}3ZBN@Xm;Op+ zHIb1$hBglU93Zwrk`-Z^4%}Vb+-5K${s;;p-a3sb*!VT`Tt{y4_X>G6nd0l6g(L*Bfm& zRwnX6?*&~P64qruY%+venw!zq0K5=zH{=gbEWCxxFr1D|OifpomIBt^C+0644pk*U zosx_5p|hhOvh;lJ)abS{;C%`{`WM^8ni%S^*KgQ|s!0 zsF+D>2ZxD72Ml$9F0)CP4E*|4>c8lE+4bx9?_|M!bZy~cK*aZKb0K?3p`!^dKGV}1 zKmn>M<*|e?V9xVONwKI_()RU@OpHJD;fjPf&}vi`5PV?zlMO&)$qLd67X>s#<>cUn z+*?;?TXT&T3eM<)Kr#+TA)vFc{y0KI_5#99^SpE^QQG=SWTY-aeq$Fe(*yV-UeHhO z>qGzRagcq{VWyFK{l<+vi^^9;MPItR6ZB^4tvY%>Xwg&#n(ZKZ_;=*=uB`aS@Kl(c zKD~N8P5~B;mHwT*y-4SqYHEIBnlD!VS>& zP-`u8f*cyU3TXIY^8s|$+uNJ!Y9V?$z@`6s#J-@oSWjQy)5{ALl-H@L)@XeZ>BrtN zN<~%v{K*r8lb5n18WMtBDEW7?u(TZyMePH%5R74Tnr#o$5RRn-O@T&>ZME=j4CZ#Gu+pnZx|9N>x| zaSSN^CR3Nq*q8LA%i&N@B1V2?t%jO$@W%28Z+|GSB_f@9svMRUl9AC<%V6`@wz{HW zzpYvY%q_xzY(P)r5yUR%hIEi60)K&y9SmC_SX>%+;^fJR@p&AQHA>E{Ph}wn$oph# znwyv+1mH@or0Ic;EH95F!{fpR^lhZv=gze?bqYx2OphwqdQ(k(U0oz4@is_DzpZB0 z_>{~BVsp^Q#|a{_!!Y@DOY*1T5fM+nW3H}wm}w8X)W3ZwWf*zi*vO;g3EUQ0Q9P3H zuFd>6(^#(VGAfY&-zKzP1Nm=JufGV4$oCXlj)JLDkK0spIxvL-*4K(sn*XkV+(iX`JMMSTy8TPX6W_HibJ!)k1 zz#yMj?%4C}Z8ZE)xEr5Pmh7HIn-QEsl3`2u_6j9DhrpF~_0MXv04shNV93l29~YON zAaREVfJKPdx{6l^eZOE28Nt-HF&CXtPe0>8S^`0V(PKAnSNX+hB#(J{gS50xC=>b; zucoK}1n=0?%nWjksAa*zW9erT8x-8u&*%%Y@XI1Qc=bwYOQ@BV6=oEcRD7=F#fvJ* z{?)sXheFAxG615}5e)#eP;B#G)&L3!@ZZt@%4I3>iO%1@4J23inP>HdwFPL=@AB=N z)5L`M&|HP>`O1n+M}Sf2^pWKxTUfBeYeOEB6a7pu9zbJ{3UBhmhb!pUSs3Y~ShaF; z$}TRxgg!V}^{hGqt8ndog#{51&1E$A(9uO1D3i5=lMH}}qNg@1H}tRv=lB(6 zEL}k(xUay0G&gsu{NfO*EvUeGPxZ8q?ZvdOl*oinkL>}tfZ?^Bj;`|cYlT^X2sI;F{UDK+$b_Zj;9axSp3ZHYmi30 zo0tgL^Fv-Lmu0-OWw3?CgYatP)V`DyHur}LjVI^NKS=dkdvLA zTvmAg90n`R59ONBGthY$r>j$-Eg&`MUalFzikK3#jXsboCfutB4y9)?3~#%>Pg)v8 zE%X*sqq2&!xs}u-8l=eEhYzX1PKL~<_+s=b=2Ob|6T1+Ru|LJttD=G@V)*KNRg%{a zEn@yT1nGouy7!?}+X4gQa?NrVr`Kin?v3dz#NP?ETZRv94XaSD|LD4MW0$@ESxSH@ z1VSM7Vi@8FMuq$LzOF5u8%++*yK{fK?MOb>2+Wa3+nuW+Ek5K$v$a=x3~SIVk5ynw zXqdsK&H2Avky@`k&c_uLR4y6xcj6|@t>nvyaxBSXl}*3ohJ~~%H!mpL@@O$C_Q%f&e*oi zWKM|{Cu!wy#pwz4lLVOtK9y0QH6I(>VO5I;a%4(>-2M1Gp~QVK`is#@N3OA;kS^G} zzC1{73DRE=G0M6_D&RD!-QPc1BsNl8JL@$gxtPyxG~ky)!BATu=kx^m&c)^5#~2tW zEh3O|6XHM~~fw8bi&{MVMPZ&%7|;rGU3UGE)3(C9rQFC(qOwPY?y}AW+8ZDm$bQ zVd|jeoMU|c{Q4D29dR)wgByh=Ca%*ukGCNY{1-=LP#b!uTVKB{D_8O{(R;MF;=_XB z5v`|+3Xep^vwxDD$-iQSOG=UTdr{Y(-6wc=peC%r1v#mCZ~gu}6Of)2GkiiGCR7R-SlCZ`a?SDuu1(CJp}Oj|v36B`eTsnWkpy`O@*=3m-8C4X~jWd^-UJ}w0{qwRxa%44xFpITL>1zfwKc% z9v&OTA*0pUHizQ$ca*6ndeW31%sTjcS;E{e}TWT(Ghwek9$_Lq36r|-0Z;^@%aaku<;H3;AH9#a>`=01!bcjWwo zG#l_Xw^62m1?vXMGm=Zg{jdk?E`l4Vq*?`I%o0NqX4gBA5BG`$*CWzsZmqeqbsOTuX zgutM&z%ewQf_CBdH|jn5JeLgx_oP$;-u( z)B`%MDipMtxD~*cfG#>t7SX{2eLJkJh~nYhP@#{$e@DkG$ScRhFljhIza7gR%o|XQ zu9ZeRF1B^_cm4eJ3r%g|S?!$deY50AV{4+?7;D4!#vgnJSQ4*(HLNbRS|LNXu$ z{m0JgtS=MJgx*q`Q8oZopPNSo;SKRDJ-r2buKN0uI08g~W$c=7-@R)S-;J_tT_nrg zlEDf}7KRX3Kv9tQK!OU2V_-<2g|`zy7W&jK!8zvIKX6A?rdWB^1&1UQD4BQd5`v4$ zOJl6g1W(3yq2W^8jP|askN*?WBdJ6Q5OK}_hV*yh<7dX_5oqGl7sgI}!@)uS$~*h= z$JiJLTDaSD&KMcpg(5jM4z?8{G$--T zV>HZ((b3I#LU8BlO$?u$nnFuCfb%cV&K(Qj&=_6p4`w40AIe@Z($LV5A0wj})jOow z4(6cn0v-$7u3ccfG(T2V-n$p^m@}@p_tBNwL1_Lz(1)n_LEf1DGB?n`%%LIi@L>mBN+Pn(zahH&2sD^%J5i z^%yfg;E4i*X6QJ|U4-Pumq+6bR~82fN(4!eN6Ck+-EkHjJ^yD;|MzhJ{Y2{~!G8U| U*&Zg!e@{gBh=Ep~hSin-0jxhs#{d8T literal 0 HcmV?d00001 diff --git a/doxygen/trac_8c_source.html b/doxygen/trac_8c_source.html new file mode 100644 index 0000000000..96179b242e --- /dev/null +++ b/doxygen/trac_8c_source.html @@ -0,0 +1,2981 @@ + + + + + + + +MPTRAC: trac.c Source File + + + + + + + + + + + + + + +

+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
trac.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27#ifdef KPP
+
28#include "chem_Parameters.h"
+
29#include "chem_Global.h"
+
30#include "chem_Sparse.h"
+
31#include "kpp_chem.h"
+
32#endif
+
33
+
34/* ------------------------------------------------------------
+
35 Global variables...
+
36 ------------------------------------------------------------ */
+
37
+
38#ifdef _OPENACC
+
39curandGenerator_t rng;
+
40#else
+
41static gsl_rng *rng[NTHREADS];
+
42#endif
+
43
+
44/* ------------------------------------------------------------
+
45 Macros...
+
46 ------------------------------------------------------------ */
+
47
+
49#ifdef _OPENACC
+
50#define PARTICLE_LOOP(ip0, ip1, check_dt, ...) \
+
51 const int ip0_const = ip0; \
+
52 const int ip1_const = ip1; \
+
53 _Pragma(__VA_ARGS__) \
+
54 _Pragma("acc parallel loop independent gang vector") \
+
55 for (int ip = ip0_const; ip < ip1_const; ip++) \
+
56 if (!check_dt || dt[ip] != 0)
+
57#else
+
58#define PARTICLE_LOOP(ip0, ip1, check_dt, ...) \
+
59 const int ip0_const = ip0; \
+
60 const int ip1_const = ip1; \
+
61 _Pragma("omp parallel for default(shared)") \
+
62 for (int ip = ip0_const; ip < ip1_const; ip++) \
+
63 if (!check_dt || dt[ip] != 0)
+
64#endif
+
65
+
66/* ------------------------------------------------------------
+
67 Functions...
+
68 ------------------------------------------------------------ */
+
69
+
71void module_advect(
+
72 ctl_t * ctl,
+
73 met_t * met0,
+
74 met_t * met1,
+
75 atm_t * atm,
+
76 double *dt);
+
77
+ +
80 ctl_t * ctl,
+
81 met_t * met0,
+
82 met_t * met1,
+
83 atm_t * atm,
+
84 double *dt);
+
85
+ +
88 ctl_t * ctl,
+
89 clim_t * clim,
+
90 met_t * met0,
+
91 met_t * met1,
+
92 atm_t * atm,
+
93 double *dt);
+
94
+ +
97 ctl_t * ctl,
+
98 met_t * met0,
+
99 met_t * met1,
+
100 atm_t * atm,
+
101 double *dt,
+
102 double *rs);
+
103
+
105void module_decay(
+
106 ctl_t * ctl,
+
107 clim_t * clim,
+
108 atm_t * atm,
+
109 double *dt);
+
110
+ +
113 ctl_t * ctl,
+
114 met_t * met0,
+
115 met_t * met1,
+
116 atm_t * atm,
+
117 cache_t * cache,
+
118 double *dt,
+
119 double *rs);
+
120
+ +
123 ctl_t * ctl,
+
124 clim_t * clim,
+
125 atm_t * atm,
+
126 double *dt,
+
127 double *rs);
+
128
+ +
131 ctl_t * ctl,
+
132 met_t * met0,
+
133 met_t * met1,
+
134 atm_t * atm,
+
135 double *dt);
+
136
+ +
139 ctl_t * ctl,
+
140 met_t * met0,
+
141 met_t * met1,
+
142 atm_t * atm,
+
143 cache_t * cache);
+
144
+
146void module_isosurf(
+
147 ctl_t * ctl,
+
148 met_t * met0,
+
149 met_t * met1,
+
150 atm_t * atm,
+
151 cache_t * cache,
+
152 double *dt);
+
153
+
155void module_meteo(
+
156 ctl_t * ctl,
+
157 clim_t * clim,
+
158 met_t * met0,
+
159 met_t * met1,
+
160 atm_t * atm,
+
161 double *dt);
+
162
+
164void module_mixing(
+
165 ctl_t * ctl,
+
166 clim_t * clim,
+
167 atm_t * atm,
+
168 double t);
+
169
+ +
172 ctl_t * ctl,
+
173 clim_t * clim,
+
174 atm_t * atm,
+
175 int *ixs,
+
176 int *iys,
+
177 int *izs,
+
178 int qnt_idx);
+
179
+
181void module_chemgrid(
+
182 ctl_t * ctl,
+
183 clim_t * clim,
+
184 met_t * met0,
+
185 met_t * met1,
+
186 atm_t * atm,
+
187 double t);
+
188
+
190void module_oh_chem(
+
191 ctl_t * ctl,
+
192 clim_t * clim,
+
193 met_t * met0,
+
194 met_t * met1,
+
195 atm_t * atm,
+
196 double *dt);
+
197
+ +
200 ctl_t * ctl,
+
201 clim_t * clim,
+
202 met_t * met0,
+
203 met_t * met1,
+
204 atm_t * atm,
+
205 double *dt);
+
206
+ +
209 ctl_t * ctl,
+
210 clim_t * clim,
+
211 met_t * met0,
+
212 met_t * met1,
+
213 atm_t * atm,
+
214 double *dt);
+
215
+ +
218 ctl_t * ctl,
+
219 clim_t * clim,
+
220 met_t * met0,
+
221 met_t * met1,
+
222 atm_t * atm,
+
223 double *dt);
+
224
+
226void module_position(
+
227 ctl_t * ctl,
+
228 met_t * met0,
+
229 met_t * met1,
+
230 atm_t * atm,
+
231 double *dt);
+
232
+
234void module_rng_init(
+
235 int ntask);
+
236
+
238void module_rng(
+
239 double *rs,
+
240 size_t n,
+
241 int method);
+
242
+
244void module_sedi(
+
245 ctl_t * ctl,
+
246 met_t * met0,
+
247 met_t * met1,
+
248 atm_t * atm,
+
249 double *dt);
+
250
+
252void module_sort(
+
253 ctl_t * ctl,
+
254 met_t * met0,
+
255 atm_t * atm);
+
256
+ +
259 double *a,
+
260 int *p,
+
261 int np);
+
262
+ +
265 ctl_t * ctl,
+
266 met_t * met0,
+
267 atm_t * atm,
+
268 double *dt,
+
269 double t);
+
270
+ +
273 ctl_t * ctl,
+
274 atm_t * atm);
+
275
+ +
278 ctl_t * ctl,
+
279 met_t * met0,
+
280 met_t * met1,
+
281 atm_t * atm,
+
282 double *dt);
+
283
+
285void write_output(
+
286 const char *dirname,
+
287 ctl_t * ctl,
+
288 met_t * met0,
+
289 met_t * met1,
+
290 atm_t * atm,
+
291 double t);
+
292
+
293/* ------------------------------------------------------------
+
294 Main...
+
295 ------------------------------------------------------------ */
+
296
+ +
298 int argc,
+
299 char *argv[]) {
+
300
+
301 ctl_t ctl;
+
302
+
303 atm_t *atm;
+
304
+
305 cache_t *cache;
+
306
+
307 clim_t *clim;
+
308
+
309 met_t *met0, *met1;
+
310
+
311#ifdef ASYNCIO
+
312 met_t *met0TMP, *met1TMP, *mets;
+
313 ctl_t ctlTMP;
+
314#endif
+
315
+
316 FILE *dirlist;
+
317
+
318 char dirname[LEN], filename[2 * LEN];
+
319
+
320 double *dt, *rs, t;
+
321
+
322 int ntask = -1, rank = 0, size = 1;
+
323
+
324 /* Start timers... */
+ +
326
+
327 /* Initialize MPI... */
+
328#ifdef MPI
+
329 SELECT_TIMER("MPI_INIT", "INIT", NVTX_CPU);
+
330 MPI_Init(&argc, &argv);
+
331 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+
332 MPI_Comm_size(MPI_COMM_WORLD, &size);
+
333#endif
+
334
+
335 /* Initialize GPUs... */
+
336#ifdef _OPENACC
+
337 SELECT_TIMER("ACC_INIT", "INIT", NVTX_GPU);
+
338 if (acc_get_num_devices(acc_device_nvidia) <= 0)
+
339 ERRMSG("Not running on a GPU device!");
+
340 acc_set_device_num(rank % acc_get_num_devices(acc_device_nvidia),
+
341 acc_device_nvidia);
+
342 acc_device_t device_type = acc_get_device_type();
+
343 acc_init(device_type);
+
344#endif
+
345
+
346 /* Check arguments... */
+
347 if (argc < 4)
+
348 ERRMSG("Give parameters: <dirlist> <ctl> <atm_in>");
+
349
+
350 /* Open directory list... */
+
351 if (!(dirlist = fopen(argv[1], "r")))
+
352 ERRMSG("Cannot open directory list!");
+
353
+
354 /* Loop over directories... */
+
355 while (fscanf(dirlist, "%4999s", dirname) != EOF) {
+
356
+
357 /* MPI parallelization... */
+
358 if ((++ntask) % size != rank)
+
359 continue;
+
360
+
361 /* ------------------------------------------------------------
+
362 Initialize model run...
+
363 ------------------------------------------------------------ */
+
364
+
365 /* Allocate... */
+
366 SELECT_TIMER("ALLOC", "MEMORY", NVTX_CPU);
+
367 ALLOC(atm, atm_t, 1);
+
368 ALLOC(cache, cache_t, 1);
+
369 ALLOC(clim, clim_t, 1);
+
370 ALLOC(met0, met_t, 1);
+
371 ALLOC(met1, met_t, 1);
+
372#ifdef ASYNCIO
+
373 ALLOC(met0TMP, met_t, 1);
+
374 ALLOC(met1TMP, met_t, 1);
+
375#endif
+
376 ALLOC(dt, double,
+
377 NP);
+
378 ALLOC(rs, double,
+
379 3 * NP + 1);
+
380
+
381 /* Create data region on GPUs... */
+
382#ifdef _OPENACC
+
383 SELECT_TIMER("CREATE_DATA_REGION", "MEMORY", NVTX_GPU);
+
384#ifdef ASYNCIO
+
385#pragma acc enter data create(atm[:1], cache[:1], clim[:1], ctl, ctlTMP, met0[:1], met1[:1], met0TMP[:1], met1TMP[:1], dt[:NP], rs[:3 * NP])
+
386#else
+
387#pragma acc enter data create(atm[:1], cache[:1], clim[:1], ctl, met0[:1], met1[:1], dt[:NP], rs[:3 * NP])
+
388#endif
+
389#endif
+
390
+
391 /* Read control parameters... */
+
392 sprintf(filename, "%s/%s", dirname, argv[2]);
+
393 read_ctl(filename, argc, argv, &ctl);
+
394
+
395 /* Read climatological data... */
+
396 read_clim(&ctl, clim);
+
397
+
398 /* Read atmospheric data... */
+
399 sprintf(filename, "%s/%s", dirname, argv[3]);
+
400 if (!read_atm(filename, &ctl, atm))
+
401 ERRMSG("Cannot open file!");
+
402
+
403 /* Initialize timesteps... */
+
404 module_timesteps_init(&ctl, atm);
+
405
+
406 /* Update GPU... */
+
407#ifdef _OPENACC
+
408 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
409#pragma acc update device(atm[:1], clim[:1], ctl)
+
410#endif
+
411
+
412 /* Initialize random number generator... */
+
413 module_rng_init(ntask);
+
414
+
415 /* Initialize meteo data... */
+
416#ifdef ASYNCIO
+
417 ctlTMP = ctl;
+
418#endif
+
419 get_met(&ctl, clim, ctl.t_start, &met0, &met1);
+
420 if (ctl.dt_mod > fabs(met0->lon[1] - met0->lon[0]) * 111132. / 150.)
+
421 WARN("Violation of CFL criterion! Check DT_MOD!");
+
422#ifdef ASYNCIO
+
423 get_met(&ctlTMP, clim, ctlTMP.t_start, &met0TMP, &met1TMP);
+
424#endif
+
425
+
426 /* Initialize isosurface... */
+
427 if (ctl.isosurf >= 1 && ctl.isosurf <= 4)
+
428 module_isosurf_init(&ctl, met0, met1, atm, cache);
+
429
+
430 /* Initialize pressure heights consistent with zeta ... */
+
431 if (ctl.vert_coord_ap == 1) {
+
432 INTPOL_INIT_DIA for (
+
433 int ip = 0; ip < atm->np; ip++) {
+
434 intpol_met_4d_coord(met0, met0->zetal, met0->pl, met1, met1->zetal,
+
435 met1->pl, atm->time[ip], atm->q[ctl.qnt_zeta][ip],
+
436 atm->lon[ip], atm->lat[ip], &atm->p[ip], ci, cw,
+
437 1);
+
438 }
+
439
+
440 }
+
441
+
442 /* Update GPU... */
+
443#ifdef _OPENACC
+
444 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
445#pragma acc update device(cache[:1])
+
446#endif
+
447
+
448 /* ------------------------------------------------------------
+
449 Loop over timesteps...
+
450 ------------------------------------------------------------ */
+
451
+
452 /* Loop over timesteps... */
+
453#ifdef ASYNCIO
+
454 omp_set_nested(1);
+
455 // omp_set_dynamic(0);
+
456 int ompTrdnum = omp_get_max_threads();
+
457#endif
+
458 for (t = ctl.t_start; ctl.direction * (t - ctl.t_stop) < ctl.dt_mod;
+
459 t += ctl.direction * ctl.dt_mod) {
+
460#ifdef ASYNCIO
+
461#pragma omp parallel num_threads(2)
+
462 {
+
463#endif
+
464
+
465 /* Adjust length of final time step... */
+
466 if (ctl.direction * (t - ctl.t_stop) > 0)
+
467 t = ctl.t_stop;
+
468
+
469 /* Set time steps of air parcels... */
+
470 module_timesteps(&ctl, met0, atm, dt, t);
+
471
+
472 /* Get meteo data... */
+
473#ifdef ASYNCIO
+
474#pragma acc wait(5)
+
475#pragma omp barrier
+
476 if (omp_get_thread_num() == 0) {
+
477
+
478 /* Pointer swap... */
+
479 if (t != ctl.t_start) {
+
480 mets = met0;
+
481 met0 = met0TMP;
+
482 met0TMP = mets;
+
483
+
484 mets = met1;
+
485 met1 = met1TMP;
+
486 met1TMP = mets;
+
487 }
+
488#endif
+
489#ifndef ASYNCIO
+
490 if (t != ctl.t_start)
+
491 get_met(&ctl, clim, t, &met0, &met1);
+
492#endif
+
493
+
494 /* Sort particles... */
+
495 if (ctl.sort_dt > 0 && fmod(t, ctl.sort_dt) == 0)
+
496 module_sort(&ctl, met0, atm);
+
497
+
498 /* Check positions (initial)... */
+
499 module_position(&ctl, met0, met1, atm, dt);
+
500
+
501 /* Advection... */
+
502 if (ctl.advect > 0) {
+
503 if (ctl.vert_coord_ap == 0)
+
504 module_advect(&ctl, met0, met1, atm, dt);
+
505 else
+
506 module_advect_diabatic(&ctl, met0, met1, atm, dt);
+
507 }
+
508
+
509 /* Turbulent diffusion... */
+
510 if (ctl.turb_dx_trop > 0 || ctl.turb_dz_trop > 0
+
511 || ctl.turb_dx_strat > 0 || ctl.turb_dz_strat > 0)
+
512 module_diffusion_turb(&ctl, clim, atm, dt, rs);
+
513
+
514 /* Mesoscale diffusion... */
+
515 if (ctl.turb_mesox > 0 || ctl.turb_mesoz > 0)
+
516 module_diffusion_meso(&ctl, met0, met1, atm, cache, dt, rs);
+
517
+
518 /* Convection... */
+
519 if (ctl.conv_cape >= 0
+
520 && (ctl.conv_dt <= 0 || fmod(t, ctl.conv_dt) == 0))
+
521 module_convection(&ctl, met0, met1, atm, dt, rs);
+
522
+
523 /* Sedimentation... */
+
524 if (ctl.qnt_rp >= 0 && ctl.qnt_rhop >= 0)
+
525 module_sedi(&ctl, met0, met1, atm, dt);
+
526
+
527 /* Isosurface... */
+
528 if (ctl.isosurf >= 1 && ctl.isosurf <= 4)
+
529 module_isosurf(&ctl, met0, met1, atm, cache, dt);
+
530
+
531 /* Check positions (final)... */
+
532 module_position(&ctl, met0, met1, atm, dt);
+
533
+
534 /* Interpolate meteo data... */
+
535 if (ctl.met_dt_out > 0
+
536 && (ctl.met_dt_out < ctl.dt_mod
+
537 || fmod(t, ctl.met_dt_out) == 0))
+
538 module_meteo(&ctl, clim, met0, met1, atm, dt);
+
539
+
540 /* Check boundary conditions (initial)... */
+
541 if ((ctl.bound_lat0 < ctl.bound_lat1)
+
542 && (ctl.bound_p0 > ctl.bound_p1))
+
543 module_bound_cond(&ctl, clim, met0, met1, atm, dt);
+
544
+
545 /* Decay of particle mass... */
+
546 if (ctl.tdec_trop > 0 && ctl.tdec_strat > 0)
+
547 module_decay(&ctl, clim, atm, dt);
+
548
+
549 /* Interparcel mixing... */
+
550 if (ctl.mixing_trop >= 0 && ctl.mixing_strat >= 0
+
551 && (ctl.mixing_dt <= 0 || fmod(t, ctl.mixing_dt) == 0))
+
552 module_mixing(&ctl, clim, atm, t);
+
553
+
554 /* OH chemistry... */
+
555 if (ctl.oh_chem_reaction != 0)
+
556 module_oh_chem(&ctl, clim, met0, met1, atm, dt);
+
557
+
558 /* H2O2 chemistry (for SO2 aqueous phase oxidation)... */
+
559 if (ctl.h2o2_chem_reaction != 0) {
+
560 module_chemgrid(&ctl, clim, met0, met1, atm, t);
+
561 module_h2o2_chem(&ctl, clim, met0, met1, atm, dt);
+
562 }
+
563
+
564 /* First-order tracer chemistry... */
+
565 if (ctl.tracer_chem)
+
566 module_tracer_chem(&ctl, clim, met0, met1, atm, dt);
+
567
+
568 /* KPP chemistry... */
+
569 if (ctl.kpp_chem) {
+
570#ifdef KPP
+
571 module_chemgrid(&ctl, clim, met0, met1, atm, t);
+
572 module_kpp_chem(&ctl, clim, met0, met1, atm, dt);
+
573#else
+
574 ERRMSG("Code was compiled without KPP!");
+
575#endif
+
576 }
+
577
+
578 /* Wet deposition... */
+
579 if ((ctl.wet_depo_ic_a > 0 || ctl.wet_depo_ic_h[0] > 0)
+
580 && (ctl.wet_depo_bc_a > 0 || ctl.wet_depo_bc_h[0] > 0))
+
581 module_wet_deposition(&ctl, met0, met1, atm, dt);
+
582
+
583 /* Dry deposition... */
+
584 if (ctl.dry_depo_vdep > 0)
+
585 module_dry_deposition(&ctl, met0, met1, atm, dt);
+
586
+
587 /* Check boundary conditions (final)... */
+
588 if ((ctl.bound_lat0 < ctl.bound_lat1)
+
589 && (ctl.bound_p0 > ctl.bound_p1))
+
590 module_bound_cond(&ctl, clim, met0, met1, atm, dt);
+
591
+
592 /* Write output... */
+
593 write_output(dirname, &ctl, met0, met1, atm, t);
+
594#ifdef ASYNCIO
+
595 } else {
+
596 omp_set_num_threads(ompTrdnum);
+
597 if (ctl.direction * (t - ctl.t_stop + ctl.direction * ctl.dt_mod) <
+
598 ctl.dt_mod)
+
599 get_met(&ctl, clim, t + (ctl.direction * ctl.dt_mod), &met0TMP,
+
600 &met1TMP);
+
601 }
+
602 }
+
603#endif
+
604 }
+
605
+
606#ifdef ASYNCIO
+
607 omp_set_num_threads(ompTrdnum);
+
608#endif
+
609
+
610 /* ------------------------------------------------------------
+
611 Finalize model run...
+
612 ------------------------------------------------------------ */
+
613
+
614 /* Report problem size... */
+
615 LOG(1, "SIZE_NP = %d", atm->np);
+
616 LOG(1, "SIZE_MPI_TASKS = %d", size);
+
617 LOG(1, "SIZE_OMP_THREADS = %d", omp_get_max_threads());
+
618#ifdef _OPENACC
+
619 LOG(1, "SIZE_ACC_DEVICES = %d", acc_get_num_devices(acc_device_nvidia));
+
620#endif
+
621
+
622 /* Report memory usage... */
+
623 LOG(1, "MEMORY_ATM = %g MByte", sizeof(atm_t) / 1024. / 1024.);
+
624 LOG(1, "MEMORY_CACHE = %g MByte", sizeof(cache_t) / 1024. / 1024.);
+
625 LOG(1, "MEMORY_CLIM = %g MByte", sizeof(clim_t) / 1024. / 1024.);
+
626 LOG(1, "MEMORY_METEO = %g MByte", 2 * sizeof(met_t) / 1024. / 1024.);
+
627 LOG(1, "MEMORY_DYNAMIC = %g MByte", (3 * NP * sizeof(int)
+
628 + 4 * NP * sizeof(double)
+
629 + EX * EY * EP * sizeof(float)) /
+
630 1024. / 1024.);
+
631 LOG(1, "MEMORY_STATIC = %g MByte", (EX * EY * EP * sizeof(float)) /
+
632 1024. / 1024.);
+
633
+
634 /* Delete data region on GPUs... */
+
635#ifdef _OPENACC
+
636 SELECT_TIMER("DELETE_DATA_REGION", "MEMORY", NVTX_GPU);
+
637#ifdef ASYNCIO
+
638#pragma acc exit data delete (ctl, atm, cache, clim, met0, met1, dt, rs, met0TMP, met1TMP)
+
639#else
+
640#pragma acc exit data delete (ctl, atm, cache, clim, met0, met1, dt, rs)
+
641#endif
+
642#endif
+
643
+
644 /* Free... */
+
645 SELECT_TIMER("FREE", "MEMORY", NVTX_CPU);
+
646 free(atm);
+
647 free(cache);
+
648 free(clim);
+
649 free(met0);
+
650 free(met1);
+
651#ifdef ASYNCIO
+
652 free(met0TMP);
+
653 free(met1TMP);
+
654#endif
+
655 free(dt);
+
656 free(rs);
+
657
+
658 /* Report timers... */
+ +
660 }
+
661
+
662 /* Finalize MPI... */
+
663#ifdef MPI
+
664 MPI_Finalize();
+
665#endif
+
666
+
667 /* Stop timers... */
+ +
669
+
670 return EXIT_SUCCESS;
+
671}
+
672
+
673/*****************************************************************************/
+
674
+ +
676 ctl_t * ctl,
+
677 met_t * met0,
+
678 met_t * met1,
+
679 atm_t * atm,
+
680 double *dt) {
+
681
+
682 /* Set timer... */
+
683 SELECT_TIMER("MODULE_ADVECTION", "PHYSICS", NVTX_GPU);
+
684
+
685 /* Loop over particles... */
+
686 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
687
+
688 /* Init... */
+
689 double dts, u[4], um = 0, v[4], vm = 0, w[4], wm = 0, x[3];
+
690
+
691 /* Loop over integration nodes... */
+
692 for (int i = 0; i < ctl->advect; i++) {
+
693
+
694 /* Set position... */
+
695 if (i == 0) {
+
696 dts = 0.0;
+
697 x[0] = atm->lon[ip];
+
698 x[1] = atm->lat[ip];
+
699 x[2] = atm->p[ip];
+
700 } else {
+
701 dts = (i == 3 ? 1.0 : 0.5) * dt[ip];
+
702 x[0] = atm->lon[ip] + DX2DEG(dts * u[i - 1] / 1000., atm->lat[ip]);
+
703 x[1] = atm->lat[ip] + DY2DEG(dts * v[i - 1] / 1000.);
+
704 x[2] = atm->p[ip] + dts * w[i - 1];
+
705 }
+
706 double tm = atm->time[ip] + dts;
+
707
+
708 /* Interpolate meteo data... */
+
709#ifdef UVW
+
710 intpol_met_time_uvw(met0, met1, tm, x[2], x[0], x[1],
+
711 &u[i], &v[i], &w[i]);
+
712#else
+ +
714 intpol_met_time_3d(met0, met0->u, met1, met1->u, tm,
+
715 x[2], x[0], x[1], &u[i], ci, cw, 1);
+
716 intpol_met_time_3d(met0, met0->v, met1, met1->v, tm,
+
717 x[2], x[0], x[1], &v[i], ci, cw, 0);
+
718 intpol_met_time_3d(met0, met0->w, met1, met1->w, tm,
+
719 x[2], x[0], x[1], &w[i], ci, cw, 0);
+
720#endif
+
721
+
722 /* Get mean wind... */
+
723 double k = 1.0;
+
724 if (ctl->advect == 2)
+
725 k = (i == 0 ? 0.0 : 1.0);
+
726 else if (ctl->advect == 4)
+
727 k = (i == 0 || i == 3 ? 1.0 / 6.0 : 2.0 / 6.0);
+
728 um += k * u[i];
+
729 vm += k * v[i];
+
730 wm += k * w[i];
+
731 }
+
732
+
733 /* Set new position... */
+
734 atm->time[ip] += dt[ip];
+
735 atm->lon[ip] += DX2DEG(dt[ip] * um / 1000.,
+
736 (ctl->advect == 2 ? x[1] : atm->lat[ip]));
+
737 atm->lat[ip] += DY2DEG(dt[ip] * vm / 1000.);
+
738 atm->p[ip] += dt[ip] * wm;
+
739 }
+
740}
+
741
+
742/*****************************************************************************/
+
743
+ +
745 ctl_t * ctl,
+
746 met_t * met0,
+
747 met_t * met1,
+
748 atm_t * atm,
+
749 double *dt) {
+
750
+
751 /* Set timer... */
+
752 SELECT_TIMER("MODULE_ADVECTION", "PHYSICS", NVTX_GPU);
+
753
+
754
+
755 /* Loop over particles... */
+
756 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
757 /* If other modules have changed p translate it into a zeta... */
+
758 if (ctl->cpl_zeta_and_press_modules > 0) {
+ +
760 intpol_met_4d_coord(met0, met0->pl, met0->zetal, met1,
+
761 met1->pl, met1->zetal, atm->time[ip], atm->p[ip],
+
762 atm->lon[ip], atm->lat[ip],
+
763 &atm->q[ctl->qnt_zeta][ip], ci, cw, 1);
+
764 }
+
765
+
766 /* Init... */
+
767 double dts, u[4], um = 0, v[4], vm = 0, zeta_dot[4], zeta_dotm = 0, x[3];
+
768
+
769 /* Loop over integration nodes... */
+
770 for (int i = 0; i < ctl->advect; i++) {
+
771
+
772 /* Set position... */
+
773 if (i == 0) {
+
774 dts = 0.0;
+
775 x[0] = atm->lon[ip];
+
776 x[1] = atm->lat[ip];
+
777 x[2] = atm->q[ctl->qnt_zeta][ip];
+
778 } else {
+
779 dts = (i == 3 ? 1.0 : 0.5) * dt[ip];
+
780 x[0] = atm->lon[ip] + DX2DEG(dts * u[i - 1] / 1000., atm->lat[ip]);
+
781 x[1] = atm->lat[ip] + DY2DEG(dts * v[i - 1] / 1000.);
+
782 x[2] = atm->q[ctl->qnt_zeta][ip] + dts * zeta_dot[i - 1];
+
783 }
+
784 double tm = atm->time[ip] + dts;
+
785
+
786 /* Interpolate meteo data... */
+ +
788 intpol_met_4d_coord(met0, met0->zetal, met0->ul, met1, met1->zetal,
+
789 met1->ul, tm, x[2], x[0], x[1], &u[i], ci, cw, 1);
+
790 intpol_met_4d_coord(met0, met0->zetal, met0->vl, met1, met0->zetal,
+
791 met1->vl, tm, x[2], x[0], x[1], &v[i], ci, cw, 0);
+
792 intpol_met_4d_coord(met0, met0->zetal, met0->zeta_dotl, met1,
+
793 met1->zetal, met1->zeta_dotl, tm, x[2], x[0], x[1],
+
794 &zeta_dot[i], ci, cw, 0);
+
795
+
796 /* Get mean wind... */
+
797 double k = 1.0;
+
798 if (ctl->advect == 2)
+
799 k = (i == 0 ? 0.0 : 1.0);
+
800 else if (ctl->advect == 4)
+
801 k = (i == 0 || i == 3 ? 1.0 / 6.0 : 2.0 / 6.0);
+
802 um += k * u[i];
+
803 vm += k * v[i];
+
804 zeta_dotm += k * zeta_dot[i];
+
805 }
+
806
+
807 /* Set new position... */
+
808 atm->time[ip] += dt[ip];
+
809 atm->lon[ip] += DX2DEG(dt[ip] * um / 1000.,
+
810 (ctl->advect == 2 ? x[1] : atm->lat[ip]));
+
811 atm->lat[ip] += DY2DEG(dt[ip] * vm / 1000.);
+
812 atm->q[ctl->qnt_zeta][ip] += dt[ip] * zeta_dotm;
+
813
+
814 /* Check if zeta is below zero... */
+
815 if (atm->q[ctl->qnt_zeta][ip] < 0) {
+
816 atm->q[ctl->qnt_zeta][ip] = 0;
+
817 }
+
818
+
819 /* Set new position also in pressure coordinates... */
+ +
821 intpol_met_4d_coord(met0, met0->zetal, met0->pl, met1, met1->zetal,
+
822 met1->pl, atm->time[ip], atm->q[ctl->qnt_zeta][ip],
+
823 atm->lon[ip], atm->lat[ip], &atm->p[ip], ci, cw, 1);
+
824 }
+
825}
+
826
+
827/*****************************************************************************/
+
828
+ +
830 ctl_t * ctl,
+
831 clim_t * clim,
+
832 met_t * met0,
+
833 met_t * met1,
+
834 atm_t * atm,
+
835 double *dt) {
+
836
+
837 /* Set timer... */
+
838 SELECT_TIMER("MODULE_BOUNDCOND", "PHYSICS", NVTX_GPU);
+
839
+
840 /* Check quantity flags... */
+
841 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0 && ctl->qnt_Cccl4
+
842 && ctl->qnt_Cccl3f < 0 && ctl->qnt_Cccl2f2 < 0
+
843 && ctl->qnt_Cn2o < 0 && ctl->qnt_Csf6 < 0 && ctl->qnt_aoa < 0)
+
844 return;
+
845
+
846 /* Loop over particles... */
+
847 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,met0,met1,atm,dt)") {
+
848
+
849 /* Check latitude and pressure range... */
+
850 if (atm->lat[ip] < ctl->bound_lat0 || atm->lat[ip] > ctl->bound_lat1
+
851 || atm->p[ip] > ctl->bound_p0 || atm->p[ip] < ctl->bound_p1)
+
852 continue;
+
853
+
854 /* Check surface layer... */
+
855 if (ctl->bound_dps > 0 || ctl->bound_dzs > 0
+
856 || ctl->bound_zetas > 0 || ctl->bound_pbl) {
+
857
+
858 /* Get surface pressure... */
+
859 double ps;
+ +
861 INTPOL_2D(ps, 1);
+
862
+
863 /* Check pressure... */
+
864 if (ctl->bound_dps > 0 && atm->p[ip] < ps - ctl->bound_dps)
+
865 continue;
+
866
+
867 /* Check height... */
+
868 if (ctl->bound_dzs > 0 && Z(atm->p[ip]) > Z(ps) + ctl->bound_dzs)
+
869 continue;
+
870
+
871 /* Check zeta range... */
+
872 if (ctl->bound_zetas > 0) {
+
873 double t;
+
874 INTPOL_3D(t, 1);
+
875 if (ZETA(ps, atm->p[ip], t) > ctl->bound_zetas)
+
876 continue;
+
877 }
+
878
+
879 /* Check planetary boundary layer... */
+
880 if (ctl->bound_pbl) {
+
881 double pbl;
+
882 INTPOL_2D(pbl, 0);
+
883 if (atm->p[ip] < pbl)
+
884 continue;
+
885 }
+
886 }
+
887
+
888 /* Set mass and volume mixing ratio... */
+
889 if (ctl->qnt_m >= 0 && ctl->bound_mass >= 0)
+
890 atm->q[ctl->qnt_m][ip] =
+
891 ctl->bound_mass + ctl->bound_mass_trend * atm->time[ip];
+
892 if (ctl->qnt_vmr >= 0 && ctl->bound_vmr >= 0)
+
893 atm->q[ctl->qnt_vmr][ip] =
+
894 ctl->bound_vmr + ctl->bound_vmr_trend * atm->time[ip];
+
895
+
896 /* Set CFC-10 tracer concentration... */
+
897 if (ctl->qnt_Cccl4 >= 0 && ctl->clim_ccl4_timeseries[0] != '-')
+
898 atm->q[ctl->qnt_Cccl4][ip] = clim_ts(&clim->ccl4, atm->time[ip]);
+
899
+
900 /* Set CFC-11 tracer concentration... */
+
901 if (ctl->qnt_Cccl3f >= 0 && ctl->clim_ccl3f_timeseries[0] != '-')
+
902 atm->q[ctl->qnt_Cccl3f][ip] = clim_ts(&clim->ccl3f, atm->time[ip]);
+
903
+
904 /* Set CFC-12 tracer concentration... */
+
905 if (ctl->qnt_Cccl2f2 >= 0 && ctl->clim_ccl2f2_timeseries[0] != '-')
+
906 atm->q[ctl->qnt_Cccl2f2][ip] = clim_ts(&clim->ccl2f2, atm->time[ip]);
+
907
+
908 /* Set N2O tracer concentration... */
+
909 if (ctl->qnt_Cn2o >= 0 && ctl->clim_n2o_timeseries[0] != '-')
+
910 atm->q[ctl->qnt_Cn2o][ip] = clim_ts(&clim->n2o, atm->time[ip]);
+
911
+
912 /* Set SF6 tracer concentration... */
+
913 if (ctl->qnt_Csf6 >= 0 && ctl->clim_sf6_timeseries[0] != '-')
+
914 atm->q[ctl->qnt_Csf6][ip] = clim_ts(&clim->sf6, atm->time[ip]);
+
915
+
916 /* Set age of air... */
+
917 if (ctl->qnt_aoa >= 0)
+
918 atm->q[ctl->qnt_aoa][ip] = atm->time[ip];
+
919 }
+
920}
+
921
+
922/*****************************************************************************/
+
923
+ +
925 ctl_t * ctl,
+
926 met_t * met0,
+
927 met_t * met1,
+
928 atm_t * atm,
+
929 double *dt,
+
930 double *rs) {
+
931
+
932 /* Set timer... */
+
933 SELECT_TIMER("MODULE_CONVECTION", "PHYSICS", NVTX_GPU);
+
934
+
935 /* Create random numbers... */
+
936 module_rng(rs, (size_t) atm->np, 0);
+
937
+
938 /* Loop over particles... */
+
939 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt,rs)") {
+
940
+
941 /* Interpolate CAPE... */
+
942 double cape;
+ +
944 INTPOL_2D(cape, 1);
+
945
+
946 /* Check threshold... */
+
947 if (isfinite(cape) && cape >= ctl->conv_cape) {
+
948
+
949 /* Check CIN... */
+
950 if (ctl->conv_cin > 0) {
+
951 double cin;
+
952 INTPOL_2D(cin, 0);
+
953 if (isfinite(cin) && cin >= ctl->conv_cin)
+
954 continue;
+
955 }
+
956
+
957 /* Interpolate equilibrium level... */
+
958 double pel;
+
959 INTPOL_2D(pel, 0);
+
960
+
961 /* Check whether particle is above cloud top... */
+
962 if (!isfinite(pel) || atm->p[ip] < pel)
+
963 continue;
+
964
+
965 /* Set pressure range for vertical mixing... */
+
966 double pbot = atm->p[ip];
+
967 double ptop = atm->p[ip];
+
968 if (ctl->conv_mix_bot == 1) {
+
969 double ps;
+
970 INTPOL_2D(ps, 0);
+
971 pbot = ps;
+
972 }
+
973 if (ctl->conv_mix_top == 1)
+
974 ptop = pel;
+
975
+
976 /* Vertical mixing based on pressure... */
+
977 if (ctl->conv_mix == 0)
+
978 atm->p[ip] = pbot + (ptop - pbot) * rs[ip];
+
979
+
980 /* Vertical mixing based on density... */
+
981 else if (ctl->conv_mix == 1) {
+
982
+
983 /* Get density range... */
+
984 double tbot, ttop;
+
985 intpol_met_time_3d(met0, met0->t, met1, met1->t, atm->time[ip],
+
986 pbot, atm->lon[ip], atm->lat[ip], &tbot,
+
987 ci, cw, 1);
+
988 intpol_met_time_3d(met0, met0->t, met1, met1->t, atm->time[ip],
+
989 ptop, atm->lon[ip], atm->lat[ip], &ttop,
+
990 ci, cw, 1);
+
991 double rhobot = pbot / tbot;
+
992 double rhotop = ptop / ttop;
+
993
+
994 /* Get new density... */
+
995 double lrho = log(rhobot + (rhotop - rhobot) * rs[ip]);
+
996
+
997 /* Find pressure... */
+
998 double lrhobot = log(rhobot);
+
999 double lrhotop = log(rhotop);
+
1000 double lpbot = log(pbot);
+
1001 double lptop = log(ptop);
+
1002 atm->p[ip] = exp(LIN(lrhobot, lpbot, lrhotop, lptop, lrho));
+
1003 }
+
1004 }
+
1005 }
+
1006}
+
1007
+
1008/*****************************************************************************/
+
1009
+ +
1011 ctl_t * ctl,
+
1012 clim_t * clim,
+
1013 atm_t * atm,
+
1014 double *dt) {
+
1015
+
1016 /* Set timer... */
+
1017 SELECT_TIMER("MODULE_DECAY", "PHYSICS", NVTX_GPU);
+
1018
+
1019 /* Check quantity flags... */
+
1020 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1021 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1022
+
1023 /* Loop over particles... */
+
1024 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,atm,dt)") {
+
1025
+
1026 /* Get weighting factor... */
+
1027 double w = tropo_weight(clim, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
1028
+
1029 /* Set lifetime... */
+
1030 double tdec = w * ctl->tdec_trop + (1 - w) * ctl->tdec_strat;
+
1031
+
1032 /* Calculate exponential decay... */
+
1033 double aux = exp(-dt[ip] / tdec);
+
1034 if (ctl->qnt_m >= 0) {
+
1035 if (ctl->qnt_mloss_decay >= 0)
+
1036 atm->q[ctl->qnt_mloss_decay][ip]
+
1037 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1038 atm->q[ctl->qnt_m][ip] *= aux;
+
1039 }
+
1040 if (ctl->qnt_vmr >= 0)
+
1041 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1042 }
+
1043}
+
1044
+
1045/*****************************************************************************/
+
1046
+ +
1048 ctl_t * ctl,
+
1049 met_t * met0,
+
1050 met_t * met1,
+
1051 atm_t * atm,
+
1052 cache_t * cache,
+
1053 double *dt,
+
1054 double *rs) {
+
1055
+
1056 /* Set timer... */
+
1057 SELECT_TIMER("MODULE_TURBMESO", "PHYSICS", NVTX_GPU);
+
1058
+
1059 /* Create random numbers... */
+
1060 module_rng(rs, 3 * (size_t) atm->np, 1);
+
1061
+
1062 /* Loop over particles... */
+
1063 PARTICLE_LOOP(0, atm->np, 1,
+
1064 "acc data present(ctl,met0,met1,atm,cache,dt,rs)") {
+
1065
+
1066 /* Get indices... */
+
1067 int ix = locate_reg(met0->lon, met0->nx, atm->lon[ip]);
+
1068 int iy = locate_reg(met0->lat, met0->ny, atm->lat[ip]);
+
1069 int iz = locate_irr(met0->p, met0->np, atm->p[ip]);
+
1070
+
1071 /* Get standard deviations of local wind data... */
+
1072 float umean = 0, usig = 0, vmean = 0, vsig = 0, wmean = 0, wsig = 0;
+
1073 for (int i = 0; i < 2; i++)
+
1074 for (int j = 0; j < 2; j++)
+
1075 for (int k = 0; k < 2; k++) {
+
1076#ifdef UVW
+
1077 umean += met0->uvw[ix + i][iy + j][iz + k][0];
+
1078 usig += SQR(met0->uvw[ix + i][iy + j][iz + k][0]);
+
1079 vmean += met0->uvw[ix + i][iy + j][iz + k][1];
+
1080 vsig += SQR(met0->uvw[ix + i][iy + j][iz + k][1]);
+
1081 wmean += met0->uvw[ix + i][iy + j][iz + k][2];
+
1082 wsig += SQR(met0->uvw[ix + i][iy + j][iz + k][2]);
+
1083
+
1084 umean += met1->uvw[ix + i][iy + j][iz + k][0];
+
1085 usig += SQR(met1->uvw[ix + i][iy + j][iz + k][0]);
+
1086 vmean += met1->uvw[ix + i][iy + j][iz + k][1];
+
1087 vsig += SQR(met1->uvw[ix + i][iy + j][iz + k][1]);
+
1088 wmean += met1->uvw[ix + i][iy + j][iz + k][2];
+
1089 wsig += SQR(met1->uvw[ix + i][iy + j][iz + k][2]);
+
1090#else
+
1091 umean += met0->u[ix + i][iy + j][iz + k];
+
1092 usig += SQR(met0->u[ix + i][iy + j][iz + k]);
+
1093 vmean += met0->v[ix + i][iy + j][iz + k];
+
1094 vsig += SQR(met0->v[ix + i][iy + j][iz + k]);
+
1095 wmean += met0->w[ix + i][iy + j][iz + k];
+
1096 wsig += SQR(met0->w[ix + i][iy + j][iz + k]);
+
1097
+
1098 umean += met1->u[ix + i][iy + j][iz + k];
+
1099 usig += SQR(met1->u[ix + i][iy + j][iz + k]);
+
1100 vmean += met1->v[ix + i][iy + j][iz + k];
+
1101 vsig += SQR(met1->v[ix + i][iy + j][iz + k]);
+
1102 wmean += met1->w[ix + i][iy + j][iz + k];
+
1103 wsig += SQR(met1->w[ix + i][iy + j][iz + k]);
+
1104#endif
+
1105 }
+
1106 usig = usig / 16.f - SQR(umean / 16.f);
+
1107 usig = (usig > 0 ? sqrtf(usig) : 0);
+
1108 vsig = vsig / 16.f - SQR(vmean / 16.f);
+
1109 vsig = (vsig > 0 ? sqrtf(vsig) : 0);
+
1110 wsig = wsig / 16.f - SQR(wmean / 16.f);
+
1111 wsig = (wsig > 0 ? sqrtf(wsig) : 0);
+
1112
+
1113 /* Set temporal correlations for mesoscale fluctuations... */
+
1114 double r = 1 - 2 * fabs(dt[ip]) / ctl->dt_met;
+
1115 double r2 = sqrt(1 - r * r);
+
1116
+
1117 /* Calculate horizontal mesoscale wind fluctuations... */
+
1118 if (ctl->turb_mesox > 0) {
+
1119 cache->uvwp[ip][0] =
+
1120 (float) (r * cache->uvwp[ip][0] +
+
1121 r2 * rs[3 * ip] * ctl->turb_mesox * usig);
+
1122 atm->lon[ip] +=
+
1123 DX2DEG(cache->uvwp[ip][0] * dt[ip] / 1000., atm->lat[ip]);
+
1124
+
1125 cache->uvwp[ip][1] =
+
1126 (float) (r * cache->uvwp[ip][1] +
+
1127 r2 * rs[3 * ip + 1] * ctl->turb_mesox * vsig);
+
1128 atm->lat[ip] += DY2DEG(cache->uvwp[ip][1] * dt[ip] / 1000.);
+
1129 }
+
1130
+
1131 /* Calculate vertical mesoscale wind fluctuations... */
+
1132 if (ctl->turb_mesoz > 0) {
+
1133 cache->uvwp[ip][2] =
+
1134 (float) (r * cache->uvwp[ip][2] +
+
1135 r2 * rs[3 * ip + 2] * ctl->turb_mesoz * wsig);
+
1136 atm->p[ip] += cache->uvwp[ip][2] * dt[ip];
+
1137 }
+
1138 }
+
1139}
+
1140
+
1141/*****************************************************************************/
+
1142
+ +
1144 ctl_t * ctl,
+
1145 clim_t * clim,
+
1146 atm_t * atm,
+
1147 double *dt,
+
1148 double *rs) {
+
1149
+
1150 /* Set timer... */
+
1151 SELECT_TIMER("MODULE_TURBDIFF", "PHYSICS", NVTX_GPU);
+
1152
+
1153 /* Create random numbers... */
+
1154 module_rng(rs, 3 * (size_t) atm->np, 1);
+
1155
+
1156 /* Loop over particles... */
+
1157 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,atm,dt,rs)") {
+
1158
+
1159 /* Get weighting factor... */
+
1160 double w = tropo_weight(clim, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
1161
+
1162 /* Set diffusivity... */
+
1163 double dx = w * ctl->turb_dx_trop + (1 - w) * ctl->turb_dx_strat;
+
1164 double dz = w * ctl->turb_dz_trop + (1 - w) * ctl->turb_dz_strat;
+
1165
+
1166 /* Horizontal turbulent diffusion... */
+
1167 if (dx > 0) {
+
1168 double sigma = sqrt(2.0 * dx * fabs(dt[ip]));
+
1169 atm->lon[ip] += DX2DEG(rs[3 * ip] * sigma / 1000., atm->lat[ip]);
+
1170 atm->lat[ip] += DY2DEG(rs[3 * ip + 1] * sigma / 1000.);
+
1171 }
+
1172
+
1173 /* Vertical turbulent diffusion... */
+
1174 if (dz > 0) {
+
1175 double sigma = sqrt(2.0 * dz * fabs(dt[ip]));
+
1176 atm->p[ip] += DZ2DP(rs[3 * ip + 2] * sigma / 1000., atm->p[ip]);
+
1177 }
+
1178 }
+
1179}
+
1180
+
1181/*****************************************************************************/
+
1182
+ +
1184 ctl_t * ctl,
+
1185 met_t * met0,
+
1186 met_t * met1,
+
1187 atm_t * atm,
+
1188 double *dt) {
+
1189
+
1190 /* Set timer... */
+
1191 SELECT_TIMER("MODULE_DRYDEPO", "PHYSICS", NVTX_GPU);
+
1192
+
1193 /* Check quantity flags... */
+
1194 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1195 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1196
+
1197 /* Loop over particles... */
+
1198 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
1199
+
1200 /* Get surface pressure... */
+
1201 double ps;
+ +
1203 INTPOL_2D(ps, 1);
+
1204
+
1205 /* Check whether particle is above the surface layer... */
+
1206 if (atm->p[ip] < ps - ctl->dry_depo_dp)
+
1207 continue;
+
1208
+
1209 /* Set depth of surface layer... */
+
1210 double dz = 1000. * (Z(ps - ctl->dry_depo_dp) - Z(ps));
+
1211
+
1212 /* Calculate sedimentation velocity for particles... */
+
1213 double v_dep;
+
1214 if (ctl->qnt_rp > 0 && ctl->qnt_rhop > 0) {
+
1215
+
1216 /* Get temperature... */
+
1217 double t;
+
1218 INTPOL_3D(t, 1);
+
1219
+
1220 /* Set deposition velocity... */
+
1221 v_dep = sedi(atm->p[ip], t, atm->q[ctl->qnt_rp][ip],
+
1222 atm->q[ctl->qnt_rhop][ip]);
+
1223 }
+
1224
+
1225 /* Use explicit sedimentation velocity for gases... */
+
1226 else
+
1227 v_dep = ctl->dry_depo_vdep;
+
1228
+
1229 /* Calculate loss of mass based on deposition velocity... */
+
1230 double aux = exp(-dt[ip] * v_dep / dz);
+
1231 if (ctl->qnt_m >= 0) {
+
1232 if (ctl->qnt_mloss_dry >= 0)
+
1233 atm->q[ctl->qnt_mloss_dry][ip]
+
1234 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1235 atm->q[ctl->qnt_m][ip] *= aux;
+
1236 }
+
1237 if (ctl->qnt_vmr >= 0)
+
1238 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1239 }
+
1240}
+
1241
+
1242/*****************************************************************************/
+
1243
+ +
1245 ctl_t * ctl,
+
1246 met_t * met0,
+
1247 met_t * met1,
+
1248 atm_t * atm,
+
1249 cache_t * cache) {
+
1250
+
1251 FILE *in;
+
1252
+
1253 char line[LEN];
+
1254
+
1255 double t;
+
1256
+
1257 /* Set timer... */
+
1258 SELECT_TIMER("MODULE_ISOSURF", "PHYSICS", NVTX_GPU);
+
1259
+
1260 /* Init... */
+ +
1262
+
1263 /* Save pressure... */
+
1264 if (ctl->isosurf == 1)
+
1265 for (int ip = 0; ip < atm->np; ip++)
+
1266 cache->iso_var[ip] = atm->p[ip];
+
1267
+
1268 /* Save density... */
+
1269 else if (ctl->isosurf == 2)
+
1270 for (int ip = 0; ip < atm->np; ip++) {
+
1271 INTPOL_3D(t, 1);
+
1272 cache->iso_var[ip] = atm->p[ip] / t;
+
1273 }
+
1274
+
1275 /* Save potential temperature... */
+
1276 else if (ctl->isosurf == 3)
+
1277 for (int ip = 0; ip < atm->np; ip++) {
+
1278 INTPOL_3D(t, 1);
+
1279 cache->iso_var[ip] = THETA(atm->p[ip], t);
+
1280 }
+
1281
+
1282 /* Read balloon pressure data... */
+
1283 else if (ctl->isosurf == 4) {
+
1284
+
1285 /* Write info... */
+
1286 LOG(1, "Read balloon pressure data: %s", ctl->balloon);
+
1287
+
1288 /* Open file... */
+
1289 if (!(in = fopen(ctl->balloon, "r")))
+
1290 ERRMSG("Cannot open file!");
+
1291
+
1292 /* Read pressure time series... */
+
1293 while (fgets(line, LEN, in))
+
1294 if (sscanf(line, "%lg %lg", &(cache->iso_ts[cache->iso_n]),
+
1295 &(cache->iso_ps[cache->iso_n])) == 2)
+
1296 if ((++cache->iso_n) > NP)
+
1297 ERRMSG("Too many data points!");
+
1298
+
1299 /* Check number of points... */
+
1300 if (cache->iso_n < 1)
+
1301 ERRMSG("Could not read any data!");
+
1302
+
1303 /* Close file... */
+
1304 fclose(in);
+
1305 }
+
1306}
+
1307
+
1308/*****************************************************************************/
+
1309
+ +
1311 ctl_t * ctl,
+
1312 met_t * met0,
+
1313 met_t * met1,
+
1314 atm_t * atm,
+
1315 cache_t * cache,
+
1316 double *dt) {
+
1317
+
1318 /* Set timer... */
+
1319 SELECT_TIMER("MODULE_ISOSURF", "PHYSICS", NVTX_GPU);
+
1320
+
1321 /* Loop over particles... */
+
1322 PARTICLE_LOOP(0, atm->np, 0, "acc data present(ctl,met0,met1,atm,cache,dt)") {
+
1323
+
1324 /* Init... */
+
1325 double t;
+ +
1327
+
1328 /* Restore pressure... */
+
1329 if (ctl->isosurf == 1)
+
1330 atm->p[ip] = cache->iso_var[ip];
+
1331
+
1332 /* Restore density... */
+
1333 else if (ctl->isosurf == 2) {
+
1334 INTPOL_3D(t, 1);
+
1335 atm->p[ip] = cache->iso_var[ip] * t;
+
1336 }
+
1337
+
1338 /* Restore potential temperature... */
+
1339 else if (ctl->isosurf == 3) {
+
1340 INTPOL_3D(t, 1);
+
1341 atm->p[ip] = 1000. * pow(cache->iso_var[ip] / t, -1. / 0.286);
+
1342 }
+
1343
+
1344 /* Interpolate pressure... */
+
1345 else if (ctl->isosurf == 4) {
+
1346 if (atm->time[ip] <= cache->iso_ts[0])
+
1347 atm->p[ip] = cache->iso_ps[0];
+
1348 else if (atm->time[ip] >= cache->iso_ts[cache->iso_n - 1])
+
1349 atm->p[ip] = cache->iso_ps[cache->iso_n - 1];
+
1350 else {
+
1351 int idx = locate_irr(cache->iso_ts, cache->iso_n, atm->time[ip]);
+
1352 atm->p[ip] = LIN(cache->iso_ts[idx], cache->iso_ps[idx],
+
1353 cache->iso_ts[idx + 1], cache->iso_ps[idx + 1],
+
1354 atm->time[ip]);
+
1355 }
+
1356 }
+
1357 }
+
1358}
+
1359
+
1360/*****************************************************************************/
+
1361
+ +
1363 ctl_t * ctl,
+
1364 clim_t * clim,
+
1365 met_t * met0,
+
1366 met_t * met1,
+
1367 atm_t * atm,
+
1368 double *dt) {
+
1369
+
1370 /* Set timer... */
+
1371 SELECT_TIMER("MODULE_METEO", "PHYSICS", NVTX_GPU);
+
1372
+
1373 /* Check quantity flags... */
+
1374 if (ctl->qnt_tsts >= 0)
+
1375 if (ctl->qnt_tice < 0 || ctl->qnt_tnat < 0)
+
1376 ERRMSG("Need T_ice and T_NAT to calculate T_STS!");
+
1377
+
1378 /* Loop over particles... */
+
1379 PARTICLE_LOOP(0, atm->np, 0, "acc data present(ctl,clim,met0,met1,atm,dt)") {
+
1380
+
1381 double ps, ts, zs, us, vs, lsm, sst, pbl, pt, pct, pcb, cl, plcl, plfc,
+
1382 pel, cape, cin, o3c, pv, t, tt, u, v, w, h2o, h2ot, o3,
+
1383 lwc, iwc, cc, z, zt;
+
1384
+
1385 /* Interpolate meteo data... */
+ +
1387 INTPOL_TIME_ALL(atm->time[ip], atm->p[ip], atm->lon[ip], atm->lat[ip]);
+
1388
+
1389 /* Set quantities... */
+
1390 SET_ATM(qnt_ps, ps);
+
1391 SET_ATM(qnt_ts, ts);
+
1392 SET_ATM(qnt_zs, zs);
+
1393 SET_ATM(qnt_us, us);
+
1394 SET_ATM(qnt_vs, vs);
+
1395 SET_ATM(qnt_lsm, lsm);
+
1396 SET_ATM(qnt_sst, sst);
+
1397 SET_ATM(qnt_pbl, pbl);
+
1398 SET_ATM(qnt_pt, pt);
+
1399 SET_ATM(qnt_tt, tt);
+
1400 SET_ATM(qnt_zt, zt);
+
1401 SET_ATM(qnt_h2ot, h2ot);
+
1402 SET_ATM(qnt_zg, z);
+
1403 SET_ATM(qnt_p, atm->p[ip]);
+
1404 SET_ATM(qnt_t, t);
+
1405 SET_ATM(qnt_rho, RHO(atm->p[ip], t));
+
1406 SET_ATM(qnt_u, u);
+
1407 SET_ATM(qnt_v, v);
+
1408 SET_ATM(qnt_w, w);
+
1409 SET_ATM(qnt_h2o, h2o);
+
1410 SET_ATM(qnt_o3, o3);
+
1411 SET_ATM(qnt_lwc, lwc);
+
1412 SET_ATM(qnt_iwc, iwc);
+
1413 SET_ATM(qnt_cc, cc);
+
1414 SET_ATM(qnt_pct, pct);
+
1415 SET_ATM(qnt_pcb, pcb);
+
1416 SET_ATM(qnt_cl, cl);
+
1417 SET_ATM(qnt_plcl, plcl);
+
1418 SET_ATM(qnt_plfc, plfc);
+
1419 SET_ATM(qnt_pel, pel);
+
1420 SET_ATM(qnt_cape, cape);
+
1421 SET_ATM(qnt_cin, cin);
+
1422 SET_ATM(qnt_o3c, o3c);
+
1423 SET_ATM(qnt_hno3,
+
1424 clim_zm(&clim->hno3, atm->time[ip], atm->lat[ip], atm->p[ip]));
+
1425 SET_ATM(qnt_oh, clim_oh(ctl, clim, atm->time[ip],
+
1426 atm->lon[ip], atm->lat[ip], atm->p[ip]));
+
1427 SET_ATM(qnt_h2o2, clim_zm(&clim->h2o2, atm->time[ip],
+
1428 atm->lat[ip], atm->p[ip]));
+
1429 SET_ATM(qnt_ho2, clim_zm(&clim->ho2, atm->time[ip],
+
1430 atm->lat[ip], atm->p[ip]));
+
1431 SET_ATM(qnt_o1d, clim_zm(&clim->o1d, atm->time[ip],
+
1432 atm->lat[ip], atm->p[ip]));
+
1433 SET_ATM(qnt_vh, sqrt(u * u + v * v));
+
1434 SET_ATM(qnt_vz, -1e3 * H0 / atm->p[ip] * w);
+
1435 SET_ATM(qnt_psat, PSAT(t));
+
1436 SET_ATM(qnt_psice, PSICE(t));
+
1437 SET_ATM(qnt_pw, PW(atm->p[ip], h2o));
+
1438 SET_ATM(qnt_sh, SH(h2o));
+
1439 SET_ATM(qnt_rh, RH(atm->p[ip], t, h2o));
+
1440 SET_ATM(qnt_rhice, RHICE(atm->p[ip], t, h2o));
+
1441 SET_ATM(qnt_theta, THETA(atm->p[ip], t));
+
1442 SET_ATM(qnt_zeta, atm->q[ctl->qnt_zeta][ip]);
+
1443 SET_ATM(qnt_zeta_d, ZETA(ps, atm->p[ip], t));
+
1444 SET_ATM(qnt_tvirt, TVIRT(t, h2o));
+
1445 SET_ATM(qnt_lapse, lapse_rate(t, h2o));
+
1446 SET_ATM(qnt_pv, pv);
+
1447 SET_ATM(qnt_tdew, TDEW(atm->p[ip], h2o));
+
1448 SET_ATM(qnt_tice, TICE(atm->p[ip], h2o));
+
1449 SET_ATM(qnt_tnat,
+
1450 nat_temperature(atm->p[ip], h2o,
+
1451 clim_zm(&clim->hno3, atm->time[ip],
+
1452 atm->lat[ip], atm->p[ip])));
+
1453 SET_ATM(qnt_tsts,
+
1454 0.5 * (atm->q[ctl->qnt_tice][ip] + atm->q[ctl->qnt_tnat][ip]));
+
1455 }
+
1456}
+
1457
+
1458/*****************************************************************************/
+
1459
+ +
1461 ctl_t * ctl,
+
1462 clim_t * clim,
+
1463 met_t * met0,
+
1464 met_t * met1,
+
1465 atm_t * atm,
+
1466 double tt) {
+
1467
+
1468 double *z, *press;
+
1469
+
1470 int *ixs, *iys, *izs;
+
1471
+
1472 /* Update host... */
+
1473#ifdef _OPENACC
+
1474 SELECT_TIMER("UPDATE_HOST", "MEMORY", NVTX_D2H);
+
1475#pragma acc update host(atm[:1])
+
1476#endif
+
1477
+
1478 /* Set timer... */
+
1479 SELECT_TIMER("MODULE_CHEMGRID", "PHYSICS", NVTX_GPU);
+
1480
+
1481 /* Allocate... */
+
1482 ALLOC(z, double,
+
1483 ctl->chemgrid_nz);
+
1484 ALLOC(press, double,
+
1485 ctl->chemgrid_nz);
+
1486 ALLOC(ixs, int,
+
1487 atm->np);
+
1488 ALLOC(iys, int,
+
1489 atm->np);
+
1490 ALLOC(izs, int,
+
1491 atm->np);
+
1492
+
1493 /* Set grid box size... */
+
1494 double dz = (ctl->chemgrid_z1 - ctl->chemgrid_z0) / ctl->chemgrid_nz;
+
1495 double dlon = (ctl->chemgrid_lon1 - ctl->chemgrid_lon0) / ctl->chemgrid_nx;
+
1496 double dlat = (ctl->chemgrid_lat1 - ctl->chemgrid_lat0) / ctl->chemgrid_ny;
+
1497
+
1498 /* Set vertical coordinates... */
+
1499#pragma omp parallel for default(shared)
+
1500 for (int iz = 0; iz < ctl->chemgrid_nz; iz++) {
+
1501 z[iz] = ctl->chemgrid_z0 + dz * (iz + 0.5);
+
1502 press[iz] = P(z[iz]);
+
1503 }
+
1504
+
1505 /* Set time interval for output... */
+
1506 double t0 = tt - 0.5 * ctl->dt_mod;
+
1507 double t1 = tt + 0.5 * ctl->dt_mod;
+
1508
+
1509 /* Get indices... */
+
1510#pragma omp parallel for default(shared)
+
1511 for (int ip = 0; ip < atm->np; ip++) {
+
1512 ixs[ip] = (int) ((atm->lon[ip] - ctl->chemgrid_lon0) / dlon);
+
1513 iys[ip] = (int) ((atm->lat[ip] - ctl->chemgrid_lat0) / dlat);
+
1514 izs[ip] = (int) ((Z(atm->p[ip]) - ctl->chemgrid_z0) / dz);
+
1515 if (atm->time[ip] < t0 || atm->time[ip] > t1
+
1516 || ixs[ip] < 0 || ixs[ip] >= ctl->chemgrid_nx
+
1517 || iys[ip] < 0 || iys[ip] >= ctl->chemgrid_ny
+
1518 || izs[ip] < 0 || izs[ip] >= ctl->chemgrid_nz)
+
1519 izs[ip] = -1;
+
1520 }
+
1521
+
1522 /* Initialize quantity concentration variables... */
+
1523 static short init[NP];
+
1524#pragma omp parallel for default(shared)
+
1525 for (int ip = 0; ip < atm->np; ip++)
+
1526 if (izs[ip] >= 0)
+
1527 if (!init[ip]) {
+
1528 init[ip] = 1;
+
1529
+
1530 /* Set H2O and O3 using meteo data... */
+
1531 if (ctl->qnt_Ch2o >= 0 || ctl->qnt_Co3 >= 0) {
+
1532 double h2o, o3;
+ +
1534 if (ctl->qnt_Ch2o >= 0) {
+
1535 INTPOL_3D(h2o, 1);
+
1536 SET_ATM(qnt_Ch2o, h2o);
+
1537 }
+
1538 if (ctl->qnt_Co3 >= 0) {
+
1539 INTPOL_3D(o3, 0);
+
1540 SET_ATM(qnt_Co3, o3);
+
1541 }
+
1542 }
+
1543
+
1544 /* Set radical species... */
+
1545 SET_ATM(qnt_Coh, clim_zm(&clim->oh, atm->time[ip],
+
1546 atm->lat[ip], atm->p[ip]));
+
1547 SET_ATM(qnt_Cho2, clim_zm(&clim->ho2, atm->time[ip],
+
1548 atm->lat[ip], atm->p[ip]));
+
1549 SET_ATM(qnt_Ch2o2, clim_zm(&clim->h2o2, atm->time[ip],
+
1550 atm->lat[ip], atm->p[ip]));
+
1551 SET_ATM(qnt_Co1d, clim_zm(&clim->o1d, atm->time[ip],
+
1552 atm->lat[ip], atm->p[ip]));
+
1553 }
+
1554
+
1555 /* Check quantities... */
+
1556 if (ctl->qnt_m >= 0 && ctl->qnt_Cx >= 0) {
+
1557 if (ctl->molmass < 0)
+
1558 ERRMSG("SPECIES MOLAR MASS is not defined!");
+
1559
+
1560 double *mass, *area, *lon, *lat;
+
1561
+
1562 /* Allocate... */
+
1563 ALLOC(mass, double,
+
1564 ctl->chemgrid_nx * ctl->chemgrid_ny * ctl->chemgrid_nz);
+
1565 ALLOC(lon, double,
+
1566 ctl->chemgrid_nx);
+
1567 ALLOC(lat, double,
+
1568 ctl->chemgrid_ny);
+
1569 ALLOC(area, double,
+
1570 ctl->chemgrid_ny);
+
1571
+
1572 /* Set horizontal coordinates... */
+
1573 for (int ix = 0; ix < ctl->chemgrid_nx; ix++)
+
1574 lon[ix] = ctl->chemgrid_lon0 + dlon * (ix + 0.5);
+
1575#pragma omp parallel for default(shared)
+
1576 for (int iy = 0; iy < ctl->chemgrid_ny; iy++) {
+
1577 lat[iy] = ctl->chemgrid_lat0 + dlat * (iy + 0.5);
+
1578 area[iy] = dlat * dlon * SQR(RE * M_PI / 180.)
+
1579 * cos(lat[iy] * M_PI / 180.);
+
1580 }
+
1581
+
1582 /* Get mass per grid box... */
+
1583 for (int ip = 0; ip < atm->np; ip++)
+
1584 if (izs[ip] >= 0)
+
1585 mass[ARRAY_3D
+
1586 (ixs[ip], iys[ip], ctl->chemgrid_ny, izs[ip], ctl->chemgrid_nz)]
+
1587 += atm->q[ctl->qnt_m][ip];
+
1588
+
1589 /* Assign grid data to air parcels ... */
+
1590#pragma omp parallel for default(shared)
+
1591 for (int ip = 0; ip < atm->np; ip++)
+
1592 if (izs[ip] >= 0) {
+
1593
+
1594 /* Interpolate temperature... */
+
1595 double temp;
+ +
1597 intpol_met_time_3d(met0, met0->t, met1, met1->t, tt, press[izs[ip]],
+
1598 lon[ixs[ip]], lat[iys[ip]], &temp, ci, cw, 1);
+
1599
+
1600 /* Set mass... */
+
1601 double m = mass[ARRAY_3D(ixs[ip], iys[ip], ctl->chemgrid_ny,
+
1602 izs[ip], ctl->chemgrid_nz)];
+
1603
+
1604 /* Calculate volume mixing ratio... */
+
1605 if (ctl->qnt_Cx >= 0)
+
1606 atm->q[ctl->qnt_Cx][ip] = MA / ctl->molmass * m
+
1607 / (1e9 * RHO(press[izs[ip]], temp) * area[iys[ip]] * dz);
+
1608 }
+
1609
+
1610 /* Free... */
+
1611 free(mass);
+
1612 free(lon);
+
1613 free(lat);
+
1614 free(area);
+
1615 }
+
1616
+
1617 /* Free... */
+
1618 free(z);
+
1619 free(press);
+
1620 free(ixs);
+
1621 free(iys);
+
1622 free(izs);
+
1623
+
1624 /* Update device... */
+
1625#ifdef _OPENACC
+
1626 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
1627#pragma acc update device(atm[:1])
+
1628#endif
+
1629}
+
1630
+
1631/*****************************************************************************/
+
1632
+ +
1634 ctl_t * ctl,
+
1635 clim_t * clim,
+
1636 met_t * met0,
+
1637 met_t * met1,
+
1638 atm_t * atm,
+
1639 double *dt) {
+
1640
+
1641 /* Set timer... */
+
1642 SELECT_TIMER("MODULE_OHCHEM", "PHYSICS", NVTX_GPU);
+
1643
+
1644 /* Check quantity flags... */
+
1645 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1646 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1647
+
1648 /* Loop over particles... */
+
1649 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,met0,met1,atm,dt)") {
+
1650
+
1651 /* Get temperature... */
+
1652 double t;
+ +
1654 INTPOL_3D(t, 1);
+
1655
+
1656 /* Calculate molecular density... */
+
1657 double M = MOLEC_DENS(atm->p[ip], t);
+
1658
+
1659 /* Use constant reaction rate... */
+
1660 double k = GSL_NAN;
+
1661 if (ctl->oh_chem_reaction == 1)
+
1662 k = ctl->oh_chem[0];
+
1663
+
1664 /* Calculate bimolecular reaction rate... */
+
1665 else if (ctl->oh_chem_reaction == 2)
+
1666 k = ctl->oh_chem[0] * exp(-ctl->oh_chem[1] / t);
+
1667
+
1668 /* Calculate termolecular reaction rate... */
+
1669 if (ctl->oh_chem_reaction == 3) {
+
1670
+
1671 /* Calculate rate coefficient for X + OH + M -> XOH + M
+
1672 (JPL Publication 19-05) ... */
+
1673 double k0 =
+
1674 ctl->oh_chem[0] * (ctl->oh_chem[1] !=
+
1675 0 ? pow(298. / t, ctl->oh_chem[1]) : 1.);
+
1676 double ki =
+
1677 ctl->oh_chem[2] * (ctl->oh_chem[3] !=
+
1678 0 ? pow(298. / t, ctl->oh_chem[3]) : 1.);
+
1679 double c = log10(k0 * M / ki);
+
1680 k = k0 * M / (1. + k0 * M / ki) * pow(0.6, 1. / (1. + c * c));
+
1681 }
+
1682
+
1683 /* Calculate exponential decay... */
+
1684 double rate_coef = k * clim_oh(ctl, clim, atm->time[ip], atm->lon[ip],
+
1685 atm->lat[ip], atm->p[ip]) * M;
+
1686 double aux = exp(-dt[ip] * rate_coef);
+
1687 if (ctl->qnt_m >= 0) {
+
1688 if (ctl->qnt_mloss_oh >= 0)
+
1689 atm->q[ctl->qnt_mloss_oh][ip]
+
1690 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1691 atm->q[ctl->qnt_m][ip] *= aux;
+
1692 }
+
1693 if (ctl->qnt_vmr >= 0)
+
1694 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1695 }
+
1696}
+
1697
+
1698/*****************************************************************************/
+
1699
+ +
1701 ctl_t * ctl,
+
1702 clim_t * clim,
+
1703 met_t * met0,
+
1704 met_t * met1,
+
1705 atm_t * atm,
+
1706 double *dt) {
+
1707
+
1708 /* Set timer... */
+
1709 SELECT_TIMER("MODULE_H2O2CHEM", "PHYSICS", NVTX_GPU);
+
1710
+
1711 /* Check quantity flags... */
+
1712 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
1713 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
1714 if (ctl->qnt_Cx < 0)
+
1715 ERRMSG("Module needs quantity implicit volume mixing ratio!");
+
1716
+
1717 /* Loop over particles... */
+
1718 PARTICLE_LOOP(0, atm->np, 1, "acc data present(clim,ctl,met0,met1,atm,dt)") {
+
1719
+
1720 /* Check whether particle is inside cloud... */
+
1721 double lwc;
+ +
1723 INTPOL_3D(lwc, 1);
+
1724 if (!(lwc > 0))
+
1725 continue;
+
1726
+
1727 /* Check implicit volume mixing ratio... */
+
1728 if (atm->q[ctl->qnt_Cx][ip] == 0)
+
1729 continue;
+
1730
+
1731 /* Get temperature... */
+
1732 double t;
+
1733 INTPOL_3D(t, 0);
+
1734
+
1735 /* Get molecular density... */
+
1736 double M = MOLEC_DENS(atm->p[ip], t);
+
1737
+
1738 /* Reaction rate (Berglen et al., 2004)... */
+
1739 double k = 9.1e7 * exp(-29700 / RI * (1. / t - 1. / 298.15)); // Maass 1999 unit: M^(-2)
+
1740
+
1741 /* Henry constant of SO2... */
+
1742 double H_SO2 = 1.3e-2 * exp(2900 * (1. / t - 1. / 298.15)) * RI * t;
+
1743 double K_1S = 1.23e-2 * exp(2.01e3 * (1. / t - 1. / 298.15)); // unit: mol/L
+
1744
+
1745 /* Henry constant of H2O2... */
+
1746 double H_h2o2 = 8.3e2 * exp(7600 * (1 / t - 1 / 298.15)) * RI * t;
+
1747
+
1748 /* Concentration of H2O2 (Barth et al., 1989)... */
+
1749 double SO2 = atm->q[ctl->qnt_Cx][ip] * 1e9; // vmr unit: ppbv
+
1750 double h2o2 = H_h2o2 * clim_zm(&clim->h2o2, atm->time[ip], atm->lat[ip], atm->p[ip]) * M * 0.59 * exp(-0.687 * SO2) * 1000 / AVO; // unit: mol/L
+
1751
+
1752 /* Volume water content in cloud [m^3 m^(-3)]... */
+
1753 double rho_air = 100 * atm->p[ip] / (RI * t) * MA / 1000;
+
1754 //MA: Molar mass of dry air; RI: Ideal gas constant 8.314 [J/(mol K)]
+
1755 double CWC = lwc * rho_air / 1000;
+
1756
+
1757 /* Calculate exponential decay (Rolph et al., 1992)... */
+
1758 double rate_coef = k * K_1S * h2o2 * H_SO2 * CWC;
+
1759 double aux = exp(-dt[ip] * rate_coef);
+
1760 if (ctl->qnt_m >= 0) {
+
1761 if (ctl->qnt_mloss_h2o2 >= 0)
+
1762 atm->q[ctl->qnt_mloss_h2o2][ip] += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
1763 atm->q[ctl->qnt_m][ip] *= aux;
+
1764 }
+
1765 if (ctl->qnt_vmr >= 0)
+
1766 atm->q[ctl->qnt_vmr][ip] *= aux;
+
1767 }
+
1768}
+
1769
+
1770/*****************************************************************************/
+
1771
+ +
1773 ctl_t * ctl,
+
1774 clim_t * clim,
+
1775 met_t * met0,
+
1776 met_t * met1,
+
1777 atm_t * atm,
+
1778 double *dt) {
+
1779
+
1780 /* Set timer... */
+
1781 SELECT_TIMER("MODULE_TRACERCHEM", "PHYSICS", NVTX_GPU);
+
1782
+
1783 /* Loop over particles... */
+
1784 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,clim,met0,atm,met1,dt)") {
+
1785
+
1786 /* Get temperature... */
+
1787 double t;
+ +
1789 INTPOL_3D(t, 1);
+
1790
+
1791 /* Get molecular density... */
+
1792 double M = MOLEC_DENS(atm->p[ip], t);
+
1793
+
1794 /* Get total column ozone... */
+
1795 double o3c;
+
1796 INTPOL_2D(o3c, 1);
+
1797
+
1798 /* Get solar zenith angle... */
+
1799 double sza = sza_calc(atm->time[ip], atm->lon[ip], atm->lat[ip]);
+
1800
+
1801 /* Get O(1D) concentration... */
+
1802 double o1d = clim_zm(&clim->o1d, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
1803
+
1804 /* Reactions for CFC-10... */
+
1805 if (ctl->qnt_Cccl4 >= 0) {
+
1806 double K_o1d = ARRHENIUS(3.30e-10, 0, t) * o1d * M;
+
1807 double K_hv = clim_photo(clim->photo.ccl4, &(clim->photo),
+
1808 atm->p[ip], sza, o3c);
+
1809 atm->q[ctl->qnt_Cccl4][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1810 }
+
1811
+
1812 /* Reactions for CFC-11... */
+
1813 if (ctl->qnt_Cccl3f >= 0) {
+
1814 double K_o1d = ARRHENIUS(2.30e-10, 0, t) * o1d * M;
+
1815 double K_hv = clim_photo(clim->photo.ccl3f, &(clim->photo),
+
1816 atm->p[ip], sza, o3c);
+
1817 atm->q[ctl->qnt_Cccl3f][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1818 }
+
1819
+
1820 /* Reactions for CFC-12... */
+
1821 if (ctl->qnt_Cccl2f2 >= 0) {
+
1822 double K_o1d = ARRHENIUS(1.40e-10, -25, t) * o1d * M;
+
1823 double K_hv = clim_photo(clim->photo.ccl2f2, &(clim->photo),
+
1824 atm->p[ip], sza, o3c);
+
1825 atm->q[ctl->qnt_Cccl2f2][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1826 }
+
1827
+
1828 /* Reactions for N2O... */
+
1829 if (ctl->qnt_Cn2o >= 0) {
+
1830 double K_o1d = ARRHENIUS(1.19e-10, -20, t) * o1d * M;
+
1831 double K_hv = clim_photo(clim->photo.n2o, &(clim->photo),
+
1832 atm->p[ip], sza, o3c);
+
1833 atm->q[ctl->qnt_Cn2o][ip] *= exp(-dt[ip] * (K_hv + K_o1d));
+
1834 }
+
1835 }
+
1836}
+
1837
+
1838/*****************************************************************************/
+
1839
+
1840#ifdef KPP
+
1841
+
1842void module_kpp_chem(
+
1843 ctl_t * ctl,
+
1844 clim_t * clim,
+
1845 met_t * met0,
+
1846 met_t * met1,
+
1847 atm_t * atm,
+
1848 double *dt) {
+
1849
+
1850 /* Set timer... */
+
1851 SELECT_TIMER("MODULE_KPP_CHEM", "PHYSICS", NVTX_GPU);
+
1852
+
1853 /* Loop over particles... */
+
1854 const int np = atm->np;
+
1855#pragma omp parallel for
+
1856 for (int ip = 0; ip < np; ip++) {
+
1857 if (dt[ip] > 0) {
+
1858
+
1859 /* Set species... */
+
1860 ALLOC(VAR, double,
+
1861 NVAR);
+
1862 ALLOC(FIX, double,
+
1863 NFIX);
+
1864
+
1865 /* Sett range of time steps... */
+
1866 STEPMIN = 0;
+
1867 STEPMAX = 900.0;
+
1868
+
1869 /* Set relative & absolute tolerances... */
+
1870 for (int i = 0; i < NVAR; i++) {
+
1871 RTOL[i] = 1.0e-4;
+
1872 ATOL[i] = 1.0e-3;
+
1873 }
+
1874
+
1875 /* Initialize... */
+
1876 kpp_chem_initialize(ctl, clim, met0, met1, atm, ip);
+
1877
+
1878 /* Integrate... */
+
1879 INTEGRATE(atm->time[ip] - dt[ip], atm->time[ip]);
+
1880
+
1881 /* Output to air parcel.. */
+
1882 kpp_chem_output2atm(atm, ctl, met0, met1, ip);
+
1883
+
1884 /* Free... */
+
1885 free(VAR);
+
1886 free(FIX);
+
1887 }
+
1888 }
+
1889}
+
1890
+
1891#endif
+
1892
+
1893/*****************************************************************************/
+
1894
+ +
1896 ctl_t * ctl,
+
1897 clim_t * clim,
+
1898 atm_t * atm,
+
1899 double t) {
+
1900
+
1901 int *ixs, *iys, *izs;
+
1902
+
1903 /* Update host... */
+
1904#ifdef _OPENACC
+
1905 SELECT_TIMER("UPDATE_HOST", "MEMORY", NVTX_D2H);
+
1906#pragma acc update host(atm[:1])
+
1907#endif
+
1908
+
1909 /* Set timer... */
+
1910 SELECT_TIMER("MODULE_MIXING", "PHYSICS", NVTX_GPU);
+
1911
+
1912 /* Allocate... */
+
1913 ALLOC(ixs, int,
+
1914 atm->np);
+
1915 ALLOC(iys, int,
+
1916 atm->np);
+
1917 ALLOC(izs, int,
+
1918 atm->np);
+
1919
+
1920 /* Set grid box size... */
+
1921 double dz = (ctl->mixing_z1 - ctl->mixing_z0) / ctl->mixing_nz;
+
1922 double dlon = (ctl->mixing_lon1 - ctl->mixing_lon0) / ctl->mixing_nx;
+
1923 double dlat = (ctl->mixing_lat1 - ctl->mixing_lat0) / ctl->mixing_ny;
+
1924
+
1925 /* Set time interval... */
+
1926 double t0 = t - 0.5 * ctl->dt_mod;
+
1927 double t1 = t + 0.5 * ctl->dt_mod;
+
1928
+
1929 /* Get indices... */
+
1930#pragma omp parallel for default(shared)
+
1931 for (int ip = 0; ip < atm->np; ip++) {
+
1932 ixs[ip] = (int) ((atm->lon[ip] - ctl->mixing_lon0) / dlon);
+
1933 iys[ip] = (int) ((atm->lat[ip] - ctl->mixing_lat0) / dlat);
+
1934 izs[ip] = (int) ((Z(atm->p[ip]) - ctl->mixing_z0) / dz);
+
1935 if (atm->time[ip] < t0 || atm->time[ip] > t1
+
1936 || ixs[ip] < 0 || ixs[ip] >= ctl->mixing_nx
+
1937 || iys[ip] < 0 || iys[ip] >= ctl->mixing_ny
+
1938 || izs[ip] < 0 || izs[ip] >= ctl->mixing_nz)
+
1939 izs[ip] = -1;
+
1940 }
+
1941
+
1942 /* Calculate interparcel mixing... */
+
1943 if (ctl->qnt_m >= 0)
+
1944 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_m);
+
1945 if (ctl->qnt_vmr >= 0)
+
1946 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_vmr);
+
1947 if (ctl->qnt_Cx >= 0)
+
1948 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cx);
+
1949 if (ctl->qnt_Ch2o >= 0)
+
1950 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Ch2o);
+
1951 if (ctl->qnt_Co3 >= 0)
+
1952 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Co3);
+
1953 if (ctl->qnt_Cco >= 0)
+
1954 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cco);
+
1955 if (ctl->qnt_Coh >= 0)
+
1956 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Coh);
+
1957 if (ctl->qnt_Ch >= 0)
+
1958 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Ch);
+
1959 if (ctl->qnt_Cho2 >= 0)
+
1960 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cho2);
+
1961 if (ctl->qnt_Ch2o2 >= 0)
+
1962 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Ch2o2);
+
1963 if (ctl->qnt_Co1d >= 0)
+
1964 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Co1d);
+
1965 if (ctl->qnt_Co3p >= 0)
+
1966 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Co3p);
+
1967 if (ctl->qnt_Cccl4 >= 0)
+
1968 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cccl4);
+
1969 if (ctl->qnt_Cccl3f >= 0)
+
1970 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cccl3f);
+
1971 if (ctl->qnt_Cccl2f2 >= 0)
+
1972 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cccl2f2);
+
1973 if (ctl->qnt_Cn2o >= 0)
+
1974 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Cn2o);
+
1975 if (ctl->qnt_Csf6 >= 0)
+
1976 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_Csf6);
+
1977 if (ctl->qnt_aoa >= 0)
+
1978 module_mixing_help(ctl, clim, atm, ixs, iys, izs, ctl->qnt_aoa);
+
1979
+
1980 /* Free... */
+
1981 free(ixs);
+
1982 free(iys);
+
1983 free(izs);
+
1984
+
1985 /* Update device... */
+
1986#ifdef _OPENACC
+
1987 SELECT_TIMER("UPDATE_DEVICE", "MEMORY", NVTX_H2D);
+
1988#pragma acc update device(atm[:1])
+
1989#endif
+
1990}
+
1991
+
1992/*****************************************************************************/
+
1993
+ +
1995 ctl_t * ctl,
+
1996 clim_t * clim,
+
1997 atm_t * atm,
+
1998 int *ixs,
+
1999 int *iys,
+
2000 int *izs,
+
2001 int qnt_idx) {
+
2002
+
2003 double *cmean;
+
2004
+
2005 int *count;
+
2006
+
2007 /* Allocate... */
+
2008 ALLOC(cmean, double,
+
2009 ctl->mixing_nx * ctl->mixing_ny * ctl->mixing_nz);
+
2010 ALLOC(count, int,
+
2011 ctl->mixing_nx * ctl->mixing_ny * ctl->mixing_nz);
+
2012
+
2013 /* Loop over particles... */
+
2014 for (int ip = 0; ip < atm->np; ip++)
+
2015 if (izs[ip] >= 0) {
+
2016 int idx = ARRAY_3D
+
2017 (ixs[ip], iys[ip], ctl->mixing_ny, izs[ip], ctl->mixing_nz);
+
2018 cmean[idx] += atm->q[qnt_idx][ip];
+
2019 count[idx]++;
+
2020 }
+
2021#pragma omp parallel for
+
2022 for (int i = 0; i < ctl->mixing_nx * ctl->mixing_ny * ctl->mixing_nz; i++)
+
2023 if (count[i] > 0)
+
2024 cmean[i] /= count[i];
+
2025
+
2026 /* Calculate interparcel mixing... */
+
2027#pragma omp parallel for
+
2028 for (int ip = 0; ip < atm->np; ip++)
+
2029 if (izs[ip] >= 0) {
+
2030
+
2031 /* Set mixing parameter... */
+
2032 double mixparam = 1.0;
+
2033 if (ctl->mixing_trop < 1 || ctl->mixing_strat < 1) {
+
2034 double w =
+
2035 tropo_weight(clim, atm->time[ip], atm->lat[ip], atm->p[ip]);
+
2036 mixparam = w * ctl->mixing_trop + (1 - w) * ctl->mixing_strat;
+
2037 }
+
2038
+
2039 /* Adjust quantity... */
+
2040 atm->q[qnt_idx][ip] +=
+
2041 (cmean
+
2042 [ARRAY_3D(ixs[ip], iys[ip], ctl->mixing_ny, izs[ip], ctl->mixing_nz)]
+
2043 - atm->q[qnt_idx][ip]) * mixparam;
+
2044 }
+
2045
+
2046 /* Free... */
+
2047 free(cmean);
+
2048 free(count);
+
2049}
+
2050
+
2051/*****************************************************************************/
+
2052
+ +
2054 ctl_t * ctl,
+
2055 met_t * met0,
+
2056 met_t * met1,
+
2057 atm_t * atm,
+
2058 double *dt) {
+
2059
+
2060 /* Set timer... */
+
2061 SELECT_TIMER("MODULE_POSITION", "PHYSICS", NVTX_GPU);
+
2062
+
2063 /* Loop over particles... */
+
2064 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
2065
+
2066 /* Init... */
+
2067 double ps;
+ +
2069
+
2070 /* Calculate modulo... */
+
2071 atm->lon[ip] = FMOD(atm->lon[ip], 360.);
+
2072 atm->lat[ip] = FMOD(atm->lat[ip], 360.);
+
2073
+
2074 /* Check latitude... */
+
2075 while (atm->lat[ip] < -90 || atm->lat[ip] > 90) {
+
2076 if (atm->lat[ip] > 90) {
+
2077 atm->lat[ip] = 180 - atm->lat[ip];
+
2078 atm->lon[ip] += 180;
+
2079 }
+
2080 if (atm->lat[ip] < -90) {
+
2081 atm->lat[ip] = -180 - atm->lat[ip];
+
2082 atm->lon[ip] += 180;
+
2083 }
+
2084 }
+
2085
+
2086 /* Check longitude... */
+
2087 while (atm->lon[ip] < -180)
+
2088 atm->lon[ip] += 360;
+
2089 while (atm->lon[ip] >= 180)
+
2090 atm->lon[ip] -= 360;
+
2091
+
2092 /* Check pressure... */
+
2093 if (atm->p[ip] < met0->p[met0->np - 1]) {
+
2094 if (ctl->reflect)
+
2095 atm->p[ip] = 2. * met0->p[met0->np - 1] - atm->p[ip];
+
2096 else
+
2097 atm->p[ip] = met0->p[met0->np - 1];
+
2098 } else if (atm->p[ip] > 300.) {
+
2099 INTPOL_2D(ps, 1);
+
2100 if (atm->p[ip] > ps) {
+
2101 if (ctl->reflect)
+
2102 atm->p[ip] = 2. * ps - atm->p[ip];
+
2103 else
+
2104 atm->p[ip] = ps;
+
2105 }
+
2106 }
+
2107 }
+
2108}
+
2109
+
2110/*****************************************************************************/
+
2111
+ +
2113 int ntask) {
+
2114
+
2115 /* Initialize random number generator... */
+
2116#ifdef _OPENACC
+
2117
+
2118 if (curandCreateGenerator(&rng, CURAND_RNG_PSEUDO_DEFAULT) !=
+
2119 CURAND_STATUS_SUCCESS)
+
2120 ERRMSG("Cannot create random number generator!");
+
2121 if (curandSetPseudoRandomGeneratorSeed(rng, ntask) != CURAND_STATUS_SUCCESS)
+
2122 ERRMSG("Cannot set seed for random number generator!");
+
2123 if (curandSetStream(rng, (cudaStream_t) acc_get_cuda_stream(acc_async_sync))
+
2124 != CURAND_STATUS_SUCCESS)
+
2125 ERRMSG("Cannot set stream for random number generator!");
+
2126
+
2127#else
+
2128
+
2129 gsl_rng_env_setup();
+
2130 if (omp_get_max_threads() > NTHREADS)
+
2131 ERRMSG("Too many threads!");
+
2132 for (int i = 0; i < NTHREADS; i++) {
+
2133 rng[i] = gsl_rng_alloc(gsl_rng_default);
+
2134 gsl_rng_set(rng[i],
+
2135 gsl_rng_default_seed + (long unsigned) (ntask * NTHREADS +
+
2136 i));
+
2137 }
+
2138
+
2139#endif
+
2140}
+
2141
+
2142/*****************************************************************************/
+
2143
+ +
2145 double *rs,
+
2146 size_t n,
+
2147 int method) {
+
2148
+
2149#ifdef _OPENACC
+
2150
+
2151#pragma acc host_data use_device(rs)
+
2152 {
+
2153 /* Uniform distribution... */
+
2154 if (method == 0) {
+
2155 if (curandGenerateUniformDouble(rng, rs, (n < 4 ? 4 : n)) !=
+
2156 CURAND_STATUS_SUCCESS)
+
2157 ERRMSG("Cannot create random numbers!");
+
2158 }
+
2159
+
2160 /* Normal distribution... */
+
2161 else if (method == 1) {
+
2162 if (curandGenerateNormalDouble(rng, rs, (n < 4 ? 4 : n), 0.0, 1.0) !=
+
2163 CURAND_STATUS_SUCCESS)
+
2164 ERRMSG("Cannot create random numbers!");
+
2165 }
+
2166 }
+
2167
+
2168#else
+
2169
+
2170 /* Uniform distribution... */
+
2171 if (method == 0) {
+
2172#pragma omp parallel for default(shared)
+
2173 for (size_t i = 0; i < n; ++i)
+
2174 rs[i] = gsl_rng_uniform(rng[omp_get_thread_num()]);
+
2175 }
+
2176
+
2177 /* Normal distribution... */
+
2178 else if (method == 1) {
+
2179#pragma omp parallel for default(shared)
+
2180 for (size_t i = 0; i < n; ++i)
+
2181 rs[i] = gsl_ran_gaussian_ziggurat(rng[omp_get_thread_num()], 1.0);
+
2182 }
+
2183#endif
+
2184}
+
2185
+
2186/*****************************************************************************/
+
2187
+ +
2189 ctl_t * ctl,
+
2190 met_t * met0,
+
2191 met_t * met1,
+
2192 atm_t * atm,
+
2193 double *dt) {
+
2194
+
2195 /* Set timer... */
+
2196 SELECT_TIMER("MODULE_SEDI", "PHYSICS", NVTX_GPU);
+
2197
+
2198 /* Loop over particles... */
+
2199 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
2200
+
2201 /* Get temperature... */
+
2202 double t;
+ +
2204 INTPOL_3D(t, 1);
+
2205
+
2206 /* Sedimentation velocity... */
+
2207 double v_s = sedi(atm->p[ip], t, atm->q[ctl->qnt_rp][ip],
+
2208 atm->q[ctl->qnt_rhop][ip]);
+
2209
+
2210 /* Calculate pressure change... */
+
2211 atm->p[ip] += DZ2DP(v_s * dt[ip] / 1000., atm->p[ip]);
+
2212 }
+
2213}
+
2214
+
2215/*****************************************************************************/
+
2216
+ +
2218 ctl_t * ctl,
+
2219 met_t * met0,
+
2220 atm_t * atm) {
+
2221
+
2222 /* Set timer... */
+
2223 SELECT_TIMER("MODULE_SORT", "PHYSICS", NVTX_GPU);
+
2224
+
2225 /* Allocate... */
+
2226 const int np = atm->np;
+
2227 double *restrict const a = (double *) malloc((size_t) np * sizeof(double));
+
2228 int *restrict const p = (int *) malloc((size_t) np * sizeof(int));
+
2229
+
2230#ifdef _OPENACC
+
2231#pragma acc enter data create(a[0:np],p[0:np])
+
2232#pragma acc data present(ctl,met0,atm,a,p)
+
2233#endif
+
2234
+
2235 /* Get box index... */
+
2236#ifdef _OPENACC
+
2237#pragma acc parallel loop independent gang vector
+
2238#else
+
2239#pragma omp parallel for default(shared)
+
2240#endif
+
2241 for (int ip = 0; ip < np; ip++) {
+
2242 a[ip] =
+
2243 (double) ((locate_reg(met0->lon, met0->nx, atm->lon[ip]) * met0->ny +
+
2244 locate_reg(met0->lat, met0->ny, atm->lat[ip]))
+
2245 * met0->np + locate_irr(met0->p, met0->np, atm->p[ip]));
+
2246 p[ip] = ip;
+
2247 }
+
2248
+
2249 /* Sorting... */
+
2250#ifdef _OPENACC
+
2251 {
+
2252#ifdef THRUST
+
2253 {
+
2254#pragma acc host_data use_device(a, p)
+
2255 thrustSortWrapper(a, np, p);
+
2256 }
+
2257#else
+
2258 {
+
2259#pragma acc update host(a[0:np], p[0:np])
+
2260#pragma omp parallel
+
2261 {
+
2262#pragma omp single nowait
+
2263 quicksort(a, p, 0, np - 1);
+
2264 }
+
2265#pragma acc update device(a[0:np], p[0:np])
+
2266 }
+
2267#endif
+
2268 }
+
2269#else
+
2270 {
+
2271#ifdef THRUST
+
2272 {
+
2273 thrustSortWrapper(a, np, p);
+
2274 }
+
2275#else
+
2276 {
+
2277#pragma omp parallel
+
2278 {
+
2279#pragma omp single nowait
+
2280 quicksort(a, p, 0, np - 1);
+
2281 }
+
2282 }
+
2283#endif
+
2284 }
+
2285#endif
+
2286
+
2287 /* Sort data... */
+
2288 module_sort_help(atm->time, p, np);
+
2289 module_sort_help(atm->p, p, np);
+
2290 module_sort_help(atm->lon, p, np);
+
2291 module_sort_help(atm->lat, p, np);
+
2292 for (int iq = 0; iq < ctl->nq; iq++)
+
2293 module_sort_help(atm->q[iq], p, np);
+
2294
+
2295 /* Free... */
+
2296#ifdef _OPENACC
+
2297#pragma acc exit data delete(a,p)
+
2298#endif
+
2299 free(a);
+
2300 free(p);
+
2301}
+
2302
+
2303/*****************************************************************************/
+
2304
+ +
2306 double *a,
+
2307 int *p,
+
2308 int np) {
+
2309
+
2310 /* Allocate... */
+
2311 double *restrict const help =
+
2312 (double *) malloc((size_t) np * sizeof(double));
+
2313
+
2314 /* Reordering of array... */
+
2315#ifdef _OPENACC
+
2316#pragma acc enter data create(help[0:np])
+
2317#pragma acc data present(a,p,help)
+
2318#pragma acc parallel loop independent gang vector
+
2319#else
+
2320#pragma omp parallel for default(shared)
+
2321#endif
+
2322 for (int ip = 0; ip < np; ip++)
+
2323 help[ip] = a[p[ip]];
+
2324#ifdef _OPENACC
+
2325#pragma acc parallel loop independent gang vector
+
2326#else
+
2327#pragma omp parallel for default(shared)
+
2328#endif
+
2329 for (int ip = 0; ip < np; ip++)
+
2330 a[ip] = help[ip];
+
2331
+
2332 /* Free... */
+
2333#ifdef _OPENACC
+
2334#pragma acc exit data delete(help)
+
2335#endif
+
2336 free(help);
+
2337}
+
2338
+
2339/*****************************************************************************/
+
2340
+ +
2342 ctl_t * ctl,
+
2343 met_t * met0,
+
2344 atm_t * atm,
+
2345 double *dt,
+
2346 double t) {
+
2347
+
2348 /* Set timer... */
+
2349 SELECT_TIMER("MODULE_TIMESTEPS", "PHYSICS", NVTX_GPU);
+
2350
+
2351 const double latmin = gsl_stats_min(met0->lat, 1, (size_t) met0->ny),
+
2352 latmax = gsl_stats_max(met0->lat, 1, (size_t) met0->ny);
+
2353
+
2354 const int local =
+
2355 (fabs(met0->lon[met0->nx - 1] - met0->lon[0] - 360.0) >= 0.01);
+
2356
+
2357 /* Loop over particles... */
+
2358 PARTICLE_LOOP(0, atm->np, 0, "acc data present(ctl,atm,met0,dt)") {
+
2359
+
2360 /* Set time step for each air parcel... */
+
2361 if ((ctl->direction * (atm->time[ip] - ctl->t_start) >= 0
+
2362 && ctl->direction * (atm->time[ip] - ctl->t_stop) <= 0
+
2363 && ctl->direction * (atm->time[ip] - t) < 0))
+
2364 dt[ip] = t - atm->time[ip];
+
2365 else
+
2366 dt[ip] = 0.0;
+
2367
+
2368 /* Check horizontal boundaries of local meteo data... */
+
2369 if (local && (atm->lon[ip] <= met0->lon[0]
+
2370 || atm->lon[ip] >= met0->lon[met0->nx - 1]
+
2371 || atm->lat[ip] <= latmin || atm->lat[ip] >= latmax))
+
2372 dt[ip] = 0.0;
+
2373 }
+
2374}
+
2375
+
2376/*****************************************************************************/
+
2377
+ +
2379 ctl_t * ctl,
+
2380 atm_t * atm) {
+
2381
+
2382 /* Set timer... */
+
2383 SELECT_TIMER("MODULE_TIMESTEPS", "PHYSICS", NVTX_GPU);
+
2384
+
2385 /* Set start time... */
+
2386 if (ctl->direction == 1) {
+
2387 ctl->t_start = gsl_stats_min(atm->time, 1, (size_t) atm->np);
+
2388 if (ctl->t_stop > 1e99)
+
2389 ctl->t_stop = gsl_stats_max(atm->time, 1, (size_t) atm->np);
+
2390 } else {
+
2391 ctl->t_start = gsl_stats_max(atm->time, 1, (size_t) atm->np);
+
2392 if (ctl->t_stop > 1e99)
+
2393 ctl->t_stop = gsl_stats_min(atm->time, 1, (size_t) atm->np);
+
2394 }
+
2395
+
2396 /* Check time interval... */
+
2397 if (ctl->direction * (ctl->t_stop - ctl->t_start) <= 0)
+
2398 ERRMSG("Nothing to do! Check T_STOP and DIRECTION!");
+
2399
+
2400 /* Round start time... */
+
2401 if (ctl->direction == 1)
+
2402 ctl->t_start = floor(ctl->t_start / ctl->dt_mod) * ctl->dt_mod;
+
2403 else
+
2404 ctl->t_start = ceil(ctl->t_start / ctl->dt_mod) * ctl->dt_mod;
+
2405}
+
2406
+
2407/*****************************************************************************/
+
2408
+ +
2410 ctl_t * ctl,
+
2411 met_t * met0,
+
2412 met_t * met1,
+
2413 atm_t * atm,
+
2414 double *dt) {
+
2415
+
2416 /* Set timer... */
+
2417 SELECT_TIMER("MODULE_WETDEPO", "PHYSICS", NVTX_GPU);
+
2418
+
2419 /* Check quantity flags... */
+
2420 if (ctl->qnt_m < 0 && ctl->qnt_vmr < 0)
+
2421 ERRMSG("Module needs quantity mass or volume mixing ratio!");
+
2422
+
2423 /* Loop over particles... */
+
2424 PARTICLE_LOOP(0, atm->np, 1, "acc data present(ctl,met0,met1,atm,dt)") {
+
2425
+
2426 /* Check whether particle is below cloud top... */
+
2427 double pct;
+ +
2429 INTPOL_2D(pct, 1);
+
2430 if (!isfinite(pct) || atm->p[ip] <= pct)
+
2431 continue;
+
2432
+
2433 /* Get cloud bottom pressure... */
+
2434 double pcb;
+
2435 INTPOL_2D(pcb, 0);
+
2436
+
2437 /* Estimate precipitation rate (Pisso et al., 2019)... */
+
2438 double cl;
+
2439 INTPOL_2D(cl, 0);
+
2440 double Is =
+
2441 pow(1. / ctl->wet_depo_pre[0] * cl, 1. / ctl->wet_depo_pre[1]);
+
2442 if (Is < 0.01)
+
2443 continue;
+
2444
+
2445 /* Check whether particle is inside or below cloud... */
+
2446 double iwc, lwc;
+
2447 INTPOL_3D(lwc, 1);
+
2448 INTPOL_3D(iwc, 0);
+
2449 int inside = (iwc > 0 || lwc > 0);
+
2450
+
2451 /* Get temperature... */
+
2452 double t;
+
2453 INTPOL_3D(t, 0);
+
2454
+
2455 /* Calculate in-cloud scavenging coefficient... */
+
2456 double lambda = 0;
+
2457 if (inside) {
+
2458
+
2459 /* Calculate retention factor... */
+
2460 double eta;
+
2461 if (t > 273.15)
+
2462 eta = 1;
+
2463 else if (t <= 238.15)
+
2464 eta = ctl->wet_depo_ic_ret_ratio;
+
2465 else
+
2466 eta = LIN(273.15, 1, 238.15, ctl->wet_depo_ic_ret_ratio, t);
+
2467
+
2468 /* Use exponential dependency for particles ... */
+
2469 if (ctl->wet_depo_ic_a > 0)
+
2470 lambda = ctl->wet_depo_ic_a * pow(Is, ctl->wet_depo_ic_b) * eta;
+
2471
+
2472 /* Use Henry's law for gases... */
+
2473 else if (ctl->wet_depo_ic_h[0] > 0) {
+
2474
+
2475 /* Get Henry's constant (Sander, 2015)... */
+
2476 double h = ctl->wet_depo_ic_h[0]
+
2477 * exp(ctl->wet_depo_ic_h[1] * (1. / t - 1. / 298.15));
+
2478
+
2479 /* Use effective Henry's constant for SO2
+
2480 (Berglen, 2004; Simpson, 2012)... */
+
2481 if (ctl->wet_depo_ic_h[2] > 0) {
+
2482 double H_ion = pow(10, ctl->wet_depo_ic_h[2] * (-1));
+
2483 double K_1 = 1.23e-2 * exp(2.01e3 * (1. / t - 1. / 298.15));
+
2484 double K_2 = 6e-8 * exp(1.12e3 * (1. / t - 1. / 298.15));
+
2485 h *= (1 + K_1 / H_ion + K_1 * K_2 / pow(H_ion, 2));
+
2486 }
+
2487
+
2488 /* Estimate depth of cloud layer... */
+
2489 double dz = 1e3 * (Z(pct) - Z(pcb));
+
2490
+
2491 /* Calculate scavenging coefficient (Draxler and Hess, 1997)... */
+
2492 lambda = h * RI * t * Is / 3.6e6 / dz * eta;
+
2493 }
+
2494 }
+
2495
+
2496 /* Calculate below-cloud scavenging coefficient... */
+
2497 else {
+
2498
+
2499 /* Calculate retention factor... */
+
2500 double eta;
+
2501 if (t > 270)
+
2502 eta = 1;
+
2503 else
+
2504 eta = ctl->wet_depo_bc_ret_ratio;
+
2505
+
2506 /* Use exponential dependency for particles... */
+
2507 if (ctl->wet_depo_bc_a > 0)
+
2508 lambda = ctl->wet_depo_bc_a * pow(Is, ctl->wet_depo_bc_b) * eta;
+
2509
+
2510 /* Use Henry's law for gases... */
+
2511 else if (ctl->wet_depo_bc_h[0] > 0) {
+
2512
+
2513 /* Get Henry's constant (Sander, 2015)... */
+
2514 double h = ctl->wet_depo_bc_h[0]
+
2515 * exp(ctl->wet_depo_bc_h[1] * (1. / t - 1. / 298.15));
+
2516
+
2517 /* Estimate depth of cloud layer... */
+
2518 double dz = 1e3 * (Z(pct) - Z(pcb));
+
2519
+
2520 /* Calculate scavenging coefficient (Draxler and Hess, 1997)... */
+
2521 lambda = h * RI * t * Is / 3.6e6 / dz * eta;
+
2522 }
+
2523 }
+
2524
+
2525 /* Calculate exponential decay of mass... */
+
2526 double aux = exp(-dt[ip] * lambda);
+
2527 if (ctl->qnt_m >= 0) {
+
2528 if (ctl->qnt_mloss_wet >= 0)
+
2529 atm->q[ctl->qnt_mloss_wet][ip]
+
2530 += atm->q[ctl->qnt_m][ip] * (1 - aux);
+
2531 atm->q[ctl->qnt_m][ip] *= aux;
+
2532 }
+
2533 if (ctl->qnt_vmr >= 0)
+
2534 atm->q[ctl->qnt_vmr][ip] *= aux;
+
2535 }
+
2536}
+
2537
+
2538/*****************************************************************************/
+
2539
+ +
2541 const char *dirname,
+
2542 ctl_t * ctl,
+
2543 met_t * met0,
+
2544 met_t * met1,
+
2545 atm_t * atm,
+
2546 double t) {
+
2547
+
2548 char ext[10], filename[2 * LEN];
+
2549
+
2550 double r;
+
2551
+
2552 int year, mon, day, hour, min, sec;
+
2553
+
2554 /* Get time... */
+
2555 jsec2time(t, &year, &mon, &day, &hour, &min, &sec, &r);
+
2556
+
2557 /* Update host... */
+
2558#ifdef _OPENACC
+
2559 if ((ctl->atm_basename[0] != '-' && fmod(t, ctl->atm_dt_out) == 0)
+
2560 || (ctl->grid_basename[0] != '-' && fmod(t, ctl->grid_dt_out) == 0)
+
2561 || (ctl->ens_basename[0] != '-' && fmod(t, ctl->ens_dt_out) == 0)
+
2562 || ctl->csi_basename[0] != '-' || ctl->prof_basename[0] != '-'
+
2563 || ctl->sample_basename[0] != '-' || ctl->stat_basename[0] != '-'
+
2564 || (ctl->vtk_basename[0] != '-' && fmod(t, ctl->vtk_dt_out) == 0)) {
+
2565 SELECT_TIMER("UPDATE_HOST", "MEMORY", NVTX_D2H);
+
2566#pragma acc update host(atm[:1])
+
2567 }
+
2568#endif
+
2569
+
2570 /* Write atmospheric data... */
+
2571 if (ctl->atm_basename[0] != '-' &&
+
2572 (fmod(t, ctl->atm_dt_out) == 0 || t == ctl->t_stop)) {
+
2573 if (ctl->atm_type_out == 0)
+
2574 sprintf(ext, "tab");
+
2575 else if (ctl->atm_type_out == 1)
+
2576 sprintf(ext, "bin");
+
2577 else if (ctl->atm_type_out == 2)
+
2578 sprintf(ext, "nc");
+
2579 sprintf(filename, "%s/%s_%04d_%02d_%02d_%02d_%02d.%s",
+
2580 dirname, ctl->atm_basename, year, mon, day, hour, min, ext);
+
2581 write_atm(filename, ctl, atm, t);
+
2582 }
+
2583
+
2584 /* Write gridded data... */
+
2585 if (ctl->grid_basename[0] != '-' && fmod(t, ctl->grid_dt_out) == 0) {
+
2586 sprintf(filename, "%s/%s_%04d_%02d_%02d_%02d_%02d.%s",
+
2587 dirname, ctl->grid_basename, year, mon, day, hour, min,
+
2588 ctl->grid_type == 0 ? "tab" : "nc");
+
2589 write_grid(filename, ctl, met0, met1, atm, t);
+
2590 }
+
2591
+
2592 /* Write CSI data... */
+
2593 if (ctl->csi_basename[0] != '-') {
+
2594 sprintf(filename, "%s/%s.tab", dirname, ctl->csi_basename);
+
2595 write_csi(filename, ctl, atm, t);
+
2596 }
+
2597
+
2598 /* Write ensemble data... */
+
2599 if (ctl->ens_basename[0] != '-' && fmod(t, ctl->ens_dt_out) == 0) {
+
2600 sprintf(filename, "%s/%s_%04d_%02d_%02d_%02d_%02d.tab",
+
2601 dirname, ctl->ens_basename, year, mon, day, hour, min);
+
2602 write_ens(filename, ctl, atm, t);
+
2603 }
+
2604
+
2605 /* Write profile data... */
+
2606 if (ctl->prof_basename[0] != '-') {
+
2607 sprintf(filename, "%s/%s.tab", dirname, ctl->prof_basename);
+
2608 write_prof(filename, ctl, met0, met1, atm, t);
+
2609 }
+
2610
+
2611 /* Write sample data... */
+
2612 if (ctl->sample_basename[0] != '-') {
+
2613 sprintf(filename, "%s/%s.tab", dirname, ctl->sample_basename);
+
2614 write_sample(filename, ctl, met0, met1, atm, t);
+
2615 }
+
2616
+
2617 /* Write station data... */
+
2618 if (ctl->stat_basename[0] != '-') {
+
2619 sprintf(filename, "%s/%s.tab", dirname, ctl->stat_basename);
+
2620 write_station(filename, ctl, atm, t);
+
2621 }
+
2622
+
2623 /* Write VTK data... */
+
2624 if (ctl->vtk_basename[0] != '-' && fmod(t, ctl->vtk_dt_out) == 0) {
+
2625 static int nvtk;
+
2626 sprintf(filename, "%s/%s_%05d.vtk", dirname, ctl->vtk_basename, ++nvtk);
+
2627 write_vtk(filename, ctl, atm, t);
+
2628 }
+
2629}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
double sedi(const double p, const double T, const double rp, const double rhop)
Calculate sedimentation velocity.
Definition: libtrac.c:5305
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
void write_vtk(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write VTK data.
Definition: libtrac.c:7456
+
void quicksort(double arr[], int brr[], const int low, const int high)
Parallel quicksort.
Definition: libtrac.c:1715
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
void intpol_met_time_3d(met_t *met0, float array0[EX][EY][EP], met_t *met1, float array1[EX][EY][EP], double ts, double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1337
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
void write_grid(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write gridded data.
Definition: libtrac.c:6391
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
void write_sample(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write sample data.
Definition: libtrac.c:7207
+
void write_station(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write station data.
Definition: libtrac.c:7370
+
void write_atm(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write atmospheric data.
Definition: libtrac.c:5607
+
void write_csi(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write CSI data.
Definition: libtrac.c:6049
+
void get_met(ctl_t *ctl, clim_t *clim, double t, met_t **met0, met_t **met1)
Get meteo data for given time step.
Definition: libtrac.c:717
+
void intpol_met_4d_coord(met_t *met0, float heights0[EX][EY][EP], float array0[EX][EY][EP], met_t *met1, float heights1[EX][EY][EP], float array1[EX][EY][EP], double ts, double height, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatiotemporal interpolation of meteo data.
Definition: libtrac.c:942
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
double sza_calc(const double sec, const double lon, const double lat)
Calculate solar zenith angle.
Definition: libtrac.c:5408
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double clim_ts(const clim_ts_t *ts, const double t)
Interpolate time series.
Definition: libtrac.c:346
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
double tropo_weight(const clim_t *clim, const double t, const double lat, const double p)
Get weighting factor based on tropopause distance.
Definition: libtrac.c:5583
+
void write_prof(const char *filename, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write profile data.
Definition: libtrac.c:6979
+
void write_ens(const char *filename, ctl_t *ctl, atm_t *atm, double t)
Write ensemble data.
Definition: libtrac.c:6294
+
double lapse_rate(const double t, const double h2o)
Calculate moist adiabatic lapse rate.
Definition: libtrac.c:1541
+
double clim_photo(double rate[CP][CSZA][CO3], clim_photo_t *photo, double p, double sza, double o3c)
Interpolate photolysis rate data.
Definition: libtrac.c:112
+
MPTRAC library declarations.
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define RE
Mean radius of Earth [km].
Definition: libtrac.h:143
+
#define TVIRT(t, h2o)
Compute virtual temperature.
Definition: libtrac.h:654
+
#define ARRAY_3D(ix, iy, ny, iz, nz)
Get 3-D array index.
Definition: libtrac.h:262
+
#define MA
Molar mass of dry air [g/mol].
Definition: libtrac.h:118
+
#define AVO
Avogadro constant [1/mol].
Definition: libtrac.h:83
+
#define PW(p, h2o)
Calculate partial water vapor pressure.
Definition: libtrac.h:583
+
#define H0
Scale height [km].
Definition: libtrac.h:103
+
#define MOLEC_DENS(p, t)
Calculate molecular density of an ideal gas.
Definition: libtrac.h:482
+
#define INTPOL_INIT
Initialize cache variables for interpolation.
Definition: libtrac.h:323
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define SH(h2o)
Compute specific humidity from water vapor volume mixing ratio.
Definition: libtrac.h:617
+
#define INTPOL_3D(var, init)
3-D interpolation of a meteo variable.
Definition: libtrac.h:337
+
#define NTHREADS
Maximum number of OpenMP threads.
Definition: libtrac.h:207
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define DX2DEG(dx, lat)
Convert zonal distance to degrees.
Definition: libtrac.h:282
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define PSICE(t)
Compute saturation pressure over ice (WMO, 2018).
Definition: libtrac.h:579
+
#define THETA(p, t)
Compute potential temperature.
Definition: libtrac.h:639
+
#define RI
Ideal gas constant [J/(mol K)].
Definition: libtrac.h:148
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
#define WARN(...)
Print warning message.
Definition: libtrac.h:692
+
#define ZETA(ps, p, t)
Calculate zeta vertical coordinate.
Definition: libtrac.h:667
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define INTPOL_TIME_ALL(time, p, lon, lat)
Temporal interpolation of all meteo data.
Definition: libtrac.h:380
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define SET_ATM(qnt, val)
Set atmospheric quantity value.
Definition: libtrac.h:604
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define START_TIMERS
Start timers.
Definition: libtrac.h:728
+
#define NP
Maximum number of atmospheric data points.
Definition: libtrac.h:167
+
#define SELECT_TIMER(id, group, color)
Select timer.
Definition: libtrac.h:721
+
#define INTPOL_2D(var, init)
2-D interpolation of a meteo variable.
Definition: libtrac.h:331
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define PRINT_TIMERS
Print timers.
Definition: libtrac.h:717
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
void thrustSortWrapper(double *__restrict__ c, int n, int *__restrict__ index)
Wrapper to Thrust sorting function.
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
#define ARRHENIUS(a, b, t)
Arrhenius equation for temperature dependence of reaction rates.
Definition: libtrac.h:266
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define STOP_TIMERS
Stop timers.
Definition: libtrac.h:732
+
#define PSAT(t)
Compute saturation pressure over water (WMO, 2018).
Definition: libtrac.h:575
+
#define RHO(p, t)
Compute density of air.
Definition: libtrac.h:596
+
#define INTPOL_INIT_DIA
Initialize cache variables for interpolation in diabatic scheme.
Definition: libtrac.h:327
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
#define DY2DEG(dy)
Convert meridional distance to degrees.
Definition: libtrac.h:287
+
#define FMOD(x, y)
Compute floating point modulo.
Definition: libtrac.h:307
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Cache data.
Definition: libtrac.h:1683
+
double iso_ts[NP]
Isosurface balloon time [s].
Definition: libtrac.h:1692
+
int iso_n
Isosurface balloon number of data points.
Definition: libtrac.h:1695
+
double iso_ps[NP]
Isosurface balloon pressure [hPa].
Definition: libtrac.h:1689
+
float uvwp[NP][3]
Wind perturbations [m/s].
Definition: libtrac.h:1698
+
double iso_var[NP]
Isosurface variables.
Definition: libtrac.h:1686
+
double ccl2f2[CP][CSZA][CO3]
CCl2F2 photolysis rate [1/s].
Definition: libtrac.h:1733
+
double ccl3f[CP][CSZA][CO3]
CCl3F photolysis rate [1/s].
Definition: libtrac.h:1730
+
double n2o[CP][CSZA][CO3]
N2O photolysis rate [1/s].
Definition: libtrac.h:1724
+
double ccl4[CP][CSZA][CO3]
CCl4 photolysis rate [1/s].
Definition: libtrac.h:1727
+
Climatological data.
Definition: libtrac.h:1778
+
clim_ts_t ccl2f2
CFC-12 time series.
Definition: libtrac.h:1820
+
clim_photo_t photo
Photolysis rates.
Definition: libtrac.h:1796
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_ts_t sf6
SF6 time series.
Definition: libtrac.h:1826
+
clim_ts_t ccl4
CFC-10 time series.
Definition: libtrac.h:1814
+
clim_ts_t ccl3f
CFC-11 time series.
Definition: libtrac.h:1817
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
clim_zm_t oh
OH zonal means.
Definition: libtrac.h:1802
+
clim_ts_t n2o
N2O time series.
Definition: libtrac.h:1823
+
Control parameters.
Definition: libtrac.h:799
+
int qnt_Coh
Quantity array index for OH concentration.
Definition: libtrac.h:1058
+
int vert_coord_ap
Vertical coordinate of air parcels (0=pressure, 1=zeta).
Definition: libtrac.h:812
+
double wet_depo_ic_a
Coefficient A for wet deposition in cloud (exponential form).
Definition: libtrac.h:1429
+
double molmass
Molar mass [g/mol].
Definition: libtrac.h:1294
+
int qnt_Cccl2f2
Quantity array index for CFC-12 concentration.
Definition: libtrac.h:1082
+
int mixing_nx
Number of longitudes of mixing grid.
Definition: libtrac.h:1357
+
double chemgrid_z1
Upper altitude of chemistry grid [km].
Definition: libtrac.h:1381
+
int qnt_m
Quantity array index for mass.
Definition: libtrac.h:851
+
int qnt_aoa
Quantity array index for age of air.
Definition: libtrac.h:1091
+
int qnt_rhop
Quantity array index for particle density.
Definition: libtrac.h:860
+
char clim_n2o_timeseries[LEN]
Filename of N2O time series.
Definition: libtrac.h:1333
+
double bound_dzs
Boundary conditions surface layer depth [km].
Definition: libtrac.h:1282
+
double mixing_trop
Interparcel exchange parameter for mixing in the troposphere.
Definition: libtrac.h:1342
+
double sort_dt
Time step for sorting of particle data [s].
Definition: libtrac.h:1203
+
double mixing_z1
Upper altitude of mixing grid [km].
Definition: libtrac.h:1354
+
double wet_depo_bc_a
Coefficient A for wet deposition below cloud (exponential form).
Definition: libtrac.h:1423
+
double chemgrid_z0
Lower altitude of chemistry grid [km].
Definition: libtrac.h:1378
+
double chemgrid_lat0
Lower latitude of chemistry grid [deg].
Definition: libtrac.h:1396
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
int qnt_Co1d
Quantity array index for O(1D) concentration.
Definition: libtrac.h:1070
+
char prof_basename[LEN]
Basename for profile output file.
Definition: libtrac.h:1574
+
int direction
Direction flag (1=forward calculation, -1=backward calculation).
Definition: libtrac.h:1094
+
char balloon[LEN]
Balloon position filename.
Definition: libtrac.h:1210
+
int qnt_Cccl4
Quantity array index for CFC-10 concentration.
Definition: libtrac.h:1076
+
double met_dt_out
Time step for sampling of meteo data along trajectories [s].
Definition: libtrac.h:1197
+
double turb_dz_trop
Vertical turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1225
+
double turb_mesoz
Vertical scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1234
+
double bound_mass
Boundary conditions mass per particle [kg].
Definition: libtrac.h:1255
+
double dt_met
Time step of meteo data [s].
Definition: libtrac.h:1109
+
double chemgrid_lat1
Upper latitude of chemistry grid [deg].
Definition: libtrac.h:1399
+
double turb_dx_strat
Horizontal turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1222
+
int qnt_vmr
Quantity array index for volume mixing ratio.
Definition: libtrac.h:854
+
double bound_lat1
Boundary conditions maximum longitude [deg].
Definition: libtrac.h:1270
+
double turb_dx_trop
Horizontal turbulent diffusion coefficient (troposphere) [m^2/s].
Definition: libtrac.h:1219
+
int grid_type
Type of grid data files (0=ASCII, 1=netCDF).
Definition: libtrac.h:1571
+
double oh_chem[4]
Coefficients for OH reaction rate (A, E/R or k0, n, kinf, m).
Definition: libtrac.h:1405
+
double chemgrid_lon0
Lower longitude of chemistry grid [deg].
Definition: libtrac.h:1387
+
int bound_pbl
Boundary conditions planetary boundary layer (0=no, 1=yes).
Definition: libtrac.h:1288
+
int qnt_mloss_wet
Quantity array index for total mass loss due to wet deposition.
Definition: libtrac.h:983
+
int isosurf
Isosurface parameter (0=none, 1=pressure, 2=density, 3=theta, 4=balloon).
Definition: libtrac.h:1207
+
double bound_p1
Boundary conditions top pressure [hPa].
Definition: libtrac.h:1276
+
double chemgrid_lon1
Upper longitude of chemistry grid [deg].
Definition: libtrac.h:1390
+
double turb_mesox
Horizontal scaling factor for mesoscale wind fluctuations.
Definition: libtrac.h:1231
+
int conv_mix_bot
Lower level for mixing (0=particle pressure, 1=surface).
Definition: libtrac.h:1249
+
double bound_vmr
Boundary conditions volume mixing ratio [ppv].
Definition: libtrac.h:1261
+
int qnt_rp
Quantity array index for particle radius.
Definition: libtrac.h:857
+
double mixing_strat
Interparcel exchange parameter for mixing in the stratosphere.
Definition: libtrac.h:1345
+
double mixing_z0
Lower altitude of mixing grid [km].
Definition: libtrac.h:1351
+
int qnt_mloss_decay
Quantity array index for total mass loss due to exponential decay.
Definition: libtrac.h:989
+
int atm_type_out
Type of meteo data files (0=netCDF, 1=binary, 2=pack, 3=zfp, 4=zstd).
Definition: libtrac.h:802
+
char csi_basename[LEN]
Basename of CSI data files.
Definition: libtrac.h:1478
+
double dry_depo_dp
Dry deposition surface layer [hPa].
Definition: libtrac.h:1447
+
int qnt_Cco
Quantity array index for CO concentration.
Definition: libtrac.h:1055
+
double vtk_dt_out
Time step for VTK data output [s].
Definition: libtrac.h:1643
+
double t_stop
Stop time of simulation [s].
Definition: libtrac.h:1100
+
double conv_dt
Time interval for convection module [s].
Definition: libtrac.h:1243
+
char grid_basename[LEN]
Basename of grid data files.
Definition: libtrac.h:1529
+
double bound_lat0
Boundary conditions minimum longitude [deg].
Definition: libtrac.h:1267
+
int mixing_ny
Number of latitudes of mixing grid.
Definition: libtrac.h:1366
+
int cpl_zeta_and_press_modules
Coupled use of pressure based modules and diabatic advection.
Definition: libtrac.h:806
+
int tracer_chem
Switch for first order tracer chemistry module (0=off, 1=on).
Definition: libtrac.h:1417
+
double dt_mod
Time step of simulation [s].
Definition: libtrac.h:1103
+
int qnt_tnat
Quantity array index for T_NAT.
Definition: libtrac.h:1043
+
int qnt_tice
Quantity array index for T_ice.
Definition: libtrac.h:1037
+
int qnt_mloss_dry
Quantity array index for total mass loss due to dry deposition.
Definition: libtrac.h:986
+
double bound_vmr_trend
Boundary conditions volume mixing ratio trend [ppv/s].
Definition: libtrac.h:1264
+
int qnt_Ch
Quantity array index for H concentration.
Definition: libtrac.h:1061
+
int oh_chem_reaction
Reaction type for OH chemistry (0=none, 2=bimolecular, 3=termolecular).
Definition: libtrac.h:1402
+
double wet_depo_ic_h[3]
Coefficients for wet deposition in cloud (Henry's law: Hb, Cb, pH).
Definition: libtrac.h:1435
+
double tdec_strat
Life time of particles in the stratosphere [s].
Definition: libtrac.h:1300
+
int conv_mix_top
Upper level for mixing (0=particle pressure, 1=EL).
Definition: libtrac.h:1252
+
int qnt_Cn2o
Quantity array index for N2O concentration.
Definition: libtrac.h:1085
+
int qnt_Cccl3f
Quantity array index for CFC-11 concentration.
Definition: libtrac.h:1079
+
char atm_basename[LEN]
Basename of atmospheric data files.
Definition: libtrac.h:1459
+
double mixing_lat0
Lower latitude of mixing grid [deg].
Definition: libtrac.h:1369
+
int advect
Advection scheme (0=off, 1=Euler, 2=midpoint, 4=Runge-Kutta).
Definition: libtrac.h:1213
+
int reflect
Reflection of particles at top and bottom boundary (0=no, 1=yes).
Definition: libtrac.h:1216
+
int kpp_chem
Switch for KPP chemistry module (0=off, 1=on).
Definition: libtrac.h:1414
+
int qnt_zeta
Quantity array index for zeta vertical coordinate.
Definition: libtrac.h:1013
+
char ens_basename[LEN]
Basename of ensemble data file.
Definition: libtrac.h:1523
+
double wet_depo_pre[2]
Coefficients for precipitation calculation.
Definition: libtrac.h:1420
+
int qnt_Cho2
Quantity array index for HO2 concentration.
Definition: libtrac.h:1064
+
double wet_depo_bc_h[2]
Coefficients for wet deposition below cloud (Henry's law: Hb, Cb).
Definition: libtrac.h:1438
+
int qnt_Csf6
Quantity array index for SF6 concentration.
Definition: libtrac.h:1088
+
int qnt_Ch2o
Quantity array index for H2O concentration.
Definition: libtrac.h:1049
+
double bound_dps
Boundary conditions surface layer depth [hPa].
Definition: libtrac.h:1279
+
int chemgrid_nz
Number of altitudes of chemistry grid.
Definition: libtrac.h:1375
+
double bound_mass_trend
Boundary conditions mass per particle trend [kg/s].
Definition: libtrac.h:1258
+
int mixing_nz
Number of altitudes of mixing grid.
Definition: libtrac.h:1348
+
double bound_p0
Boundary conditions bottom pressure [hPa].
Definition: libtrac.h:1273
+
double mixing_lon0
Lower longitude of mixing grid [deg].
Definition: libtrac.h:1360
+
char clim_ccl4_timeseries[LEN]
Filename of CFC-10 time series.
Definition: libtrac.h:1324
+
int qnt_Co3
Quantity array index for O3 concentration.
Definition: libtrac.h:1052
+
int qnt_tsts
Quantity array index for T_STS.
Definition: libtrac.h:1040
+
double ens_dt_out
Time step for ensemble output [s].
Definition: libtrac.h:1526
+
char sample_basename[LEN]
Basename of sample data file.
Definition: libtrac.h:1607
+
double mixing_lat1
Upper latitude of mixing grid [deg].
Definition: libtrac.h:1372
+
double atm_dt_out
Time step for atmospheric data output [s].
Definition: libtrac.h:1465
+
char clim_sf6_timeseries[LEN]
Filename of SF6 time series.
Definition: libtrac.h:1336
+
int chemgrid_nx
Number of longitudes of chemistry grid.
Definition: libtrac.h:1384
+
int h2o2_chem_reaction
Reaction type for H2O2 chemistry (0=none, 1=SO2).
Definition: libtrac.h:1411
+
int qnt_Co3p
Quantity array index for O(3P) concentration.
Definition: libtrac.h:1073
+
double wet_depo_bc_ret_ratio
Coefficients for wet deposition below cloud: retention ratio.
Definition: libtrac.h:1444
+
int chemgrid_ny
Number of latitudes of chemistry grid.
Definition: libtrac.h:1393
+
char clim_ccl3f_timeseries[LEN]
Filename of CFC-11 time series.
Definition: libtrac.h:1327
+
char vtk_basename[LEN]
Basename of VTK data files.
Definition: libtrac.h:1640
+
double dry_depo_vdep
Dry deposition velocity [m/s].
Definition: libtrac.h:1450
+
double mixing_dt
Time interval for mixing [s].
Definition: libtrac.h:1339
+
int qnt_mloss_h2o2
Quantity array index for total mass loss due to H2O2 chemistry.
Definition: libtrac.h:980
+
char clim_ccl2f2_timeseries[LEN]
Filename of CFC-12 time series.
Definition: libtrac.h:1330
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
int qnt_mloss_oh
Quantity array index for total mass loss due to OH chemistry.
Definition: libtrac.h:977
+
int qnt_Ch2o2
Quantity array index for H2O2 concentration.
Definition: libtrac.h:1067
+
double mixing_lon1
Upper longitude of mixing grid [deg].
Definition: libtrac.h:1363
+
double wet_depo_ic_ret_ratio
Coefficients for wet deposition in cloud: retention ratio.
Definition: libtrac.h:1441
+
double wet_depo_ic_b
Coefficient B for wet deposition in cloud (exponential form).
Definition: libtrac.h:1432
+
double wet_depo_bc_b
Coefficient B for wet deposition below cloud (exponential form).
Definition: libtrac.h:1426
+
int qnt_Cx
Quantity array index for trace species x concentration.
Definition: libtrac.h:1046
+
double turb_dz_strat
Vertical turbulent diffusion coefficient (stratosphere) [m^2/s].
Definition: libtrac.h:1228
+
double bound_zetas
Boundary conditions surface layer zeta [K].
Definition: libtrac.h:1285
+
double t_start
Start time of simulation [s].
Definition: libtrac.h:1097
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
double tdec_trop
Life time of particles in the troposphere [s].
Definition: libtrac.h:1297
+
char stat_basename[LEN]
Basename of station data file.
Definition: libtrac.h:1622
+
int conv_mix
Type of vertical mixing (0=pressure, 1=density).
Definition: libtrac.h:1246
+
double grid_dt_out
Time step for gridded data output [s].
Definition: libtrac.h:1538
+
Meteo data.
Definition: libtrac.h:1831
+
float zeta_dotl[EX][EY][EP]
Vertical velocity on model levels [K/s].
Definition: libtrac.h:1975
+
float w[EX][EY][EP]
Vertical velocity [hPa/s].
Definition: libtrac.h:1939
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float vl[EX][EY][EP]
Meridional wind on model levels [m/s].
Definition: libtrac.h:1936
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
float u[EX][EY][EP]
Zonal wind [m/s].
Definition: libtrac.h:1927
+
float ul[EX][EY][EP]
Zonal wind on model levels [m/s].
Definition: libtrac.h:1930
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
float v[EX][EY][EP]
Meridional wind [m/s].
Definition: libtrac.h:1933
+
float pl[EX][EY][EP]
Pressure on model levels [hPa].
Definition: libtrac.h:1960
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
float zetal[EX][EY][EP]
Zeta on model levels [K].
Definition: libtrac.h:1972
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
void module_sort_help(double *a, int *p, int np)
Helper function for sorting module.
Definition: trac.c:2305
+
void module_timesteps(ctl_t *ctl, met_t *met0, atm_t *atm, double *dt, double t)
Calculate time steps.
Definition: trac.c:2341
+
void module_kpp_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
KPP chemistry module.
+
int main(int argc, char *argv[])
Definition: trac.c:297
+
#define PARTICLE_LOOP(ip0, ip1, check_dt,...)
Loop over particles.
Definition: trac.c:58
+
void module_sedi(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate sedimentation of air parcels.
Definition: trac.c:2188
+
void module_wet_deposition(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate wet deposition.
Definition: trac.c:2409
+
void module_sort(ctl_t *ctl, met_t *met0, atm_t *atm)
Sort particles according to box index.
Definition: trac.c:2217
+
void module_rng_init(int ntask)
Initialize random number generator...
Definition: trac.c:2112
+
void module_tracer_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate first order tracer chemistry.
Definition: trac.c:1772
+
void module_advect(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate advection of air parcels.
Definition: trac.c:675
+
void module_chemgrid(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double t)
Calculate grid data for chemistry modules.
Definition: trac.c:1460
+
void module_bound_cond(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Apply boundary conditions.
Definition: trac.c:829
+
void module_timesteps_init(ctl_t *ctl, atm_t *atm)
Initialize timesteps.
Definition: trac.c:2378
+
void module_h2o2_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate H2O2 chemistry.
Definition: trac.c:1700
+
void module_rng(double *rs, size_t n, int method)
Generate random numbers.
Definition: trac.c:2144
+
void module_mixing(ctl_t *ctl, clim_t *clim, atm_t *atm, double t)
Apply interparcel mixing.
Definition: trac.c:1895
+
void module_position(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Check position of air parcels.
Definition: trac.c:2053
+
void module_meteo(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Interpolate meteo data for air parcel positions.
Definition: trac.c:1362
+
void module_oh_chem(ctl_t *ctl, clim_t *clim, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate OH chemistry.
Definition: trac.c:1633
+
void module_isosurf_init(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache)
Initialize isosurface module.
Definition: trac.c:1244
+
void module_dry_deposition(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate dry deposition.
Definition: trac.c:1183
+
void module_decay(ctl_t *ctl, clim_t *clim, atm_t *atm, double *dt)
Calculate exponential decay of particle mass.
Definition: trac.c:1010
+
void module_advect_diabatic(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt)
Calculate advection of air parcels.
Definition: trac.c:744
+
void module_isosurf(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache, double *dt)
Force air parcels to stay on isosurface.
Definition: trac.c:1310
+
void module_mixing_help(ctl_t *ctl, clim_t *clim, atm_t *atm, int *ixs, int *iys, int *izs, int qnt_idx)
Auxiliary function for interparcel mixing.
Definition: trac.c:1994
+
void module_convection(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double *dt, double *rs)
Calculate convection of air parcels.
Definition: trac.c:924
+
void module_diffusion_meso(ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, cache_t *cache, double *dt, double *rs)
Calculate mesoscale diffusion.
Definition: trac.c:1047
+
void module_diffusion_turb(ctl_t *ctl, clim_t *clim, atm_t *atm, double *dt, double *rs)
Calculate turbulent diffusion.
Definition: trac.c:1143
+
void write_output(const char *dirname, ctl_t *ctl, met_t *met0, met_t *met1, atm_t *atm, double t)
Write simulation output.
Definition: trac.c:2540
+
+
+ + + + diff --git a/doxygen/tropo_8c.html b/doxygen/tropo_8c.html new file mode 100644 index 0000000000..b70fbcc5b7 --- /dev/null +++ b/doxygen/tropo_8c.html @@ -0,0 +1,615 @@ + + + + + + + +MPTRAC: tropo.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tropo.c File Reference
+
+
+ +

Create tropopause data set from meteorological data. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

void get_tropo (int met_tropo, ctl_t *ctl, clim_t *clim, met_t *met, double *lons, int nx, double *lats, int ny, double *pt, double *zt, double *tt, double *qt, double *o3t, double *ps, double *zs)
 
int main (int argc, char *argv[])
 
+

Detailed Description

+

Create tropopause data set from meteorological data.

+ +

Definition in file tropo.c.

+

Function Documentation

+ +

◆ get_tropo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void get_tropo (int met_tropo,
ctl_tctl,
clim_tclim,
met_tmet,
double * lons,
int nx,
double * lats,
int ny,
double * pt,
double * zt,
double * tt,
double * qt,
double * o3t,
double * ps,
double * zs 
)
+
+ +

Definition at line 281 of file tropo.c.

+
296 {
+
297
+ +
299
+
300 ctl->met_tropo = met_tropo;
+
301 read_met_tropo(ctl, clim, met);
+
302#pragma omp parallel for default(shared) private(ci,cw)
+
303 for (int ix = 0; ix < nx; ix++)
+
304 for (int iy = 0; iy < ny; iy++) {
+
305 intpol_met_space_2d(met, met->pt, lons[ix], lats[iy],
+
306 &pt[iy * nx + ix], ci, cw, 1);
+
307 intpol_met_space_2d(met, met->ps, lons[ix], lats[iy],
+
308 &ps[iy * nx + ix], ci, cw, 0);
+
309 intpol_met_space_2d(met, met->zs, lons[ix], lats[iy],
+
310 &zs[iy * nx + ix], ci, cw, 0);
+
311 intpol_met_space_3d(met, met->z, pt[iy * nx + ix], lons[ix],
+
312 lats[iy], &zt[iy * nx + ix], ci, cw, 1);
+
313 intpol_met_space_3d(met, met->t, pt[iy * nx + ix], lons[ix],
+
314 lats[iy], &tt[iy * nx + ix], ci, cw, 0);
+
315 intpol_met_space_3d(met, met->h2o, pt[iy * nx + ix], lons[ix],
+
316 lats[iy], &qt[iy * nx + ix], ci, cw, 0);
+
317 intpol_met_space_3d(met, met->o3, pt[iy * nx + ix], lons[ix],
+
318 lats[iy], &o3t[iy * nx + ix], ci, cw, 0);
+
319 }
+
320}
+
void read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met)
Calculate tropopause data.
Definition: libtrac.c:5009
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
void intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1177
+
#define INTPOL_INIT
Initialize cache variables for interpolation.
Definition: libtrac.h:323
+
int met_tropo
Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical).
Definition: libtrac.h:1167
+
float h2o[EX][EY][EP]
Water vapor volume mixing ratio [1].
Definition: libtrac.h:1945
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
float zs[EX][EY]
Surface geopotential height [km].
Definition: libtrac.h:1864
+
float o3[EX][EY][EP]
Ozone volume mixing ratio [1].
Definition: libtrac.h:1948
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
float pt[EX][EY]
Tropopause pressure [hPa].
Definition: libtrac.h:1882
+
float z[EX][EY][EP]
Geopotential height [km].
Definition: libtrac.h:1921
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + +
+ +
+
+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 52 of file tropo.c.

+
54 {
+
55
+
56 ctl_t ctl;
+
57
+
58 clim_t *clim;
+
59
+
60 met_t *met;
+
61
+
62 static double ps[EX * EY], pt[EX * EY], qt[EX * EY], o3t[EX * EY],
+
63 zs[EX * EY], zt[EX * EY], tt[EX * EY], lon, lon0, lon1, lons[EX], dlon,
+
64 lat, lat0, lat1, lats[EY], dlat;
+
65
+
66 static int init, i, nx, ny, nt, ncid, varid, dims[3], h2o, o3;
+
67
+
68 static size_t count[10], start[10];
+
69
+
70 /* Allocate... */
+
71 ALLOC(clim, clim_t, 1);
+
72 ALLOC(met, met_t, 1);
+
73
+
74 /* Check arguments... */
+
75 if (argc < 4)
+
76 ERRMSG("Give parameters: <ctl> <tropo.nc> <met0> [ <met1> ... ]");
+
77
+
78 /* Read control parameters... */
+
79 read_ctl(argv[1], argc, argv, &ctl);
+
80 lon0 = scan_ctl(argv[1], argc, argv, "TROPO_LON0", -1, "-180", NULL);
+
81 lon1 = scan_ctl(argv[1], argc, argv, "TROPO_LON1", -1, "180", NULL);
+
82 dlon = scan_ctl(argv[1], argc, argv, "TROPO_DLON", -1, "-999", NULL);
+
83 lat0 = scan_ctl(argv[1], argc, argv, "TROPO_LAT0", -1, "-90", NULL);
+
84 lat1 = scan_ctl(argv[1], argc, argv, "TROPO_LAT1", -1, "90", NULL);
+
85 dlat = scan_ctl(argv[1], argc, argv, "TROPO_DLAT", -1, "-999", NULL);
+
86 h2o = (int) scan_ctl(argv[1], argc, argv, "TROPO_H2O", -1, "1", NULL);
+
87 o3 = (int) scan_ctl(argv[1], argc, argv, "TROPO_O3", -1, "1", NULL);
+
88
+
89 /* Read climatological data... */
+
90 read_clim(&ctl, clim);
+
91
+
92 /* Loop over files... */
+
93 for (i = 3; i < argc; i++) {
+
94
+
95 /* Set control parameters... */
+
96 ctl.met_tropo = 0;
+
97
+
98 /* Read meteorological data... */
+
99 if (!read_met(argv[i], &ctl, clim, met))
+
100 continue;
+
101
+
102 /* Set horizontal grid... */
+
103 if (!init) {
+
104 init = 1;
+
105
+
106 /* Get grid... */
+
107 if (dlon <= 0)
+
108 dlon = fabs(met->lon[1] - met->lon[0]);
+
109 if (dlat <= 0)
+
110 dlat = fabs(met->lat[1] - met->lat[0]);
+
111 if (lon0 < -360 && lon1 > 360) {
+
112 lon0 = gsl_stats_min(met->lon, 1, (size_t) met->nx);
+
113 lon1 = gsl_stats_max(met->lon, 1, (size_t) met->nx);
+
114 }
+
115 nx = ny = 0;
+
116 for (lon = lon0; lon <= lon1; lon += dlon) {
+
117 lons[nx] = lon;
+
118 if ((++nx) > EX)
+
119 ERRMSG("Too many longitudes!");
+
120 }
+
121 if (lat0 < -90 && lat1 > 90) {
+
122 lat0 = gsl_stats_min(met->lat, 1, (size_t) met->ny);
+
123 lat1 = gsl_stats_max(met->lat, 1, (size_t) met->ny);
+
124 }
+
125 for (lat = lat0; lat <= lat1; lat += dlat) {
+
126 lats[ny] = lat;
+
127 if ((++ny) > EY)
+
128 ERRMSG("Too many latitudes!");
+
129 }
+
130
+
131 /* Create netCDF file... */
+
132 LOG(1, "Write tropopause data file: %s", argv[2]);
+
133 NC(nc_create(argv[2], NC_CLOBBER, &ncid));
+
134
+
135 /* Create dimensions... */
+
136 NC(nc_def_dim(ncid, "time", (size_t) NC_UNLIMITED, &dims[0]));
+
137 NC(nc_def_dim(ncid, "lat", (size_t) ny, &dims[1]));
+
138 NC(nc_def_dim(ncid, "lon", (size_t) nx, &dims[2]));
+
139
+
140 /* Create variables... */
+
141 NC_DEF_VAR("time", NC_DOUBLE, 1, &dims[0], "time",
+
142 "seconds since 2000-01-01 00:00:00 UTC");
+
143 NC_DEF_VAR("lat", NC_DOUBLE, 1, &dims[1], "latitude", "degrees_north");
+
144 NC_DEF_VAR("lon", NC_DOUBLE, 1, &dims[2], "longitude", "degrees_east");
+
145
+
146 NC_DEF_VAR("clp_z", NC_FLOAT, 3, &dims[0], "cold point height", "km");
+
147 NC_DEF_VAR("clp_p", NC_FLOAT, 3, &dims[0], "cold point pressure",
+
148 "hPa");
+
149 NC_DEF_VAR("clp_t", NC_FLOAT, 3, &dims[0], "cold point temperature",
+
150 "K");
+
151 if (h2o)
+
152 NC_DEF_VAR("clp_q", NC_FLOAT, 3, &dims[0], "cold point water vapor",
+
153 "ppv");
+
154 if (o3)
+
155 NC_DEF_VAR("clp_o3", NC_FLOAT, 3, &dims[0], "cold point ozone",
+
156 "ppv");
+
157
+
158 NC_DEF_VAR("dyn_z", NC_FLOAT, 3, &dims[0],
+
159 "dynamical tropopause height", "km");
+
160 NC_DEF_VAR("dyn_p", NC_FLOAT, 3, &dims[0],
+
161 "dynamical tropopause pressure", "hPa");
+
162 NC_DEF_VAR("dyn_t", NC_FLOAT, 3, &dims[0],
+
163 "dynamical tropopause temperature", "K");
+
164 if (h2o)
+
165 NC_DEF_VAR("dyn_q", NC_FLOAT, 3, &dims[0],
+
166 "dynamical tropopause water vapor", "ppv");
+
167 if (o3)
+
168 NC_DEF_VAR("dyn_o3", NC_FLOAT, 3, &dims[0],
+
169 "dynamical tropopause ozone", "ppv");
+
170
+
171 NC_DEF_VAR("wmo_1st_z", NC_FLOAT, 3, &dims[0],
+
172 "WMO 1st tropopause height", "km");
+
173 NC_DEF_VAR("wmo_1st_p", NC_FLOAT, 3, &dims[0],
+
174 "WMO 1st tropopause pressure", "hPa");
+
175 NC_DEF_VAR("wmo_1st_t", NC_FLOAT, 3, &dims[0],
+
176 "WMO 1st tropopause temperature", "K");
+
177 if (h2o)
+
178 NC_DEF_VAR("wmo_1st_q", NC_FLOAT, 3, &dims[0],
+
179 "WMO 1st tropopause water vapor", "ppv");
+
180 if (o3)
+
181 NC_DEF_VAR("wmo_1st_o3", NC_FLOAT, 3, &dims[0],
+
182 "WMO 1st tropopause ozone", "ppv");
+
183
+
184 NC_DEF_VAR("wmo_2nd_z", NC_FLOAT, 3, &dims[0],
+
185 "WMO 2nd tropopause height", "km");
+
186 NC_DEF_VAR("wmo_2nd_p", NC_FLOAT, 3, &dims[0],
+
187 "WMO 2nd tropopause pressure", "hPa");
+
188 NC_DEF_VAR("wmo_2nd_t", NC_FLOAT, 3, &dims[0],
+
189 "WMO 2nd tropopause temperature", "K");
+
190 if (h2o)
+
191 NC_DEF_VAR("wmo_2nd_q", NC_FLOAT, 3, &dims[0],
+
192 "WMO 2nd tropopause water vapor", "ppv");
+
193 if (o3)
+
194 NC_DEF_VAR("wmo_2nd_o3", NC_FLOAT, 3, &dims[0],
+
195 "WMO 2nd tropopause ozone", "ppv");
+
196
+
197 NC_DEF_VAR("ps", NC_FLOAT, 3, &dims[0], "surface pressure", "hPa");
+
198 NC_DEF_VAR("zs", NC_FLOAT, 3, &dims[0], "surface height", "km");
+
199
+
200 /* End definition... */
+
201 NC(nc_enddef(ncid));
+
202
+
203 /* Write longitude and latitude... */
+
204 NC_PUT_DOUBLE("lat", lats, 0);
+
205 NC_PUT_DOUBLE("lon", lons, 0);
+
206 }
+
207
+
208 /* Write time... */
+
209 start[0] = (size_t) nt;
+
210 count[0] = 1;
+
211 start[1] = 0;
+
212 count[1] = (size_t) ny;
+
213 start[2] = 0;
+
214 count[2] = (size_t) nx;
+
215 NC_PUT_DOUBLE("time", &met->time, 1);
+
216
+
217 /* Get cold point... */
+
218 get_tropo(2, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
219 zs);
+
220 NC_PUT_DOUBLE("clp_z", zt, 1);
+
221 NC_PUT_DOUBLE("clp_p", pt, 1);
+
222 NC_PUT_DOUBLE("clp_t", tt, 1);
+
223 if (h2o)
+
224 NC_PUT_DOUBLE("clp_q", qt, 1);
+
225 if (o3)
+
226 NC_PUT_DOUBLE("clp_o3", o3t, 1);
+
227
+
228 /* Get dynamical tropopause... */
+
229 get_tropo(5, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
230 zs);
+
231 NC_PUT_DOUBLE("dyn_z", zt, 1);
+
232 NC_PUT_DOUBLE("dyn_p", pt, 1);
+
233 NC_PUT_DOUBLE("dyn_t", tt, 1);
+
234 if (h2o)
+
235 NC_PUT_DOUBLE("dyn_q", qt, 1);
+
236 if (o3)
+
237 NC_PUT_DOUBLE("dyn_o3", o3t, 1);
+
238
+
239 /* Get WMO 1st tropopause... */
+
240 get_tropo(3, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
241 zs);
+
242 NC_PUT_DOUBLE("wmo_1st_z", zt, 1);
+
243 NC_PUT_DOUBLE("wmo_1st_p", pt, 1);
+
244 NC_PUT_DOUBLE("wmo_1st_t", tt, 1);
+
245 if (h2o)
+
246 NC_PUT_DOUBLE("wmo_1st_q", qt, 1);
+
247 if (o3)
+
248 NC_PUT_DOUBLE("wmo_1st_o3", o3t, 1);
+
249
+
250 /* Get WMO 2nd tropopause... */
+
251 get_tropo(4, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
252 zs);
+
253 NC_PUT_DOUBLE("wmo_2nd_z", zt, 1);
+
254 NC_PUT_DOUBLE("wmo_2nd_p", pt, 1);
+
255 NC_PUT_DOUBLE("wmo_2nd_t", tt, 1);
+
256 if (h2o)
+
257 NC_PUT_DOUBLE("wmo_2nd_q", qt, 1);
+
258 if (o3)
+
259 NC_PUT_DOUBLE("wmo_2nd_o3", o3t, 1);
+
260
+
261 /* Write surface data... */
+
262 NC_PUT_DOUBLE("ps", ps, 1);
+
263 NC_PUT_DOUBLE("zs", zs, 1);
+
264
+
265 /* Increment time step counter... */
+
266 nt++;
+
267 }
+
268
+
269 /* Close file... */
+
270 NC(nc_close(ncid));
+
271
+
272 /* Free... */
+
273 free(clim);
+
274 free(met);
+
275
+
276 return EXIT_SUCCESS;
+
277}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
Write netCDF double array.
Definition: libtrac.h:523
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
void get_tropo(int met_tropo, ctl_t *ctl, clim_t *clim, met_t *met, double *lons, int nx, double *lats, int ny, double *pt, double *zt, double *tt, double *qt, double *o3t, double *ps, double *zs)
Definition: tropo.c:281
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/tropo_8c.js b/doxygen/tropo_8c.js new file mode 100644 index 0000000000..421449c2c4 --- /dev/null +++ b/doxygen/tropo_8c.js @@ -0,0 +1,5 @@ +var tropo_8c = +[ + [ "get_tropo", "tropo_8c.html#a4e8df030d9d25b649ebd5e241021fbde", null ], + [ "main", "tropo_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..67628b7fbb --- /dev/null +++ b/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..04f583aa7b --- /dev/null +++ b/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +8594332b9aa745f348668814315fd239 \ No newline at end of file diff --git a/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/tropo_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..54d7bfb2cd77fcaea353c0ca5478e58fe1f041c5 GIT binary patch literal 161885 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

SF8hpM+oS3 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 literal 0 HcmV?d00001 diff --git a/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.map b/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.map new file mode 100644 index 0000000000..c9f0a10342 --- /dev/null +++ b/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.md5 b/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.md5 new file mode 100644 index 0000000000..e942502806 --- /dev/null +++ b/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.md5 @@ -0,0 +1 @@ +9b6f7fde857503340c7a7186867da45d \ No newline at end of file diff --git a/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.png b/doxygen/tropo_8c_a4e8df030d9d25b649ebd5e241021fbde_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8dff69b1312c367217eccf9c79152a4e8fa6b12c GIT binary patch literal 17814 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 z zU6b6+T?SH*A>!2l-!JU7u}!#vu6ZZky}@YLjR@vkk9EkyQneGE^9B;Ob zJzXz2iwieXUUk*i6?_wG5A-gULjnxrsdz9Vly5JDQs~ydU*!DXy#H5=!8=w!eKR-u z1++notYep-_aQK>_kW@JULsKeDKM8$!uGo8AL$CTfpj0svs7pl@t8PCS!FCEv(3ga z zeOn^_nI_KLH)oI>MV!vQc94-tH;erD_+`O^hu0&BSC-Qepx8yxJu#pEVZP5{ktjiN zxgPt1o&BgkRjBn0NlQ>pP7b5E>#ovd^?qGuCNZg8sg9RVZthZv2+HR>F!}{zzTGb^ zH@-v?FJ1QIN`oS@tLstFZEo)Lr()C09M?v}Q;<8wF{&?ZZx@HY>Bj(8+1lC~wa(VxI))MPy9U`)Y5uQ z3T|8#$=v4By{2T?{Aid{3){EtSlCyzwpZ!hE@J4S*#F| z1uLa$jjUKashdVm*=3vfCr^Ox6}7RsP|-Kxt~~ z92EzO0O^ei-_EoR^_XM&OJ31$m(X-t4-c7s>ZN8;+gjZ!DJk&`Me%tz z5~Ob%mqt%1qGnwfBiBB0o9(S>K$aH z=+4i$+^#23)3e8QPu06{Xw8D)#lpgZ0k8Y--&fSsqO_!_p;R|OQ|mt<+d&W%5*!RV z*Z1XrL2=xc@!w!q)ow`M7B@B+xPRDmB&BQ&raQ3HUJyd~T8^ z|4x83;+V9zHa0e9XG=io18Rl~XQ+)pfX2VH>jYMhI#ZOME|hLBT@M;*EJ5hThYwI+ zym4}J0=Z$o2Rd`?&7wR2=E!Nb$qRI*fHRE_5BDT-<9jqfyY$=5`2R?Pvv)Q%#XbUr zRCl_R@Fj6`q7p;%LWjpQ1J;E)0G+t3vXY63$^`g1DA>UKh($=4zk%5l2rbU=OAv)*fss1V k{?Fw2CLR9&I^8u!A_*hAkTHHCi~}JdA}d@ZsN?Px# literal 0 HcmV?d00001 diff --git a/doxygen/tropo_8c_source.html b/doxygen/tropo_8c_source.html new file mode 100644 index 0000000000..95f8170a5e --- /dev/null +++ b/doxygen/tropo_8c_source.html @@ -0,0 +1,457 @@ + + + + + + + +MPTRAC: tropo.c Source File + + + + + + + + + + + + + + +

+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tropo.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Functions...
+
29 ------------------------------------------------------------ */
+
30
+
31void get_tropo(
+
32 int met_tropo,
+
33 ctl_t * ctl,
+
34 clim_t * clim,
+
35 met_t * met,
+
36 double *lons,
+
37 int nx,
+
38 double *lats,
+
39 int ny,
+
40 double *pt,
+
41 double *zt,
+
42 double *tt,
+
43 double *qt,
+
44 double *o3t,
+
45 double *ps,
+
46 double *zs);
+
47
+
48/* ------------------------------------------------------------
+
49 Main...
+
50 ------------------------------------------------------------ */
+
51
+
52int main(
+
53 int argc,
+
54 char *argv[]) {
+
55
+
56 ctl_t ctl;
+
57
+
58 clim_t *clim;
+
59
+
60 met_t *met;
+
61
+
62 static double ps[EX * EY], pt[EX * EY], qt[EX * EY], o3t[EX * EY],
+
63 zs[EX * EY], zt[EX * EY], tt[EX * EY], lon, lon0, lon1, lons[EX], dlon,
+
64 lat, lat0, lat1, lats[EY], dlat;
+
65
+
66 static int init, i, nx, ny, nt, ncid, varid, dims[3], h2o, o3;
+
67
+
68 static size_t count[10], start[10];
+
69
+
70 /* Allocate... */
+
71 ALLOC(clim, clim_t, 1);
+
72 ALLOC(met, met_t, 1);
+
73
+
74 /* Check arguments... */
+
75 if (argc < 4)
+
76 ERRMSG("Give parameters: <ctl> <tropo.nc> <met0> [ <met1> ... ]");
+
77
+
78 /* Read control parameters... */
+
79 read_ctl(argv[1], argc, argv, &ctl);
+
80 lon0 = scan_ctl(argv[1], argc, argv, "TROPO_LON0", -1, "-180", NULL);
+
81 lon1 = scan_ctl(argv[1], argc, argv, "TROPO_LON1", -1, "180", NULL);
+
82 dlon = scan_ctl(argv[1], argc, argv, "TROPO_DLON", -1, "-999", NULL);
+
83 lat0 = scan_ctl(argv[1], argc, argv, "TROPO_LAT0", -1, "-90", NULL);
+
84 lat1 = scan_ctl(argv[1], argc, argv, "TROPO_LAT1", -1, "90", NULL);
+
85 dlat = scan_ctl(argv[1], argc, argv, "TROPO_DLAT", -1, "-999", NULL);
+
86 h2o = (int) scan_ctl(argv[1], argc, argv, "TROPO_H2O", -1, "1", NULL);
+
87 o3 = (int) scan_ctl(argv[1], argc, argv, "TROPO_O3", -1, "1", NULL);
+
88
+
89 /* Read climatological data... */
+
90 read_clim(&ctl, clim);
+
91
+
92 /* Loop over files... */
+
93 for (i = 3; i < argc; i++) {
+
94
+
95 /* Set control parameters... */
+
96 ctl.met_tropo = 0;
+
97
+
98 /* Read meteorological data... */
+
99 if (!read_met(argv[i], &ctl, clim, met))
+
100 continue;
+
101
+
102 /* Set horizontal grid... */
+
103 if (!init) {
+
104 init = 1;
+
105
+
106 /* Get grid... */
+
107 if (dlon <= 0)
+
108 dlon = fabs(met->lon[1] - met->lon[0]);
+
109 if (dlat <= 0)
+
110 dlat = fabs(met->lat[1] - met->lat[0]);
+
111 if (lon0 < -360 && lon1 > 360) {
+
112 lon0 = gsl_stats_min(met->lon, 1, (size_t) met->nx);
+
113 lon1 = gsl_stats_max(met->lon, 1, (size_t) met->nx);
+
114 }
+
115 nx = ny = 0;
+
116 for (lon = lon0; lon <= lon1; lon += dlon) {
+
117 lons[nx] = lon;
+
118 if ((++nx) > EX)
+
119 ERRMSG("Too many longitudes!");
+
120 }
+
121 if (lat0 < -90 && lat1 > 90) {
+
122 lat0 = gsl_stats_min(met->lat, 1, (size_t) met->ny);
+
123 lat1 = gsl_stats_max(met->lat, 1, (size_t) met->ny);
+
124 }
+
125 for (lat = lat0; lat <= lat1; lat += dlat) {
+
126 lats[ny] = lat;
+
127 if ((++ny) > EY)
+
128 ERRMSG("Too many latitudes!");
+
129 }
+
130
+
131 /* Create netCDF file... */
+
132 LOG(1, "Write tropopause data file: %s", argv[2]);
+
133 NC(nc_create(argv[2], NC_CLOBBER, &ncid));
+
134
+
135 /* Create dimensions... */
+
136 NC(nc_def_dim(ncid, "time", (size_t) NC_UNLIMITED, &dims[0]));
+
137 NC(nc_def_dim(ncid, "lat", (size_t) ny, &dims[1]));
+
138 NC(nc_def_dim(ncid, "lon", (size_t) nx, &dims[2]));
+
139
+
140 /* Create variables... */
+
141 NC_DEF_VAR("time", NC_DOUBLE, 1, &dims[0], "time",
+
142 "seconds since 2000-01-01 00:00:00 UTC");
+
143 NC_DEF_VAR("lat", NC_DOUBLE, 1, &dims[1], "latitude", "degrees_north");
+
144 NC_DEF_VAR("lon", NC_DOUBLE, 1, &dims[2], "longitude", "degrees_east");
+
145
+
146 NC_DEF_VAR("clp_z", NC_FLOAT, 3, &dims[0], "cold point height", "km");
+
147 NC_DEF_VAR("clp_p", NC_FLOAT, 3, &dims[0], "cold point pressure",
+
148 "hPa");
+
149 NC_DEF_VAR("clp_t", NC_FLOAT, 3, &dims[0], "cold point temperature",
+
150 "K");
+
151 if (h2o)
+
152 NC_DEF_VAR("clp_q", NC_FLOAT, 3, &dims[0], "cold point water vapor",
+
153 "ppv");
+
154 if (o3)
+
155 NC_DEF_VAR("clp_o3", NC_FLOAT, 3, &dims[0], "cold point ozone",
+
156 "ppv");
+
157
+
158 NC_DEF_VAR("dyn_z", NC_FLOAT, 3, &dims[0],
+
159 "dynamical tropopause height", "km");
+
160 NC_DEF_VAR("dyn_p", NC_FLOAT, 3, &dims[0],
+
161 "dynamical tropopause pressure", "hPa");
+
162 NC_DEF_VAR("dyn_t", NC_FLOAT, 3, &dims[0],
+
163 "dynamical tropopause temperature", "K");
+
164 if (h2o)
+
165 NC_DEF_VAR("dyn_q", NC_FLOAT, 3, &dims[0],
+
166 "dynamical tropopause water vapor", "ppv");
+
167 if (o3)
+
168 NC_DEF_VAR("dyn_o3", NC_FLOAT, 3, &dims[0],
+
169 "dynamical tropopause ozone", "ppv");
+
170
+
171 NC_DEF_VAR("wmo_1st_z", NC_FLOAT, 3, &dims[0],
+
172 "WMO 1st tropopause height", "km");
+
173 NC_DEF_VAR("wmo_1st_p", NC_FLOAT, 3, &dims[0],
+
174 "WMO 1st tropopause pressure", "hPa");
+
175 NC_DEF_VAR("wmo_1st_t", NC_FLOAT, 3, &dims[0],
+
176 "WMO 1st tropopause temperature", "K");
+
177 if (h2o)
+
178 NC_DEF_VAR("wmo_1st_q", NC_FLOAT, 3, &dims[0],
+
179 "WMO 1st tropopause water vapor", "ppv");
+
180 if (o3)
+
181 NC_DEF_VAR("wmo_1st_o3", NC_FLOAT, 3, &dims[0],
+
182 "WMO 1st tropopause ozone", "ppv");
+
183
+
184 NC_DEF_VAR("wmo_2nd_z", NC_FLOAT, 3, &dims[0],
+
185 "WMO 2nd tropopause height", "km");
+
186 NC_DEF_VAR("wmo_2nd_p", NC_FLOAT, 3, &dims[0],
+
187 "WMO 2nd tropopause pressure", "hPa");
+
188 NC_DEF_VAR("wmo_2nd_t", NC_FLOAT, 3, &dims[0],
+
189 "WMO 2nd tropopause temperature", "K");
+
190 if (h2o)
+
191 NC_DEF_VAR("wmo_2nd_q", NC_FLOAT, 3, &dims[0],
+
192 "WMO 2nd tropopause water vapor", "ppv");
+
193 if (o3)
+
194 NC_DEF_VAR("wmo_2nd_o3", NC_FLOAT, 3, &dims[0],
+
195 "WMO 2nd tropopause ozone", "ppv");
+
196
+
197 NC_DEF_VAR("ps", NC_FLOAT, 3, &dims[0], "surface pressure", "hPa");
+
198 NC_DEF_VAR("zs", NC_FLOAT, 3, &dims[0], "surface height", "km");
+
199
+
200 /* End definition... */
+
201 NC(nc_enddef(ncid));
+
202
+
203 /* Write longitude and latitude... */
+
204 NC_PUT_DOUBLE("lat", lats, 0);
+
205 NC_PUT_DOUBLE("lon", lons, 0);
+
206 }
+
207
+
208 /* Write time... */
+
209 start[0] = (size_t) nt;
+
210 count[0] = 1;
+
211 start[1] = 0;
+
212 count[1] = (size_t) ny;
+
213 start[2] = 0;
+
214 count[2] = (size_t) nx;
+
215 NC_PUT_DOUBLE("time", &met->time, 1);
+
216
+
217 /* Get cold point... */
+
218 get_tropo(2, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
219 zs);
+
220 NC_PUT_DOUBLE("clp_z", zt, 1);
+
221 NC_PUT_DOUBLE("clp_p", pt, 1);
+
222 NC_PUT_DOUBLE("clp_t", tt, 1);
+
223 if (h2o)
+
224 NC_PUT_DOUBLE("clp_q", qt, 1);
+
225 if (o3)
+
226 NC_PUT_DOUBLE("clp_o3", o3t, 1);
+
227
+
228 /* Get dynamical tropopause... */
+
229 get_tropo(5, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
230 zs);
+
231 NC_PUT_DOUBLE("dyn_z", zt, 1);
+
232 NC_PUT_DOUBLE("dyn_p", pt, 1);
+
233 NC_PUT_DOUBLE("dyn_t", tt, 1);
+
234 if (h2o)
+
235 NC_PUT_DOUBLE("dyn_q", qt, 1);
+
236 if (o3)
+
237 NC_PUT_DOUBLE("dyn_o3", o3t, 1);
+
238
+
239 /* Get WMO 1st tropopause... */
+
240 get_tropo(3, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
241 zs);
+
242 NC_PUT_DOUBLE("wmo_1st_z", zt, 1);
+
243 NC_PUT_DOUBLE("wmo_1st_p", pt, 1);
+
244 NC_PUT_DOUBLE("wmo_1st_t", tt, 1);
+
245 if (h2o)
+
246 NC_PUT_DOUBLE("wmo_1st_q", qt, 1);
+
247 if (o3)
+
248 NC_PUT_DOUBLE("wmo_1st_o3", o3t, 1);
+
249
+
250 /* Get WMO 2nd tropopause... */
+
251 get_tropo(4, &ctl, clim, met, lons, nx, lats, ny, pt, zt, tt, qt, o3t, ps,
+
252 zs);
+
253 NC_PUT_DOUBLE("wmo_2nd_z", zt, 1);
+
254 NC_PUT_DOUBLE("wmo_2nd_p", pt, 1);
+
255 NC_PUT_DOUBLE("wmo_2nd_t", tt, 1);
+
256 if (h2o)
+
257 NC_PUT_DOUBLE("wmo_2nd_q", qt, 1);
+
258 if (o3)
+
259 NC_PUT_DOUBLE("wmo_2nd_o3", o3t, 1);
+
260
+
261 /* Write surface data... */
+
262 NC_PUT_DOUBLE("ps", ps, 1);
+
263 NC_PUT_DOUBLE("zs", zs, 1);
+
264
+
265 /* Increment time step counter... */
+
266 nt++;
+
267 }
+
268
+
269 /* Close file... */
+
270 NC(nc_close(ncid));
+
271
+
272 /* Free... */
+
273 free(clim);
+
274 free(met);
+
275
+
276 return EXIT_SUCCESS;
+
277}
+
278
+
279/*****************************************************************************/
+
280
+ +
282 int met_tropo,
+
283 ctl_t * ctl,
+
284 clim_t * clim,
+
285 met_t * met,
+
286 double *lons,
+
287 int nx,
+
288 double *lats,
+
289 int ny,
+
290 double *pt,
+
291 double *zt,
+
292 double *tt,
+
293 double *qt,
+
294 double *o3t,
+
295 double *ps,
+
296 double *zs) {
+
297
+ +
299
+
300 ctl->met_tropo = met_tropo;
+
301 read_met_tropo(ctl, clim, met);
+
302#pragma omp parallel for default(shared) private(ci,cw)
+
303 for (int ix = 0; ix < nx; ix++)
+
304 for (int iy = 0; iy < ny; iy++) {
+
305 intpol_met_space_2d(met, met->pt, lons[ix], lats[iy],
+
306 &pt[iy * nx + ix], ci, cw, 1);
+
307 intpol_met_space_2d(met, met->ps, lons[ix], lats[iy],
+
308 &ps[iy * nx + ix], ci, cw, 0);
+
309 intpol_met_space_2d(met, met->zs, lons[ix], lats[iy],
+
310 &zs[iy * nx + ix], ci, cw, 0);
+
311 intpol_met_space_3d(met, met->z, pt[iy * nx + ix], lons[ix],
+
312 lats[iy], &zt[iy * nx + ix], ci, cw, 1);
+
313 intpol_met_space_3d(met, met->t, pt[iy * nx + ix], lons[ix],
+
314 lats[iy], &tt[iy * nx + ix], ci, cw, 0);
+
315 intpol_met_space_3d(met, met->h2o, pt[iy * nx + ix], lons[ix],
+
316 lats[iy], &qt[iy * nx + ix], ci, cw, 0);
+
317 intpol_met_space_3d(met, met->o3, pt[iy * nx + ix], lons[ix],
+
318 lats[iy], &o3t[iy * nx + ix], ci, cw, 0);
+
319 }
+
320}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_met_tropo(ctl_t *ctl, clim_t *clim, met_t *met)
Calculate tropopause data.
Definition: libtrac.c:5009
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
void intpol_met_space_2d(met_t *met, float array[EX][EY], double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1177
+
MPTRAC library declarations.
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define INTPOL_INIT
Initialize cache variables for interpolation.
Definition: libtrac.h:323
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
Write netCDF double array.
Definition: libtrac.h:523
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
int met_tropo
Tropopause definition (0=none, 1=clim, 2=cold point, 3=WMO_1st, 4=WMO_2nd, 5=dynamical).
Definition: libtrac.h:1167
+
Meteo data.
Definition: libtrac.h:1831
+
float h2o[EX][EY][EP]
Water vapor volume mixing ratio [1].
Definition: libtrac.h:1945
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
float zs[EX][EY]
Surface geopotential height [km].
Definition: libtrac.h:1864
+
float o3[EX][EY][EP]
Ozone volume mixing ratio [1].
Definition: libtrac.h:1948
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
float pt[EX][EY]
Tropopause pressure [hPa].
Definition: libtrac.h:1882
+
float z[EX][EY][EP]
Geopotential height [km].
Definition: libtrac.h:1921
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
int main(int argc, char *argv[])
Definition: tropo.c:52
+
void get_tropo(int met_tropo, ctl_t *ctl, clim_t *clim, met_t *met, double *lons, int nx, double *lats, int ny, double *pt, double *zt, double *tt, double *qt, double *o3t, double *ps, double *zs)
Definition: tropo.c:281
+
+
+ + + + diff --git a/doxygen/tropo__sample_8c.html b/doxygen/tropo__sample_8c.html new file mode 100644 index 0000000000..b4d77acbc5 --- /dev/null +++ b/doxygen/tropo__sample_8c.html @@ -0,0 +1,640 @@ + + + + + + + +MPTRAC: tropo_sample.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tropo_sample.c File Reference
+
+
+ +

Sample tropopause data set. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + +

+Macros

#define NT   744
 Maximum number of time steps. More...
 
+ + + + + + +

+Functions

void intpol_tropo_3d (double time0, float array0[EX][EY], double time1, float array1[EX][EY], double lons[EX], double lats[EY], int nlon, int nlat, double time, double lon, double lat, int method, double *var, double *sigma)
 3-D linear interpolation of tropopause data. More...
 
int main (int argc, char *argv[])
 
+

Detailed Description

+

Sample tropopause data set.

+ +

Definition in file tropo_sample.c.

+

Macro Definition Documentation

+ +

◆ NT

+ +
+
+ + + + +
#define NT   744
+
+ +

Maximum number of time steps.

+ +

Definition at line 32 of file tropo_sample.c.

+ +
+
+

Function Documentation

+ +

◆ intpol_tropo_3d()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void intpol_tropo_3d (double time0,
float array0[EX][EY],
double time1,
float array1[EX][EY],
double lons[EX],
double lats[EY],
int nlon,
int nlat,
double time,
double lon,
double lat,
int method,
double * var,
double * sigma 
)
+
+ +

3-D linear interpolation of tropopause data.

+ +

Definition at line 279 of file tropo_sample.c.

+
293 {
+
294
+
295 double aux0, aux1, aux00, aux01, aux10, aux11, mean = 0;
+
296
+
297 int n = 0;
+
298
+
299 /* Adjust longitude... */
+
300 if (lon < lons[0])
+
301 lon += 360;
+
302 else if (lon > lons[nlon - 1])
+
303 lon -= 360;
+
304
+
305 /* Get indices... */
+
306 int ix = locate_reg(lons, (int) nlon, lon);
+
307 int iy = locate_reg(lats, (int) nlat, lat);
+
308
+
309 /* Calculate standard deviation... */
+
310 *sigma = 0;
+
311 for (int dx = 0; dx < 2; dx++)
+
312 for (int dy = 0; dy < 2; dy++) {
+
313 if (isfinite(array0[ix + dx][iy + dy])) {
+
314 mean += array0[ix + dx][iy + dy];
+
315 *sigma += SQR(array0[ix + dx][iy + dy]);
+
316 n++;
+
317 }
+
318 if (isfinite(array1[ix + dx][iy + dy])) {
+
319 mean += array1[ix + dx][iy + dy];
+
320 *sigma += SQR(array1[ix + dx][iy + dy]);
+
321 n++;
+
322 }
+
323 }
+
324 if (n > 0)
+
325 *sigma = sqrt(GSL_MAX(*sigma / n - SQR(mean / n), 0.0));
+
326
+
327 /* Linear interpolation... */
+
328 if (method == 1 && isfinite(array0[ix][iy])
+
329 && isfinite(array0[ix][iy + 1])
+
330 && isfinite(array0[ix + 1][iy])
+
331 && isfinite(array0[ix + 1][iy + 1])
+
332 && isfinite(array1[ix][iy])
+
333 && isfinite(array1[ix][iy + 1])
+
334 && isfinite(array1[ix + 1][iy])
+
335 && isfinite(array1[ix + 1][iy + 1])) {
+
336
+
337 aux00 = LIN(lons[ix], array0[ix][iy],
+
338 lons[ix + 1], array0[ix + 1][iy], lon);
+
339 aux01 = LIN(lons[ix], array0[ix][iy + 1],
+
340 lons[ix + 1], array0[ix + 1][iy + 1], lon);
+
341 aux0 = LIN(lats[iy], aux00, lats[iy + 1], aux01, lat);
+
342
+
343 aux10 = LIN(lons[ix], array1[ix][iy],
+
344 lons[ix + 1], array1[ix + 1][iy], lon);
+
345 aux11 = LIN(lons[ix], array1[ix][iy + 1],
+
346 lons[ix + 1], array1[ix + 1][iy + 1], lon);
+
347 aux1 = LIN(lats[iy], aux10, lats[iy + 1], aux11, lat);
+
348
+
349 *var = LIN(time0, aux0, time1, aux1, time);
+
350 }
+
351
+
352 /* Nearest neighbor interpolation... */
+
353 else {
+
354 aux00 = NN(lons[ix], array0[ix][iy],
+
355 lons[ix + 1], array0[ix + 1][iy], lon);
+
356 aux01 = NN(lons[ix], array0[ix][iy + 1],
+
357 lons[ix + 1], array0[ix + 1][iy + 1], lon);
+
358 aux0 = NN(lats[iy], aux00, lats[iy + 1], aux01, lat);
+
359
+
360 aux10 = NN(lons[ix], array1[ix][iy],
+
361 lons[ix + 1], array1[ix + 1][iy], lon);
+
362 aux11 = NN(lons[ix], array1[ix][iy + 1],
+
363 lons[ix + 1], array1[ix + 1][iy + 1], lon);
+
364 aux1 = NN(lats[iy], aux10, lats[iy + 1], aux11, lat);
+
365
+
366 *var = NN(time0, aux0, time1, aux1, time);
+
367 }
+
368}
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
#define NN(x0, y0, x1, y1, x)
Compute nearest neighbor interpolation.
Definition: libtrac.h:563
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 59 of file tropo_sample.c.

+
61 {
+
62
+
63 ctl_t ctl;
+
64
+
65 atm_t *atm;
+
66
+
67 static FILE *out;
+
68
+
69 static char varname[LEN];
+
70
+
71 static double times[NT], lons[EX], lats[EY], time0, time1, z0, z0sig,
+
72 p0, p0sig, t0, t0sig, q0, q0sig, o30, o30sig;
+
73
+
74 static float help[EX * EY], tropo_z0[EX][EY], tropo_z1[EX][EY],
+
75 tropo_p0[EX][EY], tropo_p1[EX][EY], tropo_t0[EX][EY], tropo_t1[EX][EY],
+
76 tropo_q0[EX][EY], tropo_q1[EX][EY], tropo_o30[EX][EY], tropo_o31[EX][EY];
+
77
+
78 static int ip, iq, it, it_old =
+
79 -999, method, ncid, varid, varid_z, varid_p, varid_t, varid_q, varid_o3,
+
80 h2o, o3, ntime, nlon, nlat, ilon, ilat;
+
81
+
82 static size_t count[10], start[10];
+
83
+
84 /* Allocate... */
+
85 ALLOC(atm, atm_t, 1);
+
86
+
87 /* Check arguments... */
+
88 if (argc < 5)
+
89 ERRMSG("Give parameters: <ctl> <sample.tab> <tropo.nc> <var> <atm_in>");
+
90
+
91 /* Read control parameters... */
+
92 read_ctl(argv[1], argc, argv, &ctl);
+
93 method =
+
94 (int) scan_ctl(argv[1], argc, argv, "TROPO_SAMPLE_METHOD", -1, "1", NULL);
+
95
+
96 /* Read atmospheric data... */
+
97 if (!read_atm(argv[5], &ctl, atm))
+
98 ERRMSG("Cannot open file!");
+
99
+
100 /* Open tropopause file... */
+
101 LOG(1, "Read tropopause data: %s", argv[3]);
+
102 if (nc_open(argv[3], NC_NOWRITE, &ncid) != NC_NOERR)
+
103 ERRMSG("Cannot open file!");
+
104
+
105 /* Get dimensions... */
+
106 NC_INQ_DIM("time", &ntime, 1, NT);
+
107 NC_INQ_DIM("lat", &nlat, 1, EY);
+
108 NC_INQ_DIM("lon", &nlon, 1, EX);
+
109
+
110 /* Read coordinates... */
+
111 NC_GET_DOUBLE("time", times, 1);
+
112 NC_GET_DOUBLE("lat", lats, 1);
+
113 NC_GET_DOUBLE("lon", lons, 1);
+
114
+
115 /* Get variable indices... */
+
116 sprintf(varname, "%s_z", argv[4]);
+
117 NC(nc_inq_varid(ncid, varname, &varid_z));
+
118 sprintf(varname, "%s_p", argv[4]);
+
119 NC(nc_inq_varid(ncid, varname, &varid_p));
+
120 sprintf(varname, "%s_t", argv[4]);
+
121 NC(nc_inq_varid(ncid, varname, &varid_t));
+
122 sprintf(varname, "%s_q", argv[4]);
+
123 h2o = (nc_inq_varid(ncid, varname, &varid_q) == NC_NOERR);
+
124 sprintf(varname, "%s_o3", argv[4]);
+
125 o3 = (nc_inq_varid(ncid, varname, &varid_o3) == NC_NOERR);
+
126
+
127 /* Set dimensions... */
+
128 count[0] = 1;
+
129 count[1] = (size_t) nlat;
+
130 count[2] = (size_t) nlon;
+
131
+
132 /* Create file... */
+
133 LOG(1, "Write tropopause sample data: %s", argv[2]);
+
134 if (!(out = fopen(argv[2], "w")))
+
135 ERRMSG("Cannot create file!");
+
136
+
137 /* Write header... */
+
138 fprintf(out,
+
139 "# $1 = time [s]\n"
+
140 "# $2 = altitude [km]\n"
+
141 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
142 for (iq = 0; iq < ctl.nq; iq++)
+
143 fprintf(out, "# $%i = %s [%s]\n", iq + 5, ctl.qnt_name[iq],
+
144 ctl.qnt_unit[iq]);
+
145 fprintf(out, "# $%d = tropopause height (mean) [km]\n", 5 + ctl.nq);
+
146 fprintf(out, "# $%d = tropopause pressure (mean) [hPa]\n", 6 + ctl.nq);
+
147 fprintf(out, "# $%d = tropopause temperature (mean) [K]\n", 7 + ctl.nq);
+
148 fprintf(out, "# $%d = tropopause water vapor (mean) [ppv]\n", 8 + ctl.nq);
+
149 fprintf(out, "# $%d = tropopause ozone (mean) [ppv]\n", 9 + ctl.nq);
+
150 fprintf(out, "# $%d = tropopause height (sigma) [km]\n", 10 + ctl.nq);
+
151 fprintf(out, "# $%d = tropopause pressure (sigma) [hPa]\n", 11 + ctl.nq);
+
152 fprintf(out, "# $%d = tropopause temperature (sigma) [K]\n", 12 + ctl.nq);
+
153 fprintf(out, "# $%d = tropopause water vapor (sigma) [ppv]\n", 13 + ctl.nq);
+
154 fprintf(out, "# $%d = tropopause ozone (sigma) [ppv]\n\n", 14 + ctl.nq);
+
155
+
156 /* Loop over particles... */
+
157 for (ip = 0; ip < atm->np; ip++) {
+
158
+
159 /* Check temporal ordering... */
+
160 if (ip > 0 && atm->time[ip] < atm->time[ip - 1])
+
161 ERRMSG("Time must be ascending!");
+
162
+
163 /* Check range... */
+
164 if (atm->time[ip] < times[0] || atm->time[ip] > times[ntime - 1])
+
165 continue;
+
166
+
167 /* Read data... */
+
168 it = locate_irr(times, (int) ntime, atm->time[ip]);
+
169 if (it != it_old) {
+
170
+
171 time0 = times[it];
+
172 start[0] = (size_t) it;
+
173 NC(nc_get_vara_float(ncid, varid_z, start, count, help));
+
174 for (ilon = 0; ilon < nlon; ilon++)
+
175 for (ilat = 0; ilat < nlat; ilat++)
+
176 tropo_z0[ilon][ilat] = help[ilat * nlon + ilon];
+
177 NC(nc_get_vara_float(ncid, varid_p, start, count, help));
+
178 for (ilon = 0; ilon < nlon; ilon++)
+
179 for (ilat = 0; ilat < nlat; ilat++)
+
180 tropo_p0[ilon][ilat] = help[ilat * nlon + ilon];
+
181 NC(nc_get_vara_float(ncid, varid_t, start, count, help));
+
182 for (ilon = 0; ilon < nlon; ilon++)
+
183 for (ilat = 0; ilat < nlat; ilat++)
+
184 tropo_t0[ilon][ilat] = help[ilat * nlon + ilon];
+
185 if (h2o) {
+
186 NC(nc_get_vara_float(ncid, varid_q, start, count, help));
+
187 for (ilon = 0; ilon < nlon; ilon++)
+
188 for (ilat = 0; ilat < nlat; ilat++)
+
189 tropo_q0[ilon][ilat] = help[ilat * nlon + ilon];
+
190 } else
+
191 for (ilon = 0; ilon < nlon; ilon++)
+
192 for (ilat = 0; ilat < nlat; ilat++)
+
193 tropo_q0[ilon][ilat] = GSL_NAN;
+
194 if (o3) {
+
195 NC(nc_get_vara_float(ncid, varid_o3, start, count, help));
+
196 for (ilon = 0; ilon < nlon; ilon++)
+
197 for (ilat = 0; ilat < nlat; ilat++)
+
198 tropo_o30[ilon][ilat] = help[ilat * nlon + ilon];
+
199 } else
+
200 for (ilon = 0; ilon < nlon; ilon++)
+
201 for (ilat = 0; ilat < nlat; ilat++)
+
202 tropo_o30[ilon][ilat] = GSL_NAN;
+
203
+
204 time1 = times[it + 1];
+
205 start[0] = (size_t) it + 1;
+
206 NC(nc_get_vara_float(ncid, varid_z, start, count, help));
+
207 for (ilon = 0; ilon < nlon; ilon++)
+
208 for (ilat = 0; ilat < nlat; ilat++)
+
209 tropo_z1[ilon][ilat] = help[ilat * nlon + ilon];
+
210 NC(nc_get_vara_float(ncid, varid_p, start, count, help));
+
211 for (ilon = 0; ilon < nlon; ilon++)
+
212 for (ilat = 0; ilat < nlat; ilat++)
+
213 tropo_p1[ilon][ilat] = help[ilat * nlon + ilon];
+
214 NC(nc_get_vara_float(ncid, varid_t, start, count, help));
+
215 for (ilon = 0; ilon < nlon; ilon++)
+
216 for (ilat = 0; ilat < nlat; ilat++)
+
217 tropo_t1[ilon][ilat] = help[ilat * nlon + ilon];
+
218 if (h2o) {
+
219 NC(nc_get_vara_float(ncid, varid_q, start, count, help));
+
220 for (ilon = 0; ilon < nlon; ilon++)
+
221 for (ilat = 0; ilat < nlat; ilat++)
+
222 tropo_q1[ilon][ilat] = help[ilat * nlon + ilon];
+
223 } else
+
224 for (ilon = 0; ilon < nlon; ilon++)
+
225 for (ilat = 0; ilat < nlat; ilat++)
+
226 tropo_q1[ilon][ilat] = GSL_NAN;;
+
227 if (o3) {
+
228 NC(nc_get_vara_float(ncid, varid_o3, start, count, help));
+
229 for (ilon = 0; ilon < nlon; ilon++)
+
230 for (ilat = 0; ilat < nlat; ilat++)
+
231 tropo_o31[ilon][ilat] = help[ilat * nlon + ilon];
+
232 } else
+
233 for (ilon = 0; ilon < nlon; ilon++)
+
234 for (ilat = 0; ilat < nlat; ilat++)
+
235 tropo_o31[ilon][ilat] = GSL_NAN;;
+
236 }
+
237 it_old = it;
+
238
+
239 /* Interpolate... */
+
240 intpol_tropo_3d(time0, tropo_z0, time1, tropo_z1,
+
241 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
242 atm->lat[ip], method, &z0, &z0sig);
+
243 intpol_tropo_3d(time0, tropo_p0, time1, tropo_p1,
+
244 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
245 atm->lat[ip], method, &p0, &p0sig);
+
246 intpol_tropo_3d(time0, tropo_t0, time1, tropo_t1,
+
247 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
248 atm->lat[ip], method, &t0, &t0sig);
+
249 intpol_tropo_3d(time0, tropo_q0, time1, tropo_q1,
+
250 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
251 atm->lat[ip], method, &q0, &q0sig);
+
252 intpol_tropo_3d(time0, tropo_o30, time1, tropo_o31,
+
253 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
254 atm->lat[ip], method, &o30, &o30sig);
+
255
+
256 /* Write output... */
+
257 fprintf(out, "%.2f %g %g %g", atm->time[ip], Z(atm->p[ip]),
+
258 atm->lon[ip], atm->lat[ip]);
+
259 for (iq = 0; iq < ctl.nq; iq++) {
+
260 fprintf(out, " ");
+
261 fprintf(out, ctl.qnt_format[iq], atm->q[iq][ip]);
+
262 }
+
263 fprintf(out, " %g %g %g %g %g %g %g %g %g %g\n",
+
264 z0, p0, t0, q0, o30, z0sig, p0sig, t0sig, q0sig, o30sig);
+
265 }
+
266
+
267 /* Close files... */
+
268 fclose(out);
+
269 NC(nc_close(ncid));
+
270
+
271 /* Free... */
+
272 free(atm);
+
273
+
274 return EXIT_SUCCESS;
+
275}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define NC_GET_DOUBLE(varname, ptr, force)
Read netCDF double array.
Definition: libtrac.h:500
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
void intpol_tropo_3d(double time0, float array0[EX][EY], double time1, float array1[EX][EY], double lons[EX], double lats[EY], int nlon, int nlat, double time, double lon, double lat, int method, double *var, double *sigma)
3-D linear interpolation of tropopause data.
Definition: tropo_sample.c:279
+
#define NT
Maximum number of time steps.
Definition: tropo_sample.c:32
+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/tropo__sample_8c.js b/doxygen/tropo__sample_8c.js new file mode 100644 index 0000000000..f86226f643 --- /dev/null +++ b/doxygen/tropo__sample_8c.js @@ -0,0 +1,6 @@ +var tropo__sample_8c = +[ + [ "NT", "tropo__sample_8c.html#a7d5ef0de19030d43f98042e1c4a9f605", null ], + [ "intpol_tropo_3d", "tropo__sample_8c.html#a70fe6de30950b5e6296a0d9bb8896970", null ], + [ "main", "tropo__sample_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..7c6f6f5bbd --- /dev/null +++ b/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..1b5ac8dc03 --- /dev/null +++ b/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +dda7789afbff489e86cd312f17e2c6c4 \ No newline at end of file diff --git a/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/tropo__sample_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..96766f08466ec22e573caeb68cda63fc0a11d763 GIT binary patch literal 29592 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 QQJW-6@~U!~vNs?9ANaP!9{>OV literal 0 HcmV?d00001 diff --git a/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.map b/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.map new file mode 100644 index 0000000000..431c1a4232 --- /dev/null +++ b/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.md5 b/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.md5 new file mode 100644 index 0000000000..0f092a9a4a --- /dev/null +++ b/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.md5 @@ -0,0 +1 @@ +c7f77e29b5183fb5332c8ea463aee9a6 \ No newline at end of file diff --git a/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.png b/doxygen/tropo__sample_8c_a70fe6de30950b5e6296a0d9bb8896970_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..062b14146a36bef253867c82b5a7ba5916c012a5 GIT binary patch literal 2563 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 V^s(VqW`k25V1>3r)tKXx{tNp}&|Clj literal 0 HcmV?d00001 diff --git a/doxygen/tropo__sample_8c_source.html b/doxygen/tropo__sample_8c_source.html new file mode 100644 index 0000000000..3761cfda2d --- /dev/null +++ b/doxygen/tropo__sample_8c_source.html @@ -0,0 +1,502 @@ + + + + + + + +MPTRAC: tropo_sample.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tropo_sample.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Dimensions...
+
29 ------------------------------------------------------------ */
+
30
+
32#define NT 744
+
33
+
34/* ------------------------------------------------------------
+
35 Functions...
+
36 ------------------------------------------------------------ */
+
37
+ +
40 double time0,
+
41 float array0[EX][EY],
+
42 double time1,
+
43 float array1[EX][EY],
+
44 double lons[EX],
+
45 double lats[EY],
+
46 int nlon,
+
47 int nlat,
+
48 double time,
+
49 double lon,
+
50 double lat,
+
51 int method,
+
52 double *var,
+
53 double *sigma);
+
54
+
55/* ------------------------------------------------------------
+
56 Main...
+
57 ------------------------------------------------------------ */
+
58
+
59int main(
+
60 int argc,
+
61 char *argv[]) {
+
62
+
63 ctl_t ctl;
+
64
+
65 atm_t *atm;
+
66
+
67 static FILE *out;
+
68
+
69 static char varname[LEN];
+
70
+
71 static double times[NT], lons[EX], lats[EY], time0, time1, z0, z0sig,
+
72 p0, p0sig, t0, t0sig, q0, q0sig, o30, o30sig;
+
73
+
74 static float help[EX * EY], tropo_z0[EX][EY], tropo_z1[EX][EY],
+
75 tropo_p0[EX][EY], tropo_p1[EX][EY], tropo_t0[EX][EY], tropo_t1[EX][EY],
+
76 tropo_q0[EX][EY], tropo_q1[EX][EY], tropo_o30[EX][EY], tropo_o31[EX][EY];
+
77
+
78 static int ip, iq, it, it_old =
+
79 -999, method, ncid, varid, varid_z, varid_p, varid_t, varid_q, varid_o3,
+
80 h2o, o3, ntime, nlon, nlat, ilon, ilat;
+
81
+
82 static size_t count[10], start[10];
+
83
+
84 /* Allocate... */
+
85 ALLOC(atm, atm_t, 1);
+
86
+
87 /* Check arguments... */
+
88 if (argc < 5)
+
89 ERRMSG("Give parameters: <ctl> <sample.tab> <tropo.nc> <var> <atm_in>");
+
90
+
91 /* Read control parameters... */
+
92 read_ctl(argv[1], argc, argv, &ctl);
+
93 method =
+
94 (int) scan_ctl(argv[1], argc, argv, "TROPO_SAMPLE_METHOD", -1, "1", NULL);
+
95
+
96 /* Read atmospheric data... */
+
97 if (!read_atm(argv[5], &ctl, atm))
+
98 ERRMSG("Cannot open file!");
+
99
+
100 /* Open tropopause file... */
+
101 LOG(1, "Read tropopause data: %s", argv[3]);
+
102 if (nc_open(argv[3], NC_NOWRITE, &ncid) != NC_NOERR)
+
103 ERRMSG("Cannot open file!");
+
104
+
105 /* Get dimensions... */
+
106 NC_INQ_DIM("time", &ntime, 1, NT);
+
107 NC_INQ_DIM("lat", &nlat, 1, EY);
+
108 NC_INQ_DIM("lon", &nlon, 1, EX);
+
109
+
110 /* Read coordinates... */
+
111 NC_GET_DOUBLE("time", times, 1);
+
112 NC_GET_DOUBLE("lat", lats, 1);
+
113 NC_GET_DOUBLE("lon", lons, 1);
+
114
+
115 /* Get variable indices... */
+
116 sprintf(varname, "%s_z", argv[4]);
+
117 NC(nc_inq_varid(ncid, varname, &varid_z));
+
118 sprintf(varname, "%s_p", argv[4]);
+
119 NC(nc_inq_varid(ncid, varname, &varid_p));
+
120 sprintf(varname, "%s_t", argv[4]);
+
121 NC(nc_inq_varid(ncid, varname, &varid_t));
+
122 sprintf(varname, "%s_q", argv[4]);
+
123 h2o = (nc_inq_varid(ncid, varname, &varid_q) == NC_NOERR);
+
124 sprintf(varname, "%s_o3", argv[4]);
+
125 o3 = (nc_inq_varid(ncid, varname, &varid_o3) == NC_NOERR);
+
126
+
127 /* Set dimensions... */
+
128 count[0] = 1;
+
129 count[1] = (size_t) nlat;
+
130 count[2] = (size_t) nlon;
+
131
+
132 /* Create file... */
+
133 LOG(1, "Write tropopause sample data: %s", argv[2]);
+
134 if (!(out = fopen(argv[2], "w")))
+
135 ERRMSG("Cannot create file!");
+
136
+
137 /* Write header... */
+
138 fprintf(out,
+
139 "# $1 = time [s]\n"
+
140 "# $2 = altitude [km]\n"
+
141 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
142 for (iq = 0; iq < ctl.nq; iq++)
+
143 fprintf(out, "# $%i = %s [%s]\n", iq + 5, ctl.qnt_name[iq],
+
144 ctl.qnt_unit[iq]);
+
145 fprintf(out, "# $%d = tropopause height (mean) [km]\n", 5 + ctl.nq);
+
146 fprintf(out, "# $%d = tropopause pressure (mean) [hPa]\n", 6 + ctl.nq);
+
147 fprintf(out, "# $%d = tropopause temperature (mean) [K]\n", 7 + ctl.nq);
+
148 fprintf(out, "# $%d = tropopause water vapor (mean) [ppv]\n", 8 + ctl.nq);
+
149 fprintf(out, "# $%d = tropopause ozone (mean) [ppv]\n", 9 + ctl.nq);
+
150 fprintf(out, "# $%d = tropopause height (sigma) [km]\n", 10 + ctl.nq);
+
151 fprintf(out, "# $%d = tropopause pressure (sigma) [hPa]\n", 11 + ctl.nq);
+
152 fprintf(out, "# $%d = tropopause temperature (sigma) [K]\n", 12 + ctl.nq);
+
153 fprintf(out, "# $%d = tropopause water vapor (sigma) [ppv]\n", 13 + ctl.nq);
+
154 fprintf(out, "# $%d = tropopause ozone (sigma) [ppv]\n\n", 14 + ctl.nq);
+
155
+
156 /* Loop over particles... */
+
157 for (ip = 0; ip < atm->np; ip++) {
+
158
+
159 /* Check temporal ordering... */
+
160 if (ip > 0 && atm->time[ip] < atm->time[ip - 1])
+
161 ERRMSG("Time must be ascending!");
+
162
+
163 /* Check range... */
+
164 if (atm->time[ip] < times[0] || atm->time[ip] > times[ntime - 1])
+
165 continue;
+
166
+
167 /* Read data... */
+
168 it = locate_irr(times, (int) ntime, atm->time[ip]);
+
169 if (it != it_old) {
+
170
+
171 time0 = times[it];
+
172 start[0] = (size_t) it;
+
173 NC(nc_get_vara_float(ncid, varid_z, start, count, help));
+
174 for (ilon = 0; ilon < nlon; ilon++)
+
175 for (ilat = 0; ilat < nlat; ilat++)
+
176 tropo_z0[ilon][ilat] = help[ilat * nlon + ilon];
+
177 NC(nc_get_vara_float(ncid, varid_p, start, count, help));
+
178 for (ilon = 0; ilon < nlon; ilon++)
+
179 for (ilat = 0; ilat < nlat; ilat++)
+
180 tropo_p0[ilon][ilat] = help[ilat * nlon + ilon];
+
181 NC(nc_get_vara_float(ncid, varid_t, start, count, help));
+
182 for (ilon = 0; ilon < nlon; ilon++)
+
183 for (ilat = 0; ilat < nlat; ilat++)
+
184 tropo_t0[ilon][ilat] = help[ilat * nlon + ilon];
+
185 if (h2o) {
+
186 NC(nc_get_vara_float(ncid, varid_q, start, count, help));
+
187 for (ilon = 0; ilon < nlon; ilon++)
+
188 for (ilat = 0; ilat < nlat; ilat++)
+
189 tropo_q0[ilon][ilat] = help[ilat * nlon + ilon];
+
190 } else
+
191 for (ilon = 0; ilon < nlon; ilon++)
+
192 for (ilat = 0; ilat < nlat; ilat++)
+
193 tropo_q0[ilon][ilat] = GSL_NAN;
+
194 if (o3) {
+
195 NC(nc_get_vara_float(ncid, varid_o3, start, count, help));
+
196 for (ilon = 0; ilon < nlon; ilon++)
+
197 for (ilat = 0; ilat < nlat; ilat++)
+
198 tropo_o30[ilon][ilat] = help[ilat * nlon + ilon];
+
199 } else
+
200 for (ilon = 0; ilon < nlon; ilon++)
+
201 for (ilat = 0; ilat < nlat; ilat++)
+
202 tropo_o30[ilon][ilat] = GSL_NAN;
+
203
+
204 time1 = times[it + 1];
+
205 start[0] = (size_t) it + 1;
+
206 NC(nc_get_vara_float(ncid, varid_z, start, count, help));
+
207 for (ilon = 0; ilon < nlon; ilon++)
+
208 for (ilat = 0; ilat < nlat; ilat++)
+
209 tropo_z1[ilon][ilat] = help[ilat * nlon + ilon];
+
210 NC(nc_get_vara_float(ncid, varid_p, start, count, help));
+
211 for (ilon = 0; ilon < nlon; ilon++)
+
212 for (ilat = 0; ilat < nlat; ilat++)
+
213 tropo_p1[ilon][ilat] = help[ilat * nlon + ilon];
+
214 NC(nc_get_vara_float(ncid, varid_t, start, count, help));
+
215 for (ilon = 0; ilon < nlon; ilon++)
+
216 for (ilat = 0; ilat < nlat; ilat++)
+
217 tropo_t1[ilon][ilat] = help[ilat * nlon + ilon];
+
218 if (h2o) {
+
219 NC(nc_get_vara_float(ncid, varid_q, start, count, help));
+
220 for (ilon = 0; ilon < nlon; ilon++)
+
221 for (ilat = 0; ilat < nlat; ilat++)
+
222 tropo_q1[ilon][ilat] = help[ilat * nlon + ilon];
+
223 } else
+
224 for (ilon = 0; ilon < nlon; ilon++)
+
225 for (ilat = 0; ilat < nlat; ilat++)
+
226 tropo_q1[ilon][ilat] = GSL_NAN;;
+
227 if (o3) {
+
228 NC(nc_get_vara_float(ncid, varid_o3, start, count, help));
+
229 for (ilon = 0; ilon < nlon; ilon++)
+
230 for (ilat = 0; ilat < nlat; ilat++)
+
231 tropo_o31[ilon][ilat] = help[ilat * nlon + ilon];
+
232 } else
+
233 for (ilon = 0; ilon < nlon; ilon++)
+
234 for (ilat = 0; ilat < nlat; ilat++)
+
235 tropo_o31[ilon][ilat] = GSL_NAN;;
+
236 }
+
237 it_old = it;
+
238
+
239 /* Interpolate... */
+
240 intpol_tropo_3d(time0, tropo_z0, time1, tropo_z1,
+
241 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
242 atm->lat[ip], method, &z0, &z0sig);
+
243 intpol_tropo_3d(time0, tropo_p0, time1, tropo_p1,
+
244 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
245 atm->lat[ip], method, &p0, &p0sig);
+
246 intpol_tropo_3d(time0, tropo_t0, time1, tropo_t1,
+
247 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
248 atm->lat[ip], method, &t0, &t0sig);
+
249 intpol_tropo_3d(time0, tropo_q0, time1, tropo_q1,
+
250 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
251 atm->lat[ip], method, &q0, &q0sig);
+
252 intpol_tropo_3d(time0, tropo_o30, time1, tropo_o31,
+
253 lons, lats, nlon, nlat, atm->time[ip], atm->lon[ip],
+
254 atm->lat[ip], method, &o30, &o30sig);
+
255
+
256 /* Write output... */
+
257 fprintf(out, "%.2f %g %g %g", atm->time[ip], Z(atm->p[ip]),
+
258 atm->lon[ip], atm->lat[ip]);
+
259 for (iq = 0; iq < ctl.nq; iq++) {
+
260 fprintf(out, " ");
+
261 fprintf(out, ctl.qnt_format[iq], atm->q[iq][ip]);
+
262 }
+
263 fprintf(out, " %g %g %g %g %g %g %g %g %g %g\n",
+
264 z0, p0, t0, q0, o30, z0sig, p0sig, t0sig, q0sig, o30sig);
+
265 }
+
266
+
267 /* Close files... */
+
268 fclose(out);
+
269 NC(nc_close(ncid));
+
270
+
271 /* Free... */
+
272 free(atm);
+
273
+
274 return EXIT_SUCCESS;
+
275}
+
276
+
277/*****************************************************************************/
+
278
+ +
280 double time0,
+
281 float array0[EX][EY],
+
282 double time1,
+
283 float array1[EX][EY],
+
284 double lons[EX],
+
285 double lats[EY],
+
286 int nlon,
+
287 int nlat,
+
288 double time,
+
289 double lon,
+
290 double lat,
+
291 int method,
+
292 double *var,
+
293 double *sigma) {
+
294
+
295 double aux0, aux1, aux00, aux01, aux10, aux11, mean = 0;
+
296
+
297 int n = 0;
+
298
+
299 /* Adjust longitude... */
+
300 if (lon < lons[0])
+
301 lon += 360;
+
302 else if (lon > lons[nlon - 1])
+
303 lon -= 360;
+
304
+
305 /* Get indices... */
+
306 int ix = locate_reg(lons, (int) nlon, lon);
+
307 int iy = locate_reg(lats, (int) nlat, lat);
+
308
+
309 /* Calculate standard deviation... */
+
310 *sigma = 0;
+
311 for (int dx = 0; dx < 2; dx++)
+
312 for (int dy = 0; dy < 2; dy++) {
+
313 if (isfinite(array0[ix + dx][iy + dy])) {
+
314 mean += array0[ix + dx][iy + dy];
+
315 *sigma += SQR(array0[ix + dx][iy + dy]);
+
316 n++;
+
317 }
+
318 if (isfinite(array1[ix + dx][iy + dy])) {
+
319 mean += array1[ix + dx][iy + dy];
+
320 *sigma += SQR(array1[ix + dx][iy + dy]);
+
321 n++;
+
322 }
+
323 }
+
324 if (n > 0)
+
325 *sigma = sqrt(GSL_MAX(*sigma / n - SQR(mean / n), 0.0));
+
326
+
327 /* Linear interpolation... */
+
328 if (method == 1 && isfinite(array0[ix][iy])
+
329 && isfinite(array0[ix][iy + 1])
+
330 && isfinite(array0[ix + 1][iy])
+
331 && isfinite(array0[ix + 1][iy + 1])
+
332 && isfinite(array1[ix][iy])
+
333 && isfinite(array1[ix][iy + 1])
+
334 && isfinite(array1[ix + 1][iy])
+
335 && isfinite(array1[ix + 1][iy + 1])) {
+
336
+
337 aux00 = LIN(lons[ix], array0[ix][iy],
+
338 lons[ix + 1], array0[ix + 1][iy], lon);
+
339 aux01 = LIN(lons[ix], array0[ix][iy + 1],
+
340 lons[ix + 1], array0[ix + 1][iy + 1], lon);
+
341 aux0 = LIN(lats[iy], aux00, lats[iy + 1], aux01, lat);
+
342
+
343 aux10 = LIN(lons[ix], array1[ix][iy],
+
344 lons[ix + 1], array1[ix + 1][iy], lon);
+
345 aux11 = LIN(lons[ix], array1[ix][iy + 1],
+
346 lons[ix + 1], array1[ix + 1][iy + 1], lon);
+
347 aux1 = LIN(lats[iy], aux10, lats[iy + 1], aux11, lat);
+
348
+
349 *var = LIN(time0, aux0, time1, aux1, time);
+
350 }
+
351
+
352 /* Nearest neighbor interpolation... */
+
353 else {
+
354 aux00 = NN(lons[ix], array0[ix][iy],
+
355 lons[ix + 1], array0[ix + 1][iy], lon);
+
356 aux01 = NN(lons[ix], array0[ix][iy + 1],
+
357 lons[ix + 1], array0[ix + 1][iy + 1], lon);
+
358 aux0 = NN(lats[iy], aux00, lats[iy + 1], aux01, lat);
+
359
+
360 aux10 = NN(lons[ix], array1[ix][iy],
+
361 lons[ix + 1], array1[ix + 1][iy], lon);
+
362 aux11 = NN(lons[ix], array1[ix][iy + 1],
+
363 lons[ix + 1], array1[ix + 1][iy + 1], lon);
+
364 aux1 = NN(lats[iy], aux10, lats[iy + 1], aux11, lat);
+
365
+
366 *var = NN(time0, aux0, time1, aux1, time);
+
367 }
+
368}
+
int read_atm(const char *filename, ctl_t *ctl, atm_t *atm)
Read atmospheric data.
Definition: libtrac.c:1759
+
int locate_reg(const double *xx, const int n, const double x)
Find array index for regular grid.
Definition: libtrac.c:1672
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
MPTRAC library declarations.
+
#define NN(x0, y0, x1, y1, x)
Compute nearest neighbor interpolation.
Definition: libtrac.h:563
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define NC_GET_DOUBLE(varname, ptr, force)
Read netCDF double array.
Definition: libtrac.h:500
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
Atmospheric data.
Definition: libtrac.h:1660
+
double time[NP]
Time [s].
Definition: libtrac.h:1666
+
double lat[NP]
Latitude [deg].
Definition: libtrac.h:1675
+
double lon[NP]
Longitude [deg].
Definition: libtrac.h:1672
+
int np
Number of air parcels.
Definition: libtrac.h:1663
+
double q[NQ][NP]
Quantity data (for various, user-defined attributes).
Definition: libtrac.h:1678
+
double p[NP]
Pressure [hPa].
Definition: libtrac.h:1669
+
Control parameters.
Definition: libtrac.h:799
+
char qnt_format[NQ][LEN]
Quantity output format.
Definition: libtrac.h:839
+
char qnt_unit[NQ][LEN]
Quantity units.
Definition: libtrac.h:836
+
char qnt_name[NQ][LEN]
Quantity names.
Definition: libtrac.h:830
+
int nq
Number of quantities.
Definition: libtrac.h:827
+
int main(int argc, char *argv[])
Definition: tropo_sample.c:59
+
void intpol_tropo_3d(double time0, float array0[EX][EY], double time1, float array1[EX][EY], double lons[EX], double lats[EY], int nlon, int nlat, double time, double lon, double lat, int method, double *var, double *sigma)
3-D linear interpolation of tropopause data.
Definition: tropo_sample.c:279
+
#define NT
Maximum number of time steps.
Definition: tropo_sample.c:32
+
+
+ + + + diff --git a/doxygen/tropo__zm_8c.html b/doxygen/tropo__zm_8c.html new file mode 100644 index 0000000000..aa5fb343a1 --- /dev/null +++ b/doxygen/tropo__zm_8c.html @@ -0,0 +1,392 @@ + + + + + + + +MPTRAC: tropo_zm.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tropo_zm.c File Reference
+
+
+ +

Extract zonal mean of tropopause data set. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + + +

+Macros

#define NT   744
 Maximum number of time steps. More...
 
+ + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Extract zonal mean of tropopause data set.

+ +

Definition in file tropo_zm.c.

+

Macro Definition Documentation

+ +

◆ NT

+ +
+
+ + + + +
#define NT   744
+
+ +

Maximum number of time steps.

+ +

Definition at line 32 of file tropo_zm.c.

+ +
+
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 38 of file tropo_zm.c.

+
40 {
+
41
+
42 ctl_t ctl;
+
43
+
44 static FILE *out;
+
45
+
46 static char varname[LEN];
+
47
+
48 static double time0, lons[EX], lats[EY], zm[EY], zs[EY], pm[EY],
+
49 ps[EY], tm[EY], ts[EY], qm[EY], qs[EY], o3m[EY], o3s[EY];
+
50
+
51 static float help[EX * EY], tropo_z0[EX][EY], tropo_p0[EX][EY],
+
52 tropo_t0[EX][EY], tropo_q0[EX][EY], tropo_o30[EX][EY];
+
53
+
54 static int ncid, varid, varid_z, varid_p, varid_t, varid_q, varid_o3, h2o,
+
55 o3, n[EY], nt[EY], init, ntime, nlon, nlat, ilon, ilat;
+
56
+
57 static size_t count[10], start[10];
+
58
+
59 /* Check arguments... */
+
60 if (argc < 5)
+
61 ERRMSG("Give parameters: <ctl> <zm.tab> <var> <tropo.nc>");
+
62
+
63 /* Read control parameters... */
+
64 read_ctl(argv[1], argc, argv, &ctl);
+
65
+
66 /* Loop over tropopause files... */
+
67 for (int iarg = 4; iarg < argc; iarg++) {
+
68
+
69 /* Open tropopause file... */
+
70 LOG(1, "Read tropopause data: %s", argv[iarg]);
+
71 if (nc_open(argv[iarg], NC_NOWRITE, &ncid) != NC_NOERR)
+
72 ERRMSG("Cannot open file!");
+
73
+
74 /* Get dimensions... */
+
75 NC_INQ_DIM("time", &ntime, 1, NT);
+
76 NC_INQ_DIM("lat", &nlat, 1, EY);
+
77 NC_INQ_DIM("lon", &nlon, 1, EX);
+
78
+
79 /* Read coordinates... */
+
80 NC_GET_DOUBLE("lat", lats, 1);
+
81 NC_GET_DOUBLE("lon", lons, 1);
+
82
+
83 /* Get variable indices... */
+
84 sprintf(varname, "%s_z", argv[3]);
+
85 NC(nc_inq_varid(ncid, varname, &varid_z));
+
86 sprintf(varname, "%s_p", argv[3]);
+
87 NC(nc_inq_varid(ncid, varname, &varid_p));
+
88 sprintf(varname, "%s_t", argv[3]);
+
89 NC(nc_inq_varid(ncid, varname, &varid_t));
+
90 sprintf(varname, "%s_q", argv[3]);
+
91 h2o = (nc_inq_varid(ncid, varname, &varid_q) == NC_NOERR);
+
92 sprintf(varname, "%s_o3", argv[3]);
+
93 o3 = (nc_inq_varid(ncid, varname, &varid_o3) == NC_NOERR);
+
94
+
95 /* Set dimensions... */
+
96 count[0] = 1;
+
97 count[1] = (size_t) nlat;
+
98 count[2] = (size_t) nlon;
+
99
+
100 /* Loop over time steps... */
+
101 for (int it = 0; it < ntime; it++) {
+
102
+
103 /* Get time from filename... */
+
104 if (!init) {
+
105 init = 1;
+
106 time0 = time_from_filename(argv[iarg], 13);
+
107 }
+
108
+
109 /* Read data... */
+
110 start[0] = (size_t) it;
+
111 NC(nc_get_vara_float(ncid, varid_z, start, count, help));
+
112 for (ilon = 0; ilon < nlon; ilon++)
+
113 for (ilat = 0; ilat < nlat; ilat++)
+
114 tropo_z0[ilon][ilat] = help[ilat * nlon + ilon];
+
115 NC(nc_get_vara_float(ncid, varid_p, start, count, help));
+
116 for (ilon = 0; ilon < nlon; ilon++)
+
117 for (ilat = 0; ilat < nlat; ilat++)
+
118 tropo_p0[ilon][ilat] = help[ilat * nlon + ilon];
+
119 NC(nc_get_vara_float(ncid, varid_t, start, count, help));
+
120 for (ilon = 0; ilon < nlon; ilon++)
+
121 for (ilat = 0; ilat < nlat; ilat++)
+
122 tropo_t0[ilon][ilat] = help[ilat * nlon + ilon];
+
123 if (h2o) {
+
124 NC(nc_get_vara_float(ncid, varid_q, start, count, help));
+
125 for (ilon = 0; ilon < nlon; ilon++)
+
126 for (ilat = 0; ilat < nlat; ilat++)
+
127 tropo_q0[ilon][ilat] = help[ilat * nlon + ilon];
+
128 } else
+
129 for (ilon = 0; ilon < nlon; ilon++)
+
130 for (ilat = 0; ilat < nlat; ilat++)
+
131 tropo_q0[ilon][ilat] = GSL_NAN;
+
132 if (o3) {
+
133 NC(nc_get_vara_float(ncid, varid_o3, start, count, help));
+
134 for (ilon = 0; ilon < nlon; ilon++)
+
135 for (ilat = 0; ilat < nlat; ilat++)
+
136 tropo_o30[ilon][ilat] = help[ilat * nlon + ilon];
+
137 } else
+
138 for (ilon = 0; ilon < nlon; ilon++)
+
139 for (ilat = 0; ilat < nlat; ilat++)
+
140 tropo_o30[ilon][ilat] = GSL_NAN;
+
141
+
142 /* Averaging... */
+
143 for (ilat = 0; ilat < nlat; ilat++)
+
144 for (ilon = 0; ilon < nlon; ilon++) {
+
145 nt[ilat]++;
+
146 if (isfinite(tropo_z0[ilon][ilat])
+
147 && isfinite(tropo_p0[ilon][ilat])
+
148 && isfinite(tropo_t0[ilon][ilat])
+
149 && (!h2o || isfinite(tropo_q0[ilon][ilat]))
+
150 && (!o3 || isfinite(tropo_o30[ilon][ilat]))) {
+
151 zm[ilat] += tropo_z0[ilon][ilat];
+
152 zs[ilat] += SQR(tropo_z0[ilon][ilat]);
+
153 pm[ilat] += tropo_p0[ilon][ilat];
+
154 ps[ilat] += SQR(tropo_p0[ilon][ilat]);
+
155 tm[ilat] += tropo_t0[ilon][ilat];
+
156 ts[ilat] += SQR(tropo_t0[ilon][ilat]);
+
157 qm[ilat] += tropo_q0[ilon][ilat];
+
158 qs[ilat] += SQR(tropo_q0[ilon][ilat]);
+
159 o3m[ilat] += tropo_o30[ilon][ilat];
+
160 o3s[ilat] += SQR(tropo_o30[ilon][ilat]);
+
161 n[ilat]++;
+
162 }
+
163 }
+
164 }
+
165
+
166 /* Close files... */
+
167 NC(nc_close(ncid));
+
168 }
+
169
+
170 /* Normalize... */
+
171 for (ilat = 0; ilat < nlat; ilat++)
+
172 if (n[ilat] > 0) {
+
173 zm[ilat] /= n[ilat];
+
174 pm[ilat] /= n[ilat];
+
175 tm[ilat] /= n[ilat];
+
176 qm[ilat] /= n[ilat];
+
177 o3m[ilat] /= n[ilat];
+
178 double aux = zs[ilat] / n[ilat] - SQR(zm[ilat]);
+
179 zs[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
180 aux = ps[ilat] / n[ilat] - SQR(pm[ilat]);
+
181 ps[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
182 aux = ts[ilat] / n[ilat] - SQR(tm[ilat]);
+
183 ts[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
184 aux = qs[ilat] / n[ilat] - SQR(qm[ilat]);
+
185 qs[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
186 aux = o3s[ilat] / n[ilat] - SQR(o3m[ilat]);
+
187 o3s[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
188 }
+
189
+
190 /* Create file... */
+
191 LOG(1, "Write tropopause zonal mean data: %s", argv[2]);
+
192 if (!(out = fopen(argv[2], "w")))
+
193 ERRMSG("Cannot create file!");
+
194
+
195 /* Write header... */
+
196 fprintf(out,
+
197 "# $1 = time [s]\n"
+
198 "# $2 = latitude [deg]\n"
+
199 "# $3 = tropopause height (mean) [km]\n"
+
200 "# $4 = tropopause pressure (mean) [hPa]\n"
+
201 "# $5 = tropopause temperature (mean) [K]\n"
+
202 "# $6 = tropopause water vapor (mean) [ppv]\n"
+
203 "# $7 = tropopause ozone (mean) [ppv]\n"
+
204 "# $8 = tropopause height (sigma) [km]\n"
+
205 "# $9 = tropopause pressure (sigma) [hPa]\n"
+
206 "# $10 = tropopause temperature (sigma) [K]\n"
+
207 "# $11 = tropopause water vapor (sigma) [ppv]\n"
+
208 "# $12 = tropopause ozone (sigma) [ppv]\n"
+
209 "# $13 = number of data points\n"
+
210 "# $14 = occurrence frequency [%%]\n\n");
+
211
+
212 /* Write output... */
+
213 for (ilat = 0; ilat < nlat; ilat++)
+
214 fprintf(out, "%.2f %g %g %g %g %g %g %g %g %g %g %g %d %g\n",
+
215 time0, lats[ilat], zm[ilat], pm[ilat], tm[ilat], qm[ilat],
+
216 o3m[ilat], zs[ilat], ps[ilat], ts[ilat], qs[ilat], o3s[ilat],
+
217 n[ilat], 100. * n[ilat] / nt[ilat]);
+
218
+
219 /* Close files... */
+
220 fclose(out);
+
221
+
222 return EXIT_SUCCESS;
+
223}
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define NC_GET_DOUBLE(varname, ptr, force)
Read netCDF double array.
Definition: libtrac.h:500
+
Control parameters.
Definition: libtrac.h:799
+
#define NT
Maximum number of time steps.
Definition: tropo_zm.c:32
+
+Here is the call graph for this function:
+
+
+ + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/tropo__zm_8c.js b/doxygen/tropo__zm_8c.js new file mode 100644 index 0000000000..8a2444e391 --- /dev/null +++ b/doxygen/tropo__zm_8c.js @@ -0,0 +1,5 @@ +var tropo__zm_8c = +[ + [ "NT", "tropo__zm_8c.html#a7d5ef0de19030d43f98042e1c4a9f605", null ], + [ "main", "tropo__zm_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..25aebf0633 --- /dev/null +++ b/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..e580140e21 --- /dev/null +++ b/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +f20586bea46283efcc93a24ec2acf230 \ No newline at end of file diff --git a/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/tropo__zm_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..51342da0cb3b838dd43fcdb68d6a2fa02bc43b51 GIT binary patch literal 10533 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 z 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 RF!zXfD5oM@f_(b+e*oE5J97X4 literal 0 HcmV?d00001 diff --git a/doxygen/tropo__zm_8c_source.html b/doxygen/tropo__zm_8c_source.html new file mode 100644 index 0000000000..89b3bdc4e7 --- /dev/null +++ b/doxygen/tropo__zm_8c_source.html @@ -0,0 +1,339 @@ + + + + + + + +MPTRAC: tropo_zm.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tropo_zm.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Dimensions...
+
29 ------------------------------------------------------------ */
+
30
+
32#define NT 744
+
33
+
34/* ------------------------------------------------------------
+
35 Main...
+
36 ------------------------------------------------------------ */
+
37
+
38int main(
+
39 int argc,
+
40 char *argv[]) {
+
41
+
42 ctl_t ctl;
+
43
+
44 static FILE *out;
+
45
+
46 static char varname[LEN];
+
47
+
48 static double time0, lons[EX], lats[EY], zm[EY], zs[EY], pm[EY],
+
49 ps[EY], tm[EY], ts[EY], qm[EY], qs[EY], o3m[EY], o3s[EY];
+
50
+
51 static float help[EX * EY], tropo_z0[EX][EY], tropo_p0[EX][EY],
+
52 tropo_t0[EX][EY], tropo_q0[EX][EY], tropo_o30[EX][EY];
+
53
+
54 static int ncid, varid, varid_z, varid_p, varid_t, varid_q, varid_o3, h2o,
+
55 o3, n[EY], nt[EY], init, ntime, nlon, nlat, ilon, ilat;
+
56
+
57 static size_t count[10], start[10];
+
58
+
59 /* Check arguments... */
+
60 if (argc < 5)
+
61 ERRMSG("Give parameters: <ctl> <zm.tab> <var> <tropo.nc>");
+
62
+
63 /* Read control parameters... */
+
64 read_ctl(argv[1], argc, argv, &ctl);
+
65
+
66 /* Loop over tropopause files... */
+
67 for (int iarg = 4; iarg < argc; iarg++) {
+
68
+
69 /* Open tropopause file... */
+
70 LOG(1, "Read tropopause data: %s", argv[iarg]);
+
71 if (nc_open(argv[iarg], NC_NOWRITE, &ncid) != NC_NOERR)
+
72 ERRMSG("Cannot open file!");
+
73
+
74 /* Get dimensions... */
+
75 NC_INQ_DIM("time", &ntime, 1, NT);
+
76 NC_INQ_DIM("lat", &nlat, 1, EY);
+
77 NC_INQ_DIM("lon", &nlon, 1, EX);
+
78
+
79 /* Read coordinates... */
+
80 NC_GET_DOUBLE("lat", lats, 1);
+
81 NC_GET_DOUBLE("lon", lons, 1);
+
82
+
83 /* Get variable indices... */
+
84 sprintf(varname, "%s_z", argv[3]);
+
85 NC(nc_inq_varid(ncid, varname, &varid_z));
+
86 sprintf(varname, "%s_p", argv[3]);
+
87 NC(nc_inq_varid(ncid, varname, &varid_p));
+
88 sprintf(varname, "%s_t", argv[3]);
+
89 NC(nc_inq_varid(ncid, varname, &varid_t));
+
90 sprintf(varname, "%s_q", argv[3]);
+
91 h2o = (nc_inq_varid(ncid, varname, &varid_q) == NC_NOERR);
+
92 sprintf(varname, "%s_o3", argv[3]);
+
93 o3 = (nc_inq_varid(ncid, varname, &varid_o3) == NC_NOERR);
+
94
+
95 /* Set dimensions... */
+
96 count[0] = 1;
+
97 count[1] = (size_t) nlat;
+
98 count[2] = (size_t) nlon;
+
99
+
100 /* Loop over time steps... */
+
101 for (int it = 0; it < ntime; it++) {
+
102
+
103 /* Get time from filename... */
+
104 if (!init) {
+
105 init = 1;
+
106 time0 = time_from_filename(argv[iarg], 13);
+
107 }
+
108
+
109 /* Read data... */
+
110 start[0] = (size_t) it;
+
111 NC(nc_get_vara_float(ncid, varid_z, start, count, help));
+
112 for (ilon = 0; ilon < nlon; ilon++)
+
113 for (ilat = 0; ilat < nlat; ilat++)
+
114 tropo_z0[ilon][ilat] = help[ilat * nlon + ilon];
+
115 NC(nc_get_vara_float(ncid, varid_p, start, count, help));
+
116 for (ilon = 0; ilon < nlon; ilon++)
+
117 for (ilat = 0; ilat < nlat; ilat++)
+
118 tropo_p0[ilon][ilat] = help[ilat * nlon + ilon];
+
119 NC(nc_get_vara_float(ncid, varid_t, start, count, help));
+
120 for (ilon = 0; ilon < nlon; ilon++)
+
121 for (ilat = 0; ilat < nlat; ilat++)
+
122 tropo_t0[ilon][ilat] = help[ilat * nlon + ilon];
+
123 if (h2o) {
+
124 NC(nc_get_vara_float(ncid, varid_q, start, count, help));
+
125 for (ilon = 0; ilon < nlon; ilon++)
+
126 for (ilat = 0; ilat < nlat; ilat++)
+
127 tropo_q0[ilon][ilat] = help[ilat * nlon + ilon];
+
128 } else
+
129 for (ilon = 0; ilon < nlon; ilon++)
+
130 for (ilat = 0; ilat < nlat; ilat++)
+
131 tropo_q0[ilon][ilat] = GSL_NAN;
+
132 if (o3) {
+
133 NC(nc_get_vara_float(ncid, varid_o3, start, count, help));
+
134 for (ilon = 0; ilon < nlon; ilon++)
+
135 for (ilat = 0; ilat < nlat; ilat++)
+
136 tropo_o30[ilon][ilat] = help[ilat * nlon + ilon];
+
137 } else
+
138 for (ilon = 0; ilon < nlon; ilon++)
+
139 for (ilat = 0; ilat < nlat; ilat++)
+
140 tropo_o30[ilon][ilat] = GSL_NAN;
+
141
+
142 /* Averaging... */
+
143 for (ilat = 0; ilat < nlat; ilat++)
+
144 for (ilon = 0; ilon < nlon; ilon++) {
+
145 nt[ilat]++;
+
146 if (isfinite(tropo_z0[ilon][ilat])
+
147 && isfinite(tropo_p0[ilon][ilat])
+
148 && isfinite(tropo_t0[ilon][ilat])
+
149 && (!h2o || isfinite(tropo_q0[ilon][ilat]))
+
150 && (!o3 || isfinite(tropo_o30[ilon][ilat]))) {
+
151 zm[ilat] += tropo_z0[ilon][ilat];
+
152 zs[ilat] += SQR(tropo_z0[ilon][ilat]);
+
153 pm[ilat] += tropo_p0[ilon][ilat];
+
154 ps[ilat] += SQR(tropo_p0[ilon][ilat]);
+
155 tm[ilat] += tropo_t0[ilon][ilat];
+
156 ts[ilat] += SQR(tropo_t0[ilon][ilat]);
+
157 qm[ilat] += tropo_q0[ilon][ilat];
+
158 qs[ilat] += SQR(tropo_q0[ilon][ilat]);
+
159 o3m[ilat] += tropo_o30[ilon][ilat];
+
160 o3s[ilat] += SQR(tropo_o30[ilon][ilat]);
+
161 n[ilat]++;
+
162 }
+
163 }
+
164 }
+
165
+
166 /* Close files... */
+
167 NC(nc_close(ncid));
+
168 }
+
169
+
170 /* Normalize... */
+
171 for (ilat = 0; ilat < nlat; ilat++)
+
172 if (n[ilat] > 0) {
+
173 zm[ilat] /= n[ilat];
+
174 pm[ilat] /= n[ilat];
+
175 tm[ilat] /= n[ilat];
+
176 qm[ilat] /= n[ilat];
+
177 o3m[ilat] /= n[ilat];
+
178 double aux = zs[ilat] / n[ilat] - SQR(zm[ilat]);
+
179 zs[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
180 aux = ps[ilat] / n[ilat] - SQR(pm[ilat]);
+
181 ps[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
182 aux = ts[ilat] / n[ilat] - SQR(tm[ilat]);
+
183 ts[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
184 aux = qs[ilat] / n[ilat] - SQR(qm[ilat]);
+
185 qs[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
186 aux = o3s[ilat] / n[ilat] - SQR(o3m[ilat]);
+
187 o3s[ilat] = aux > 0 ? sqrt(aux) : 0.0;
+
188 }
+
189
+
190 /* Create file... */
+
191 LOG(1, "Write tropopause zonal mean data: %s", argv[2]);
+
192 if (!(out = fopen(argv[2], "w")))
+
193 ERRMSG("Cannot create file!");
+
194
+
195 /* Write header... */
+
196 fprintf(out,
+
197 "# $1 = time [s]\n"
+
198 "# $2 = latitude [deg]\n"
+
199 "# $3 = tropopause height (mean) [km]\n"
+
200 "# $4 = tropopause pressure (mean) [hPa]\n"
+
201 "# $5 = tropopause temperature (mean) [K]\n"
+
202 "# $6 = tropopause water vapor (mean) [ppv]\n"
+
203 "# $7 = tropopause ozone (mean) [ppv]\n"
+
204 "# $8 = tropopause height (sigma) [km]\n"
+
205 "# $9 = tropopause pressure (sigma) [hPa]\n"
+
206 "# $10 = tropopause temperature (sigma) [K]\n"
+
207 "# $11 = tropopause water vapor (sigma) [ppv]\n"
+
208 "# $12 = tropopause ozone (sigma) [ppv]\n"
+
209 "# $13 = number of data points\n"
+
210 "# $14 = occurrence frequency [%%]\n\n");
+
211
+
212 /* Write output... */
+
213 for (ilat = 0; ilat < nlat; ilat++)
+
214 fprintf(out, "%.2f %g %g %g %g %g %g %g %g %g %g %g %d %g\n",
+
215 time0, lats[ilat], zm[ilat], pm[ilat], tm[ilat], qm[ilat],
+
216 o3m[ilat], zs[ilat], ps[ilat], ts[ilat], qs[ilat], o3s[ilat],
+
217 n[ilat], 100. * n[ilat] / nt[ilat]);
+
218
+
219 /* Close files... */
+
220 fclose(out);
+
221
+
222 return EXIT_SUCCESS;
+
223}
+
double time_from_filename(const char *filename, int offset)
Extract time information from filename.
Definition: libtrac.c:5548
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
MPTRAC library declarations.
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define NC_INQ_DIM(dimname, ptr, min, max)
Read netCDF dimension.
Definition: libtrac.h:513
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define NC_GET_DOUBLE(varname, ptr, force)
Read netCDF double array.
Definition: libtrac.h:500
+
Control parameters.
Definition: libtrac.h:799
+
int main(int argc, char *argv[])
Definition: tropo_zm.c:38
+
#define NT
Maximum number of time steps.
Definition: tropo_zm.c:32
+
+
+ + + + diff --git a/doxygen/wind_8c.html b/doxygen/wind_8c.html new file mode 100644 index 0000000000..c88e77c55d --- /dev/null +++ b/doxygen/wind_8c.html @@ -0,0 +1,313 @@ + + + + + + + +MPTRAC: wind.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
wind.c File Reference
+
+
+ +

Create meteorological data files with synthetic wind fields. +More...

+
#include "libtrac.h"
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Create meteorological data files with synthetic wind fields.

+ +

Definition in file wind.c.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 31 of file wind.c.

+
33 {
+
34
+
35 ctl_t ctl;
+
36
+
37 static char filename[LEN];
+
38
+
39 static double r, t0, z0, z1, dataLon[EX], dataLat[EY], dataZ[EP],
+
40 u0, u1, w0, alpha;
+
41
+
42 static float *dataT, *dataU, *dataV, *dataW;
+
43
+
44 static int ncid, varid, dims[4], idx, ix, iy, iz, nx, ny, nz,
+
45 year, mon, day, hour, min, sec;
+
46
+
47 static size_t start[4], count[4];
+
48
+
49 /* Allocate... */
+
50 ALLOC(dataT, float,
+
51 EP * EY * EX);
+
52 ALLOC(dataU, float,
+
53 EP * EY * EX);
+
54 ALLOC(dataV, float,
+
55 EP * EY * EX);
+
56 ALLOC(dataW, float,
+
57 EP * EY * EX);
+
58
+
59 /* Check arguments... */
+
60 if (argc < 3)
+
61 ERRMSG("Give parameters: <ctl> <metbase>");
+
62
+
63 /* Read control parameters... */
+
64 read_ctl(argv[1], argc, argv, &ctl);
+
65 t0 = scan_ctl(argv[1], argc, argv, "WIND_T0", -1, "0", NULL);
+
66 nx = (int) scan_ctl(argv[1], argc, argv, "WIND_NX", -1, "360", NULL);
+
67 ny = (int) scan_ctl(argv[1], argc, argv, "WIND_NY", -1, "181", NULL);
+
68 nz = (int) scan_ctl(argv[1], argc, argv, "WIND_NZ", -1, "61", NULL);
+
69 z0 = scan_ctl(argv[1], argc, argv, "WIND_Z0", -1, "0", NULL);
+
70 z1 = scan_ctl(argv[1], argc, argv, "WIND_Z1", -1, "60", NULL);
+
71 u0 = scan_ctl(argv[1], argc, argv, "WIND_U0", -1, "38.587660177302", NULL);
+
72 u1 = scan_ctl(argv[1], argc, argv, "WIND_U1", -1, "38.587660177302", NULL);
+
73 w0 = scan_ctl(argv[1], argc, argv, "WIND_W0", -1, "0", NULL);
+
74 alpha = scan_ctl(argv[1], argc, argv, "WIND_ALPHA", -1, "0.0", NULL);
+
75
+
76 /* Check dimensions... */
+
77 if (nx < 1 || nx > EX)
+
78 ERRMSG("Set 1 <= NX <= MAX!");
+
79 if (ny < 1 || ny > EY)
+
80 ERRMSG("Set 1 <= NY <= MAX!");
+
81 if (nz < 1 || nz > EP)
+
82 ERRMSG("Set 1 <= NZ <= MAX!");
+
83
+
84 /* Get time... */
+
85 jsec2time(t0, &year, &mon, &day, &hour, &min, &sec, &r);
+
86 t0 = year * 10000. + mon * 100. + day + hour / 24.;
+
87
+
88 /* Set filename... */
+
89 sprintf(filename, "%s_%d_%02d_%02d_%02d.nc", argv[2], year, mon, day, hour);
+
90
+
91 /* Create netCDF file... */
+
92 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
93
+
94 /* Create dimensions... */
+
95 NC(nc_def_dim(ncid, "time", 1, &dims[0]));
+
96 NC(nc_def_dim(ncid, "lev", (size_t) nz, &dims[1]));
+
97 NC(nc_def_dim(ncid, "lat", (size_t) ny, &dims[2]));
+
98 NC(nc_def_dim(ncid, "lon", (size_t) nx, &dims[3]));
+
99
+
100 /* Create variables... */
+
101 NC_DEF_VAR("time", NC_DOUBLE, 1, &dims[0], "time", "day as %Y%m%d.%f");
+
102 NC_DEF_VAR("lev", NC_DOUBLE, 1, &dims[1], "air_pressure", "Pa");
+
103 NC_DEF_VAR("lat", NC_DOUBLE, 1, &dims[2], "latitude", "degrees_north");
+
104 NC_DEF_VAR("lon", NC_DOUBLE, 1, &dims[3], "longitude", "degrees_east");
+
105 NC_DEF_VAR("T", NC_FLOAT, 4, &dims[0], "Temperature", "K");
+
106 NC_DEF_VAR("U", NC_FLOAT, 4, &dims[0], "zonal wind", "m s**-1");
+
107 NC_DEF_VAR("V", NC_FLOAT, 4, &dims[0], "meridional wind", "m s**-1");
+
108 NC_DEF_VAR("W", NC_FLOAT, 4, &dims[0], "vertical velocity", "Pa s**-1");
+
109
+
110 /* End definition... */
+
111 NC(nc_enddef(ncid));
+
112
+
113 /* Set coordinates... */
+
114 for (ix = 0; ix < nx; ix++)
+
115 dataLon[ix] = 360.0 / nx * (double) ix;
+
116 for (iy = 0; iy < ny; iy++)
+
117 dataLat[iy] = 180.0 / (ny - 1) * (double) iy - 90;
+
118 for (iz = 0; iz < nz; iz++)
+
119 dataZ[iz] = 100. * P(LIN(0.0, z0, nz - 1.0, z1, iz));
+
120
+
121 /* Write coordinates... */
+
122 NC_PUT_DOUBLE("time", &t0, 0);
+
123 NC_PUT_DOUBLE("lev", dataZ, 0);
+
124 NC_PUT_DOUBLE("lat", dataLat, 0);
+
125 NC_PUT_DOUBLE("lon", dataLon, 0);
+
126
+
127 /* Create wind fields (Williamson et al., 1992)... */
+
128 for (ix = 0; ix < nx; ix++)
+
129 for (iy = 0; iy < ny; iy++)
+
130 for (iz = 0; iz < nz; iz++) {
+
131 idx = (iz * ny + iy) * nx + ix;
+
132 dataU[idx] = (float) (LIN(0.0, u0, nz - 1.0, u1, iz)
+
133 * (cos(dataLat[iy] * M_PI / 180.0)
+
134 * cos(alpha * M_PI / 180.0)
+
135 + sin(dataLat[iy] * M_PI / 180.0)
+
136 * cos(dataLon[ix] * M_PI / 180.0)
+
137 * sin(alpha * M_PI / 180.0)));
+
138 dataV[idx] = (float) (-LIN(0.0, u0, nz - 1.0, u1, iz)
+
139 * sin(dataLon[ix] * M_PI / 180.0)
+
140 * sin(alpha * M_PI / 180.0));
+
141 dataW[idx] = (float) DZ2DP(1e-3 * w0, dataZ[iz]);
+
142 }
+
143
+
144 /* Write data... */
+
145 NC_PUT_FLOAT("T", dataT, 0);
+
146 NC_PUT_FLOAT("U", dataU, 0);
+
147 NC_PUT_FLOAT("V", dataV, 0);
+
148 NC_PUT_FLOAT("W", dataW, 0);
+
149
+
150 /* Close file... */
+
151 NC(nc_close(ncid));
+
152
+
153 /* Free... */
+
154 free(dataT);
+
155 free(dataU);
+
156 free(dataV);
+
157 free(dataW);
+
158
+
159 return EXIT_SUCCESS;
+
160}
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NC_PUT_FLOAT(varname, ptr, hyperslab)
Write netCDF float array.
Definition: libtrac.h:553
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
Write netCDF double array.
Definition: libtrac.h:523
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
Control parameters.
Definition: libtrac.h:799
+
+Here is the call graph for this function:
+
+
+ + + + + + + +
+ +
+
+
+
+ + + + diff --git a/doxygen/wind_8c.js b/doxygen/wind_8c.js new file mode 100644 index 0000000000..1b5e3e3c2a --- /dev/null +++ b/doxygen/wind_8c.js @@ -0,0 +1,4 @@ +var wind_8c = +[ + [ "main", "wind_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map b/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map new file mode 100644 index 0000000000..48db4f4922 --- /dev/null +++ b/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 b/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 new file mode 100644 index 0000000000..9d12ede98e --- /dev/null +++ b/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.md5 @@ -0,0 +1 @@ +9a067183c84417b60c1f9f2bc1e549ab \ No newline at end of file diff --git a/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png b/doxygen/wind_8c_a0ddf1224851353fc92bfbff6f499fa97_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..880307642473c636f07a28f7f2041dffcbdfc646 GIT binary patch literal 9992 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 LDDhM5?Wg|(E({H) literal 0 HcmV?d00001 diff --git a/doxygen/wind_8c_source.html b/doxygen/wind_8c_source.html new file mode 100644 index 0000000000..bcf9350fef --- /dev/null +++ b/doxygen/wind_8c_source.html @@ -0,0 +1,281 @@ + + + + + + + +MPTRAC: wind.c Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MPTRAC +
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
wind.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2021 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Main...
+
29 ------------------------------------------------------------ */
+
30
+
31int main(
+
32 int argc,
+
33 char *argv[]) {
+
34
+
35 ctl_t ctl;
+
36
+
37 static char filename[LEN];
+
38
+
39 static double r, t0, z0, z1, dataLon[EX], dataLat[EY], dataZ[EP],
+
40 u0, u1, w0, alpha;
+
41
+
42 static float *dataT, *dataU, *dataV, *dataW;
+
43
+
44 static int ncid, varid, dims[4], idx, ix, iy, iz, nx, ny, nz,
+
45 year, mon, day, hour, min, sec;
+
46
+
47 static size_t start[4], count[4];
+
48
+
49 /* Allocate... */
+
50 ALLOC(dataT, float,
+
51 EP * EY * EX);
+
52 ALLOC(dataU, float,
+
53 EP * EY * EX);
+
54 ALLOC(dataV, float,
+
55 EP * EY * EX);
+
56 ALLOC(dataW, float,
+
57 EP * EY * EX);
+
58
+
59 /* Check arguments... */
+
60 if (argc < 3)
+
61 ERRMSG("Give parameters: <ctl> <metbase>");
+
62
+
63 /* Read control parameters... */
+
64 read_ctl(argv[1], argc, argv, &ctl);
+
65 t0 = scan_ctl(argv[1], argc, argv, "WIND_T0", -1, "0", NULL);
+
66 nx = (int) scan_ctl(argv[1], argc, argv, "WIND_NX", -1, "360", NULL);
+
67 ny = (int) scan_ctl(argv[1], argc, argv, "WIND_NY", -1, "181", NULL);
+
68 nz = (int) scan_ctl(argv[1], argc, argv, "WIND_NZ", -1, "61", NULL);
+
69 z0 = scan_ctl(argv[1], argc, argv, "WIND_Z0", -1, "0", NULL);
+
70 z1 = scan_ctl(argv[1], argc, argv, "WIND_Z1", -1, "60", NULL);
+
71 u0 = scan_ctl(argv[1], argc, argv, "WIND_U0", -1, "38.587660177302", NULL);
+
72 u1 = scan_ctl(argv[1], argc, argv, "WIND_U1", -1, "38.587660177302", NULL);
+
73 w0 = scan_ctl(argv[1], argc, argv, "WIND_W0", -1, "0", NULL);
+
74 alpha = scan_ctl(argv[1], argc, argv, "WIND_ALPHA", -1, "0.0", NULL);
+
75
+
76 /* Check dimensions... */
+
77 if (nx < 1 || nx > EX)
+
78 ERRMSG("Set 1 <= NX <= MAX!");
+
79 if (ny < 1 || ny > EY)
+
80 ERRMSG("Set 1 <= NY <= MAX!");
+
81 if (nz < 1 || nz > EP)
+
82 ERRMSG("Set 1 <= NZ <= MAX!");
+
83
+
84 /* Get time... */
+
85 jsec2time(t0, &year, &mon, &day, &hour, &min, &sec, &r);
+
86 t0 = year * 10000. + mon * 100. + day + hour / 24.;
+
87
+
88 /* Set filename... */
+
89 sprintf(filename, "%s_%d_%02d_%02d_%02d.nc", argv[2], year, mon, day, hour);
+
90
+
91 /* Create netCDF file... */
+
92 NC(nc_create(filename, NC_CLOBBER, &ncid));
+
93
+
94 /* Create dimensions... */
+
95 NC(nc_def_dim(ncid, "time", 1, &dims[0]));
+
96 NC(nc_def_dim(ncid, "lev", (size_t) nz, &dims[1]));
+
97 NC(nc_def_dim(ncid, "lat", (size_t) ny, &dims[2]));
+
98 NC(nc_def_dim(ncid, "lon", (size_t) nx, &dims[3]));
+
99
+
100 /* Create variables... */
+
101 NC_DEF_VAR("time", NC_DOUBLE, 1, &dims[0], "time", "day as %Y%m%d.%f");
+
102 NC_DEF_VAR("lev", NC_DOUBLE, 1, &dims[1], "air_pressure", "Pa");
+
103 NC_DEF_VAR("lat", NC_DOUBLE, 1, &dims[2], "latitude", "degrees_north");
+
104 NC_DEF_VAR("lon", NC_DOUBLE, 1, &dims[3], "longitude", "degrees_east");
+
105 NC_DEF_VAR("T", NC_FLOAT, 4, &dims[0], "Temperature", "K");
+
106 NC_DEF_VAR("U", NC_FLOAT, 4, &dims[0], "zonal wind", "m s**-1");
+
107 NC_DEF_VAR("V", NC_FLOAT, 4, &dims[0], "meridional wind", "m s**-1");
+
108 NC_DEF_VAR("W", NC_FLOAT, 4, &dims[0], "vertical velocity", "Pa s**-1");
+
109
+
110 /* End definition... */
+
111 NC(nc_enddef(ncid));
+
112
+
113 /* Set coordinates... */
+
114 for (ix = 0; ix < nx; ix++)
+
115 dataLon[ix] = 360.0 / nx * (double) ix;
+
116 for (iy = 0; iy < ny; iy++)
+
117 dataLat[iy] = 180.0 / (ny - 1) * (double) iy - 90;
+
118 for (iz = 0; iz < nz; iz++)
+
119 dataZ[iz] = 100. * P(LIN(0.0, z0, nz - 1.0, z1, iz));
+
120
+
121 /* Write coordinates... */
+
122 NC_PUT_DOUBLE("time", &t0, 0);
+
123 NC_PUT_DOUBLE("lev", dataZ, 0);
+
124 NC_PUT_DOUBLE("lat", dataLat, 0);
+
125 NC_PUT_DOUBLE("lon", dataLon, 0);
+
126
+
127 /* Create wind fields (Williamson et al., 1992)... */
+
128 for (ix = 0; ix < nx; ix++)
+
129 for (iy = 0; iy < ny; iy++)
+
130 for (iz = 0; iz < nz; iz++) {
+
131 idx = (iz * ny + iy) * nx + ix;
+
132 dataU[idx] = (float) (LIN(0.0, u0, nz - 1.0, u1, iz)
+
133 * (cos(dataLat[iy] * M_PI / 180.0)
+
134 * cos(alpha * M_PI / 180.0)
+
135 + sin(dataLat[iy] * M_PI / 180.0)
+
136 * cos(dataLon[ix] * M_PI / 180.0)
+
137 * sin(alpha * M_PI / 180.0)));
+
138 dataV[idx] = (float) (-LIN(0.0, u0, nz - 1.0, u1, iz)
+
139 * sin(dataLon[ix] * M_PI / 180.0)
+
140 * sin(alpha * M_PI / 180.0));
+
141 dataW[idx] = (float) DZ2DP(1e-3 * w0, dataZ[iz]);
+
142 }
+
143
+
144 /* Write data... */
+
145 NC_PUT_FLOAT("T", dataT, 0);
+
146 NC_PUT_FLOAT("U", dataU, 0);
+
147 NC_PUT_FLOAT("V", dataV, 0);
+
148 NC_PUT_FLOAT("W", dataW, 0);
+
149
+
150 /* Close file... */
+
151 NC(nc_close(ncid));
+
152
+
153 /* Free... */
+
154 free(dataT);
+
155 free(dataU);
+
156 free(dataV);
+
157 free(dataW);
+
158
+
159 return EXIT_SUCCESS;
+
160}
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Temporal interpolation of meteo data.
Definition: libtrac.c:1430
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
MPTRAC library declarations.
+
#define LEN
Maximum length of ASCII data lines.
Definition: libtrac.h:162
+
#define NC(cmd)
Execute netCDF library command and check result.
Definition: libtrac.h:486
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define EY
Maximum number of latitudes for meteo data.
Definition: libtrac.h:192
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define EX
Maximum number of longitudes for meteo data.
Definition: libtrac.h:187
+
#define DZ2DP(dz, p)
Convert vertical distance to pressure change.
Definition: libtrac.h:291
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define NC_PUT_FLOAT(varname, ptr, hyperslab)
Write netCDF float array.
Definition: libtrac.h:553
+
#define EP
Maximum number of pressure levels for meteo data.
Definition: libtrac.h:182
+
#define NC_PUT_DOUBLE(varname, ptr, hyperslab)
Write netCDF double array.
Definition: libtrac.h:523
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
#define NC_DEF_VAR(varname, type, ndims, dims, long_name, units)
Define netCDF variable.
Definition: libtrac.h:493
+
Control parameters.
Definition: libtrac.h:799
+
int main(int argc, char *argv[])
Definition: wind.c:31
+
+
+ + + +
+ +
+
+ + +
+ +
+ +
+
met_spec.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2021 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Dimensions...
+
29 ------------------------------------------------------------ */
+
30
+
32#define PMAX EX
+
33
+
34/* ------------------------------------------------------------
+
35 Functions...
+
36 ------------------------------------------------------------ */
+
37
+
38void fft_help(
+
39 double *fcReal,
+
40 double *fcImag,
+
41 int n);
+
42
+
43/* ------------------------------------------------------------
+
44 Main...
+
45 ------------------------------------------------------------ */
+
46
+
47int main(
+
48 int argc,
+
49 char *argv[]) {
+
50
+
51 ctl_t ctl;
+
52
+
53 clim_t *clim;
+
54
+
55 met_t *met;
+
56
+
57 FILE *out;
+
58
+
59 static double cutImag[PMAX], cutReal[PMAX], lx[PMAX], A[PMAX], phi[PMAX],
+
60 wavemax;
+
61
+
62 /* Allocate... */
+
63 ALLOC(clim, clim_t, 1);
+
64 ALLOC(met, met_t, 1);
+
65
+
66 /* Check arguments... */
+
67 if (argc < 4)
+
68 ERRMSG("Give parameters: <ctl> <spec.tab> <met0>");
+
69
+
70 /* Read control parameters... */
+
71 read_ctl(argv[1], argc, argv, &ctl);
+
72 wavemax =
+
73 (int) scan_ctl(argv[1], argc, argv, "SPEC_WAVEMAX", -1, "7", NULL);
+
74
+
75 /* Read climatological data... */
+
76 read_clim(&ctl, clim);
+
77
+
78 /* Read meteorological data... */
+
79 if (!read_met(argv[3], &ctl, clim, met))
+
80 ERRMSG("Cannot read meteo data!");
+
81
+
82 /* Create output file... */
+
83 LOG(1, "Write spectral data file: %s", argv[2]);
+
84 if (!(out = fopen(argv[2], "w")))
+
85 ERRMSG("Cannot create file!");
+
86
+
87 /* Write header... */
+
88 fprintf(out,
+
89 "# $1 = time [s]\n"
+
90 "# $2 = altitude [km]\n"
+
91 "# $3 = longitude [deg]\n" "# $4 = latitude [deg]\n");
+
92 for (int ix = 0; ix <= wavemax; ix++) {
+
93 fprintf(out, "# $%d = wavelength (PW%d) [km]\n", 5 + 3 * ix, ix);
+
94 fprintf(out, "# $%d = amplitude (PW%d) [K]\n", 6 + 3 * ix, ix);
+
95 fprintf(out, "# $%d = phase (PW%d) [deg]\n", 7 + 3 * ix, ix);
+
96 }
+
97
+
98 /* Loop over pressure levels... */
+
99 for (int ip = 0; ip < met->np; ip++) {
+
100
+
101 /* Write output... */
+
102 fprintf(out, "\n");
+
103
+
104 /* Loop over latitudes... */
+
105 for (int iy = 0; iy < met->ny; iy++) {
+
106
+
107 /* Copy data... */
+
108 for (int ix = 0; ix < met->nx; ix++) {
+
109 cutReal[ix] = met->t[ix][iy][ip];
+
110 cutImag[ix] = 0.0;
+
111 }
+
112
+
113 /* FFT... */
+
114 fft_help(cutReal, cutImag, met->nx);
+
115
+
116 /*
+
117 Get wavelength, amplitude, and phase:
+
118 A(x) = A[0] + A[1] * cos(2 pi x / lx[1] + phi[1]) + A[2] * cos...
+
119 */
+
120 for (int ix = 0; ix < met->nx; ix++) {
+
121 lx[ix] = DEG2DX(met->lon[met->nx - 1] - met->lon[0], met->lat[iy])
+
122 / ((ix < met->nx / 2) ? (double) ix : -(double) (met->nx - ix));
+
123 A[ix] = (ix == 0 ? 1.0 : 2.0) / (met->nx)
+
124 * sqrt(gsl_pow_2(cutReal[ix]) + gsl_pow_2(cutImag[ix]));
+
125 phi[ix]
+
126 = 180. / M_PI * atan2(cutImag[ix], cutReal[ix]);
+
127 }
+
128
+
129 /* Write data... */
+
130 fprintf(out, "%.2f %g %g %g", met->time, Z(met->p[ip]), 0.0,
+
131 met->lat[iy]);
+
132 for (int ix = 0; ix <= wavemax; ix++)
+
133 fprintf(out, " %g %g %g", lx[ix], A[ix], phi[ix]);
+
134 fprintf(out, "\n");
+
135 }
+
136 }
+
137
+
138 /* Close file... */
+
139 fclose(out);
+
140
+
141 /* Free... */
+
142 free(clim);
+
143 free(met);
+
144
+
145 return EXIT_SUCCESS;
+
146}
+
147
+
148/*****************************************************************************/
+
149
+ +
151 double *fcReal,
+
152 double *fcImag,
+
153 int n) {
+
154
+
155 gsl_fft_complex_wavetable *wavetable;
+
156 gsl_fft_complex_workspace *workspace;
+
157
+
158 double data[2 * PMAX];
+
159
+
160 int i;
+
161
+
162 /* Check size... */
+
163 if (n > PMAX)
+
164 ERRMSG("Too many data points!");
+
165
+
166 /* Allocate... */
+
167 wavetable = gsl_fft_complex_wavetable_alloc((size_t) n);
+
168 workspace = gsl_fft_complex_workspace_alloc((size_t) n);
+
169
+
170 /* Set data (real, complex)... */
+
171 for (i = 0; i < n; i++) {
+
172 data[2 * i] = fcReal[i];
+
173 data[2 * i + 1] = fcImag[i];
+
174 }
+
175
+
176 /* Calculate FFT... */
+
177 gsl_fft_complex_forward(data, 1, (size_t) n, wavetable, workspace);
+
178
+
179 /* Copy data... */
+
180 for (i = 0; i < n; i++) {
+
181 fcReal[i] = data[2 * i];
+
182 fcImag[i] = data[2 * i + 1];
+
183 }
+
184
+
185 /* Free... */
+
186 gsl_fft_complex_wavetable_free(wavetable);
+
187 gsl_fft_complex_workspace_free(workspace);
+
188}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define DEG2DX(dlon, lat)
Convert degrees to zonal distance.
Definition: libtrac.h:270
+
int main(int argc, char *argv[])
Definition: met_spec.c:47
+
#define PMAX
Maximum number of data points for spectral analysis.
Definition: met_spec.c:32
+
void fft_help(double *fcReal, double *fcImag, int n)
Definition: met_spec.c:150
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+
+ +
+
+ + +
+ +
+ +
+
met_map.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2023 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Dimensions...
+
29 ------------------------------------------------------------ */
+
30
+
32#define NX 1441
+
33
+
35#define NY 721
+
36
+
37/* ------------------------------------------------------------
+
38 Main...
+
39 ------------------------------------------------------------ */
+
40
+
41int main(
+
42 int argc,
+
43 char *argv[]) {
+
44
+
45 ctl_t ctl;
+
46
+
47 clim_t *clim;
+
48
+
49 met_t *met;
+
50
+
51 FILE *out;
+
52
+
53 static double timem[NX][NY], p0, ps, psm[NX][NY], ts, tsm[NX][NY], zs,
+
54 zsm[NX][NY], us, usm[NX][NY], vs, vsm[NX][NY], lsm, lsmm[NX][NY],
+
55 sst, sstm[NX][NY], pbl, pblm[NX][NY], pt, ptm[NX][NY], t,
+
56 pm[NX][NY], tm[NX][NY], u, um[NX][NY], v, vm[NX][NY],
+
57 w, wm[NX][NY], h2o, h2om[NX][NY], h2ot, h2otm[NX][NY], o3, o3m[NX][NY],
+
58 hno3m[NX][NY], ohm[NX][NY], h2o2m[NX][NY], ho2m[NX][NY], o1dm[NX][NY],
+
59 tdewm[NX][NY], ticem[NX][NY],
+
60 tnatm[NX][NY], lwc, lwcm[NX][NY], iwc, iwcm[NX][NY], cc, ccm[NX][NY],
+
61 z, zm[NX][NY], pv, pvm[NX][NY], zt, ztm[NX][NY], tt, ttm[NX][NY],
+
62 pct, pctm[NX][NY], pcb, pcbm[NX][NY], cl, clm[NX][NY], plcl,
+
63 plclm[NX][NY], plfc, plfcm[NX][NY], pel, pelm[NX][NY], cape,
+
64 capem[NX][NY], cin, cinm[NX][NY], o3c, o3cm[NX][NY], rhm[NX][NY],
+
65 rhicem[NX][NY], theta, ptop, pbot, t0, lon, lon0, lon1, lons[NX], dlon,
+
66 lat, lat0, lat1, lats[NY], dlat, cw[3];
+
67
+
68 static int i, ix, iy, np[NX][NY], npc[NX][NY], npt[NX][NY], nx, ny, ci[3];
+
69
+
70 /* Allocate... */
+
71 ALLOC(clim, clim_t, 1);
+
72 ALLOC(met, met_t, 1);
+
73
+
74 /* Check arguments... */
+
75 if (argc < 4)
+
76 ERRMSG("Give parameters: <ctl> <map.tab> <met0> [ <met1> ... ]");
+
77
+
78 /* Read control parameters... */
+
79 read_ctl(argv[1], argc, argv, &ctl);
+
80 p0 = P(scan_ctl(argv[1], argc, argv, "MAP_Z0", -1, "10", NULL));
+
81 lon0 = scan_ctl(argv[1], argc, argv, "MAP_LON0", -1, "-180", NULL);
+
82 lon1 = scan_ctl(argv[1], argc, argv, "MAP_LON1", -1, "180", NULL);
+
83 dlon = scan_ctl(argv[1], argc, argv, "MAP_DLON", -1, "-999", NULL);
+
84 lat0 = scan_ctl(argv[1], argc, argv, "MAP_LAT0", -1, "-90", NULL);
+
85 lat1 = scan_ctl(argv[1], argc, argv, "MAP_LAT1", -1, "90", NULL);
+
86 dlat = scan_ctl(argv[1], argc, argv, "MAP_DLAT", -1, "-999", NULL);
+
87 theta = scan_ctl(argv[1], argc, argv, "MAP_THETA", -1, "-999", NULL);
+
88
+
89 /* Read climatological data... */
+
90 read_clim(&ctl, clim);
+
91
+
92 /* Loop over files... */
+
93 for (i = 3; i < argc; i++) {
+
94
+
95 /* Read meteorological data... */
+
96 if (!read_met(argv[i], &ctl, clim, met))
+
97 continue;
+
98
+
99 /* Set horizontal grid... */
+
100 if (dlon <= 0)
+
101 dlon = fabs(met->lon[1] - met->lon[0]);
+
102 if (dlat <= 0)
+
103 dlat = fabs(met->lat[1] - met->lat[0]);
+
104 if (lon0 < -360 && lon1 > 360) {
+
105 lon0 = gsl_stats_min(met->lon, 1, (size_t) met->nx);
+
106 lon1 = gsl_stats_max(met->lon, 1, (size_t) met->nx);
+
107 }
+
108 nx = ny = 0;
+
109 for (lon = lon0; lon <= lon1; lon += dlon) {
+
110 lons[nx] = lon;
+
111 if ((++nx) > NX)
+
112 ERRMSG("Too many longitudes!");
+
113 }
+
114 if (lat0 < -90 && lat1 > 90) {
+
115 lat0 = gsl_stats_min(met->lat, 1, (size_t) met->ny);
+
116 lat1 = gsl_stats_max(met->lat, 1, (size_t) met->ny);
+
117 }
+
118 for (lat = lat0; lat <= lat1; lat += dlat) {
+
119 lats[ny] = lat;
+
120 if ((++ny) > NY)
+
121 ERRMSG("Too many latitudes!");
+
122 }
+
123
+
124 /* Average... */
+
125 for (ix = 0; ix < nx; ix++)
+
126 for (iy = 0; iy < ny; iy++) {
+
127
+
128 /* Find pressure level for given theta level... */
+
129 if (theta > 0) {
+
130 ptop = met->p[met->np - 1];
+
131 pbot = met->p[0];
+
132 do {
+
133 p0 = 0.5 * (ptop + pbot);
+
134 intpol_met_space_3d(met, met->t, p0, lons[ix], lats[iy],
+
135 &t0, ci, cw, 1);
+
136 if (THETA(p0, t0) > theta)
+
137 ptop = p0;
+
138 else
+
139 pbot = p0;
+
140 } while (fabs(ptop - pbot) > 1e-5);
+
141 }
+
142
+
143 /* Interpolate meteo data... */
+
144 INTPOL_SPACE_ALL(p0, lons[ix], lats[iy]);
+
145
+
146 /* Averaging... */
+
147 timem[ix][iy] += met->time;
+
148 zm[ix][iy] += z;
+
149 pm[ix][iy] += p0;
+
150 tm[ix][iy] += t;
+
151 um[ix][iy] += u;
+
152 vm[ix][iy] += v;
+
153 wm[ix][iy] += w;
+
154 pvm[ix][iy] += pv;
+
155 h2om[ix][iy] += h2o;
+
156 o3m[ix][iy] += o3;
+
157 lwcm[ix][iy] += lwc;
+
158 iwcm[ix][iy] += iwc;
+
159 ccm[ix][iy] += cc;
+
160 psm[ix][iy] += ps;
+
161 tsm[ix][iy] += ts;
+
162 zsm[ix][iy] += zs;
+
163 usm[ix][iy] += us;
+
164 vsm[ix][iy] += vs;
+
165 lsmm[ix][iy] += lsm;
+
166 sstm[ix][iy] += sst;
+
167 pblm[ix][iy] += pbl;
+
168 pctm[ix][iy] += pct;
+
169 pcbm[ix][iy] += pcb;
+
170 clm[ix][iy] += cl;
+
171 if (gsl_finite(plfc) && gsl_finite(pel) && cape >= ctl.conv_cape
+
172 && (ctl.conv_cin <= 0 || cin < ctl.conv_cin)) {
+
173 plclm[ix][iy] += plcl;
+
174 plfcm[ix][iy] += plfc;
+
175 pelm[ix][iy] += pel;
+
176 capem[ix][iy] += cape;
+
177 cinm[ix][iy] += cin;
+
178 npc[ix][iy]++;
+
179 }
+
180 if (gsl_finite(pt)) {
+
181 ptm[ix][iy] += pt;
+
182 ztm[ix][iy] += zt;
+
183 ttm[ix][iy] += tt;
+
184 h2otm[ix][iy] += h2ot;
+
185 npt[ix][iy]++;
+
186 }
+
187 o3cm[ix][iy] += o3c;
+
188 hno3m[ix][iy] += clim_zm(&clim->hno3, met->time, lats[iy], p0);
+
189 tnatm[ix][iy] +=
+
190 nat_temperature(p0, h2o,
+
191 clim_zm(&clim->hno3, met->time, lats[iy], p0));
+
192 ohm[ix][iy] += clim_oh(&ctl, clim, met->time, lons[ix], lats[iy], p0);
+
193 h2o2m[ix][iy] += clim_zm(&clim->h2o2, met->time, lats[iy], p0);
+
194 ho2m[ix][iy] += clim_zm(&clim->ho2, met->time, lats[iy], p0);
+
195 o1dm[ix][iy] += clim_zm(&clim->o1d, met->time, lats[iy], p0);
+
196 rhm[ix][iy] += RH(p0, t, h2o);
+
197 rhicem[ix][iy] += RHICE(p0, t, h2o);
+
198 tdewm[ix][iy] += TDEW(p0, h2o);
+
199 ticem[ix][iy] += TICE(p0, h2o);
+
200 np[ix][iy]++;
+
201 }
+
202 }
+
203
+
204 /* Create output file... */
+
205 LOG(1, "Write meteorological data file: %s", argv[2]);
+
206 if (!(out = fopen(argv[2], "w")))
+
207 ERRMSG("Cannot create file!");
+
208
+
209 /* Write header... */
+ +
211
+
212 /* Write data... */
+
213 for (iy = 0; iy < ny; iy++) {
+
214 fprintf(out, "\n");
+
215 for (ix = 0; ix < nx; ix++)
+
216 fprintf(out,
+
217 "%.2f %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
218 " %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g"
+
219 " %g %g %g %g %g %g %g %g %g %g %g %g %d %d %d\n",
+
220 timem[ix][iy] / np[ix][iy], Z(pm[ix][iy] / np[ix][iy]),
+
221 lons[ix], lats[iy], pm[ix][iy] / np[ix][iy],
+
222 tm[ix][iy] / np[ix][iy], um[ix][iy] / np[ix][iy],
+
223 vm[ix][iy] / np[ix][iy], wm[ix][iy] / np[ix][iy],
+
224 h2om[ix][iy] / np[ix][iy], o3m[ix][iy] / np[ix][iy],
+
225 zm[ix][iy] / np[ix][iy], pvm[ix][iy] / np[ix][iy],
+
226 psm[ix][iy] / np[ix][iy], tsm[ix][iy] / np[ix][iy],
+
227 zsm[ix][iy] / np[ix][iy], usm[ix][iy] / np[ix][iy],
+
228 vsm[ix][iy] / np[ix][iy], lsmm[ix][iy] / np[ix][iy],
+
229 sstm[ix][iy] / np[ix][iy], ptm[ix][iy] / npt[ix][iy],
+
230 ztm[ix][iy] / npt[ix][iy], ttm[ix][iy] / npt[ix][iy],
+
231 h2otm[ix][iy] / npt[ix][iy], lwcm[ix][iy] / np[ix][iy],
+
232 iwcm[ix][iy] / np[ix][iy], ccm[ix][iy] / np[ix][iy],
+
233 clm[ix][iy] / np[ix][iy], pctm[ix][iy] / np[ix][iy],
+
234 pcbm[ix][iy] / np[ix][iy], plclm[ix][iy] / npc[ix][iy],
+
235 plfcm[ix][iy] / npc[ix][iy], pelm[ix][iy] / npc[ix][iy],
+
236 capem[ix][iy] / npc[ix][iy], cinm[ix][iy] / npc[ix][iy],
+
237 rhm[ix][iy] / np[ix][iy], rhicem[ix][iy] / np[ix][iy],
+
238 tdewm[ix][iy] / np[ix][iy], ticem[ix][iy] / np[ix][iy],
+
239 tnatm[ix][iy] / np[ix][iy], hno3m[ix][iy] / np[ix][iy],
+
240 ohm[ix][iy] / np[ix][iy], h2o2m[ix][iy] / np[ix][iy],
+
241 ho2m[ix][iy] / np[ix][iy], o1dm[ix][iy] / np[ix][iy],
+
242 pblm[ix][iy] / np[ix][iy],
+
243 np[ix][iy], npt[ix][iy], npc[ix][iy]);
+
244 }
+
245
+
246 /* Close file... */
+
247 fclose(out);
+
248
+
249 /* Free... */
+
250 free(clim);
+
251 free(met);
+
252
+
253 return EXIT_SUCCESS;
+
254}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
double clim_zm(const clim_zm_t *zm, const double t, const double lat, const double p)
Interpolate zonal mean climatology.
Definition: libtrac.c:364
+
double nat_temperature(const double p, const double h2o, const double hno3)
Calculate NAT existence temperature.
Definition: libtrac.c:1691
+
double clim_oh(const ctl_t *ctl, const clim_t *clim, const double t, const double lon, const double lat, const double p)
Climatology of OH number concentrations.
Definition: libtrac.c:58
+
void intpol_met_space_3d(met_t *met, float array[EX][EY][EP], double p, double lon, double lat, double *var, int *ci, double *cw, int init)
Spatial interpolation of meteo data.
Definition: libtrac.c:1120
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define INTPOL_SPACE_ALL(p, lon, lat)
Spatial interpolation of all meteo data.
Definition: libtrac.h:344
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define THETA(p, t)
Compute potential temperature.
Definition: libtrac.h:639
+
#define MET_HEADER
Write header for meteo data files.
Definition: libtrac.h:425
+
#define TICE(p, h2o)
Calculate frost point temperature (WMO, 2018).
Definition: libtrac.h:634
+
#define RHICE(p, t, h2o)
Compute relative humidity over ice.
Definition: libtrac.h:592
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define RH(p, t, h2o)
Compute relative humidity over water.
Definition: libtrac.h:588
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define TDEW(p, h2o)
Calculate dew point temperature (WMO, 2018).
Definition: libtrac.h:629
+
int main(int argc, char *argv[])
Definition: met_map.c:41
+
#define NX
Maximum number of longitudes.
Definition: met_map.c:32
+
#define NY
Maximum number of latitudes.
Definition: met_map.c:35
+
Climatological data.
Definition: libtrac.h:1778
+
clim_zm_t ho2
HO2 zonal means.
Definition: libtrac.h:1808
+
clim_zm_t hno3
HNO3 zonal means.
Definition: libtrac.h:1799
+
clim_zm_t o1d
O(1D) zonal means.
Definition: libtrac.h:1811
+
clim_zm_t h2o2
H2O2 zonal means.
Definition: libtrac.h:1805
+
Control parameters.
Definition: libtrac.h:799
+
double conv_cape
CAPE threshold for convection module [J/kg].
Definition: libtrac.h:1237
+
double conv_cin
CIN threshold for convection module [J/kg].
Definition: libtrac.h:1240
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
double lon[EX]
Longitude [deg].
Definition: libtrac.h:1849
+
double time
Time [s].
Definition: libtrac.h:1834
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+
+ +
+
+ + +
+ +
+ +
+
met_lapse.c
+
+
+Go to the documentation of this file.
1/*
+
2 This file is part of MPTRAC.
+
3
+
4 MPTRAC is free software: you can redistribute it and/or modify
+
5 it under the terms of the GNU General Public License as published by
+
6 the Free Software Foundation, either version 3 of the License, or
+
7 (at your option) any later version.
+
8
+
9 MPTRAC is distributed in the hope that it will be useful,
+
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
12 GNU General Public License for more details.
+
13
+
14 You should have received a copy of the GNU General Public License
+
15 along with MPTRAC. If not, see <http://www.gnu.org/licenses/>.
+
16
+
17 Copyright (C) 2013-2021 Forschungszentrum Juelich GmbH
+
18*/
+
19
+
25#include "libtrac.h"
+
26
+
27/* ------------------------------------------------------------
+
28 Dimensions...
+
29 ------------------------------------------------------------ */
+
30
+
32#define LAPSEMIN -20.0
+
33
+
35#define DLAPSE 0.1
+
36
+
38#define IDXMAX 400
+
39
+
40/* ------------------------------------------------------------
+
41 Main...
+
42 ------------------------------------------------------------ */
+
43
+
44int main(
+
45 int argc,
+
46 char *argv[]) {
+
47
+
48 ctl_t ctl;
+
49
+
50 clim_t *clim;
+
51
+
52 met_t *met;
+
53
+
54 FILE *out;
+
55
+
56 static double p2[1000], t[1000], t2[1000], z[1000], z2[1000], lat_mean,
+
57 z_mean;
+
58
+
59 static int hist_max[1000], hist_min[1000], hist_mean[1000], hist_sig[1000],
+
60 nhist_max, nhist_min, nhist_mean, nhist_sig, np;
+
61
+
62 /* Allocate... */
+
63 ALLOC(clim, clim_t, 1);
+
64 ALLOC(met, met_t, 1);
+
65
+
66 /* Check arguments... */
+
67 if (argc < 4)
+
68 ERRMSG("Give parameters: <ctl> <lapse.tab> <met0> [ <met1> ... ]");
+
69
+
70 /* Read control parameters... */
+
71 read_ctl(argv[1], argc, argv, &ctl);
+
72 int dz = (int) scan_ctl(argv[1], argc, argv, "LAPSE_DZ", -1, "20", NULL);
+
73 double lat0 =
+
74 (int) scan_ctl(argv[1], argc, argv, "LAPSE_LAT0", -1, "-90", NULL);
+
75 double lat1 =
+
76 (int) scan_ctl(argv[1], argc, argv, "LAPSE_LAT1", -1, "90", NULL);
+
77 double z0 = (int) scan_ctl(argv[1], argc, argv, "LAPSE_Z0", -1, "0", NULL);
+
78 double z1 =
+
79 (int) scan_ctl(argv[1], argc, argv, "LAPSE_Z1", -1, "100", NULL);
+
80 int intpol =
+
81 (int) scan_ctl(argv[1], argc, argv, "LAPSE_INTPOL", -1, "1", NULL);
+
82
+
83 /* Read climatological data... */
+
84 read_clim(&ctl, clim);
+
85
+
86 /* Loop over files... */
+
87 for (int i = 3; i < argc; i++) {
+
88
+
89 /* Read meteorological data... */
+
90 if (!read_met(argv[i], &ctl, clim, met))
+
91 continue;
+
92
+
93 /* Get altitude and pressure profiles... */
+
94 for (int iz = 0; iz < met->np; iz++)
+
95 z[iz] = Z(met->p[iz]);
+
96 for (int iz = 0; iz <= 250; iz++) {
+
97 z2[iz] = 0.0 + 0.1 * iz;
+
98 p2[iz] = P(z2[iz]);
+
99 }
+
100
+
101 /* Loop over grid points... */
+
102 for (int ix = 0; ix < met->nx; ix++)
+
103 for (int iy = 0; iy < met->ny; iy++) {
+
104
+
105 /* Check latitude range... */
+
106 if (met->lat[iy] < lat0 || met->lat[iy] > lat1)
+
107 continue;
+
108
+
109 /* Interpolate temperature profile... */
+
110 for (int iz = 0; iz < met->np; iz++)
+
111 t[iz] = met->t[ix][iy][iz];
+
112 if (intpol == 1)
+
113 spline(z, t, met->np, z2, t2, 251, ctl.met_tropo_spline);
+
114 else
+
115 for (int iz = 0; iz <= 250; iz++) {
+
116 int idx = locate_irr(z, met->np, z2[iz]);
+
117 t2[iz] = LIN(z[idx], t[idx], z[idx + 1], t[idx + 1], z2[iz]);
+
118 }
+
119
+
120 /* Loop over vertical levels... */
+
121 for (int iz = 0; iz <= 250; iz++) {
+
122
+
123 /* Check height range... */
+
124 if (z2[iz] < z0 || z2[iz] > z1)
+
125 continue;
+
126
+
127 /* Check surface pressure... */
+
128 if (p2[iz] > met->ps[ix][iy])
+
129 continue;
+
130
+
131 /* Get mean latitude and height... */
+
132 lat_mean += met->lat[iy];
+
133 z_mean += z2[iz];
+
134 np++;
+
135
+
136 /* Get lapse rates within a vertical layer... */
+
137 int nlapse = 0;
+
138 double lapse_max = -1e99, lapse_min = 1e99, lapse_mean =
+
139 0, lapse_sig = 0;
+
140 for (int iz2 = iz + 1; iz2 <= iz + dz; iz2++) {
+
141 lapse_max =
+
142 GSL_MAX(LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]), lapse_max);
+
143 lapse_min =
+
144 GSL_MIN(LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]), lapse_min);
+
145 lapse_mean += LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]);
+
146 lapse_sig += SQR(LAPSE(p2[iz], t2[iz], p2[iz2], t2[iz2]));
+
147 nlapse++;
+
148 }
+
149 lapse_mean /= nlapse;
+
150 lapse_sig = sqrt(GSL_MAX(lapse_sig / nlapse - SQR(lapse_mean), 0));
+
151
+
152 /* Get histograms... */
+
153 int idx = (int) ((lapse_max - LAPSEMIN) / DLAPSE);
+
154 if (idx >= 0 && idx < IDXMAX) {
+
155 hist_max[idx]++;
+
156 nhist_max++;
+
157 }
+
158
+
159 idx = (int) ((lapse_min - LAPSEMIN) / DLAPSE);
+
160 if (idx >= 0 && idx < IDXMAX) {
+
161 hist_min[idx]++;
+
162 nhist_min++;
+
163 }
+
164
+
165 idx = (int) ((lapse_mean - LAPSEMIN) / DLAPSE);
+
166 if (idx >= 0 && idx < IDXMAX) {
+
167 hist_mean[idx]++;
+
168 nhist_mean++;
+
169 }
+
170
+
171 idx = (int) ((lapse_sig - LAPSEMIN) / DLAPSE);
+
172 if (idx >= 0 && idx < IDXMAX) {
+
173 hist_sig[idx]++;
+
174 nhist_sig++;
+
175 }
+
176 }
+
177 }
+
178 }
+
179
+
180 /* Create output file... */
+
181 LOG(1, "Write lapse rate data: %s", argv[2]);
+
182 if (!(out = fopen(argv[2], "w")))
+
183 ERRMSG("Cannot create file!");
+
184
+
185 /* Write header... */
+
186 fprintf(out,
+
187 "# $1 = mean altitude [km]\n"
+
188 "# $2 = mean latitude [deg]\n"
+
189 "# $3 = lapse rate [K/km]\n"
+
190 "# $4 = counts of maxima per bin\n"
+
191 "# $5 = total number of maxima\n"
+
192 "# $6 = normalized frequency of maxima\n"
+
193 "# $7 = counts of minima per bin\n"
+
194 "# $8 = total number of minima\n"
+
195 "# $9 = normalized frequency of minima\n"
+
196 "# $10 = counts of means per bin\n"
+
197 "# $11 = total number of means\n"
+
198 "# $12 = normalized frequency of means\n"
+
199 "# $13 = counts of sigmas per bin\n"
+
200 "# $14 = total number of sigmas\n"
+
201 "# $15 = normalized frequency of sigmas\n\n");
+
202
+
203 /* Write data... */
+
204 double nmax_max = 0, nmax_min = 0, nmax_mean = 0, nmax_sig = 0;
+
205 for (int idx = 0; idx < IDXMAX; idx++) {
+
206 nmax_max = GSL_MAX(hist_max[idx], nmax_max);
+
207 nmax_min = GSL_MAX(hist_min[idx], nmax_min);
+
208 nmax_mean = GSL_MAX(hist_mean[idx], nmax_mean);
+
209 nmax_sig = GSL_MAX(hist_sig[idx], nmax_sig);
+
210 }
+
211 for (int idx = 0; idx < IDXMAX; idx++)
+
212 fprintf(out,
+
213 "%g %g %g %d %d %g %d %d %g %d %d %g %d %d %g\n",
+
214 z_mean / np, lat_mean / np, (idx + .5) * DLAPSE + LAPSEMIN,
+
215 hist_max[idx], nhist_max,
+
216 (double) hist_max[idx] / (double) nmax_max, hist_min[idx],
+
217 nhist_min, (double) hist_min[idx] / (double) nmax_min,
+
218 hist_mean[idx], nhist_mean,
+
219 (double) hist_mean[idx] / (double) nmax_mean, hist_sig[idx],
+
220 nhist_sig, (double) hist_sig[idx] / (double) nmax_sig);
+
221
+
222 /* Close file... */
+
223 fclose(out);
+
224
+
225 /* Free... */
+
226 free(clim);
+
227 free(met);
+
228
+
229 return EXIT_SUCCESS;
+
230}
+
void read_clim(ctl_t *ctl, clim_t *clim)
Read climatological data.
Definition: libtrac.c:2017
+
int locate_irr(const double *xx, const int n, const double x)
Find array index for irregular grid.
Definition: libtrac.c:1642
+
void spline(const double *x, const double *y, const int n, const double *x2, double *y2, const int n2, const int method)
Spline interpolation.
Definition: libtrac.c:5338
+
void read_ctl(const char *filename, int argc, char *argv[], ctl_t *ctl)
Read control parameters.
Definition: libtrac.c:2300
+
double scan_ctl(const char *filename, int argc, char *argv[], const char *varname, int arridx, const char *defvalue, char *value)
Read a control parameter from file or command line.
Definition: libtrac.c:5233
+
int read_met(char *filename, ctl_t *ctl, clim_t *clim, met_t *met)
Read meteo data file.
Definition: libtrac.c:3099
+
MPTRAC library declarations.
+
#define LAPSE(p1, t1, p2, t2)
Calculate lapse rate between pressure levels.
Definition: libtrac.h:416
+
#define ERRMSG(...)
Print error message and quit program.
Definition: libtrac.h:698
+
#define Z(p)
Convert pressure to altitude.
Definition: libtrac.h:658
+
#define P(z)
Convert altitude to pressure.
Definition: libtrac.h:571
+
#define ALLOC(ptr, type, n)
Allocate and clear memory.
Definition: libtrac.h:252
+
#define SQR(x)
Compute square of x.
Definition: libtrac.h:621
+
#define LOG(level,...)
Print log message.
Definition: libtrac.h:682
+
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
Definition: libtrac.h:421
+
int main(int argc, char *argv[])
Definition: met_lapse.c:44
+
#define LAPSEMIN
Lapse rate minimum [K/km.
Definition: met_lapse.c:32
+
#define IDXMAX
Maximum number of histogram bins.
Definition: met_lapse.c:38
+
#define DLAPSE
Lapse rate bin size [K/km].
Definition: met_lapse.c:35
+
Climatological data.
Definition: libtrac.h:1778
+
Control parameters.
Definition: libtrac.h:799
+
int met_tropo_spline
Tropopause interpolation method (0=linear, 1=spline).
Definition: libtrac.h:1188
+
Meteo data.
Definition: libtrac.h:1831
+
int nx
Number of longitudes.
Definition: libtrac.h:1837
+
int ny
Number of latitudes.
Definition: libtrac.h:1840
+
float ps[EX][EY]
Surface pressure [hPa].
Definition: libtrac.h:1858
+
int np
Number of pressure levels.
Definition: libtrac.h:1843
+
float t[EX][EY][EP]
Temperature [K].
Definition: libtrac.h:1924
+
double lat[EY]
Latitude [deg].
Definition: libtrac.h:1852
+
double p[EP]
Pressure [hPa].
Definition: libtrac.h:1855
+
+