source: issm/trunk-jpl/src/m/classes/SMBforcing.js@ 20690

Last change on this file since 20690 was 20690, checked in by Mathieu Morlighem, 9 years ago

NEW: marhsall strings instead of enums

File size: 2.2 KB
Line 
1//SMBforcing Class definition
2//
3// Usage:
4// SMB=SMBforcing();
5
6function SMBforcing(){
7 //methods
8 this.setdefaultparameters = function(){// {{{
9 this.requested_outputs=['default'];
10 } // }}}
11 this.disp = function(){ // {{{
12 console.log(sprintf(' surface forcings parameters:'));
13 fielddisplay(this,'mass_balance','surface mass balance [m/yr ice eq]');
14 fielddisplay(this,'requested_outputs','additional outputs requested');
15 } // }}}
16 this.defaultoutputs = function(){ // {{{
17 return '';
18 }//}}}
19this.classname = function(){ // {{{
20 return "SMBforcing";
21} // }}}
22 this.initialize = function(md) {// {{{
23
24 if (isNaN(this.mass_balance)){
25 this.mass_balance=NewArrayFill(md.mesh.numberofvertices,0);
26 console.log(' no smb.mass_balance specified: values set as zero');
27 }
28
29 } // }}}
30 this.checkconsistency = function(md,solution,analyses) { //{{{
31
32 if(ArrayAnyEqual(ArrayIsMember(MasstransportAnalysisEnum(),analyses),1)){
33 checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
34 }
35 if(ArrayAnyEqual(ArrayIsMember(BalancethicknessAnalysisEnum(),analyses),1)){
36 checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices,1],'NaN',1,'Inf',1);
37 }
38 checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
39
40 } // }}}
41 this.marshall=function(md,fid) { //{{{
42
43 var yts=365.0*24.0*3600.0;
44
45 WriteData(fid,prefix,'name','md.smb.model','data',SMBforcingEnum(),'format','Integer');
46 WriteData(fid,prefix,'object',this,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
47
48 //process requested outputs
49 var outputs = this.requested_outputs.slice();
50 for (var i=0;i<outputs.length;i++){
51 if (outputs[i] == 'default') {
52 outputs.splice(i,1);
53 var newoutputs=this.defaultoutputs(md);
54 for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
55 }
56 }
57 WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
58
59 }//}}}
60 this.fix=function() { //{{{
61 }//}}}
62 //properties
63 this.mass_balance = NaN;
64 this.requested_outputs = [];
65 this.setdefaultparameters();
66}
Note: See TracBrowser for help on using the repository browser.