1 | //AUTODIFF class definition
|
---|
2 | //
|
---|
3 | // Usage:
|
---|
4 | // autodiff=new autodiff();
|
---|
5 |
|
---|
6 | function autodiff (){
|
---|
7 | //methods
|
---|
8 | this.setdefaultparameters = function(){// {{{
|
---|
9 |
|
---|
10 | this.obufsize = 524288;
|
---|
11 | this.lbufsize = 524288;
|
---|
12 | this.cbufsize = 524288;
|
---|
13 | this.tbufsize = 524288;
|
---|
14 | this.gcTriggerRatio=2.0;
|
---|
15 | this.gcTriggerMaxSize=65536;
|
---|
16 |
|
---|
17 | }// }}}
|
---|
18 | this.disp= function(){// {{{
|
---|
19 |
|
---|
20 | console.log(sprintf(' automatic differentiation parameters:'));
|
---|
21 | fielddisplay(this,'isautodiff','indicates if the automatic differentiation is activated');
|
---|
22 | fielddisplay(this,'dependents','list of dependent variables');
|
---|
23 | fielddisplay(this,'independents','list of independent variables');
|
---|
24 | fielddisplay(this,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')");
|
---|
25 | fielddisplay(this,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
|
---|
26 | fielddisplay(this,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
|
---|
27 | fielddisplay(this,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
|
---|
28 | fielddisplay(this,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
|
---|
29 | fielddisplay(this,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
|
---|
30 | fielddisplay(this,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
|
---|
31 |
|
---|
32 | }// }}}
|
---|
33 | this.checkconsistency = function(md,solution,analyses){ //{{{
|
---|
34 |
|
---|
35 | //Early return
|
---|
36 | if (!this.isautodiff) return;
|
---|
37 |
|
---|
38 | //Driver value:
|
---|
39 | checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all']);
|
---|
40 |
|
---|
41 | //buffer values:
|
---|
42 | checkfield(md,'fieldname','autodiff.obufsize','>=',16);
|
---|
43 | checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
|
---|
44 | checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
|
---|
45 | checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
|
---|
46 | checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
|
---|
47 | checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
|
---|
48 |
|
---|
49 | //go through our dependents and independents and check consistency:
|
---|
50 | for (var i=0;i<this.dependents.length;i++){
|
---|
51 | dep=this.dependents[i];
|
---|
52 | dep.checkconsistency(md,solution,analyses);
|
---|
53 | }
|
---|
54 | for (var i=0;i<this.independents.length;i++){
|
---|
55 | indep=this.independents[i];
|
---|
56 | indep.checkconsistency(md,i,solution,analyses,this.driver);
|
---|
57 | }
|
---|
58 | } // }}}
|
---|
59 | //properties
|
---|
60 | // {{{
|
---|
61 | this.isautodiff = false;
|
---|
62 | this.dependents = {};
|
---|
63 | this.independents = {};
|
---|
64 | this.driver = 'fos_forward';
|
---|
65 | this.obufsize = NaN;
|
---|
66 | this.lbufsize = NaN;
|
---|
67 | this.cbufsize = NaN;
|
---|
68 | this.tbufsize = NaN;
|
---|
69 | this.gcTriggerRatio = NaN;
|
---|
70 | this.gcTriggerMaxSize = NaN;
|
---|
71 |
|
---|
72 | this.setdefaultparameters();
|
---|
73 | //}}}
|
---|
74 | }
|
---|