source: issm/oecreview/Archive/19101-20495/ISSM-20294-20295.diff@ 20498

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

CHG: done with Archive/19101-20495

File size: 6.9 KB
  • TabularUnified ../trunk-jpl/src/m/classes/maskpsl.js

     
     1//MASKPSL class definition
     2//
     3//   Usage:
     4//      maskpsl= new maskpsl();
     5
     6function maskpsl () {
     7        //properties
     8        // {{{
     9                this.groundedice_levelset                           = NaN;
     10                this.ice_levelset                           = NaN;
     11                this.land_levelset                           = NaN;
     12                this.ocean_levelset                           = NaN;
     13                //}}}
     14        //methods
     15                this.setdefaultparameters = function (){ //{{{
     16                } // }}}
     17                this.disp = function () { //{{{
     18                        console.log(sprintf("   mask:"));
     19
     20                        fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0");
     21                        fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0");
     22                        fielddisplay(this,"ocean_levelset","is the vertex on the ocean? yes if = 1, no if = 0");
     23                        fielddisplay(this,"land_levelset","is the vertex on land? yes if = 1, no if = 0");
     24                } //}}}
     25                this.classname = function () { //{{{
     26                        return "maskpsl";
     27                } //}}}
     28                this.checkconsistency = function(md,solution,analyses){ //{{{
     29
     30                        checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1]);
     31                        checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
     32                        checkfield(md,'fieldname','mask.ocean_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
     33                        checkfield(md,'fieldname','mask.land_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
     34                       
     35                        var isice=NewArrayFill(md.mesh.numberofvertices,0);
     36                        for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
     37                        if (ArraySum(isice)==0){
     38                                console.log('no ice present in the domain');
     39                        }
     40                        if (ArrayMax(md.mask.ice_levelset)<0){
     41                                console.log('no ice front provided');
     42                        }
     43                               
     44                        var icefront=NewArrayFill(md.mesh.numberofelements,0);
     45                        for(var i=0;i<md.mesh.numberofelements;i++){
     46                                for(var j=0;j<md.mesh.elements[0].length;j++){
     47                                        icefront[i]+=(md.mask.ice_levelset[md.mesh.elements[i][j]-1]==0);
     48                                }
     49                        }
     50                        if ((ArrayMax(icefront)==3 & (md.mesh.elementtype() == 'Tria')) | (ArrayMax(icefront)==6 & md.mesh.elementtype() == 'Penta')){
     51                                if (md.mesh.elementtype()=='Tria'){
     52                                        var pos=ArrayFindEqual(icefront,3); numberemptyelements=pos.length;
     53                                }
     54                                else if (md.mesh.elementtype() == 'Penta'){
     55                                        var pos=ArrayFindEqual(icefront,6); numberemptyelements=pos.length;
     56                                }
     57                                throw Error(sprintf(" %i have all nodes on ice front, change md.mask.ice_levelset to fix it",numberemptyelements));
     58                        }
     59                } // }}}
     60                this.marshall=function(md,fid) { //{{{
     61                        WriteData(fid,'object',this,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
     62                        WriteData(fid,'object',this,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1);
     63                        WriteData(fid,'object',this,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
     64                        WriteData(fid,'object',this,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
     65
     66                        // get mask of vertices of elements with ice
     67                        var isice= NewArrayFill(md.mesh.numberofvertices,0);
     68                        for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
     69                       
     70                        var vlist = NewArrayFill(md.mesh.numberofvertices,0);
     71                        var pos=[];
     72                        for(var i=0;i<md.mesh.numberofelements;i++){
     73                                var sum=0;
     74                                for(var j=0;j<md.mesh.elements[0].length;j++){
     75                                        sum+=isice[md.mesh.elements[i][j]-1];
     76                                }
     77                                if(sum>0)pos.push(i);
     78                        }
     79                        for(var i=0;i<pos.length;i++){
     80                                for(var j=0;j<md.mesh.elements[0].length;j++){
     81                                        vlist[md.mesh.elements[pos[i]][j]-1]=1;
     82                                }
     83                        }
     84                        WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
     85                }//}}}
     86                this.fix=function() { //{{{
     87                }//}}}
     88
     89}
  • TabularUnified ../trunk-jpl/src/m/classes/outputdefinition.m

     
    4949                WriteData(fid,'data',enums,'enum',OutputdefinitionListEnum(),'format','DoubleMat','mattype',1);
    5050                end % }}}
    5151                function savemodeljs(self,fid,modelname) % {{{
    52                
     52
     53                        fprintf(fid,'%s.outputdefinition.definitions=[];\n',modelname);
    5354                        if ~isempty(self.definitions),
    5455                                error('outputdefinition savemodeljs error message: not supported yet!');
    5556                        end
  • TabularUnified ../trunk-jpl/src/m/classes/maskpsl.m

     
    8282                end % }}}
    8383                function savemodeljs(self,fid,modelname) % {{{
    8484               
     85                        fprintf(fid,'%s.mask=new maskpsl();\n',modelname);
    8586                        writejs1Darray(fid,[modelname '.mask.groundedice_levelset'],self.groundedice_levelset);
    8687                        writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset);
    8788                        writejs1Darray(fid,[modelname '.mask.ocean_levelset'],self.ocean_levelset);
  • TabularUnified ../trunk-jpl/src/m/classes/clusters/generic.js

     
    7373                var solutionlength = new Uint32Array(1);
    7474                solutionlength[0] = solutionbuffer.byteLength;
    7575               
    76                 var binbuffer = new Uint16Array(fid.buffer);
     76                var binbuffer = new Uint16Array(fid.rawbuffer());
     77
    7778                var binlength = new Uint32Array(1);
    7879                binlength[0] = binbuffer.byteLength;
    7980               
    8081                var data = new Blob([runtimenamelength,runtimenamebuffer,namelength,namebuffer,toolkitslength,toolkitsbuffer,solutionlength,solutionbuffer,binlength,binbuffer]);
    81                 //console.log(fid.buffer);
    82                 if (typeof(download) != "undefined") download(fid.buffer);
     82                if (typeof(download) != "undefined") download(fid.rawbuffer());
    8383                oReq.send(data);
    8484               
    8585                return;
    8686
    8787        } //}}}
    88         this.ab2str = function(buf) {
     88        this.ab2str = function(buf) { //{{{
    8989                return String.fromCharCode.apply(null, new Uint16Array(buf));
    9090        }
    9191        this.str2ab = function(str) {
     
    9494                        buf[i] = str.charCodeAt(i);
    9595                }
    9696                return buf;
    97         }
     97        } //}}}
    9898}
  • TabularUnified ../trunk-jpl/src/m/Makefile.am

     
    9999                                ${ISSM_DIR}/src/m/classes/initialization.js \
    100100                                ${ISSM_DIR}/src/m/classes/inversion.js \
    101101                                ${ISSM_DIR}/src/m/classes/mask.js \
     102                                ${ISSM_DIR}/src/m/classes/maskpsl.js \
    102103                                ${ISSM_DIR}/src/m/classes/masstransport.js \
    103104                                ${ISSM_DIR}/src/m/classes/matice.js \
    104105                                ${ISSM_DIR}/src/m/classes/mesh2d.js \
Note: See TracBrowser for help on using the repository browser.