-
Notifications
You must be signed in to change notification settings - Fork 9
/
ChangeLog
743 lines (552 loc) · 23.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
===============================================================
Tag name: carma4_09
Originator(s): C Bardeen
Date: 3 Dec 2024
Concentration element changes
M carmastate_mod.F90
M vertical.F90
===============================================================
Tag name: carma4_08
Originator(s): Francis Vitt (fvitt)
Date: 21 Nov 2024
Add missing real kind specifiers and other general misc code clean up.
M adgaquad_mod.F90
M adgaquad_types_mod.F90
M carma_enums_mod.F90
M carma_mod.F90
M carma_precision_mod.F90
M carma_types_mod.F90
M carmaelement_mod.F90
M carmagas_mod.F90
M carmagroup_mod.F90
M carmasolute_mod.F90
M carmastate_mod.F90
M evap_poly.F90
M fractal_meanfield_mod.F90
M freezaerl_koop2000.F90
M freezaerl_mohler2010.F90
M freezaerl_tabazadeh2000.F90
M growevapl.F90
M miess.F90
M planck.F90
M setupbins.F90
M setupckern.F90
M setupcoag.F90
M setupvf_std.F90
M sulfate_utils.F90
M sulfnucrate.F90
M wetr.F90
===============================================================
Tag name: carma4_07
Originator(s): Yunqian Zhu (zywshoon)
Date: 26 Sep 2024
Add switch to control convective diffusion coagulation
Defaut is FALSE
M carma_globaer.h
M carma_mod.F90
M carma_types_mod.F90
M setupckern.F90
===============================================================
Tag name: carma4_06
Originator(s): F Vitt
Date: 5 Sep 2024
Replace LU matrix code with LAPACK lib routine
deleted: lusolvec_mod.F90
modified: fractal_meanfield_mod.F90
===============================================================
Tag name: carma4_05
Originator(s): C Bardeen
Date: 3 Jul 2023
Allow a gas to have a refractive index; fix evaporation problem.
modified: carma_mod.F90
modified: carma_types_mod.F90
modified: carmagas_mod.F90
- Allow a gas to have a refractive index. This is for the optics table
generation for groups that have water in equilibrium, but not as an
actual element in the group (e.g. sulfates).
modified: evap_mono.F90
modified: evap_poly.F90
- Fix a problem where a group that grows may have coremasses that don't
evaporate back to another carma group (i.e. evap2elem is 0).
===============================================================
Tag name: carma4_04
Originator(s): C Bardeen
Date: 20 Jun 2023
Updates for optical properties tables generation
M carma_enums_mod.F90
M carma_globaer.h
M carma_mod.F90
M carma_types_mod.F90
M carmaelement_mod.F90
M carmagroup_mod.F90
M mie.F90
M rhopart.F90
M wetr.F90
===============================================================
Tag name: carma4_03
Originator(s): C Bardeen
Date: 22 Mar 2023
Corrections to core mass fixer and hygroscopicity.
M carmastate_mod.F90
M coremasscheck.F90
A fixcorecol.F90
M hygroscopicity.F90
M microfast.F90
M newstate.F90
M newstate_calc.F90
M vertical.F90
===============================================================
Tag name: carma4_02
Originator(s): Mike Mills, Francis Vitt
Date: 30 Jan 2023
One-line Summary: Include Vehkamaki sulfate nucleation option
Purpose of changes:
Implement sulfate nucleation options:
'ZhaoTurco'
Zhao & Turco, JAS, V.26, No.5, 1995.
'Vehkamaki'
Vehkamaki, H., M. Kulmala, I. Napari, K.E.J. Lehtinen,
C. Timmreck, M. Noppel and A. Laaksonen, 2002,
An improved parameterization for sulfuric acid-water nucleation
rates for tropospheric and stratospheric conditions,
J. Geophys. Res., 107, 4622, doi:10.1029/2002jd002184
===============================================================
Tag name: carma4_01
Originator(s): Francis Vitt
Date: 12 Oct 2022
One-line Summary: Changes needed for unstructured grids
Purpose of changes:
. remove igridh, and xmet, ymet, scaling factors
. replace lat lon coordinates used in the error messages with
general xc yc coordinates
===============================================================
Tag name: carma4_00
Originator(s): Mike Mills, Yunquian Zha
Date: 13 Dec 2021
One-line Summary:
Changes to support CARMA trop_strat model
Purpose of changes:
Add hygroscopicity subroutines.
Add core mass check to ensure the first element of the group doesn't go negative.
Add the option that particle neutralization is controlled by the ambiance gas.
===============================================================
Tag name:
Originator(s): Francis Vitt
Date: Sep 17, 2021
One-line Summary:
Initialize an undefined parameter
Purpose of changes:
Set errabs to zero fractal_meanfield. Otherwise, this was undefined
and could be NaNs at times which caused a floating point exception
on casper compiled with the intel compiler.
===============================================================
Tag name:
Originator(s): Charles Bardeen, Pengfei Yu
Date: Aug 13, 2013
One-line Summary:
Added partial initialization and fixed problems with initialization the dry deposition code.
Purpose of changes:
When using fixed initialization, the dry deposition routines were
not getting initialized, so deposition velocities were not calculated.
That has been corrected. Also, the metric scaling was being applied
incorrectly to vd and vf when requested as output from CARMASTATE_Get.
A new option (partialinit) has been added that can be used with
fixed initialization to cause reinitialization of fall velocities and
growth kernels, but not coagulation kernels, which are the most expensive
calculate. This gives a result that is intermediate between full and
fixed initialization.
===============================================================
Tag name:
Originator(s): Sean Santos
Date: Dec 27, 2013
One-line Summary:
Support for the NAG Fortran compiler within CAM (nagfor).
Purpose of changes:
Made many changes to work with the NAG compiler within CAM. These include
mostly changes to deal with kind in a standard-conforming way (as opposed
to using non-standard intrinsics), and changes to ensure that the code
contains no more than 132 characters per line.
miess.F90 has more extensive changes; this module used "equivalence" in a
way not allowed by the standard, and so much of the code had to be
re-written to work on complex numbers without associating their components
to reals.
The Makefile is not currently updated with support for nagfor.
===============================================================
Tag name:
Originator(s): Chuck Bardeen
Date: Nov 15, 2013
One-line Summary:
Support for the gfortran compiler.
Purpose of changes:
Support was added to the Makefile for the gfortran compiler, and
some compatibility bugs were fixed in the code so that it would
compile and link under gfortran.
===============================================================
Tag name:
Originator(s): Chuck Bardeen, Mike Mills
Date: Nov 14, 2013
One-line Summary:
Sulfates wet radius and density includes the Kelvin effect on water.
Purpose of changes:
Changed the wetr code to take into account the Kelvin effect on the
water in determining the weight percent, density and particle size.
This is a simpler alternative to the weight percent per bin approach
that MIke has used in other CARMA models.
NOTE: There was also a fix for a related bug in rhopart.F90, where
the wrong gas concentration was being used for the sulfate weight
percent calculation.
===============================================================
Tag name:
Originator(s): Chuck Bardeen
Date: Nov 3, 2013
One-line Summary:
Neutralized sulfates as a function of volume fraction of core mass.
Purpose of changes:
Changes to allow for neutralization of sulfates where the neutralization
is a function of the volume fraction of the core mass. This replaces
neutralization by scaling the saturation vapor pressure. NOTE: This
solution is currently not used for ice particles or when particle
heating is being used.
===============================================================
Tag name:
Originator(s): Sean Santos
Date: July 15, 2013
One-line Summary:
Set rprat to 1 for all non-fractals.
Purpose of changes:
Setting rprat to 1._r8 for I_HEXAGON and I_CYLINDER shapes will prevent
errors due to uninitialized data for the cirrus/dust model.
===============================================================
Tag name:
Originator(s): Sean Santos
Date: July 2, 2013
One-line Summary:
Fix build with debug options on and on compilers other than Intel.
Purpose of changes:
Fix several compatibility issues with PGI and Lahey. fractal_meanfield_mod
in particular used Intel compiler extensions throughout.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: June 14, 2013
One-line Summary:
Added sulfate heterogeneous nucleation and allow sulfuric acid
vapor pressure to be adjusted for neutralization
Purpose of changes:
Add heterogeneous nucleation of sulfate aerosols to the binary
homogeneous nucleation. Also reduced the vapor pressure for
"neutralized" aerosols based upon Marti et al. 1997. Neutralization
is treated very simplistically and is either all or none and just
affects the vapor pressure.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: May 17, 2013
One-line Summary:
Changed way optical properties are handled
Purpose of changes:
The optical properties used to be initialized by default to be
used by particle heating; however, the fractal code can take a
long time to calculate the optical properties. So only do the
internal initialization if particle heating is enabled. Added
another interface to the Group to set the optical properties to
allow them to come from an external source.
===============================================================
Tag name:
Originator(s): Charles Bardeen, Pete Colarco
Date: May 13, 2013
One-line Summary:
Fixed bug in nucleation rate statistic
Purpose of changes:
Changed how the nucleation rate statistic is calculated to work
around two previous bugs that involved try to calculate the
statistic after the particle count had been updated and not
including the nucleation loss rate in the calculation.
===============================================================
Tag name:
Originator(s): Eric Wolf, Charles Bardeen
Date: May 9, 2013
One-line Summary:
Added support for fractal particles.
Purpose of changes:
Allows particles to grow fractally, which means that particles are made
up of monomers of a single size that will aggregate together in patterns
that depend on the particles fractal dimension. This will affect growth,
sedimentation, coagulation, deposition and optical properties.
===============================================================
Tag name:
Originator(s): Sean Santos
Date: April 24, 2013
One-line Summary: Fix problems with different compilers and debug flags.
Purpose of changes:
Some cases where the carma_type object had "intent(inout)" were changed to
"intent(in)". This would have been required if those routines had had
explicit interfaces, because intent(in) arguments can only be passed as
arguments that are also intent(in), or as arguments with no explicitly
specified intent.
Since Fortran 90, imag and aimag are identical generic intrinsics on most
compilers. However, aimag is the name in the Fortran standards, while imag
is a compiler extension. Therefore "imag" has been changed to "aimag" and
comments that are no longer relevant have been removed.
===============================================================
Tag name:
Originator(s): Charles Bardeen, Mike Mills
Date: March 18, 2013
One-line Summary:
Some bug fixes related to sulfates, to evaporation, mie code
and coagulation kernels.
Purpose of changes:
The wet radius for sulfates was not being calculated properly, since
it was missing a dry particle density term. The new wet radius will be
roughly twice what it was before. Also made some changes to allow specification
of sulfuric acid in CARMASTATE_CreateFromReference, so that initialization
from a reference profile can be used with sulfate models. Put some limits
on calculations in sulfate utilities for practical temperature ranges.
Fixed a problem with total evaporation that affected some models.
Fixed a problem with types in the optical properties calculation when
using Bohren and Huffman.
Fixed a problem with the way the coagulation due to convection was
being calculated that caused asymmetric coagulation kernels.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: September 7, 2012
One-line Summary:
Fix bug in pheat.F90 when no solute is specified.
Purpose of changes:
A check to exclude a calculation in the particle growth code when
no solutes are present was coded incorrectly causing the model
to crash when growth is enabled, core elements exist in the group
and no solutes are defined for the cores.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: January 26, 2011
One-line Summary:
Add capability for clear sky processing when using in-cloud
and gridbox average particles.
Purpose of changes:
Allows two sets of microphysical calculations to be done in one
Step call. One is for the fraction of the grid box that is
in-cloud and the other is for the remaining clear sky portion.
The entire mass of particle groups that are "cloud" are only
processed in the in-cloud portion. Other groups can also
condense liquid, but be over the entire gridbox. These would
have "is cloud" as false and will be processed in both the
in-cloud and clear sky portions of the grid box. Sedimentation
is only done once on the gridbox average values, but coagulation
and growth are done twice.
Two tests have been added for this :
- GROWINTEST = in-cloud test
- GROWCLRTEST = in-cloud & clear sky test
===============================================================
Tag name:
Originator(s): Charles Bardeen, Mike Mills
Date: December 1, 2011
One-line Summary:
Bug fixes for sulfate aerosols and some additional diagnostic
information.
Purpose of changes:
Fixes problems found while trying to test sulfates aerosols in
WACCM/CARMA, where every cold temperatures are possible. Also
Also producing some additional diagnostics to help diagnose the
sulfate physics.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: November 8, 2011
One-line Summary:
Allow configurable selection of aerosol freezing method and cleanup
error messages.
Purpose of changes:
Made nucproc a bit field, so that the aerosol freezing method can
be specified without needing to modify the code, and so that it can
be combined with nucleation of glassy aerosols. Also surpress an
error message from negative temperature unless it is the last
retry. Added a test case (NUC2TEST.exe) to see at what supersaturation
aerosol freezing begins.
===============================================================
Tag name:
Originator(s): Charles Bardeen, Mike Mills
Date: October 9, 2011
One-line Summary:
Fixes to support high (thermospheric) temperatures in the sulfate
code.
Purpose of changes:
Modified some of the sulfate code to handle temperatures that
result in 0 wtpct. This was causing WACCM to crash with the
sulfate model.
===============================================================
Tag name:
Originator(s): Charles Bardeen, Tianyi Fan
Date: September 3, 2011
One-line Summary:
Added sulfate aerosols.
Purpose of changes:
Added support for sulfuric acid and sulfate aerosols. Also fixed
some problems with the way latent and particle heats were applied
when substepping was being used. Made the convergence criteria
more configurable. The sulfate aerosol code is a significantly
modified version of code from that provided by Tianyi Fan. Her
code started with work done by Mike Mills and then was modified
by Jason English, Tianyi Fan and Chuck Bardeen.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: August 19, 2011
One-line Summary:
Bug fixes and enhancements to the particle heating code.
Purpose of changes:
Fixed a few bugs found running in the debugger, and changed
dry deposition so that surface friction and aerodynamic resistance
are provided and used per land surface type.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: August 9, 2011
One-line Summary:
Enhancements to the particle heating code.
Purpose of changes:
Added band integrals for the planck function to provide a more
accurate estimate of outgoing radiation for particle heating. Also
modified the test case to start the SW band at a non-zero wavelength.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: August 4, 2011
One-line Summary:
Enhancements to the particle heating code.
Purpose of changes:
Added the ability to flag overlap bands in for the particle heating
calculation. These are bands which have added energy coming in; however,
the emission should only be done in one of the bands. This is needed
for the CAM radiation bands. Added the Bohren and Huffman mie routine,
to provide a routine that handles a broader array of sizes and refractive
indicies. Also changed the output from particle temperature to the difference
in particle temperature, since that is more relevant to the impact on
growth rates and temperatures may change for other reasons making it hard
to do the difference later.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: July 14, 2011
One-line Summary:
Setup tests to be run as regression tests.
Purpose of changes:
Added two new scripts run-all.csh and run-regress.csh. run-regress.csh
runs the tests and then compares the answer to previously generated
results in tests/bench. An error is generated if the results differ.
To make this usable, all of the tests have be modified to have minimal
output to the screen for normal operation.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: July 13, 2011
One-line Summary:
Support for particle heating and some bug fixes
Purpose of changes:
Added support for passing radiative intensity into CARMA and
having that affect the particle growth rates and partcile
temperature.This is exercised by carma_pheattest.F90. Changed
initialization, so pkernel is only calcualted once to speed
things up a little. Made area ratio and radius ratio group
properties, so there is more flexibility for setting group
shape.
===============================================================
Tag name:
Originator(s): Charles Bardeen
Date: June 8, 2011
One-line Summary:
Support for PGI and g95 compilers
Purpose of changes:
Some Fortran compilers have preprocessors that failed to correctly handle
the macros because they recursively tried to replace the name multiple
times. To prevent this, the field names have been changes to have f_XXX
so they don't conflict with the macro name XXX.
===============================================================
Tag name: 3.0.1
Originator(s): Tianyi Fan, Charles Bardeen
Date: December 1, 2010
One-line Summary:
Add wet deposition to sedimentation.
Purpose of changes:
Added support for dry deposition to the sedimentation routine in CARMA.
Surface friction and land fraction are supplied by the parent model.
===============================================================
Tag name: 3.0.0
Originator(s): Charles Bardeen
Date: August 11, 2010
One-line Summary:
Initial release of the F90 version of CARMA based upon F77 CARMA 2.3
Purpose of changes:
A major revision of CARMA 2.3, with design goals of porting it to
Fortran 90, and designing it to be embedded in other models like CAM
and GEOS.
Changes for F90:
- All code converted to F90 (wrappers to keep core code similar to F77 code)
- Use modules to replace common blocks
- Dynamic memory allocation
- Thread safe
- Use array operations when possible
- Use implicit none
Changes for embedded models:
- Single column
- Programmatic interface to define microphysical model
- Initialize from parent model state (mks units)
- Step() can be multithreaded
- Generate optical properties (mie coefficients)
- Scale for cloud fraction
- Detrain particles
- Store information about CARMA needed for parent models (e.g. wet deposition coefficients, diagnostic group, ...)
- Allow a fixed defintion of latent heat, consitent with parent model
Updated algortihms:
- Aerosol freezing (Koop 2000)
- Water saturation vapor pressure (Murphy & Koop 2005)
New algorithms:
- Nucleation of glassy aerosols (Murray et al. 2010)
- Ice particle density as a function of size (Heymsfield & Schmitt, 2010)
- Ice fall velocity (Heymsfield & Westbrook, 2010)
- Particle swelling with relative humidity, wet radius (Gerber 1985; Fitzgerald 1975)
- Brownian Diffusion
New features:
- Allow specification of minimum mass rather than just radius
- Variable density (per bin) within an element
- Determine sedimentation to the surface
- Dynamically allocate ACAP in miess based upon NXM1
Performance:
- Only initialize the components needed for the model configuration
- Add retry logic to newstate/microfast, to minimize the number of substeps needed
- Reduce size of data structures used by CARMA
- Reorder some operations for faster array access
- Optional initialization to a fixed reference temperature profile
- Optional explicit sedimentation (substepped)
- Reuse allocated memory in CARMASTATE to reduce memory allocation
Bugs fixed:
- Mass & energy conservation
- Various bugs in fall velocity calculation
- Scaling problems with rlheat
- Optional Initialize every timestep for maximum accuracy
- Various problems with setting up the model configuration (nucleation tables, scrit, nucgas, ...)
- Improved growth stability and convergence
- Improved stability of aerosol freezing (tabazadeh 2000)
- Evaporation bugs (cmf not getting set, total evaporation ncore=0)
- Modified growth equation for better approximation
- Correct usage of SMALL_PC and FEW_PC
Algorithms eliminated:
- Horizontal advection
- Hydrostatic approximation
- Eddy diffusion
- Mixed phase particles
- Radiative Transfer
Known Issues:
- PPM advection code has noisy sedimentation when using hybrid coordinates
- Growth code is not mass or energy conserving, so rlheat and gc are recalculated based upon condensed mass change
- PPM advection code does not return fluxes out the top and bottom of the column, so a kludge was added to get flux out the bottom as column difference
- Estimates for the number of substeps needed (ntsubsteps) are not very accurate
- Full initialization (rather than to reference T) can be very slow, particularly for coagulation
- Parameterizations for latent heats give odd values at low temperatures, use fixed values instead
- Standard fall velocity routine has odd kinks in areas where it transitions between different Reynolds regimes
- Standard shape fall velocity routine is not handling all shapes and aspect ratios correctly
- Mie calculation code can still exceed IACAP estimates even though dynamically allocating ACAP
- Core mass is sometimes larger than total mass, can happen from parent model advection, but perhaps other sources
===============================================================