Changeset 19791
- Timestamp:
- 11/23/15 10:31:37 (9 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 1 added
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/SMBforcing.js
r19780 r19791 13 13 fielddisplay(this,'requested_outputs','additional outputs requested'); 14 14 } // }}} 15 this.defaultoutputs = function(){ // {{{ 16 return ''; 17 }//}}} 18 this.classname = function(){ // {{{ 19 return "SMBforcing"; 20 } // }}} 15 21 this.initialize = function(md) {// {{{ 16 22 … … 32 38 33 39 } // }}} 40 this.marshall=function(md,fid) { //{{{ 41 42 var yts=365.0*24.0*3600.0; 43 44 WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer'); 45 WriteData(fid,'object',this,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1); 46 47 //process requested outputs 48 outputs = this.requested_outputs; 49 for (var i=0;i<outputs;i++){ 50 if (outputs[i] == 'default') { 51 outputs.splice(i,1); 52 outputs.push(this.defaultoutputs()); 53 } 54 } 55 WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray'); 56 57 }//}}} 34 58 //properties 35 59 this.mass_balance = NaN; -
issm/trunk-jpl/src/m/classes/autodiff.js
r19787 r19791 31 31 32 32 }// }}} 33 this.classname= function(){// {{{ 34 return "autodiff"; 35 }// }}} 33 36 this.checkconsistency = function(md,solution,analyses){ //{{{ 34 37 … … 57 60 } 58 61 } // }}} 62 this.marshall=function(md,fid) { //{{{ 63 64 WriteData(fid,'object',this,'fieldname','isautodiff','format','Boolean'); 65 WriteData(fid,'object',this,'fieldname','driver','format','String'); 66 67 //early return 68 if (!this.isautodiff){ 69 WriteData(fid,'data',false,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean'); 70 WriteData(fid,'data',false,'enum',AutodiffKeepEnum(),'format','Boolean'); 71 return; 72 } 73 74 //buffer sizes {{{ 75 WriteData(fid,'object',this,'fieldname','obufsize','format','Double'); 76 WriteData(fid,'object',this,'fieldname','lbufsize','format','Double'); 77 WriteData(fid,'object',this,'fieldname','cbufsize','format','Double'); 78 WriteData(fid,'object',this,'fieldname','tbufsize','format','Double'); 79 WriteData(fid,'object',this,'fieldname','gcTriggerRatio','format','Double'); 80 WriteData(fid,'object',this,'fieldname','gcTriggerMaxSize','format','Double'); 81 //}}} 82 //process dependent variables {{{ 83 num_dependent_objects=this.dependents.length; 84 WriteData(fid,'data',num_dependent_objects,'enum',AutodiffNumDependentObjectsEnum(),'format','Integer'); 85 86 if(num_dependent_objects){ 87 var names=[]; 88 types=NewArrayFill(num_dependent_objects,0); 89 indices=NewArrayFill(num_dependent_objects,0); 90 91 for (var i=0;i<num_dependent_objects;i++){ 92 dep=this.dependents[i]; 93 94 names.push(dep.name); 95 types[i]=dep.typetoscalar(); 96 indices[i]=dep.index; 97 } 98 WriteData(fid,'data',names,'enum',AutodiffDependentObjectNamesEnum(),'format','StringArray'); 99 WriteData(fid,'data',types,'enum',AutodiffDependentObjectTypesEnum(),'format','IntMat','mattype',3); 100 WriteData(fid,'data',indices,'enum',AutodiffDependentObjectIndicesEnum(),'format','IntMat','mattype',3); 101 } 102 //}}} 103 //process independent variables {{{ 104 num_independent_objects=this.independents.length; 105 WriteData(fid,'data',num_independent_objects,'enum',AutodiffNumIndependentObjectsEnum(),'format','Integer'); 106 107 if(num_independent_objects){ 108 names=NewArrayFill(num_independent_objects,0); 109 types=NewArrayFill(num_independent_objects,0); 110 111 for (var i=0;i<num_independent_objects;i++){ 112 indep=this.independents[i]; 113 114 names[i]=StringToEnum(indep.name); 115 types[i]=indep.typetoscalar(); 116 } 117 WriteData(fid,'data',names,'enum',AutodiffIndependentObjectNamesEnum(),'format','IntMat','mattype',3); 118 WriteData(fid,'data',types,'enum',AutodiffIndependentObjectTypesEnum(),'format','IntMat','mattype',3); 119 } 120 //}}} 121 //if driver is fos_forward, build index: {{{ 122 if (this.driver == 'fos_forward'){ 123 var index=0; 124 125 for (var i=0;i<num_independent_objects;i++){ 126 indep=this.independents[i]; 127 if (!(isNaN(indep.fos_forward_index))){ 128 index=index+indep.fos_forward_index; 129 break; 130 } 131 else{ 132 if (indep.type=='scalar') index=index+1; 133 else index=index+indep.nods; 134 } 135 } 136 index=index-1; //get c-index numbering going 137 WriteData(fid,'data',index,'enum',AutodiffFosForwardIndexEnum(),'format','Integer'); 138 } 139 //}}} 140 //if driver is fos_reverse, build index: {{{ 141 if (this.driver == 'fos_reverse'){ 142 var index=0; 143 144 for (var i=0;i<num_dependent_objects;i++){ 145 dep=this.dependents[i]; 146 if (!(isNaN(dep.fos_reverse_index))){ 147 index=index+dep.fos_reverse_index; 148 break; 149 } 150 else{ 151 if (dep.type =='scalar') index=index+1; 152 else index=index+dep.nods; 153 } 154 } 155 index=index-1; //get c-index numbering going 156 WriteData(fid,'data',index,'enum',AutodiffFosReverseIndexEnum(),'format','Integer'); 157 } 158 //}}} 159 //if driver is fov_forward, build indices: {{{ 160 if (this.driver == 'fov_forward'){ 161 var indices=0; 162 163 for (var i=0;i<num_independent_objects;i++){ 164 indep=this.independents[i]; 165 if (!indep.fos_forward_index.length){ 166 indices=indices+indep.fov_forward_indices; 167 break; 168 } 169 else{ 170 if (indep.type =='scalar') indices=indices+1; 171 else indices=indices+indep.nods; 172 } 173 } 174 indices=indices-1; //get c-indices numbering going 175 WriteData(fid,'data',indices,'enum',AutodiffFovForwardIndicesEnum(),'format','IntMat','mattype',3); 176 } 177 //}}} 178 //deal with mass fluxes: {{{ 179 mass_flux_segments=[]; 180 for (var i=0;i<num_dependent_objects;i++){ 181 dep=this.dependents[i]; 182 if (dep.name =='MassFlux'){ 183 mass_flux_segments.push(dep.segments); 184 } 185 } 186 if (mass_flux_segments.length){ 187 WriteData(fid,'data',mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray'); 188 flag=true; 189 } 190 else flag=false; 191 WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean'); 192 //}}} 193 //deal with trace keep on: {{{ 194 keep=false; 195 196 //From ADOLC userdoc: 197 // The optional integer argument keep of trace on determines whether the numerical values of all active variables are 198 // recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 199 // prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 200 // mode as described in the Section 4 and Section 5. 201 // 202 203 if (this.driver.length<=3) keep=false; //there is no "_reverse" string within the driver string: 204 else{ 205 if (this.driver.splice(4) == '_reverse') keep=true; 206 else keep=false; 207 } 208 WriteData(fid,'data',keep,'enum',AutodiffKeepEnum(),'format','Boolean'); 209 //}}} 210 }//}}} 59 211 //properties 60 212 // {{{ -
issm/trunk-jpl/src/m/classes/balancethickness.js
r19787 r19791 20 20 21 21 }// }}} 22 this.classname= function(){// {{{ 23 return "balancethickness"; 24 25 }// }}} 22 26 this.checkconsistency = function(md,solution,analyses){ // {{{ 23 27 //Early return … … 29 33 //checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices ,1],'NaN',1,'>=',0); 30 34 } //}}} 35 this.marshall=function(md,fid) { //{{{ 36 37 var yts=365.0*24.0*3600.0; 38 39 WriteData(fid,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1); 40 WriteData(fid,'object',this,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts); 41 WriteData(fid,'object',this,'fieldname','stabilization','format','Integer'); 42 WriteData(fid,'object',this,'fieldname','omega','format','DoubleMat','mattype',1); 43 44 }//}}} 31 45 //properties 32 46 // {{{ -
issm/trunk-jpl/src/m/classes/basalforcings.js
r19780 r19791 16 16 fielddisplay(this,'geothermalflux','geothermal heat flux [W/m^2]'); 17 17 18 } // }}} 19 this.classname = function(){ // {{{ 20 return "basalforcings"; 18 21 } // }}} 19 22 this.initialize = function (md){ // {{{ … … 51 54 } 52 55 } // }}} 56 this.marshall=function(md,fid) { //{{{ 57 58 var yts=365.0*24.0*3600.0; 59 60 WriteData(fid,'enum',BasalforcingsEnum(),'data',FloatingMeltRateEnum(),'format','Integer'); 61 WriteData(fid,'object',this,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1) 62 WriteData(fid,'object',this,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1) 63 WriteData(fid,'object',this,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 64 }//}}} 53 65 //properties 54 66 //{{{ -
issm/trunk-jpl/src/m/classes/calving.js
r19787 r19791 21 21 22 22 }// }}} 23 this.classname= function(){// {{{ 24 return "calving"; 25 }// }}} 23 26 this.checkconsistency = function(md,solution,analyses) { // {{{ 24 27 //Early return … … 30 33 checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1); 31 34 } //}}} 35 this.marshall=function(md,fid) { //{{{ 36 yts=365.0*24.0*3600.0; 37 WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer'); 38 WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',this.stabilization,'format','Integer'); 39 WriteData(fid,'enum',SpcLevelsetEnum(),'data',this.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 40 WriteData(fid,'object',this,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts); 41 WriteData(fid,'object',this,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts); 42 }//}}} 32 43 //properties 33 44 // {{{ -
issm/trunk-jpl/src/m/classes/constants.js
r19780 r19791 29 29 30 30 } //}}} 31 this.classname = function () { //{{{ 32 return "constants"; 33 34 } //}}} 31 35 this.checkconsistency = function(md,solution,analyses) {//% {{{ 32 36 … … 37 41 38 42 } // }}} 43 this.marshall=function(md,fid) { //{{{ 44 WriteData(fid,'object',this,'fieldname','g','format','Double'); 45 WriteData(fid,'object',this,'fieldname','yts','format','Double'); 46 WriteData(fid,'object',this,'fieldname','referencetemperature','format','Double'); 47 }//}}} 39 48 //properties 40 49 // {{{ -
issm/trunk-jpl/src/m/classes/damage.js
r19780 r19791 62 62 } 63 63 }// }}} 64 this.classname= function(){// {{{ 65 return "damage"; 66 }// }}} 64 67 this.checkconsistency = function(md,solution,analyses) { //{{{ 65 68 … … 89 92 } 90 93 } //}}} 94 this.marshall=function(md,fid) { //{{{ 95 96 WriteData(fid,'object',this,'fieldname','isdamage','format','Boolean'); 97 if (this.isdamage){ 98 WriteData(fid,'object',this,'fieldname','law','format','Integer'); 99 WriteData(fid,'object',this,'fieldname','D','format','DoubleMat','mattype',1); 100 WriteData(fid,'object',this,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 101 WriteData(fid,'object',this,'fieldname','max_damage','format','Double'); 102 103 WriteData(fid,'object',this,'fieldname','stabilization','format','Integer'); 104 WriteData(fid,'object',this,'fieldname','maxiter','format','Integer'); 105 WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(this.elementinterp),'format','Integer'); 106 WriteData(fid,'object',this,'fieldname','stress_threshold','format','Double'); 107 WriteData(fid,'object',this,'fieldname','kappa','format','Double'); 108 WriteData(fid,'object',this,'fieldname','c1','format','Double'); 109 WriteData(fid,'object',this,'fieldname','c2','format','Double'); 110 WriteData(fid,'object',this,'fieldname','c3','format','Double'); 111 WriteData(fid,'object',this,'fieldname','c4','format','Double'); 112 WriteData(fid,'object',this,'fieldname','healing','format','Double'); 113 WriteData(fid,'object',this,'fieldname','equiv_stress','format','Integer'); 114 } 115 116 //process requested outputs 117 outputs = this.requested_outputs; 118 for (var i=0;i<outputs;i++){ 119 if (outputs[i] == 'default') { 120 outputs.splice(i,1); 121 outputs.push(this.defaultoutputs(md)); 122 } 123 } 124 if (this.isdamage){ 125 WriteData(fid,'data',outputs,'enum',DamageEvolutionRequestedOutputsEnum,'format','StringArray'); 126 } 127 128 }//}}} 129 this.defaultoutputs = function(md){ //{{{ 130 131 if (md.domaintype() == '2Dhorizontal') return 'DamageDbar'; 132 else return 'DamageD'; 133 134 }//}}} 91 135 //properties 92 136 // {{{ -
issm/trunk-jpl/src/m/classes/debug.js
r19753 r19791 7 7 //methods 8 8 this.setdefaultparameters = function(){// {{{ 9 }// }}} 10 this.classname= function(){// {{{ 11 return "debug"; 9 12 }// }}} 10 13 this.disp= function(){// {{{ … … 17 20 18 21 }// }}} 22 this.marshall=function(md,fid) { //{{{ 23 WriteData(fid,'object',this,'fieldname','profiling','format','Boolean'); 24 }//}}} 19 25 //properties 20 26 // {{{ -
issm/trunk-jpl/src/m/classes/flowequation.js
r19780 r19791 32 32 fielddisplay(this,'borderHO',"vertices on HO's border (for tiling)"); 33 33 fielddisplay(this,'borderFS',"vertices on FS' border (for tiling)"); 34 35 }// }}} 36 this.classname= function(){// {{{ 37 return "flowequation"; 34 38 35 39 }// }}} … … 86 90 } 87 91 } // }}} 92 this.marshall=function(md,fid) { //{{{ 93 WriteData(fid,'object',this,'fieldname','isSIA','format','Boolean'); 94 WriteData(fid,'object',this,'fieldname','isSSA','format','Boolean'); 95 WriteData(fid,'object',this,'fieldname','isL1L2','format','Boolean'); 96 WriteData(fid,'object',this,'fieldname','isHO','format','Boolean'); 97 WriteData(fid,'object',this,'fieldname','isFS','format','Boolean'); 98 WriteData(fid,'enum',FlowequationFeSSAEnum(),'data',StringToEnum(this.fe_SSA),'format','Integer'); 99 WriteData(fid,'enum',FlowequationFeHOEnum() ,'data',StringToEnum(this.fe_HO) ,'format','Integer'); 100 WriteData(fid,'enum',FlowequationFeFSEnum() ,'data',StringToEnum(this.fe_FS) ,'format','Integer'); 101 WriteData(fid,'enum',AugmentedLagrangianREnum(),'data',this.augmented_lagrangian_r ,'format','Double'); 102 WriteData(fid,'enum',AugmentedLagrangianRhopEnum(),'data',this.augmented_lagrangian_rhop ,'format','Double'); 103 WriteData(fid,'enum',AugmentedLagrangianRlambdaEnum(),'data',this.augmented_lagrangian_rlambda ,'format','Double'); 104 WriteData(fid,'enum',AugmentedLagrangianRholambdaEnum(),'data',this.augmented_lagrangian_rholambda ,'format','Double'); 105 WriteData(fid,'enum',AugmentedLagrangianThetaEnum() ,'data',this.XTH_theta ,'format','Double'); 106 WriteData(fid,'object',this,'fieldname','borderSSA','format','DoubleMat','mattype',1); 107 WriteData(fid,'object',this,'fieldname','borderHO','format','DoubleMat','mattype',1); 108 WriteData(fid,'object',this,'fieldname','borderFS','format','DoubleMat','mattype',1); 109 110 //convert approximations to enums 111 data=this.vertex_equation; 112 113 //some optimization: 114 noneap=NoneApproximationEnum(); 115 siaap=SIAApproximationEnum(); 116 ssaap=SSAApproximationEnum(); 117 l1l2ap=L1L2ApproximationEnum(); 118 hoap=HOApproximationEnum(); 119 fsap=FSApproximationEnum(); 120 ssahoap=SSAHOApproximationEnum(); 121 hofsaap=HOFSApproximationEnum(); 122 ssafsap=SSAFSApproximationEnum(); 123 124 for(var i=0;i<data.length;i++){ 125 if(data[i]==0)data[i]=nonap; 126 if(data[i]==1) data[i]=siaap; 127 if(data[i]==2) data[i]=ssaap; 128 if(data[i]==3) data[i]=l1l2ap; 129 if(data[i]==4) data[i]=hoap; 130 if(data[i]==5) data[i]=fsap; 131 if(data[i]==6) data[i]=ssahoap; 132 if(data[i]==7) data[i]=hofsaap; 133 if(data[i]==8) data[i]=ssafsap; 134 } 135 WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1); 136 137 data=this.element_equation; 138 for(var i=0;i<data.length;i++){ 139 if(data[i]==0) data[i]=nonap; 140 if(data[i]==1) data[i]=siaap; 141 if(data[i]==2) data[i]=ssaap; 142 if(data[i]==3) data[i]=l1l2ap; 143 if(data[i]==4) data[i]=hoap; 144 if(data[i]==5) data[i]=fsap; 145 if(data[i]==6) data[i]=ssahoap; 146 if(data[i]==7) data[i]=ssafsap; 147 if(data[i]==8) data[i]=hofsaap; 148 } 149 WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2); 150 151 }//}}} 88 152 //properties 89 153 // {{{ -
issm/trunk-jpl/src/m/classes/friction.js
r19780 r19791 15 15 fielddisplay(this,'q','q exponent'); 16 16 } // }}} 17 this.classname= function (){// {{{ 18 return "friction"; 19 } // }}} 17 20 this.checkconsistency = function(md,solution,analyses){ //{{{ 18 21 … … 26 29 27 30 } // }}} 31 this.marshall=function(md,fid) { //{{{ 32 var yts=365.0*24.0*3600.0; 33 34 WriteData(fid,'enum',FrictionLawEnum,'data',1,'format','Integer'); 35 WriteData(fid,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 36 //WriteData(fid,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1); 37 WriteData(fid,'object',this,'fieldname','p','format','DoubleMat','mattype',2); 38 WriteData(fid,'object',this,'fieldname','q','format','DoubleMat','mattype',2); 39 40 41 }//}}} 28 42 //properties 29 43 //{{{ -
issm/trunk-jpl/src/m/classes/geometry.js
r19780 r19791 15 15 fielddisplay(this,'base','ice base elevation [m]'); 16 16 fielddisplay(this,'bed','bed elevation [m]'); 17 } //}}} 18 this.classname = function () { //{{{ 19 return 'geometry'; 17 20 } //}}} 18 21 this.checkconsistency = function(md,solution,analyses) { //{{{ … … 36 39 } 37 40 } // }}} 41 this.marshall=function(md,fid) { //{{{ 42 WriteData(fid,'data',this.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum()); 43 WriteData(fid,'data',this.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'timeserieslength',md.mesh.numberofvertices+1); 44 WriteData(fid,'data',this.base,'format','DoubleMat','mattype',1,'enum',BaseEnum()); 45 WriteData(fid,'data',this.bed,'format','DoubleMat','mattype',1,'enum',BedEnum()); 46 WriteData(fid,'object',this,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1); 47 }//}}} 38 48 //properties 39 49 // {{{ -
issm/trunk-jpl/src/m/classes/gia.js
r19787 r19791 19 19 fielddisplay(this,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore'); 20 20 21 }// }}} 22 this.classname= function(){// {{{ 23 return "gia"; 21 24 }// }}} 22 25 this.checkconsistency = function(md,solution,analyses) { // {{{ … … 41 44 } 42 45 } // }}} 46 this.marshall=function(md,fid) { //{{{ 47 WriteData(fid,'object',this,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1); 48 WriteData(fid,'object',this,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',Math.pow(10,3)); //from km to m 49 WriteData(fid,'object',this,'fieldname','cross_section_shape','format','Integer'); 50 }//}}} 43 51 //properties 44 52 // {{{ -
issm/trunk-jpl/src/m/classes/groundingline.js
r19787 r19791 16 16 17 17 18 }// }}} 19 this.classname= function(){// {{{ 20 return "groundingline"; 18 21 }// }}} 19 22 this.checkconsistency = function(md,solution,analyses) {// {{{ … … 37 40 } 38 41 } // }}} 42 this.marshall=function(md,fid) { //{{{ 43 WriteData(fid,'data',StringToEnum(this.migration),'enum',GroundinglineMigrationEnum(),'format','Integer'); 44 }//}}} 39 45 //properties 40 46 // {{{ -
issm/trunk-jpl/src/m/classes/hydrologyshreve.js
r19787 r19791 12 12 13 13 }// }}} 14 this.disp= function(){// {{{14 this.disp= function(){// {{{ 15 15 16 16 console.log(sprintf(' hydrologyshreve solution parameters:')); … … 19 19 20 20 }// }}} 21 this.classname= function(){// {{{ 22 return "hydrologyshreve"; 23 24 }// }}} 21 25 this.type= function(){// {{{ 22 26 … … 32 36 33 37 } // }}} 38 this.marshall=function(md,fid) { //{{{ 39 WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer'); 40 WriteData(fid,'object',this,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 41 WriteData(fid,'object',this,'fieldname','stabilization','format','Double'); 42 }//}}} 34 43 //properties 35 44 // {{{ -
issm/trunk-jpl/src/m/classes/initialization.js
r19780 r19791 81 81 } 82 82 } //}}} 83 this.marshall=function(md,fid) { //{{{ 84 85 var yts=365.0*24.0*3600.0; 86 87 WriteData(fid,'data',this.vx,'format','DoubleMat','mattype',1,'enum',VxEnum,'scale',1./yts); 88 WriteData(fid,'data',this.vy,'format','DoubleMat','mattype',1,'enum',VyEnum,'scale',1./yts); 89 WriteData(fid,'data',this.vz,'format','DoubleMat','mattype',1,'enum',VzEnum,'scale',1./yts); 90 WriteData(fid,'data',this.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum); 91 WriteData(fid,'data',this.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum); 92 WriteData(fid,'data',this.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum); 93 WriteData(fid,'data',this.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum); 94 WriteData(fid,'data',this.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum); 95 WriteData(fid,'data',this.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum); 96 WriteData(fid,'data',this.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum); 97 98 if (md.thermal.isenthalpy){ 99 tpmp=NewArrayFill(md.mesh.numberofvertices,0); 100 for (var i=0;i<md.mesh.numberofvertices;i++) tpmp[i]= md.materials.meltingpoint - md.materials.beta*md.initialization.pressure[i]; 101 enthalpy=NewArrayFill(md.mesh.numberofvertices,0); 102 for (var i=0;i<md.mesh.numberofvertices;i++)enthalpy[i] = md.materials.heatcapacity*(md.initialization.temperature[i]-md.constants.referencetemperature); 103 104 for (var i=0;i<md.mesh.numberofvertices;i++)if(md.initialization.temperature[i]>=tpmp[i]){ 105 enthalpy[i] = md.materials.heatcapacity*(tpmp[i] - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction[i]; 106 } 107 WriteData(fid,'data',enthalpy,'format','DoubleMat','mattype',1,'enum',EnthalpyEnum()); 108 } 109 }//}}} 83 110 //properties 84 111 // {{{ -
issm/trunk-jpl/src/m/classes/inversion.js
r19787 r19791 75 75 76 76 }// }}} 77 this.classname= function(){// {{{ 78 return "inversion"; 79 }// }}} 77 80 this.checkconsistency = function(md,solution,analyses) { //{{{ 78 81 … … 113 116 } 114 117 } // }}} 118 this.marshall=function(md,fid) { //{{{ 119 120 var yts=365.0*24.0*3600.0; 121 122 WriteData(fid,'enum',InversionTypeEnum(),'data',0,'format','Integer'); 123 WriteData(fid,'object',this,'fieldname','iscontrol','format','Boolean'); 124 WriteData(fid,'object',this,'fieldname','incomplete_adjoint','format','Boolean'); 125 if (!this.iscontrol) return; 126 WriteData(fid,'object',this,'fieldname','nsteps','format','Integer'); 127 WriteData(fid,'object',this,'fieldname','maxiter_per_step','format','IntMat','mattype',3); 128 WriteData(fid,'object',this,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1); 129 WriteData(fid,'object',this,'fieldname','gradient_scaling','format','DoubleMat','mattype',3); 130 WriteData(fid,'object',this,'fieldname','cost_function_threshold','format','Double'); 131 WriteData(fid,'object',this,'fieldname','min_parameters','format','DoubleMat','mattype',3); 132 WriteData(fid,'object',this,'fieldname','max_parameters','format','DoubleMat','mattype',3); 133 WriteData(fid,'object',this,'fieldname','step_threshold','format','DoubleMat','mattype',3); 134 WriteData(fid,'object',this,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts); 135 WriteData(fid,'object',this,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts); 136 WriteData(fid,'object',this,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts); 137 if(this.thickness_obs.length==md.mesh.numberofelements) mattype=2; 138 else mattype=1; 139 WriteData(fid,'object',this,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype); 140 WriteData(fid,'object',this,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype); 141 142 143 //process control parameters 144 num_control_parameters=this.control_parameters.length; 145 data=NewArrayFill(num_control_parameters,0); 146 for (var i=0;i<num_control_parameters;i++){ 147 data[i]=StringToEnum(this.control_parameters[i]); 148 } 149 WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3); 150 WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer'); 151 152 //process cost functions 153 num_cost_functions=this.cost_functions[0].length; 154 data=marshallcostfunctions(this.cost_functions); 155 WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3); 156 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer'); 157 }//}}} 115 158 //properties 116 159 // {{{ -
issm/trunk-jpl/src/m/classes/mask.js
r19780 r19791 18 18 fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0"); 19 19 fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0"); 20 } //}}} 21 this.classname = function () { //{{{ 22 return "mask"; 20 23 } //}}} 21 24 this.checkconsistency = function(md,solution,analyses){ //{{{ … … 48 51 } 49 52 } // }}} 53 this.marshall=function(md,fid) { //{{{ 54 WriteData(fid,'object',this,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1); 55 WriteData(fid,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1); 56 57 // get mask of vertices of elements with ice 58 isice= NewArrayFill(md.mesh.numberofvertices,0); 59 for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1; 60 61 vlist = NewArrayFill(md.mesh.numberofvertices,0); 62 var pos=[]; 63 for(var i=0;i<md.mesh.numberofelements;i++){ 64 var sum=0; 65 for(var j=0;j<md.mesh.elements[0].length;j++){ 66 sum+=isice[md.mesh.elements[i][j]-1]; 67 } 68 if(sum>0)pos.push(i); 69 } 70 for(var i=0;i<pos.length;i++){ 71 for(var j=0;j<md.mesh.elements[0].length;j++){ 72 vlist[md.mesh.elements[pos[i]][j]-1]=1; 73 } 74 } 75 WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1); 76 }//}}} 50 77 } -
issm/trunk-jpl/src/m/classes/masstransport.js
r19787 r19791 38 38 39 39 }// }}} 40 this.classname= function(){// {{{ 41 return "masstransport"; 42 }// }}} 40 43 this.checkconsistency = function (md,solution,analyses){ // {{{ 41 44 … … 51 54 52 55 } // }}} 53 //properties 56 this.marshall=function(md,fid) { //{{{ 57 58 yts=365.*24.*3600.; 59 60 WriteData(fid,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 61 WriteData(fid,'object',this,'fieldname','isfreesurface','format','Boolean'); 62 WriteData(fid,'object',this,'fieldname','min_thickness','format','Double'); 63 WriteData(fid,'data',StringToEnum(this.hydrostatic_adjustment),'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum()); 64 WriteData(fid,'object',this,'fieldname','stabilization','format','Integer'); 65 WriteData(fid,'object',this,'fieldname','vertex_pairing','format','DoubleMat','mattype',3); 66 WriteData(fid,'object',this,'fieldname','penalty_factor','format','Double'); 67 68 //process requested outputs 69 outputs = this.requested_outputs; 70 for (var i=0;i<outputs;i++){ 71 if (outputs[i] == 'default') { 72 outputs.splice(i,1); 73 outputs.push(this.defaultoutputs()); 74 } 75 } 76 WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum,'format','StringArray'); 77 }//}}} 78 this.defaultoutputs = function(md) { //{{{ 79 return ['Thickness','Surface','Base']; 80 }//}}} 81 //properties 54 82 // {{{ 55 83 -
issm/trunk-jpl/src/m/classes/matice.js
r19780 r19791 78 78 fielddisplay(this,'mantle_density','Mantle density [g/cm^-3]'); 79 79 } // }}} 80 this.classname = function() {// {{{ 81 return "matice"; 82 } // }}} 80 83 this.checkconsistency = function(md,solution,analyses) { // {{{ 81 84 checkfield(md,'fieldname','materials.rho_ice','>',0); … … 95 98 96 99 } // }}} 100 this.marshall=function(md,fid) { //{{{ 101 WriteData(fid,'enum',MaterialsEnum(),'data',MaticeEnum(),'format','Integer'); 102 WriteData(fid,'object',this,'class','materials','fieldname','rho_ice','format','Double'); 103 WriteData(fid,'object',this,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double'); 104 WriteData(fid,'object',this,'class','materials','fieldname','rho_freshwater','format','Double'); 105 WriteData(fid,'object',this,'class','materials','fieldname','mu_water','format','Double'); 106 WriteData(fid,'object',this,'class','materials','fieldname','heatcapacity','format','Double'); 107 WriteData(fid,'object',this,'class','materials','fieldname','latentheat','format','Double'); 108 WriteData(fid,'object',this,'class','materials','fieldname','thermalconductivity','format','Double'); 109 WriteData(fid,'object',this,'class','materials','fieldname','temperateiceconductivity','format','Double'); 110 WriteData(fid,'object',this,'class','materials','fieldname','meltingpoint','format','Double'); 111 WriteData(fid,'object',this,'class','materials','fieldname','beta','format','Double'); 112 WriteData(fid,'object',this,'class','materials','fieldname','mixed_layer_capacity','format','Double'); 113 WriteData(fid,'object',this,'class','materials','fieldname','thermal_exchange_velocity','format','Double'); 114 WriteData(fid,'object',this,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 115 WriteData(fid,'object',this,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2); 116 WriteData(fid,'data',StringToEnum(this.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer'); 117 WriteData(fid,'object',this,'class','materials','fieldname','lithosphere_shear_modulus','format','Double'); 118 WriteData(fid,'object',this,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3); 119 WriteData(fid,'object',this,'class','materials','fieldname','mantle_shear_modulus','format','Double'); 120 WriteData(fid,'object',this,'class','materials','fieldname','mantle_density','format','Double','scale',10^3); 121 }//}}} 97 122 //properties 98 123 // {{{ -
issm/trunk-jpl/src/m/classes/mesh2d.js
r19780 r19791 44 44 fielddisplay(this,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"); 45 45 } //}}} 46 this.classname = function () { //{{{ 47 return "mesh2d"; 48 } //}}} 46 49 this.domaintype=function (){ // {{{ 47 50 return '2Dhorizontal'; … … 75 78 } 76 79 } // }}} 80 this.marshall=function(md,fid) { //{{{ 81 WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum('Domain' + this.domaintype()),'format','Integer'); 82 WriteData(fid,'enum',DomainDimensionEnum(),'data',this.dimension(),'format','Integer'); 83 WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(this.elementtype()),'format','Integer'); 84 WriteData(fid,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1); 85 WriteData(fid,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1); 86 WriteData(fid,'enum',MeshZEnum(),'data',NewArrayFill(this.numberofvertices,0),'format','DoubleMat','mattype',1); 87 WriteData(fid,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2); 88 WriteData(fid,'object',this,'class','mesh','fieldname','numberofelements','format','Integer'); 89 WriteData(fid,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer'); 90 WriteData(fid,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer'); 91 WriteData(fid,'object',this,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1); 92 WriteData(fid,'object',this,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3); 93 }//}}} 94 77 95 //properties 78 96 // {{{ -
issm/trunk-jpl/src/m/classes/miscellaneous.js
r19787 r19791 17 17 18 18 }// }}} 19 this.classname= function(){// {{{ 20 return "miscellaneous"; 21 }// }}} 19 22 this.checkconsistency= function(md,solution,analyses) {// {{{ 20 23 21 24 checkfield(md,'fieldname','miscellaneous.name','empty',1); 22 25 }// }}} 26 this.marshall=function(md,fid) { //{{{ 27 WriteData(fid,'object',this,'fieldname','name','format','String'); 28 }//}}} 23 29 //properties 24 30 // {{{ -
issm/trunk-jpl/src/m/classes/outputdefinition.js
r19787 r19791 15 15 16 16 }// }}} 17 this.classname= function(){// {{{ 18 return "outputdefinition"; 19 }// }}} 17 20 this.checkconsistency = function(md,solution,analyses) { //{{{ 18 21 … … 24 27 25 28 } // }}} 29 this.marshall=function(md,fid) { //{{{ 30 31 enums=NewArrayFill(this.definitions.length,0); 32 for (var i=0;i<this.definitions.length;i++){ 33 this.definitions[i].marshall(md,fid); 34 classdefinition=this.definitions[i].classname(); 35 classdefinition=classdefinition.charAt(0).tuUpperCase() + classdefinition.slice(1); //so it matches our enums definitions. 36 enums[i]=StringToEnum(classdefinition); 37 } 38 enums=ArrayUnique(enums); 39 WriteData(fid,'data',enums,'enum',OutputdefinitionListEnum(),'format','DoubleMat','mattype',1); 40 }//}}} 26 41 //properties 27 42 // {{{ -
issm/trunk-jpl/src/m/classes/qmu.js
r19787 r19791 90 90 91 91 }// }}} 92 this.classname= function(){// {{{ 93 return "qmu"; 94 }// }}} 92 95 this.checkconsistency = function(md,solution,analyses) { //{{{ 93 96 … … 97 100 98 101 } // }}} 102 this.marshall=function(md,fid) { //{{{ 103 WriteData(fid,'object',this,'fieldname','isdakota','format','Boolean'); 104 if (!this.isdakota){ 105 WriteData(fid,'data',false,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean'); 106 return; 107 } 108 WriteData(fid,'object',this,'fieldname','partition','format','DoubleMat','mattype',2); 109 WriteData(fid,'object',this,'fieldname','numberofpartitions','format','Integer'); 110 WriteData(fid,'object',this,'fieldname','numberofresponses','format','Integer'); 111 WriteData(fid,'object',this,'fieldname','variabledescriptors','format','StringArray'); 112 WriteData(fid,'object',this,'fieldname','responsedescriptors','format','StringArray'); 113 if (this.mass_flux_segments.length){ 114 WriteData(fid,'data',this.mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray'); 115 flag=true; 116 } 117 else flag=false; 118 WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean'); 119 }//}}} 99 120 //properties 100 121 // {{{ -
issm/trunk-jpl/src/m/classes/rifts.js
r19787 r19791 7 7 //methods 8 8 this.setdefaultparameters = function(){// {{{ 9 }// }}} 10 this.classname= function(){// {{{ 11 return "rifts"; 9 12 }// }}} 10 13 this.disp= function(){// {{{ … … 42 45 } 43 46 } //}}} 47 this.marshall=function(md,fid) { //{{{ 48 49 //Process rift info 50 if ((this.riftstruct.length==0) | isNaN(this.riftstruct)){ 51 numrifts=0; 52 } 53 else{ 54 numrifts=this.riftstruct.length; 55 } 56 var numpairs=0; 57 for (var i=0;i<numrifts;i++){ 58 numpairs=numpairs+this.riftstruct[i].penaltypairs.length; 59 } 60 61 // 2 for nodes + 2 for elements+ 2 for normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state. 62 data=Create2DArray(numpairs,12); 63 count=0; 64 for (var i=0;i<numrifts;i++){ 65 numpairsforthisrift=this.riftstruct[i].penaltypairs.length; 66 for(var j=0;j<numpairsforthisrift;j++){ 67 for(var k=0;k<7;k++)data[count+j][k]=this.riftstruct[i].penaltypairs; 68 data[count+j][7]=this.riftstruct[i].fill; 69 data[count+j][8]=this.riftstruct[i].friction; 70 data[count+j][9]=this.riftstruct[i].fraction; 71 data[count+j][10]=this.riftstruct[i].fractionincrement; 72 data[count+j][11]=this.riftstruct[i].state; 73 count+=numpairsforthisrift; 74 } 75 } 76 WriteData(fid,'data',numrifts,'enum',RiftsNumriftsEnum(),'format','Integer'); 77 WriteData(fid,'data',data,'enum',RiftsRiftstructEnum(),'format','DoubleMat','mattype',3); 78 }//}}} 44 79 //properties 45 80 // {{{ -
issm/trunk-jpl/src/m/classes/settings.js
r19787 r19791 33 33 34 34 }// }}} 35 this.classname= function(){// {{{ 36 return "settings"; 37 38 }// }}} 35 39 this.checkconsistency = function(md,solution,analyses) { // {{{ 36 40 … … 42 46 checkfield(md,'fieldname','settings.waitonlock','numel',[1]); 43 47 } // }}} 48 this.marshall=function(md,fid) { //{{{ 49 WriteData(fid,'object',this,'fieldname','results_on_nodes','format','Boolean'); 50 WriteData(fid,'object',this,'fieldname','io_gather','format','Boolean'); 51 WriteData(fid,'object',this,'fieldname','lowmem','format','Boolean'); 52 WriteData(fid,'object',this,'fieldname','output_frequency','format','Integer'); 53 WriteData(fid,'object',this,'fieldname','recording_frequency','format','Integer'); 54 if (this.waitonlock>0) WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',true,'format','Boolean'); 55 else WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',false,'format','Boolean'); 56 }//}}} 44 57 //properties 45 58 // {{{ -
issm/trunk-jpl/src/m/classes/steadystate.js
r19787 r19791 28 28 29 29 }// }}} 30 this.classname= function(){// {{{ 31 return "steadystate"; 32 33 }// }}} 30 34 this.checkconsistency = function(md,solution,analyses) {// {{{ 31 35 … … 42 46 } 43 47 } // }}} 48 this.marshall=function(md,fid) { //{{{ 49 WriteData(fid,'object',this,'fieldname','reltol','format','Double'); 50 WriteData(fid,'object',this,'fieldname','maxiter','format','Integer'); 51 52 //process requested outputs 53 outputs = this.requested_outputs; 54 for (var i=0;i<outputs;i++){ 55 if (outputs[i] == 'default') { 56 outputs.splice(i,1); 57 outputs.push(this.defaultoutputs()); 58 } 59 } 60 WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum,'format','StringArray'); 61 }//}}} 62 this.defaultoutputs = function(md) { //{{{ 63 64 var list=[]; 65 66 for (var i=0;i<md.stressbalance.defaultoutputs().length;i++)list.push(md.stressbalance.defaultoutputs()[i]); 67 for (var i=0;i<md.thermal.defaultoutputs().length;i++)list.push(md.thermal.defaultoutputs()[i]); 68 69 return list; 70 71 }//}}} 44 72 //properties 45 73 // {{{ -
issm/trunk-jpl/src/m/classes/stressbalance.js
r19787 r19791 72 72 73 73 74 }// }}} 75 this.classname= function(){// {{{ 76 return "stressbalance"; 74 77 }// }}} 75 78 this.checkconsistency = function(md,solution,analyses) { //{{{ … … 133 136 } 134 137 } // }}} 138 this.marshall=function(md,fid) { //{{{ 139 140 WriteData(fid,'object',this,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3); 141 142 yts=365.0*24.0*3600.0; 143 144 WriteData(fid,'object',this,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1); 145 WriteData(fid,'object',this,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1); 146 WriteData(fid,'object',this,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1); 147 WriteData(fid,'object',this,'class','stressbalance','fieldname','restol','format','Double'); 148 WriteData(fid,'object',this,'class','stressbalance','fieldname','reltol','format','Double'); 149 WriteData(fid,'object',this,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts); 150 WriteData(fid,'object',this,'class','stressbalance','fieldname','isnewton','format','Integer'); 151 WriteData(fid,'object',this,'class','stressbalance','fieldname','FSreconditioning','format','Double'); 152 WriteData(fid,'object',this,'class','stressbalance','fieldname','viscosity_overshoot','format','Double'); 153 WriteData(fid,'object',this,'class','stressbalance','fieldname','maxiter','format','Integer'); 154 WriteData(fid,'object',this,'class','stressbalance','fieldname','shelf_dampening','format','Integer'); 155 WriteData(fid,'object',this,'class','stressbalance','fieldname','penalty_factor','format','Double'); 156 WriteData(fid,'object',this,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer'); 157 WriteData(fid,'object',this,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer'); 158 WriteData(fid,'object',this,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1); 159 160 lx=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lx[i]=this.loadingforce[i][0]; 161 ly=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)ly[i]=this.loadingforce[i][1]; 162 lz=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lz[i]=this.loadingforce[i][2]; 163 164 WriteData(fid,'data',lx,'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum); 165 WriteData(fid,'data',ly,'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum); 166 WriteData(fid,'data',lz,'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum); 167 168 //process requested outputs 169 outputs = this.requested_outputs; 170 for (var i=0;i<outputs;i++){ 171 if (outputs[i] == 'default') { 172 outputs.splice(i,1); 173 outputs.push(this.defaultoutputs()); 174 } 175 } 176 WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum,'format','StringArray'); 177 }//}}} 178 this.defaultoutputs = function(md){ // {{{ 179 180 var list; 181 if (md.mesh.dimension() == 3) list = ['Vx','Vy','Vz','Vel','Pressure']; 182 else if (md.mesh.dimension()==2) list = ['Vx','Vy','Vel','Pressure']; 183 else throw Error('mesh type not supported yet'); 184 return list; 185 186 }//}}} 135 187 //properties 136 188 // {{{ -
issm/trunk-jpl/src/m/classes/thermal.js
r19787 r19791 49 49 50 50 }// }}} 51 this.classname= function(){// {{{ 52 return "thermal"; 53 }// }}} 51 54 this.checkconsistency = function(md,solution,analyses){ // {{{ 52 55 … … 81 84 checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1); 82 85 } // }}} 86 this.marshall=function(md,fid) { //{{{ 87 WriteData(fid,'object',this,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 88 WriteData(fid,'object',this,'fieldname','penalty_threshold','format','Integer'); 89 WriteData(fid,'object',this,'fieldname','stabilization','format','Integer'); 90 WriteData(fid,'object',this,'fieldname','reltol','format','Double'); 91 WriteData(fid,'object',this,'fieldname','maxiter','format','Integer'); 92 WriteData(fid,'object',this,'fieldname','penalty_lock','format','Integer'); 93 WriteData(fid,'object',this,'fieldname','penalty_factor','format','Double'); 94 WriteData(fid,'object',this,'fieldname','isenthalpy','format','Boolean'); 95 WriteData(fid,'object',this,'fieldname','isdynamicbasalspc','format','Boolean'); 96 97 //process requested outputs 98 outputs = this.requested_outputs; 99 for (var i=0;i<outputs;i++){ 100 if (outputs[i] == 'default') { 101 outputs.splice(i,1); 102 outputs.push(this.defaultoutputs()); 103 } 104 } 105 WriteData(fid,'data',outputs,'enum',ThermalRequestedOutputsEnum(),'format','StringArray'); 106 }//}}} 107 this.defaultoutputs = function(md) { //{{{ 108 109 if (this.isenthalpy) return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate']; 110 else return ['Temperature','BasalforcingsGroundediceMeltingRate']; 111 }//}}} 83 112 //properties 84 113 // {{{ -
issm/trunk-jpl/src/m/classes/timestepping.js
r19780 r19791 39 39 40 40 }// }}} 41 this.classname= function(){// {{{ 42 return "timestepping"; 43 44 }// }}} 41 45 this.checkconsistency = function(md,solution,analyses) { //{{{ 42 46 … … 51 55 } 52 56 } // }}} 57 this.marshall=function(md,fid) { //{{{ 58 59 var scale; 60 if (this.in_years) scale = 365.0*24.0*3600.0; 61 else scale = 1.; 62 63 WriteData(fid,'object',this,'fieldname','start_time','format','Double','scale',scale); 64 WriteData(fid,'object',this,'fieldname','final_time','format','Double','scale',scale); 65 WriteData(fid,'object',this,'fieldname','time_step','format','Double','scale',scale); 66 WriteData(fid,'object',this,'fieldname','time_adapt','format','Boolean'); 67 WriteData(fid,'object',this,'fieldname','cfl_coefficient','format','Double'); 68 WriteData(fid,'object',this,'fieldname','interp_forcings','format','Boolean'); 69 70 }//}}} 53 71 //properties 54 72 // {{{ -
issm/trunk-jpl/src/m/classes/transient.js
r19787 r19791 42 42 43 43 }// }}} 44 this.classname= function(){// {{{ 45 return "transient"; 46 }// }}} 44 47 this.checkconsistency = function(md,solution,analyses) { // {{{ 45 48 … … 59 62 checkfield(md,'fieldname','transient.requested_outputs','stringrow',1); 60 63 } // }}} 64 this.marshall=function(md,fid) { //{{{ 65 WriteData(fid,'object',this,'fieldname','issmb','format','Boolean'); 66 WriteData(fid,'object',this,'fieldname','ismasstransport','format','Boolean'); 67 WriteData(fid,'object',this,'fieldname','isstressbalance','format','Boolean'); 68 WriteData(fid,'object',this,'fieldname','isthermal','format','Boolean'); 69 WriteData(fid,'object',this,'fieldname','isgroundingline','format','Boolean'); 70 WriteData(fid,'object',this,'fieldname','isgia','format','Boolean'); 71 WriteData(fid,'object',this,'fieldname','isdamageevolution','format','Boolean'); 72 WriteData(fid,'object',this,'fieldname','ishydrology','format','Boolean'); 73 WriteData(fid,'object',this,'fieldname','islevelset','format','Boolean'); 74 WriteData(fid,'object',this,'fieldname','iscalving','format','Boolean'); 75 76 //process requested outputs 77 outputs = this.requested_outputs; 78 for (var i=0;i<outputs;i++){ 79 if (outputs[i] == 'default') { 80 outputs.splice(i,1); 81 outputs.push(this.defaultoutputs()); 82 } 83 } 84 WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum,'format','StringArray'); 85 }//}}} 86 this.defaultoutputs = function(md) { //{{{ 87 if(this.issmb)return ['SmbMassBalance']; 88 else return []; 89 }//}}} 61 90 //properties 62 91 // {{{ -
issm/trunk-jpl/src/m/classes/verbose.js
r19787 r19791 43 43 44 44 } // }}} 45 this.marshall=function(md,fid) { //{{{ 46 WriteData(fid,'data',this.VerboseToBinary(),'enum',VerboseEnum(),'format','Integer'); 47 }//}}} 48 this.VerboseToBinary = function () { //{{{ 49 50 //BEGINVERB2BIN 51 var binary=0; 52 if (verbose.mprocessor) binary=Math.bitOr(binary1); 53 if (verbose.module) binary=Math.bitOr(binary2); 54 if (verbose.solution) binary=Math.bitOr(binary4); 55 if (verbose.solver) binary=Math.bitOr(binary8); 56 if (verbose.convergence) binary=Math.bitOr(binary16); 57 if (verbose.control) binary=Math.bitOr(binary32); 58 if (verbose.qmu) binary=Math.bitOr(binary64); 59 if (verbose.autodiff) binary=Math.bitOr(binary128); 60 if (verbose.smb) binary=Math.bitOr(binary256); 61 //ENDVERB2BIN 62 return binary; 63 64 } //}}} 45 65 //properties 46 66 // {{{ -
issm/trunk-jpl/src/m/io/fileptr.js
r19787 r19791 25 25 this.setdefaultparameters = function (options) { //{{{ 26 26 27 this.increment=options.getfieldvalue('increment',8000 ); //8000 bytes, 1000 doubles.27 this.increment=options.getfieldvalue('increment',80000); //80000 bytes, 10000 doubles. 28 28 this.buffer=new ArrayBuffer(this.increment); 29 29 this.ptr=0; … … 33 33 this.fwrite = function (value,format) { //{{{ 34 34 35 if(this.ptr==this.buffer.byteLength){36 //need to resize the buffer:37 var newbuffer = new ArrayBuffer(this.buffer.byteLength+this.increment);38 newbuffer.set(this.buffer);39 this.buffer=newbuffer;40 }41 35 42 36 if(format == 'int'){ 37 if(this.ptr+4>=this.buffer.byteLength)this.resize(); 43 38 this.view.setUint32(this.ptr,value,true); this.ptr+=4; 44 39 } 45 40 else if(format == 'char'){ 41 if(this.ptr+value.length>=this.buffer.byteLength)this.resize(); 46 42 for(var i=0;i<value.length;i++){ 47 43 this.view.setUint8(this.ptr,value.charCodeAt(i),true); … … 50 46 } 51 47 else if(format == 'double'){ 48 if(this.ptr+8>=this.buffer.byteLength)this.resize(); 52 49 if (!IsArray(value)){ 53 50 this.view.setFloat64(this.ptr,value,true); … … 56 53 else{ 57 54 if (!IsArray(value[0])){ 55 if(this.ptr+value.length*8>=this.buffer.byteLength)this.resize(); 58 56 for(var i=0;i<value.length;i++){ 59 57 this.view.setFloat64(this.ptr,value[i],true); … … 62 60 } 63 61 else{ 62 if(this.ptr+value.length*value[0].length*8>=this.buffer.byteLength)this.resize(); 64 63 for(var i=0;i<value.length;i++){ 65 64 for(var j=0;j<value[0].length;j++){ … … 76 75 return this.buffer; 77 76 } //}}} 77 this.resize = function () { //{{{ 78 var newbuffer = new ArrayBuffer(this.buffer.byteLength+this.increment); 79 new Uint8Array(newbuffer).set(new Uint8Array(this.buffer)); 80 this.buffer=newbuffer; 81 this.view=new DataView(this.buffer); 82 } //}}} 78 83 //set defaults 79 84 this.setdefaultparameters(this.options); -
issm/trunk-jpl/src/m/solve/WriteData.js
r19787 r19791 14 14 obj = options.getfieldvalue('object'); 15 15 fieldname = options.getfieldvalue('fieldname'); 16 classname = options.getfieldvalue('class',obj.classname());17 16 if (options.exist('enum')){ 18 17 enumm = options.getfieldvalue('enum'); 19 18 } 20 19 else{ 20 classname = options.getfieldvalue('class',obj.classname()); 21 21 enumm = BuildEnum(classname + '_' + fieldname); 22 22 } … … 121 121 122 122 //if matrix = NaN, then do not write anything 123 if (s[0]==1 & s[1]==1 & isNa n(data)){124 s[0]=0; s[1]=0; 125 } 126 if (s[0]==1 & s[1]==1 & isNa n(data[0])){123 if (s[0]==1 & s[1]==1 & isNaN(data)){ 124 s[0]=0; s[1]=0; 125 } 126 if (s[0]==1 & s[1]==1 & isNaN(data[0])){ 127 127 s[0]=0; s[1]=0; 128 128 } … … 147 147 148 148 //if matrix = NaN, then do not write anything 149 if (s[0]==1 & s[1]==1 & isNa n(data)){150 s[0]=0; s[1]=0; 151 } 152 if (s[0]==1 & s[1]==1 & isNa n(data[0])){149 if (s[0]==1 & s[1]==1 & isNaN(data)){ 150 s[0]=0; s[1]=0; 151 } 152 if (s[0]==1 & s[1]==1 & isNaN(data[0])){ 153 153 s[0]=0; s[1]=0; 154 154 } … … 174 174 175 175 //if matrix = NaN, then do not write anything 176 if (s[0]==1 & s[1]==1 & isNa n(data)){177 s[0]=0; s[1]=0; 178 } 179 if (s[0]==1 & s[1]==1 & isNa n(data[0])){176 if (s[0]==1 & s[1]==1 & isNaN(data)){ 177 s[0]=0; s[1]=0; 178 } 179 if (s[0]==1 & s[1]==1 & isNaN(data[0])){ 180 180 s[0]=0; s[1]=0; 181 181 } … … 279 279 280 280 //take first letter of string and make it uppercase: 281 string = string.charAt(0).toUpperCase() + this.slice(1);281 string = string.charAt(0).toUpperCase() + string.slice(1); 282 282 283 283 //Get Enum -
issm/trunk-jpl/src/m/solve/marshall.js
r19787 r19791 28 28 continue; 29 29 } 30 console.log(field);31 30 32 31 //Marshall current object … … 36 35 //Last, write MaximumNumberOfEnum+1 to make sure that the binary file is not corrupt 37 36 WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum()+1,'data',true,'format','Boolean'); 38 39 37 return fid; 40 38 } -
issm/trunk-jpl/test/NightlyRun/test101.html
r19787 r19791 71 71 <script type="text/javascript" src="../../src/m/io/fileptr.js"></script> 72 72 <script type="text/javascript" src="../../src/m/solve/solve.js"></script> 73 <script type="text/javascript" src="../../src/m/inversions/marshallcostfunctions.js"></script> 73 74 <script type="text/javascript" src="../../src/m/solve/marshall.js"></script> 74 75 <script type="text/javascript" src="../../src/m/solve/WriteData.js"></script> … … 83 84 <script type="text/javascript" src="../../src/c/main/issm.js"></script> 84 85 <script type="text/javascript" src="../../externalpackages/javascript/src/sprintf.js"></script> 85 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>86 <script src="https://raw.githubusercontent.com/toji/gl-matrix/master/dist/gl-matrix-min.js"></script>86 <script type="text/javascript" src="../../externalpackages/javascript/src/jquery.min.js"></script> 87 <script type="text/javascript" src="../../externalpackages/javascript/src/gl-matrix-min.js"></script> 87 88 <!-- Includes }}}--> 88 89 </head> … … 96 97 parameterize(md); 97 98 setflowequation(md,'SSA','all'); 98 md=solve(md,StressbalanceSolutionEnum() );99 md=solve(md,StressbalanceSolutionEnum(),'checkconsistency','no'); 99 100 100 101 /*plotmodel(md,'data',md.initialization.vel,'colorbar','on','data',md.initialization.vx,
Note:
See TracChangeset
for help on using the changeset viewer.