Ignore:
Timestamp:
11/23/15 10:31:37 (9 years ago)
Author:
Eric.Larour
Message:

CHG: finished implementation of the marshall routine ,based on writing to a typed array buffer. No file
i/o involved at this point. Fake memory based file i/o is implemented in WriteData.js and used throughout the
classes marshall methods.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/m/classes/inversion.js

    r19787 r19791  
    7575
    7676        }// }}}
     77        this.classname= function(){// {{{
     78                return "inversion";
     79        }// }}}
    7780                this.checkconsistency = function(md,solution,analyses) { //{{{
    7881
     
    113116                        }
    114117                } // }}}
     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                }//}}}
    115158        //properties
    116159        // {{{
Note: See TracChangeset for help on using the changeset viewer.