Ignore:
Timestamp:
12/05/15 22:58:08 (9 years ago)
Author:
Eric.Larour
Message:

CHG (JAVASCRIPT): fixed some issues with segfaults.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/mask.m

    r19607 r19860  
    4646
    4747                        md = checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices 1]);
    48                         md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices 1]);
     48                        md = checkfield(md,'fieldname','mask.ice_levelset','forcing',1);
    4949                        isice=(md.mask.ice_levelset<=0);
    5050                        if sum(isice)==0,
     
    5656                        icefront=sum(md.mask.ice_levelset(md.mesh.elements)==0,2);
    5757                        if (max(icefront)==3 & strcmp(elementtype(md.mesh),'Tria')) | (max(icefront==6) & strcmp(elementtype(md.mesh),'Penta')),
    58                                 if strcmp(elementtype(md.mesh),'Tria'),
    59                                         numberemptyelements=length(find(icefront==3));
    60                                 elseif strcmp(elementtype(md.mesh),'Penta')
    61                                         numberemptyelements=length(find(icefront==6));
    62                                 end
    63                                 error([' ' num2str(numberemptyelements) ' have all nodes on ice front, change md.mask.ice_levelset to fix it'])
     58                                error('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
    6459                        end
    6560                end % }}}
     
    7267                function marshall(self,md,fid) % {{{
    7368                        WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
    74                         WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
     69                        WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
    7570
    7671                        % get mask of vertices of elements with ice
    77                         isice=md.mask.ice_levelset<=0.;
    78                         vlist = zeros(md.mesh.numberofvertices,1);
    79                         if md.mesh.numberofelements==1,
    80                                 pos=find(sum(isice(md.mesh.elements),1)>0);
     72                        if size(md.mask.ice_levelset,1)==md.mesh.numberofvertices,
     73                                isice=md.mask.ice_levelset<=0.;
     74                                vlist = zeros(md.mesh.numberofvertices,1);
     75                                pos=find(sum(isice(md.mesh.elements),2)>0);
     76                                vlist(md.mesh.elements(pos,:))=1;
     77                                WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    8178                        else
     79                                isice=md.mask.ice_levelset(1:end-1,1)<=0.;
     80                                vlist = zeros(md.mesh.numberofvertices,1);
    8281                                pos=find(sum(isice(md.mesh.elements),2)>0);
     82                                vlist(md.mesh.elements(pos,:))=1;
     83                                WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
     84                                save temp vlist;
    8385                        end
    84                         vlist(md.mesh.elements(pos,:))=1;
    85                         WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
    8686
    8787                end % }}}
Note: See TracChangeset for help on using the changeset viewer.