forked from feelpp/verdandi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
history
660 lines (490 loc) · 23.3 KB
/
history
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
Version 1.7 (2015-09-28)
-----------
* Methods
- Added the nudging method, implemented in 'Nudging'.
- Added 'FrontPositionObserver', designed to work with
'LevelSetObservationManager'.
* Models
- Added two new methods to 'QuadraticModel': 'GetStateErrorVarianceProjector()'
and 'GetStateErrorVarianceReduced()'.
- Added a new method to 'QuadraticModel': 'SetMPICommunicator()'.
* Observation Manager
- Added the level-set observation manager 'LevelSetObservationManager'.
- Added a new method to 'LinearObservationManager' and
'ObservationManagerTemplate': 'GetNudgingMatrix'.
* Tools
- Added a test to check the consistency between reduced-order extended Kalman
filter and extended Kalman filter.
- Added a test to check the consistency between the nudging and the extended
Kalman filter.
- Added a new test to the adjoint model test case.
* Interface
- Renamed the 'Forward()' method to 'Prediction()'. Added a method 'Forward()'
which regroups 'Prediction()' and 'Analyze()'.
- Modified the file structure of Verdandi to compile Verdandi as a
library. The non-template files have been separated from the template ones
in the "share" directory.
* Documentation
- Improved the documentation about the installation under Linux and Windows.
- Added documentation about the nudging.
- Added documentation about the level-set observation manager.
- Improved the tutorial about the installation of Google test.
* Bug fixes
- In the reduced-order unscented Kalman filter, a matrix was updated at each
step while it should be updated only at analysis steps
- ROUKF was unable to analyze the first step.
- The binary flag mode was missing when opening input and output files.
- An include was missing under MacOs.
- A variable declaration in "blue.hpp" did not compile with gcc 5.2.
- Changed the system includes for the compilation under Windows.
- A template was not correctly instantiated in the 'ClampedBar' model.
* Miscellaneous
- Improved the tests: all comparisons between methods are using the same test set up.
- Added 'MessageHandler::Recipient_map' to provide access to the static
variable 'recipient_map'.
Version 1.6.1 (2014-11-21)
-------------
* Bug fixes
- In "PythonModel.hxx" and "PythonObservationManager.hxx", the macro providing
the Python version was not working with Clang.
- Various examples are now using the 'RandomPerturbationManager' by default
when compiling with Clang.
- 'ShallowWater' uses 'Newran' by default when compiling with Clang.
* Miscellaneous
- When compiling with Clang, SCons will automatically add the C++0x option.
Version 1.6 (2014-10-29)
-----------
* Methods
- Added support for model error in 'ExtendedKalmanFilter'.
- Improved the display options of 'ExtendedKalmanFilter'.
- Added the option to read the perturbations of 'MonteCarlo' in files instead
of generating them randomly.
- Removed useless copies in 'MonteCarlo'.
- Added the option to change the initial weight in
'DiscountedRidgeRegression'.
- In all methods, the initial condition is now saved before assimilation and
even in the case the model is not initialized by the method.
- Initial import of 'ExtendedMinimaxFilter'.
* Tools
- Added a new perturbation manager: 'RandomPerturbationManager', using the
C++11 library <random>.
- Newran is now optional everywhere.
- Rewrote CPPUnit tests into the framework of Google Test.
- Added tests for 'Model::SetTime', the adjoint model and the tangent linear
operator of the model.
- Added a test to check that the unscented Kalman filter and the extended
Kalman filter give the same results with a linear model and the same
observations.
- Added the directory "test/unit/tool/", primarily with tests on the
perturbation managers.
- Added the new module "module_performance" aiming at keeping track of the
time inside tests.
- Made use of the perturbation managers in the unit tests.
* Interface
- Updated the Python interface to be consistent with the expected description
of uncertain parameters.
- Added the option not to call the Python method 'Initialize' from
'PythonModel::Initialize'.
- Added 'PythonModel::GetModelInstance()'.
* Documentation
- Improved the documentation about the installation under Linux and Windows.
- Added documentation about unit tests.
* Bug fixes
- In 'MonteCarlo::InitializeStep', the model method 'ParameterUpdated' was
called for parameters with option "init_step".
- In 'TR1PerturbationManager', the normal sampling could generate the same
values when the corresponding calls were too close (in time).
- The arguments 'initialize_model' and 'initialize_perturbation_manager' were
not transferred from 'MonteCarlo::Initialize(string, bool, bool)' to
'MonteCarlo::Initialize(VerdandiOps&, bool, bool)'.
- In sequential mode, 'ReducedOrderUnscentedKalmanFilter' saved the analyses
with the forecasts.
- The name of the logger output file was set after the first strings were sent
to the logger.
- The output saver did not append a new line after the data are written in
'WriteText'.
- The initialization and finalization of MPI were missing in
'ForwardDriver.cxx'.
- Moved a call to the logger that was made before the model was initialized.
- Moved the definitions of the default parameters from "Error.cxx" to
"Error.hxx", which avoids compilation failure with given compilers
(including Clang).
- 'FourDimensionalVariational' could not compile without the trajectory
manager.
- The copy constructor of 'TR1PerturbationManager' did not duplicate the
underlying random number generators.
* Miscellaneous
- Renamed "display.show_iteration" and "display.show_time" to
"display.iteration" and "display.time" in the configurations.
- Improved the log messages and made them consistent across methods.
- Improved the detection of C++11.
- Added the option to use either TR1 or Newran in the shallow water model.
- Removed an unused function in observation managers: 'bool
HasObservation(double time)'.
Version 1.5 (2013-02-28)
-----------
* Methods
- In 'FourDimensionalVariational', added the possibility to add a term to the
cost function and to the adjoint state by the use of two model functions:
'GetAdditionalAdjointTerm()' and 'GetAdditionalCostTerm()'.
* Documentation
- Added documentation about plugging an observation manager.
- Added a PDF version of the documentation.
- Improved the introduction to the Python interface.
- Updated the documentation for the use of Numpy in 'PythonModel'.
* Bug fixes
- In 'LinearObservationManager.py', the parameter 'Nskip' was not used.
- In the Python implementation of 'QuadraticModel', the function
'ApplyTangentLinearOperator' was erroneous when the model was defined with
both the quadratic term and the linear term.
- The fluxes in the shallow-water model were not properly computed. The errors
had little consequences only in case the space steps and the height were
close to 1.
- Verdandi directory "include/" was not given to g++ in
"bin/methods_requirement".
* Miscellaneous
- Added 'OutputSaver::IsSaved(string variable_name)'.
- Cleaned up "bin/methods_requirement".
Version 1.4 (2012-11-13)
-----------
* Methods
- Removed the template parameter T in all assimilation methods.
- Added support for elementwise access to the tangent linear observation
operator in 'EnsembleKalmanFilter' and 'FourDimensionalVariational'.
- Added the option to save the forecast and analysis times.
- Renamed the saved variables "state_forecast" and "state_analysis" to
"forecast_state" and "analysis_state".
- Improved 'UnscentedKalmanFilter' and 'ReducedOrderUnscentedKalmanFilter'
with more suitable types for several intermediate variables.
- Modified 'HamiltonJacobiBellman' so that it can save the time in addition to
the time step, and so that the output saver decides to save variables using
the time, not the time step.
- Removed the deprecated calls to MPI in the form 'MPI::Function', instead of
'MPI_Function'.
- Added tests to check whether MPI has been initialized/finalized before
calling 'MPI_Init'/'MPI_Finalize'.
* Models
- Improved the model interface for the uncertain parameters.
- Initial import of 'CheckingModel'.
- Simplified 'ApplyOperator' to remove the option 'forward' which is now set
to 'false' all time.
* Output saver
- Added the option to read and store observations in HDF5 format. Implemented
an example for 'QuadraticModel'.
* Example models
- Added the forecast and analysis times in output variables.
- In 'QuadraticModel', added tests on the dimensions of uncertainty
descriptions provided in the configuration.
- In 'ShallowWater', the state vector and the full state vector are now stored
in two distinct attributes ('state_' and 'full_state_').
* Documentation
- Added the script "methods_requirements" in "bin/" to list the member
functions of a model and of an observation manager that are required by a
specified assimilation method.
- Improved the section "Plugging an Existing Model".
- Renamed the section "Using Verdandi" to "Dependencies" and improved its
contents.
- Added documentation about the compilation options in "Debugging".
- Added a section in "Plugging a Model" for plugging a Python model.
* Bug fixes
- In 'EnsembleKalmanFilter', the empirical variance derived from
the ensemble was (Nmember - 1) times higher than expected, where Nmember is
the number of members in the ensemble.
- The example observation managers returned the wrong observations when the
variable 'Nskip' was different from 1.
- In 'FourDimensionalVariational', the method did not compile when the option
'VERDANDI_WITH_TRAJECTORY_MANAGER' was deactivated.
- In 'HamiltonJacobiBellman', the model was not initialized when the source
term was included but not the advection term.
- In 'UnscentedKalmanFilter', the sigma-point matrix was no longer updated.
- In the model 'ShallowWater', the size of the full state vector was erroneous.
- 'QuadraticModel<T>' was compiling only if 'T' was double.
- In 'HamiltonJacobiBellman', the model methods 'FinalizeStep' and 'Finalize'
are now called only if the advection term or the source term are included.
* Miscellaneous
- Optimized the general SConstruct file: the link flags for the external
libraries were set twice.
- Removed all exception specifications in class 'Error' and in its derived
classes.
Version 1.3 (2012-06-27)
-----------
* Methods
- Modified the model interface so that it only returns references to
large vectors and matrices.
The model methods
'GetTangentLinearOperator(tangent_linear_operator&)',
'GetAdjointState(state&)', 'SetAdjointState(state&)',
'GetStateErrorVarianceRow(int, state_error_variance_row&)' and
'GetStateErrorVarianceSqrt(state_error_variance&, state_error_variance&)'
have been replaced with respectively:
'tangent_linear_operator& GetTangentLinearOperator()',
'state& GetAdjointState()', 'AdjointStateUpdated()',
'state_error_variance_row& GetStateErrorVarianceRow(int)',
'state_error_variance& GetStateErrorVarianceProjector()' and
'state_error_variance_reduced& GetStateErrorVarianceReduced()'.
- In 'ReducedOrderUnscentedKalmanFilter', the algorithm is now able to
parallelize several model tasks which in turn can be run in parallel.
- In the model interface, 'ApplyOperator' and 'ApplyTangentLinearOperator'
now return the time associated with the computed state.
- Added an option to 'OptimalInterpolation' to compute the diagonal
of the analysis error variance.
- Added an example for 'HamiltonJacobiBellman' with the quadratic model.
* Observation manager
- Modified the observation manager interface so that it only returns
references to large vectors and matrices.
The observation manager methods
'GetObservation(observation&)', 'GetInnovation(state&, observation&)' and
'GetTangentLinearOperatorRow(int, tangent_linear_operator_row&)'
have been replaced with respectively:
'observation& GetObservation()', observation& GetInnovation(state&)' and
'tangent_linear_operator_row& GetTangentLinearOperatorRow(int)'.
* Example models
- Added the ability in 'PetscClamedBar' to define a MPI communicator different
from MPI_COMM_WORLD.
- Improved the interface of 'QuadraticModel' for the uncertain parameters.
* Example observation managers
- Initial import of 'ObservationGenerator'.
- Improved the performance of 'PetscLinearObservationManager'.
- Added the ability in 'PetscLinearObservationManager' to define a MPI
communicator different from MPI_COMM_WORLD.
- Modified 'GridToNetworkObservationManager' so that it can read
observations stored in a Seldon vector format.
* Documentation
- Added documentation about the optimization solver.
- Improved documentation related to exceptions.
Version 1.2.1 (2012-04-10)
-------------
* Methods
- Added an option to 'ReducedOrderUnscentedKalmanFilter' to manage
observations provided as innovations.
* Bug fixes
- Removed illegal 'typename' keywords in 'ModelTemplate' definitions.
Version 1.2 (2012-03-30)
-----------
* Methods
- The state vectors are now passed by reference to the assimilation methods.
'GetState(state&)', 'SetState(state&)', 'GetFullState(state&)' and
'SetFullState(state&)' have been replaced with 'state& GetState()',
'StateUpdated()', 'state& GetFullState()' and 'FullStateUpdated()'.
Also replaced the model methods 'GetStateLowerBound(state&)' and
'GetStateUpperBound(state&)' with 'state& GetStateLowerBound()' and
'state& GetStateUpperBound()'.
- 'ForwardDriver' and 'ReducedOrderUnscentedKalmanFilter' can now efficiently
handle models parallelized by MPI.
- Initial import of sequential aggregation (for ensemble forecasting) with
discounted ridge regression ('DiscountedRidgeRegression').
- Added support for parallel computations in 'EnsembleKalmanFilter'.
- Added support for parallel computations in 'ComputeBLUE_vector'.
- Enforced the rule that the member functions of the data assimilation
methods are non const, except 'GetName'.
- Modified the interface to 'MonteCarlo' so that it is consistent with the
interface to 'EnsembleKalmanFilter'.
- Made 'MonteCarlo' template of the perturbation manager.
- Added methods 'GetModel', 'GetObservationManager', 'GetPerturbationManager',
'GetOuputSaver', 'FinalizeStep' and 'Finalize' in all appropriate
assimilation methods.
- Removed the references to 'VERDANDI_DENSE' and 'VERDANDI_SPARSE' in
'OptimalInterpolation'.
- Added consistency checks for the dimensions of the arguments of
'ComputeBLUE_matrix'.
* Models
- Added the possibility to use a model written in Python. A generic interface
between Python and C++ is implemented in 'PythonModel'.
* Observation managers
- Added the possibility to use an observation manager written in Python. A
generic interface between Python and C++ is implemented in
'PythonObservationManager'.
* Example models
- Added the new model 'PetscClampedBar', which implements 'ClampedBar' with
PETSc.
- Extended the interface of the quadratic model for the ensemble Kalman
filter.
- Added configuration for the 'MonteCarlo' example with the quadratic model.
* Example observation managers
- Added the new observation manager 'PetscLinearObservationManager', which
implements 'LinearObservationManager' with PETSc.
- Added support for non constant time intervals between observations in
'LinearObservationManager'.
* Output saver
- Added 'OutputSaver::Activate' and 'OutputSaver::Deactivate'.
* Perturbation managers
- Added an interface to the random number generator library from C++ TR1.
- Set TR1 as the default random number generator library.
* Debugging
- Added the option "dump_env" to dump the SCons environment in the file
"scons_env.log"
* Documentation
- Added the section "Plugging a Model".
- Added a description of the Lorenz model.
* Bug fixes
- In 'EnsembleKalmanFilter', from one member to another, the
parameters were not perturbed around the same reference values.
- The examples in "example/template" did not compile.
* Miscellaneous
- Updated Seldon version from 5.1 (patched for Verdandi) to 5.2 (release
candidate).
- Renamed 'TRY' to 'VERDANDI_TRY' and 'END' to 'VERDANDI_END'
- Initial import of "Functions_Vector2.*xx" and "Fuctions_Vector3.*xx".
- Added the error class 'ErrorPythonUndefined'.
- Moved "OutputSaver.*xx" and "Variable.*xx" to "share/".
Version 1.1 (2011-10-25)
-----------
* Methods
- Added an implementation of the ensemble Kalman filter
('EnsembleKalmanFilter').
- Modified 'UnscentedKalmanFilter' to support a model state of type
'Vector<Collection>'.
- Improved the saving options in 'ReducedMinimax'.
- Added in 'MonteCarlo::Initialize' the option to choose to initialize or not
the model and the perturbation manager.
* Example models
- Extended the interface of the shallow water model for the ensemble Kalman
filter.
* Perturbation managers
- The perturbation manager based on Newran can now accept several types of
seed, and it requires to explicitly choose this type in the configuration.
* Bug fixes
- In the reduced minimax filter, the observations were assimilated one model
time step earlier than expected.
Version 1.0.2 (2011-08-23)
-------------
* Documentation
- Added documentation about the compilation of the SWIG interface under
Windows.
- Updated the documentation for the Python interface with the current naming
conventions.
* Improvements
- Made the SWIG interface compatible with Windows.
* Bug fixes
- In the perturbation managers, the mean and the covariance matrix were
erroneously modified when the constraints were not satisfied by the first
sampling.
- The homogeneous log-normal perturbations were erroneous.
- In the perturbation manager, several log-normal sampling functions did not
work properly.
Version 1.0.1 (2011-06-16)
-------------
* Documentation
- Added a section in the documentation about the compilation of Verdandi for a
64-bit architecture under Windows.
* Bug fixes
- Fixed compilation problems with Visual C++ compiler related to 'Ops::Ops'.
- 'ForwardDriver' ignored the configuration variables 'forward.output.log' and
'forward.output.configuration'.
- Added "python" in the library list so that it may be linked when the SWIG
interface is built. This is necessary under MacOS.
- The random number generators were allocated twice, which led to minor memory
leaks.
Version 1.0 (2011-05-27)
-----------
* Methods
- Improved the handling of the sparse and dense options in the methods:
EKF, UKF, ROEKF and ROUKF.
* Observations
* Example models
- Added a new method 'Model::GetNfull_state()'.
- Changed the default configuration for the shallow-water model example: the
observations are now localized at specific points instead of all grid
points.
* Documentation
- Initial import of the documentation for the perturbation manager.
* Miscellaneous
- Improved 'GetCholesky' in the sparse case: the 'RowSparse' matrix is no
longer converted to a dense matrix but to an 'ArrayRowSymSparse' matrix
before the decomposition.
Version 0.9 (2011-05-12)
-----------
* Methods
- Added an implementation of the 4D-Var method ('FourDimensionalVariational').
- Redesigned the perturbation manager so that adding new generators and new
distributions is easier, and added support for the TRNG library.
- Improved the implementation of 'ExtendedKalmanFilter' and
'ReducedOrderExtendedKalmanFilter'.
- Improved the consistency of 'MonteCarlo' with Verdandi.
- Initial import of the function 'ComputeBLUE_vector'.
- Added options to 'Method::Initialize' to indicate if the model or
observation manager have to be initialized or not.
- Improved the snapshot recording so that $H^T y$ and $H^T H x$ can be
recorded in 'ReducedMinimaxFilter'.
- Added support for a model error variance provided as a scaled identity
matrix in 'ReducedMinimaxFilter'.
- Added the ability to save the square root of the model error variance
in 'ReducedMinimaxFilter'.
- Changed the initialization of the assimilation methods: the constructor now
takes no argument and the configuration file (as string or 'Ops' instance)
is the argument of the method 'Initialize'.
* Observations
- Added the ability to define a sparse observation operator with a Lua table.
* Example models
- Added the uncertainty description for the constant term in 'QuadraticModel'.
- Removed 'ClampedBar' model, and renamed 'ParametricClampedBar' to
'ClampedBar'.
* Documentation
- Largely improved the installation description.
- Initial import of the documentation for the example programs associated
with the shallow-water model and the clamped-bar model.
- Added documentation on Lua configuration files.
- Added documentation for the Monte Carlo method.
- Made algorithms notation uniform in documentation.
* Miscellaneous
- Largely improved the compatibility with Visual C++.
- Added support for a user-defined dependency list in the "SConstruct".
- Extended the SWIG interface to the methods 'ForwardDriver' and
'ReducedOrderExtendedKalmanFilter', and to the 'ClampedBar' model.
- Uniformized 'ClampedBar' example programs.
* Bug fixes
- In 'ReducedOrderExtendedKalmanFilter::Analyze()', the computation of the
matrix 'U' was erroneous.
- The correlations between normal variables were properly handled only if they
were equal to 0 or 1 in 'BasePerturbationManager'.
- The interpolation in 'ObservationAggregator' was erroneous.
- The tangent linear model was applied at time "h + 1" in the method
'PropagateCovianceMatrix()' of 'ExtendedKalmanFilter'.
- In 'ReducedOrderExtendedKalmanFilter::PropagateCovianceMatrix()', the model
was applied at time "h + 1", but it was the tangent linear model that had
to be applied at time "h".
- 'MessageHandler::RemoveRecipient' did not properly erase elements
from the recipients map.
- The reduction failed when the number of snapshots was greater than
the size of the state in 'ReducedMinimaxFilter'.
- An exception was raised when the size of the reduced state changed
in 'ReducedMinimaxFilter'.
- In SWIG interface: the preprocessing directive 'VERDANDI_SPARSE' was defined
in "verdandi.i" while the directive 'VERDANDI_DENSE' was defined
in "verdandi.cpp".
- In the methods 'BasePerturbationManager::Sample' for vector collections,
the perturbation were not deallocated.
- The time was not initialized in the constructors of 'ClampedBar'.
- Assembling Newmark matrices was erroneous in 'ClampedBar'.
Version 0.8 (2010-12-07)
-----------
* Methods
- Added the reduced-order extended Kalman filter
('ReducedOrderExtendedKalmanFilter').
- Added the reduced-order unscented Kalman filter
('ReducedOrderUnscentedKalmanFilter').
- Added the reduced minimax filter ('ReducedMinimax').
- Added support for Monte Carlo simulations ('MonteCarlo').
- Modified 'UnscentedKalmanFilter' to manage model states of type
'VectorCollection'.
* Observations
- Improved the error management in 'LinearObservationManager'.
- Enabled reading a sparse observation operator from file in
'LinearObservationManager'.
* Example models
- Added the model 'ParametricClampedBar'.
* Miscellaneous
- Added options to the SConstruct to provide Mumps and UMFPack compilation.
- Configured Ops so that, when an error occurs, the program throws an
exception instead of aborting.
- Added option '%{rank}' to the Logger definition file to enable each process
to have its own log file.
* Bug fixes
- The quadratic term was not properly computed in the method 'Forward' (and
therefore in 'ApplyOperator' as well) of 'QuadraticModel'.
- The tangent linear model of 'QuadraticModel' was erroneous in case no
quadratic term and no linear term were defined.
Version 0.7 (2010-09-05)
-----------
First tagged version.
The development started in 2008.