Changeset 9714


Ignore:
Timestamp:
09/09/11 07:28:59 (14 years ago)
Author:
Mathieu Morlighem
Message:

moved some stuff to mesh

Location:
issm/trunk
Files:
60 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/classes/mesh.m

    r9706 r9714  
    99                extractedvertices           = modelfield('default',NaN,'marshall',false);
    1010                extractedelements           = modelfield('default',NaN,'marshall',false);
     11                vertexonboundary            = modelfield('default',NaN,'marshall',false);
     12                lat        = modelfield('default',NaN,'marshall',false);
     13                long       = modelfield('default',NaN,'marshall',false);
     14                hemisphere = modelfield('default',NaN,'marshall',false);
     15                segments             = modelfield('default',NaN,'marshall',false);
     16                segmentmarkers       = modelfield('default',NaN,'marshall',false);
    1117        end
    1218        methods
  • issm/trunk/src/m/classes/model/model.m

    r9706 r9714  
    4343                 %FIXME: all other fields should belong to other classes
    4444
    45                  %Mesh
    4645                 dim                 = modelfield('default',0,'marshall',true,'format','Integer');
    4746                 numberofelements    = modelfield('default',0,'marshall',true,'format','Integer');
     
    5554                 edges               = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
    5655
    57                  %Initial 2d mesh
    5856                 numberofelements2d = modelfield('default',0,'marshall',true,'format','Integer');
    5957                 numberofnodes2d    = modelfield('default',0,'marshall',true,'format','Integer');
     
    6260                 y2d                = modelfield('default',NaN,'marshall',false);
    6361
    64                  %latlon of the coorinates
    65                  lat        = modelfield('default',NaN,'marshall',false);
    66                  long       = modelfield('default',NaN,'marshall',false);
    67                  hemisphere = modelfield('default',NaN,'marshall',false);
    68 
    69                  %Penalties
    70                  segments             = modelfield('default',NaN,'marshall',false);
    71                  segmentmarkers       = modelfield('default',NaN,'marshall',false);
    72 
    73                  %Projections
    7462                 uppernodes           = modelfield('default',NaN,'marshall',false);
    7563                 upperelements        = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
     
    7765                 lowernodes           = modelfield('default',NaN,'marshall',false);
    7866
    79                  %Extrusion
    8067                 numlayers         = modelfield('default',0,'marshall',true,'format','Integer');
    8168                 elementonbed      = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2);
     
    8370                 nodeonbed         = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',1);
    8471                 nodeonsurface     = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',1);
    85 
    86                  %Boundary conditions
    87                  nodeonboundary = modelfield('default',NaN,'marshall',false);
    8872                 %}}}
    8973         end
     
    234218                         if isfield(structmd,'gridonicesheet'), md.mask.vertexongroundedice=structmd.gridonicesheet; end
    235219                         if isfield(structmd,'gridonwater'), md.mask.vertexonwater=structmd.gridonwater; end
    236                          if isfield(structmd,'gridonboundary'), md.nodeonboundary=structmd.gridonboundary; end
     220                         if isfield(structmd,'gridonboundary'), md.mesh.vertexonboundary=structmd.gridonboundary; end
    237221                         if isfield(structmd,'petscoptions'), md.solver=structmd.petscoptions; end
    238222                         if isfield(structmd,'g'), md.constants.g=structmd.g; end
     
    328312                         if isfield(structmd,'extractednodes'), md.mesh.extractedvertices=structmd.extractednodes; end
    329313                         if isfield(structmd,'extractedelements'), md.mesh.extractedelements=structmd.extractedelements; end
     314                         if isfield(structmd,'nodeonboundary'), md.mesh.vertexonboundary=structmd.nodeonboundary; end
     315                         if isfield(structmd,'hemisphere'), md.mesh.hemisphere=structmd.hemisphere; end
     316                         if isfield(structmd,'lat'), md.mesh.lat=structmd.lat; end
     317                         if isfield(structmd,'lon'), md.mesh.lon=structmd.lon; end
     318                         if isfield(structmd,'segments'), md.mesh.segments=structmd.segments; end
     319                         if isfield(structmd,'segmentmarkers'), md.mesh.segmentmarkers=structmd.segmentmarkers; end
    330320
    331321                         %Field changes
  • issm/trunk/src/m/kml/kml_mesh_elem.m

    r8298 r9714  
    6161end
    6262
    63 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    64    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     63if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     64   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    6565    if     ~exist('latsgn','var')
    6666        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
     
    6969    else
    7070        display('Converting x/y data to lat/long data.');
    71         [md.lat,md.long]=xy2ll(md.x,md.y,latsgn);
     71        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
    7272    end
    7373end
     
    160160
    161161    for j=1:size(md.elements,2)
    162         kring.coords(j,:)=[md.long(md.elements(i,j)) md.lat(md.elements(i,j)) alt];
     162        kring.coords(j,:)=[md.mesh.long(md.elements(i,j)) md.mesh.lat(md.elements(i,j)) alt];
    163163    end
    164164    kring.coords(end,:)=kring.coords(1,:);
  • issm/trunk/src/m/kml/kml_mesh_write.m

    r9650 r9714  
    6767end
    6868
    69 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    70    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     69if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     70   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    7171    if     ~exist('latsgn','var')
    7272        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
     
    7575    else
    7676        display('Converting x/y data to lat/long data.');
    77         [md.lat,md.long]=xy2ll(md.x,md.y,latsgn);
     77        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
    7878    end
    7979end
  • issm/trunk/src/m/kml/kml_part_edges.m

    r9650 r9714  
    6262end
    6363
    64 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    65    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     64if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     65   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    6666    if     ~exist('latsgn','var')
    6767        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
     
    7070    else
    7171        display('Converting x/y data to lat/long data.');
    72         [md.lat,md.long]=xy2ll(md.x,md.y,latsgn);
     72        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
    7373    end
    7474end
     
    234234%  if first edge, write out first node
    235235                    if ~elast
    236                         kline.coords(end+1,:)=[md.long(edgeper(j,1)) md.lat(edgeper(j,1)) alt];
     236                        kline.coords(end+1,:)=[md.mesh.long(edgeper(j,1)) md.mesh.lat(edgeper(j,1)) alt];
    237237                    end
    238                     kline.coords(end+1,:)=[md.long(edgeper(j,2)) md.lat(edgeper(j,2)) alt];
     238                    kline.coords(end+1,:)=[md.mesh.long(edgeper(j,2)) md.mesh.lat(edgeper(j,2)) alt];
    239239                    elast=elemper(j);
    240240                    nlast=edgeper(j,2);
     
    323323%  write out first node of first side for half-edge to midpoint
    324324%                                disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
    325                                 kline.coords(end+1,:)=[md.long(elemp(ielem,nlast)) ...
    326                                                        md.lat(elemp(ielem,nlast)) alt];
     325                                kline.coords(end+1,:)=[md.mesh.long(elemp(ielem,nlast)) ...
     326                                                       md.mesh.lat(elemp(ielem,nlast)) alt];
    327327                            end
    328328                            nlast=0;
    329329                           
    330330%  write out midpoint of first side
    331                             kline.coords(end+1,:)=[(md.long(elemp(ielem,slast))...
    332                                                    +md.long(elemp(ielem,mod(slast,3)+1)))/2. ...
    333                                                    (md.lat(elemp(ielem,slast))...
    334                                                    +md.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
     331                            kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,slast))...
     332                                                   +md.mesh.long(elemp(ielem,mod(slast,3)+1)))/2. ...
     333                                                   (md.mesh.lat(elemp(ielem,slast))...
     334                                                   +md.mesh.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
    335335                        end
    336336
     
    371371%  write out half-edge from current node to midpoint of unshared side
    372372%                            disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
    373                             kline.coords(end+1,:)=[(md.long(elemp(ielem,nlast))...
    374                                                    +md.long(elemp(ielem,nnext)))/2. ...
    375                                                    (md.lat(elemp(ielem,nlast))...
    376                                                    +md.lat(elemp(ielem,nnext)))/2. alt];
     373                            kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,nlast))...
     374                                                   +md.mesh.long(elemp(ielem,nnext)))/2. ...
     375                                                   (md.mesh.lat(elemp(ielem,nlast))...
     376                                                   +md.mesh.lat(elemp(ielem,nnext)))/2. alt];
    377377                            nlast=0;
    378378
     
    404404%  all different, so cut through centroid
    405405%                                disp(['element ielem=' int2str(ielem) ' centroid written.'])
    406                                 kline.coords(end+1,:)=[sum(md.long(elemp(ielem,:)))/3. ...
    407                                                        sum(md.lat(elemp(ielem,:)))/3. alt];
     406                                kline.coords(end+1,:)=[sum(md.mesh.long(elemp(ielem,:)))/3. ...
     407                                                       sum(md.mesh.lat(elemp(ielem,:)))/3. alt];
    408408                            end
    409409%  one node is in current partition, so cut off other two nodes
     
    419419%  write out midpoint of opposite side
    420420%                        disp(['segment j=' int2str(j) ' internal edge from side ' int2str(slast) ' to side ' int2str(snext) ' from element ' int2str(ielem) ' written.'])
    421                         kline.coords(end+1,:)=[(md.long(elemp(ielem,snext))...
    422                                                +md.long(elemp(ielem,mod(snext,3)+1)))/2. ...
    423                                                (md.lat(elemp(ielem,snext))...
    424                                                +md.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
     421                        kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,snext))...
     422                                               +md.mesh.long(elemp(ielem,mod(snext,3)+1)))/2. ...
     423                                               (md.mesh.lat(elemp(ielem,snext))...
     424                                               +md.mesh.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
    425425                        elast=ielem;
    426426                        nlast=0;
     
    451451                            end
    452452%                            disp(['segment j=' int2str(j) ' unshared half edge on side ' int2str(slast) ' to node ' int2str(elemp(elast,nnext)) ' (node ' int2str(nnext) ') from element ' int2str(elast) ' written.'])
    453                             kline.coords(end+1,:)=[md.long(elemp(elast,nnext)) ...
    454                                                    md.lat(elemp(elast,nnext)) alt];
     453                            kline.coords(end+1,:)=[md.mesh.long(elemp(elast,nnext)) ...
     454                                                   md.mesh.lat(elemp(elast,nnext)) alt];
    455455                            break
    456456%  if not unshared, advance perimeter list and watch for end
  • issm/trunk/src/m/kml/kml_part_elems.m

    r9650 r9714  
    6262end
    6363
    64 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    65    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     64if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     65   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    6666    if     ~exist('latsgn','var')
    6767        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
     
    7070    else
    7171        display('Converting x/y data to lat/long data.');
    72         [md.lat,md.long]=xy2ll(md.x,md.y,latsgn);
     72        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
    7373    end
    7474end
     
    199199
    200200            for j=1:size(elem,2)
    201                 kring.coords(j,:)=[md.long(elem(i,j)) md.lat(elem(i,j)) alt];
     201                kring.coords(j,:)=[md.mesh.long(elem(i,j)) md.mesh.lat(elem(i,j)) alt];
    202202            end
    203203            kring.coords(end,:)=kring.coords(1,:);
  • issm/trunk/src/m/kml/kml_part_flagedges.m

    r9650 r9714  
    5454end
    5555
    56 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    57    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     56if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     57   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    5858    if     ~exist('latsgn','var')
    5959        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
     
    6262    else
    6363        display('Converting x/y data to lat/long data.');
    64         [md.lat,md.long]=xy2ll(md.x,md.y,latsgn);
     64        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
    6565    end
    6666end
     
    7474if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
    7575    md.qmu.numberofpartitions
    76     [latseg,lonseg]=flagedges(md.elements,md.lat,md.long,md.qmu.partition);
     76    [latseg,lonseg]=flagedges(md.elements,md.mesh.lat,md.mesh.long,md.qmu.partition);
    7777    kfold=kml_folder();
    7878    kfold.name      ='Partition Segments';
  • issm/trunk/src/m/kml/kml_partitions.m

    r9650 r9714  
    6363end
    6464
    65 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    66    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     65if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     66   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    6767    if     ~exist('latsgn','var')
    6868        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
     
    7171    else
    7272        display('Converting x/y data to lat/long data.');
    73         [md.lat,md.long]=xy2ll(md.x,md.y,latsgn);
     73        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
    7474    end
    7575end
     
    236236%  if first edge, write out first node
    237237                    if ~elast
    238                         kring.coords(end+1,:)=[md.long(edgeper(j,1)) md.lat(edgeper(j,1)) alt];
     238                        kring.coords(end+1,:)=[md.mesh.long(edgeper(j,1)) md.mesh.lat(edgeper(j,1)) alt];
    239239                    end
    240                     kring.coords(end+1,:)=[md.long(edgeper(j,2)) md.lat(edgeper(j,2)) alt];
     240                    kring.coords(end+1,:)=[md.mesh.long(edgeper(j,2)) md.mesh.lat(edgeper(j,2)) alt];
    241241                    elast=elemper(j);
    242242                    nlast=edgeper(j,2);
     
    325325%  write out first node of first side for half-edge to midpoint
    326326%                                disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
    327                                 kring.coords(end+1,:)=[md.long(elemp(ielem,nlast)) ...
    328                                                        md.lat(elemp(ielem,nlast)) alt];
     327                                kring.coords(end+1,:)=[md.mesh.long(elemp(ielem,nlast)) ...
     328                                                       md.mesh.lat(elemp(ielem,nlast)) alt];
    329329                            end
    330330                            nlast=0;
    331331                           
    332332%  write out midpoint of first side
    333                             kring.coords(end+1,:)=[(md.long(elemp(ielem,slast))...
    334                                                    +md.long(elemp(ielem,mod(slast,3)+1)))/2. ...
    335                                                    (md.lat(elemp(ielem,slast))...
    336                                                    +md.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
     333                            kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,slast))...
     334                                                   +md.mesh.long(elemp(ielem,mod(slast,3)+1)))/2. ...
     335                                                   (md.mesh.lat(elemp(ielem,slast))...
     336                                                   +md.mesh.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
    337337                        end
    338338
     
    373373%  write out half-edge from current node to midpoint of unshared side
    374374%                            disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
    375                             kring.coords(end+1,:)=[(md.long(elemp(ielem,nlast))...
    376                                                    +md.long(elemp(ielem,nnext)))/2. ...
    377                                                    (md.lat(elemp(ielem,nlast))...
    378                                                    +md.lat(elemp(ielem,nnext)))/2. alt];
     375                            kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,nlast))...
     376                                                   +md.mesh.long(elemp(ielem,nnext)))/2. ...
     377                                                   (md.mesh.lat(elemp(ielem,nlast))...
     378                                                   +md.mesh.lat(elemp(ielem,nnext)))/2. alt];
    379379                            nlast=0;
    380380
     
    406406%  all different, so cut through centroid
    407407%                                disp(['element ielem=' int2str(ielem) ' centroid written.'])
    408                                 kring.coords(end+1,:)=[sum(md.long(elemp(ielem,:)))/3. ...
    409                                                        sum(md.lat(elemp(ielem,:)))/3. alt];
     408                                kring.coords(end+1,:)=[sum(md.mesh.long(elemp(ielem,:)))/3. ...
     409                                                       sum(md.mesh.lat(elemp(ielem,:)))/3. alt];
    410410                            end
    411411%  one node is in current partition, so cut off other two nodes
     
    421421%  write out midpoint of opposite side
    422422%                        disp(['segment j=' int2str(j) ' internal edge from side ' int2str(slast) ' to side ' int2str(snext) ' from element ' int2str(ielem) ' written.'])
    423                         kring.coords(end+1,:)=[(md.long(elemp(ielem,snext))...
    424                                                +md.long(elemp(ielem,mod(snext,3)+1)))/2. ...
    425                                                (md.lat(elemp(ielem,snext))...
    426                                                +md.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
     423                        kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,snext))...
     424                                               +md.mesh.long(elemp(ielem,mod(snext,3)+1)))/2. ...
     425                                               (md.mesh.lat(elemp(ielem,snext))...
     426                                               +md.mesh.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
    427427                        elast=ielem;
    428428                        nlast=0;
     
    453453                            end
    454454%                            disp(['segment j=' int2str(j) ' unshared half edge on side ' int2str(slast) ' to node ' int2str(elemp(elast,nnext)) ' (node ' int2str(nnext) ') from element ' int2str(elast) ' written.'])
    455                             kring.coords(end+1,:)=[md.long(elemp(elast,nnext)) ...
    456                                                    md.lat(elemp(elast,nnext)) alt];
     455                            kring.coords(end+1,:)=[md.mesh.long(elemp(elast,nnext)) ...
     456                                                   md.mesh.lat(elemp(elast,nnext)) alt];
    457457                            break
    458458%  if not unshared, advance perimeter list and watch for end
  • issm/trunk/src/m/kml/kml_unsh_edges.m

    r9650 r9714  
    5454end
    5555
    56 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    57    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     56if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     57   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    5858    if     ~exist('latsgn','var')
    5959        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
     
    6262    else
    6363        display('Converting x/y data to lat/long data.');
    64         [md.lat,md.long]=xy2ll(md.x,md.y,latsgn);
     64        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
    6565    end
    6666end
     
    104104
    105105        for j=1:2
    106             kline.coords(j,:)=[md.long(edgeuns(i,j)) md.lat(edgeuns(i,j)) alt];
     106            kline.coords(j,:)=[md.mesh.long(edgeuns(i,j)) md.mesh.lat(edgeuns(i,j)) alt];
    107107        end
    108108
  • issm/trunk/src/m/model/bamg.m

    r9691 r9714  
    321321md.elements=bamgmesh_out.Triangles(:,1:3);
    322322md.edges=bamgmesh_out.IssmEdges;
    323 md.segments=bamgmesh_out.IssmSegments(:,1:3);
    324 md.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
     323md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
     324md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
    325325
    326326%Fill in rest of fields:
     
    334334md.elementonbed=ones(md.numberofelements,1);
    335335md.elementonsurface=ones(md.numberofelements,1);
    336 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     336md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    337337md.elementconnectivity=md.private.bamg.mesh.ElementConnectivity;
    338338md.elementconnectivity(find(isnan(md.elementconnectivity)))=0;
  • issm/trunk/src/m/model/collapse.m

    r9705 r9714  
    8383md.geometry.thickness=project2d(md,md.geometry.thickness,1);
    8484md.geometry.bed=project2d(md,md.geometry.bed,1);
    85 md.nodeonboundary=project2d(md,md.nodeonboundary,1);
     85md.mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1);
    8686md.mask.elementonfloatingice=project2d(md,md.mask.elementonfloatingice,1);
    8787md.mask.vertexonfloatingice=project2d(md,md.mask.vertexonfloatingice,1);
  • issm/trunk/src/m/model/extrude.m

    r9705 r9714  
    202202md.geometry.bed=project3d(md,'vector',md.geometry.bed,'type','node');
    203203md.geometry.bathymetry=project3d(md,'vector',md.geometry.bathymetry,'type','node');
    204 md.nodeonboundary=project3d(md,'vector',md.nodeonboundary,'type','node');
     204md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node');
    205205md.mask.elementonfloatingice=project3d(md,'vector',md.mask.elementonfloatingice,'type','element');
    206206md.mask.vertexonfloatingice=project3d(md,'vector',md.mask.vertexonfloatingice,'type','node');
  • issm/trunk/src/m/model/ismodelselfconsistent.m

    r9705 r9714  
    151151                message(['model not consistent: md.rifts should be a structure!']);
    152152        end
    153         if ~isempty(find(md.segmentmarkers>=2)),
     153        if ~isempty(find(md.mesh.segmentmarkers>=2)),
    154154                %We have segments with rift markers, but no rift structure!
    155155                message(['model not consistent: model ' md.miscellaneous.name ' should be processed for rifts (run meshprocessrifts)!']);
  • issm/trunk/src/m/model/kmlimagesc.m

    r9074 r9714  
    2020fontsize=getfieldvalue(options,'fontsize',12);
    2121posting=getfieldvalue(options,'posting',.1);
    22 minlong=getfieldvalue(options,'minlong',min(md.long));
    23 maxlong=getfieldvalue(options,'maxlong',max(md.long));
    24 minlat=getfieldvalue(options,'minlat',min(md.lat));
    25 maxlat=getfieldvalue(options,'maxlat',max(md.lat));
     22minlong=getfieldvalue(options,'minlong',min(md.mesh.long));
     23maxlong=getfieldvalue(options,'maxlong',max(md.mesh.long));
     24minlat=getfieldvalue(options,'minlat',min(md.mesh.lat));
     25maxlat=getfieldvalue(options,'maxlat',max(md.mesh.lat));
    2626minfield=getfieldvalue(options,'minfield',min(field));
    2727maxfield=getfieldvalue(options,'maxfield',max(field));
    2828
    2929%do we have hemisphere setup?:
    30 if ~isstr(md.hemisphere),
    31         error('md.hemisphere should be ''s'' or ''n''');
     30if ~isstr(md.mesh.hemisphere),
     31        error('md.mesh.hemisphere should be ''s'' or ''n''');
    3232end
    3333
    34 if strcmpi(md.hemisphere,'s'),
     34if strcmpi(md.mesh.hemisphere,'s'),
    3535        hemisphere=1;
    3636        central_meridian=getfieldvalue(options,'central_meridian',45);
    3737        standard_parallel=getfieldvalue(options,'standard_parallel',70);
    38 elseif strcmpi(md.hemisphere,'n'),
     38elseif strcmpi(md.mesh.hemisphere,'n'),
    3939        hemisphere=-1;
    4040        central_meridian=getfieldvalue(options,'central_meridian',0);
    4141        standard_parallel=getfieldvalue(options,'standard_parallel',71);
    4242else
    43         error('md.hemisphere should be ''s'' or ''n''');
     43        error('md.mesh.hemisphere should be ''s'' or ''n''');
    4444end
    4545
     
    4949
    5050%regrid to lat,long grid
    51 [x_m,y_m,field]=InterpFromMeshToGrid(md.elements,md.long,md.lat,field,minlong,maxlat,posting,posting,nlines,ncols,NaN);
     51[x_m,y_m,field]=InterpFromMeshToGrid(md.elements,md.mesh.long,md.mesh.lat,field,minlong,maxlat,posting,posting,nlines,ncols,NaN);
    5252field=flipud(field);
    5353
  • issm/trunk/src/m/model/mesh/meshconvert.m

    r9644 r9714  
    3232md.elements=bamgmesh_out.Triangles(:,1:3);
    3333md.edges=bamgmesh_out.IssmEdges;
    34 md.segments=bamgmesh_out.IssmSegments(:,1:3);
    35 md.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
     34md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
     35md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
    3636
    3737%Fill in rest of fields:
     
    4545md.elementonbed=ones(md.numberofelements,1);
    4646md.elementonsurface=ones(md.numberofelements,1);
    47 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     47md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
  • issm/trunk/src/m/model/mesh/meshnodensity.m

    r9703 r9714  
    2525%Mesh using TriMeshNoDensity
    2626if strcmp(riftname,''),
    27         [md.elements,md.x,md.y,md.segments,md.segmentmarkers]=TriMeshNoDensity(domainname);
     27        [md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMeshNoDensity(domainname);
    2828else
    2929        [elements,x,y,segments,segmentmarkers]=TriMeshNoDensity(domainname,riftname);
     
    5050        md.y=y;
    5151        md.elements=elements;
    52         md.segments=segments;
    53         md.segmentmarkers=segmentmarkers;
     52        md.mesh.segments=segments;
     53        md.mesh.segmentmarkers=segmentmarkers;
    5454end
    5555
     
    5858md.numberofnodes=length(md.x);
    5959md.z=zeros(md.numberofnodes,1);
    60 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     60md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    6161md.nodeonbed=ones(md.numberofnodes,1);
    6262md.nodeonsurface=ones(md.numberofnodes,1);
  • issm/trunk/src/m/model/mesh/meshrefine.m

    r9619 r9714  
    1616
    1717%Refine using TriMeshRefine
    18 [md.elements,md.x,md.y,md.segments,md.segmentmarkers]=TriMeshRefine(md.elements,md.x,md.y,md.segments,md.segmentmarkers,areas,'yes');
     18[md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMeshRefine(md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,areas,'yes');
    1919
    2020%Fill in rest of fields:
     
    2222md.numberofnodes=length(md.x);
    2323md.z=zeros(md.numberofnodes,1);
    24 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     24md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    2525md.nodeonbed=ones(md.numberofnodes,1);
    2626md.nodeonsurface=ones(md.numberofnodes,1);
  • issm/trunk/src/m/model/mesh/meshyams.m

    r9703 r9714  
    9797                md.nodeconnectivity=NodeConnectivity(md.elements,md.numberofnodes);
    9898                md.elementconnectivity=ElementConnectivity(md.elements,md.nodeconnectivity);
    99                 md.segments=findsegments(md);
     99                md.mesh.segments=findsegments(md);
    100100                md=meshyamsrecreateriftsegments(md);
    101101        end
     
    110110
    111111%recreate segments
    112 md.segments=findsegments(md);
    113 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     112md.mesh.segments=findsegments(md);
     113md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    114114
    115115%Fill in rest of fields:
  • issm/trunk/src/m/model/mesh/reorder.m

    r9451 r9714  
    2121%update all fields
    2222md.elements=tnewnodes(md.elements(newelements,:));
    23 md.segments=[tnewnodes(md.segments(:,1)) tnewnodes(md.segments(:,2)) tnewelements(md.segments(:,3))];
     23md.mesh.segments=[tnewnodes(md.mesh.segments(:,1)) tnewnodes(md.mesh.segments(:,2)) tnewelements(md.mesh.segments(:,3))];
    2424md.x=md.x(newnodes);
    2525md.y=md.y(newnodes);
    2626md.z=md.z(newnodes);
    27 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     27md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
  • issm/trunk/src/m/model/mesh/rifts/meshaddrifts.m

    r9619 r9714  
    7474        end
    7575       
    76         md.segments(:,1:2)=nodeconv(md.segments(:,1:2));
    77         md.segments(:,3)=elconv(md.segments(:,3));
     76        md.mesh.segments(:,1:2)=nodeconv(md.mesh.segments(:,1:2));
     77        md.mesh.segments(:,3)=elconv(md.mesh.segments(:,3));
    7878
    7979end
    8080
    8181%finish up "a la" mesh.h
    82 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     82md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    8383md.nodeonbed=ones(md.numberofnodes,1);
    8484md.nodeonsurface=ones(md.numberofnodes,1);
  • issm/trunk/src/m/model/mesh/rifts/meshprocessoutsiderifts.m

    r9661 r9714  
    6868
    6969                %deal with segments
    70                 tipsegments=find((md.segments(:,1)==tip) | (md.segments(:,2)==tip));
     70                tipsegments=find((md.mesh.segments(:,1)==tip) | (md.mesh.segments(:,2)==tip));
    7171                for  k=1:length(tipsegments),
    7272                        segment_index=tipsegments(k);
    73                         pos=find(md.segments(segment_index,1:2)~=tip);
    74                         other_node=md.segments(segment_index,pos);
     73                        pos=find(md.mesh.segments(segment_index,1:2)~=tip);
     74                        other_node=md.mesh.segments(segment_index,pos);
    7575                        if ~isconnected(md.elements,other_node,tip),
    76                                 pos=find(md.segments(segment_index,1:2)==tip);
    77                                 md.segments(segment_index,pos)=num;
     76                                pos=find(md.mesh.segments(segment_index,1:2)==tip);
     77                                md.mesh.segments(segment_index,pos)=num;
    7878                        end
    7979                end
     
    8686md.numberofnodes=length(md.x);
    8787md.z=zeros(md.numberofnodes,1);
    88 md.nodeonboundary=zeros(length(md.x),1); md.nodeonboundary(md.segments(:,1:2))=1;
     88md.mesh.vertexonboundary=zeros(length(md.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    8989md.rifts.numrifts=length(md.rifts.riftstruct);
    9090md.flowequation.element_equation=3*ones(md.numberofelements,1);
  • issm/trunk/src/m/model/mesh/rifts/meshprocessrifts.m

    r9661 r9714  
    2525
    2626%Call MEX file
    27 [md.elements,md.x,md.y,md.segments,md.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.elements,md.x,md.y,md.segments,md.segmentmarkers);
     27[md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers);
    2828if ~isstruct(md.rifts.riftstruct),
    2929        error('TriMeshProcessRifts did not find any rift');
     
    3434md.numberofnodes=length(md.x);
    3535md.z=zeros(md.numberofnodes,1);
    36 md.nodeonboundary=zeros(length(md.x),1); md.nodeonboundary(md.segments(:,1:2))=1;
     36md.mesh.vertexonboundary=zeros(length(md.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    3737md.rifts.numrifts=length(md.rifts.riftstruct);
    3838md.flowequation.element_equation=3*ones(md.numberofelements,1);
  • issm/trunk/src/m/model/mesh/rifts/meshyamsrecreateriftsegments.m

    r9619 r9714  
    1111
    1212                                %find tip1 and tip2 for this rift, in the new mesh created by yams.
    13                                 pos=find_point(md.x(md.segments(:,1)),md.y(md.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
    14                                 tip1=md.segments(pos,1);
    15                                 pos=find_point(md.x(md.segments(:,1)),md.y(md.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
    16                                 tip2=md.segments(pos,1);
     13                                pos=find_point(md.x(md.mesh.segments(:,1)),md.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
     14                                tip1=md.mesh.segments(pos,1);
     15                                pos=find_point(md.x(md.mesh.segments(:,1)),md.y(md.mesh.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
     16                                tip2=md.mesh.segments(pos,1);
    1717
    1818                                %start from tip1, and build segments of this rift.
    19                                 pos=find_point(md.x(md.segments(:,1)),md.y(md.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
     19                                pos=find_point(md.x(md.mesh.segments(:,1)),md.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
    2020                                pos_record=[pos_record; pos];
    21                                 riftsegs=md.segments(pos,:);
     21                                riftsegs=md.mesh.segments(pos,:);
    2222                                while 1,
    2323                                        A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
    2424                                        %find other segment that holds B.
    25                                         pos=find(md.segments(:,1)==B);
     25                                        pos=find(md.mesh.segments(:,1)==B);
    2626                                        pos_record=[pos_record; pos];
    27                                         riftsegs=[riftsegs; md.segments(pos,:)];
     27                                        riftsegs=[riftsegs; md.mesh.segments(pos,:)];
    2828                                        if riftsegs(end,2)==tip1,
    2929                                                break;
     
    3939
    4040                                %find tip1 and tip2 for this rift, in the new mesh created by yams.
    41                                 pos1=find_point(md.x(md.segments(:,1)),md.y(md.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
    42                                 tip1=md.segments(pos1,1);
    43                                 pos2=find_point(md.x(md.segments(:,1)),md.y(md.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
    44                                 tip2=md.segments(pos2,1);
     41                                pos1=find_point(md.x(md.mesh.segments(:,1)),md.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
     42                                tip1=md.mesh.segments(pos1,1);
     43                                pos2=find_point(md.x(md.mesh.segments(:,1)),md.y(md.mesh.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
     44                                tip2=md.mesh.segments(pos2,1);
    4545                                if length(tip1)==2,
    4646                                        %swap.
     
    5353
    5454                                pos_record=[pos_record; pos];
    55                                 riftsegs=md.segments(pos,:);
     55                                riftsegs=md.mesh.segments(pos,:);
    5656                                while 1,
    5757                                        A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
    5858                                        %find other segment that holds B.
    59                                         pos=find(md.segments(:,1)==B);
     59                                        pos=find(md.mesh.segments(:,1)==B);
    6060                                        pos_record=[pos_record; pos];
    61                                         riftsegs=[riftsegs; md.segments(pos,:)];
     61                                        riftsegs=[riftsegs; md.mesh.segments(pos,:)];
    6262                                        if ((riftsegs(end,2)==tip2(1)) | (riftsegs(end,2)==tip2(2))),
    6363                                                %figure out which tip we reached
     
    7070                                pos=pos2(index);
    7171                                pos_record=[pos_record; pos];
    72                                 riftsegs=[riftsegs; md.segments(pos,:)];
     72                                riftsegs=[riftsegs; md.mesh.segments(pos,:)];
    7373                                while 1,
    7474                                        A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
    7575                                        %find other segment that holds B.
    76                                         pos=find(md.segments(:,1)==B);
     76                                        pos=find(md.mesh.segments(:,1)==B);
    7777                                        pos_record=[pos_record; pos];
    78                                         riftsegs=[riftsegs; md.segments(pos,:)];
     78                                        riftsegs=[riftsegs; md.mesh.segments(pos,:)];
    7979                                        if riftsegs(end,2)==tip1,
    8080                                                break;
     
    8888        end
    8989        %take out rift segments from segments
    90         md.segments(pos_record,:)=[];
     90        md.mesh.segments(pos_record,:)=[];
  • issm/trunk/src/m/model/mesh/setmesh.m

    r9704 r9714  
    3939%Mesh using TriMesh
    4040if strcmp(riftname,''),
    41         [md.elements,md.x,md.y,md.segments,md.segmentmarkers]=TriMesh(domainname,area,'yes');
     41        [md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMesh(domainname,area,'yes');
    4242else
    4343        [elements,x,y,segments,segmentmarkers]=TriMesh(domainname,riftname,area,'yes');
     
    6464        md.y=y;
    6565        md.elements=elements;
    66         md.segments=segments;
    67         md.segmentmarkers=segmentmarkers;
     66        md.mesh.segments=segments;
     67        md.mesh.segmentmarkers=segmentmarkers;
    6868end
    6969
     
    7272md.numberofnodes=length(md.x);
    7373md.z=zeros(md.numberofnodes,1);
    74 md.nodeonboundary=zeros(md.numberofnodes,1); md.nodeonboundary(md.segments(:,1:2))=1;
     74md.mesh.vertexonboundary=zeros(md.numberofnodes,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
    7575md.nodeonbed=ones(md.numberofnodes,1);
    7676md.nodeonsurface=ones(md.numberofnodes,1);
  • issm/trunk/src/m/model/modelextract.m

    r9706 r9714  
    206206                md2.elementconnectivity=ElementConnectivity(md2.elements,md2.nodeconnectivity);
    207207                md2.segments=contourenvelope(md2);
    208                 md2.nodeonboundary=zeros(numberofnodes2,1); md2.nodeonboundary(md2.segments(:,1:2))=1;
     208                md2.mesh.vertexonboundary=zeros(numberofnodes2,1); md2.nodeonboundary(md2.segments(:,1:2))=1;
    209209        end
    210210
  • issm/trunk/src/m/model/outflow.m

    r9684 r9714  
    55%      flag=outflow(md);
    66
    7 A=md.segments(:,1);
    8 B=md.segments(:,2);
     7A=md.mesh.segments(:,1);
     8B=md.mesh.segments(:,2);
    99Nx=-(md.y(A)-md.y(B));
    1010Ny=  md.x(A)-md.x(B);
  • issm/trunk/src/m/model/plot/applyoptions.m

    r9650 r9714  
    99
    1010%some defaults
    11 if strcmpi(md.hemisphere,'n'), options=addfielddefault(options,'hemisphere','n');
    12 elseif strcmpi(md.hemisphere,'s'), options=addfielddefault(options,'hemisphere','s');
     11if strcmpi(md.mesh.hemisphere,'n'), options=addfielddefault(options,'hemisphere','n');
     12elseif strcmpi(md.mesh.hemisphere,'s'), options=addfielddefault(options,'hemisphere','s');
    1313end
    1414
     
    410410        axis equal off
    411411        %box off
    412         if strcmpi(md.hemisphere,'n') | strcmpi(md.hemisphere,'north'),
     412        if strcmpi(md.mesh.hemisphere,'n') | strcmpi(md.mesh.hemisphere,'north'),
    413413                A=expread([ issmdir() '/projects/Exp/GreenlandBoxFront.exp']);
    414414                [A.x A.y]=ll2xy(A.x,A.y,+1,45,70);
    415         elseif strcmpi(md.hemisphere,'s') | strcmpi(md.hemisphere,'south'),
     415        elseif strcmpi(md.mesh.hemisphere,'s') | strcmpi(md.mesh.hemisphere,'south'),
    416416                A=expread([ issmdir() '/projects/Exp/Antarctica.exp']);
    417417        else
  • issm/trunk/src/m/model/plot/kmlgroundoverlay.m

    r7028 r9714  
    1212
    1313%first figure out if lat and long were computed!
    14 if (isempty(md.lat) | isempty(md.long)),
     14if (isempty(md.mesh.lat) | isempty(md.mesh.long)),
    1515        error('kmlgroundoverlay error message: project x,y onto lat,long fields of model!');
    1616end
     
    2828
    2929%figure out  min and max for lat and long of this image:
    30 west=min(md.long);
    31 east=max(md.long);
    32 south=min(md.lat);
    33 north=max(md.lat);
     30west=min(md.mesh.long);
     31east=max(md.mesh.long);
     32south=min(md.mesh.lat);
     33north=max(md.mesh.lat);
    3434
    3535%print image at high resolution
  • issm/trunk/src/m/model/plot/latlonoverlay.m

    r8929 r9714  
    6666        latitudes =lat*ones(size(longitudes));
    6767
    68         if strcmpi(md.hemisphere,'n'),
     68        if strcmpi(md.mesh.hemisphere,'n'),
    6969                if lat<0, continue; end
    7070                [x,y]=ll2xy(latitudes,longitudes,+1,45,70);
    71         elseif strcmpi(md.hemisphere,'s'),
     71        elseif strcmpi(md.mesh.hemisphere,'s'),
    7272                if lat>0, continue; end
    7373                [x,y]=ll2xy(latitudes,longitudes,-1, 0,71);
     
    105105for lon=-180:lonstep:180
    106106
    107         if strcmpi(md.hemisphere,'n'),
     107        if strcmpi(md.mesh.hemisphere,'n'),
    108108                latitudes =0:resolution:90;
    109109                longitudes=lon*ones(size(latitudes));
    110110                [x,y]=ll2xy(latitudes,longitudes,+1,45,70);
    111         elseif strcmpi(md.hemisphere,'s'),
     111        elseif strcmpi(md.mesh.hemisphere,'s'),
    112112                latitudes =-90:resolution:0;
    113113                longitudes=lon*ones(size(latitudes));
  • issm/trunk/src/m/model/plot/plot_boundaries.m

    r9619 r9714  
    1515[x y z elements is2d isplanet]=processmesh(md,[],options);
    1616
    17 for i=1:size(md.segments,1),
    18         plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'k.-');hold on;
     17for i=1:size(md.mesh.segments,1),
     18        plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');hold on;
    1919end
    2020
  • issm/trunk/src/m/model/plot/plot_riftfraction.m

    r9619 r9714  
    1919
    2020%plot mesh boundaries
    21 for i=1:size(md.segments,1),
    22         h1=plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'k.-');
     21for i=1:size(md.mesh.segments,1),
     22        h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
    2323end
    2424
  • issm/trunk/src/m/model/plot/plot_riftnumbering.m

    r9684 r9714  
    1515
    1616%plot mesh boundaries
    17 for i=1:size(md.segments,1),
    18         plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'k.-');
     17for i=1:size(md.mesh.segments,1),
     18        plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
    1919end
    2020
     
    2424if isstruct(md.rifts.riftstruct),
    2525        %plot mesh boundaries
    26         for i=1:size(md.segments,1),
    27                 h1=plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'b-');
     26        for i=1:size(md.mesh.segments,1),
     27                h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
    2828        end
    2929        for i=1:size(md.rifts.riftstruct,1),
  • issm/trunk/src/m/model/plot/plot_riftpenetration.m

    r9684 r9714  
    1414
    1515%plot mesh boundaries
    16 for i=1:size(md.segments,1),
    17         plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'k-');
     16for i=1:size(md.mesh.segments,1),
     17        plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k-');
    1818end
    1919
     
    2323if isstruct(md.rifts.riftstruct),
    2424        %plot mesh boundaries
    25         for i=1:size(md.segments,1),
    26                 h1=plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'b-');
     25        for i=1:size(md.mesh.segments,1),
     26                h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
    2727        end
    2828        for i=1:size(md.rifts.riftstruct,1),
  • issm/trunk/src/m/model/plot/plot_riftrelvel.m

    r9684 r9714  
    3939
    4040%plot mesh boundaries
    41 for i=1:size(md.segments,1),
    42         plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'k-');
     41for i=1:size(md.mesh.segments,1),
     42        plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k-');
    4343end
    4444
     
    5959
    6060%plot mesh boundaries
    61 for i=1:size(md.segments,1),
    62         h1=plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'b-');
     61for i=1:size(md.mesh.segments,1),
     62        h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
    6363end
    6464for i=1:md.rifts.numrifts,
  • issm/trunk/src/m/model/plot/plot_riftvel.m

    r9684 r9714  
    3535
    3636%plot mesh boundaries
    37 for i=1:size(md.segments,1),
    38         plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'k.-');
     37for i=1:size(md.mesh.segments,1),
     38        plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
    3939end
    4040
     
    5353
    5454%plot mesh boundaries
    55 for i=1:size(md.segments,1),
    56         h1=plot(x(md.segments(i,1:2)),y(md.segments(i,1:2)),'b-');
     55for i=1:size(md.mesh.segments,1),
     56        h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
    5757end
    5858
  • issm/trunk/src/m/model/plot/plot_segments.m

    r8472 r9714  
    1212%process mesh and data
    1313[x y z elements is2d isplanet]=processmesh(md,[],options);
    14 segments=md.segments;
     14segments=md.mesh.segments;
    1515
    1616if (md.dim==2),
     
    2727        if strcmpi(getfieldvalue(options,'segmentnumbering','off'),'on'),
    2828                text(sum(x(segments(:,1:2)),2)/2,sum(y(segments(:,1:2)),2)/2,sum(z(segments(:,1:2)),2)/2+1,...
    29                         num2str(md.segmentmarkers),...
     29                        num2str(md.mesh.segmentmarkers),...
    3030                        'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
    3131        end
  • issm/trunk/src/m/model/plot/processmesh.m

    r9532 r9714  
    2121                y2d=md.y2d;
    2222        else
    23                 x=md.long;
     23                x=md.mesh.long;
    2424                x2d=md.x2d;
    25                 y=md.lat;
     25                y=md.mesh.lat;
    2626                y2d=md.y2d;
    2727        end
  • issm/trunk/src/m/model/plot/showregion.m

    r6860 r9714  
    1515axis equal off
    1616%box off
    17 if strcmpi(md.hemisphere,'n') | strcmpi(md.hemisphere,'north'),
     17if strcmpi(md.mesh.hemisphere,'n') | strcmpi(md.mesh.hemisphere,'north'),
    1818        A=expread([issmdir() 'projects/Exp/Greenland.exp']);
    19 elseif strcmpi(md.hemisphere,'s') | strcmpi(md.hemisphere,'south'),
     19elseif strcmpi(md.mesh.hemisphere,'s') | strcmpi(md.mesh.hemisphere,'south'),
    2020        A=expread([issmdir() '/projects/Exp/Antarctica.exp']);
    2121else
  • issm/trunk/src/m/model/radarpower.m

    r9620 r9714  
    2929%figure out if we should go look for Greenland or Antarctica geotiff, or if user provided one.
    3030if ~exist(options,'overlay_image'),
    31         if strcmpi(md.hemisphere,'n'),
     31        if strcmpi(md.mesh.hemisphere,'n'),
    3232                if ~exist([issmdir() '/projects/ModelData/MOG/mog150_greenland_map.jpg']),
    3333                        error(['radarpower error message: file ' issmdir() '/projects/ModelData/MOG/mog150_greenland_map.jpg not found.']);
     
    5656                md.radaroverlay.y=(ymin:(ymax-ymin)/(size(md.radaroverlay.pwr,1)-1):ymax);
    5757
    58         elseif strcmpi(md.hemisphere,'s'),
     58        elseif strcmpi(md.mesh.hemisphere,'s'),
    5959                if highres,
    6060                        if ~exist([issmdir() '/projects/ModelData/MosaicTiffRsat/amm125m_v2_200m.tif']),
  • issm/trunk/src/m/model/setmask2.m

    r9641 r9714  
    120120
    121121%call findsegments to build segment using THIS conectivity
    122 md.segments=findsegments(md,'elementconnectivity',elementconnectivity);
     122md.mesh.segments=findsegments(md,'elementconnectivity',elementconnectivity);
    123123
    124124%some final checks:
     
    146146md.mask.elementongroundedice=elementongroundedice;
    147147
    148 md.segmentmarkers(:)=1;
     148md.mesh.segmentmarkers(:)=1;
  • issm/trunk/src/m/solutions/flaim.m

    r9650 r9714  
    5050%  calculate latitude and longitude, if necessary
    5151
    52 if isempty(md.lat)  || ((numel(md.lat) == 1)  && isnan(md.lat)) || ...
    53    isempty(md.long) || ((numel(md.long) == 1) && isnan(md.long))
     52if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
     53   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
    5454        if     ~isfield(options,'latsgn')
    5555                error(['Missing ''latsgn'' parameter to calculate missing lat/long values.']);
     
    5858        else
    5959                display('Converting x/y values to lat/long values.');
    60                 [md.lat,md.long]=xy2ll(md.x,md.y,options.latsgn);
     60                [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,options.latsgn);
    6161        end
    6262end
     
    8080
    8181display('Calling KMLMeshWrite.');
    82 KMLMeshWrite(md.miscellaneous.name,md.miscellaneous.notes,md.elements,md.nodeconnectivity,md.lat,md.long,md.qmu.partition,md.flaim.criterion,options.cmap,filekml);
     82KMLMeshWrite(md.miscellaneous.name,md.miscellaneous.notes,md.elements,md.nodeconnectivity,md.mesh.lat,md.mesh.long,md.qmu.partition,md.flaim.criterion,options.cmap,filekml);
    8383%  for testing
    8484%filekml='issm-split-geikie1-targets.kml';
  • issm/trunk/src/m/utils/BC/SetIceSheetBC.m

    r9696 r9714  
    88
    99%node on Dirichlet
    10 pos=find(md.nodeonboundary);
     10pos=find(md.mesh.vertexonboundary);
    1111md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
    1212md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
  • issm/trunk/src/m/utils/BC/SetIceShelfBC.m

    r9684 r9714  
    2020        if ~exist(icefrontfile), error(['SetIceShelfBC error message: ice front file ' icefrontfile ' not found']); end
    2121        nodeinsideicefront=ContourToMesh(md.elements,md.x,md.y,icefrontfile,'node',2);
    22         nodeonicefront=double(md.nodeonboundary & nodeinsideicefront);
     22        nodeonicefront=double(md.mesh.vertexonboundary & nodeinsideicefront);
    2323elseif nargin==1,
    2424        nodeonicefront=zeros(md.numberofnodes,1);
     
    2727        error('bad usage');
    2828end
    29 pos=find(md.nodeonboundary & ~nodeonicefront);
     29pos=find(md.mesh.vertexonboundary & ~nodeonicefront);
    3030md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
    3131md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
     
    4747%segment on Ice Front
    4848%segment on Neumann (Ice Front)
    49 pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2)));
     49pos=find(nodeonicefront(md.mesh.segments(:,1)) | nodeonicefront(md.mesh.segments(:,2)));
    5050if (md.dim==2)
    51         pressureload=md.segments(pos,:);
     51        pressureload=md.mesh.segments(pos,:);
    5252elseif md.dim==3
    53         pressureload_layer1=[md.segments(pos,1:2)  md.segments(pos,2)+md.numberofnodes2d  md.segments(pos,1)+md.numberofnodes2d  md.segments(pos,3)];
     53        pressureload_layer1=[md.mesh.segments(pos,1:2)  md.mesh.segments(pos,2)+md.numberofnodes2d  md.mesh.segments(pos,1)+md.numberofnodes2d  md.mesh.segments(pos,3)];
    5454        pressureload=[];
    5555        for i=1:md.numlayers-1,
  • issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m

    r9696 r9714  
    2424        end
    2525        nodeinsideicefront=ContourToMesh(md.elements,md.x,md.y,icefrontfile,'node',2);
    26         vertexonicefront=double(md.nodeonboundary & nodeinsideicefront);
     26        vertexonicefront=double(md.mesh.vertexonboundary & nodeinsideicefront);
    2727else
    2828        %Guess where the ice front is
    2929        vertexonfloatingice=zeros(md.numberofnodes,1);
    3030        vertexonfloatingice(md.elements(find(md.mask.elementonfloatingice),:))=1;
    31         vertexonicefront=double(md.nodeonboundary & vertexonfloatingice);
     31        vertexonicefront=double(md.mesh.vertexonboundary & vertexonfloatingice);
    3232end
    33 pos=find(md.nodeonboundary & ~vertexonicefront);
     33pos=find(md.mesh.vertexonboundary & ~vertexonicefront);
    3434if isempty(pos),
    3535        warning('SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually')
     
    5353
    5454md.hydrology.spcwatercolumn=zeros(md.numberofnodes,2);
    55 pos=find(md.nodeonboundary);
     55pos=find(md.mesh.vertexonboundary);
    5656md.hydrology.spcwatercolumn(pos,1)=1;
    5757
    5858%segment on Neumann (Ice Front)
    59 pos=find(vertexonicefront(md.segments(:,1)) | vertexonicefront(md.segments(:,2)));
     59pos=find(vertexonicefront(md.mesh.segments(:,1)) | vertexonicefront(md.mesh.segments(:,2)));
    6060if (md.dim==2)
    61         pressureload=md.segments(pos,:);
     61        pressureload=md.mesh.segments(pos,:);
    6262elseif md.dim==3
    63         pressureload_layer1=[md.segments(pos,1:2)  md.segments(pos,2)+md.numberofnodes2d  md.segments(pos,1)+md.numberofnodes2d  md.segments(pos,3)];
     63        pressureload_layer1=[md.mesh.segments(pos,1:2)  md.mesh.segments(pos,2)+md.numberofnodes2d  md.mesh.segments(pos,1)+md.numberofnodes2d  md.mesh.segments(pos,3)];
    6464        pressureload=[];
    6565        for i=1:md.numlayers-1,
  • issm/trunk/src/m/utils/Mesh/argusmesh.m

    r9451 r9714  
    9191
    9292%Add segments and nodes on boundary
    93 md.segments=findsegments(md);
    94 md.nodeonboundary=zeros(md.numberofnodes,1);
    95 md.nodeonboundary(md.segments(:,1))=1;
    96 md.nodeonboundary(md.segments(:,2))=1;
     93md.mesh.segments=findsegments(md);
     94md.mesh.vertexonboundary=zeros(md.numberofnodes,1);
     95md.mesh.vertexonboundary(md.mesh.segments(:,1))=1;
     96md.mesh.vertexonboundary(md.mesh.segments(:,2))=1;
  • issm/trunk/src/m/utils/Mesh/squaremesh.m

    r9604 r9714  
    6060md.z=zeros(nods,1);
    6161md.numberofnodes=nods;
    62 md.nodeonboundary=zeros(nods,1);md.nodeonboundary(segments(:,1:2))=1;
     62md.mesh.vertexonboundary=zeros(nods,1);md.mesh.vertexonboundary(segments(:,1:2))=1;
    6363md.nodeonbed=ones(nods,1);
    6464md.nodeonsurface=ones(nods,1);
     
    6666%plug elements
    6767md.elements=index;
    68 md.segments=segments;
     68md.mesh.segments=segments;
    6969md.numberofelements=nel;
    7070md.elementonbed=ones(nel,1);
  • issm/trunk/template

    r9702 r9714  
    22
    33        projection
    4                 lat
    5                 long
    6                 hemisphere
    7 
    84          x
    95          y
     
    3430          nodeconnectivity
    3531          elementconnectivity
    36           connectivity -> rename average_vertex_connectivity
    37 
    38           segments
    39           segmentmarkers
    40           nodeonboundary
    41 
    42           extractednodes
    43           extractedelements
    4432}}}
    4533
  • issm/trunk/test/NightlyRun/test131.m

    r9703 r9714  
    33md=parameterize(md,'../Par/SquareShelfConstrained.par');
    44%Add boundary conditions on thickness on the border
    5 pos=find(md.nodeonboundary);
     5pos=find(md.mesh.vertexonboundary);
    66md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
    77md=setflowequation(md,'macayeal','all');
  • issm/trunk/test/NightlyRun/test132.m

    r9703 r9714  
    33md=parameterize(md,'../Par/SquareShelfConstrained.par');
    44%Add boundary conditions on thickness on the border
    5 pos=find(md.nodeonboundary);
     5pos=find(md.mesh.vertexonboundary);
    66md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
    77md=setflowequation(md,'macayeal','all');
  • issm/trunk/test/NightlyRun/test133.m

    r9703 r9714  
    44md=extrude(md,5,1);
    55%Add boundary conditions on thickness on the border
    6 pos=find(md.nodeonboundary);
     6pos=find(md.mesh.vertexonboundary);
    77md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
    88md=setflowequation(md,'macayeal','all');
  • issm/trunk/test/NightlyRun/test134.m

    r9703 r9714  
    44md=extrude(md,5,1);
    55%Add boundary conditions on thickness on the border
    6 pos=find(md.nodeonboundary);
     6pos=find(md.mesh.vertexonboundary);
    77md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
    88md=setflowequation(md,'macayeal','all');
  • issm/trunk/test/NightlyRun/test233.m

    r9703 r9714  
    5454nodeonicefront=zeros(md.numberofnodes,1);
    5555pos=find(md.y==ymax); nodeonicefront(pos)=1;
    56 pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
     56pos=find(nodeonicefront(md.mesh.segments(:,1)) | nodeonicefront(md.mesh.segments(:,2))); diagnostic.icefront=md.mesh.segments(pos,:);
    5757diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
    5858md.diagnostic.icefront=diagnostic.icefront;
  • issm/trunk/test/NightlyRun/test234.m

    r9703 r9714  
    5454nodeonicefront=zeros(md.numberofnodes,1);
    5555pos=find(md.y==ymax); nodeonicefront(pos)=1;
    56 pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
     56pos=find(nodeonicefront(md.mesh.segments(:,1)) | nodeonicefront(md.mesh.segments(:,2))); diagnostic.icefront=md.mesh.segments(pos,:);
    5757diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
    5858md.diagnostic.icefront=diagnostic.icefront;
  • issm/trunk/test/NightlyRun/test235.m

    r9691 r9714  
    5151nodeonicefront=zeros(md.numberofnodes,1);
    5252pos=find(md.y==ymax); nodeonicefront(pos)=1;
    53 pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
     53pos=find(nodeonicefront(md.mesh.segments(:,1)) | nodeonicefront(md.mesh.segments(:,2))); diagnostic.icefront=md.mesh.segments(pos,:);
    5454diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
    5555md.diagnostic.icefront=diagnostic.icefront;
  • issm/trunk/test/NightlyRun/test236.m

    r9691 r9714  
    5151nodeonicefront=zeros(md.numberofnodes,1);
    5252pos=find(md.y==ymax); nodeonicefront(pos)=1;
    53 pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
     53pos=find(nodeonicefront(md.mesh.segments(:,1)) | nodeonicefront(md.mesh.segments(:,2))); diagnostic.icefront=md.mesh.segments(pos,:);
    5454diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
    5555md.diagnostic.icefront=diagnostic.icefront;
  • issm/trunk/test/NightlyRun/test527.m

    r9691 r9714  
    2828%refine existing mesh 3
    2929hVertices=NaN*ones(md.numberofnodes,1);
    30 hVertices(find(md.nodeonboundary))=500;
     30hVertices(find(md.mesh.vertexonboundary))=500;
    3131md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000,'hmax',20000,'gradation',3,'geometricalmetric',1,'anisomax',1,'hVertices',hVertices);
    3232x5=md2.x;
  • issm/trunk/test/NightlyRun/test625.m

    r9703 r9714  
    77%Ice sheet only
    88md=modelextract(md,md.mask.elementongroundedice);
    9 pos=find(md.nodeonboundary);
     9pos=find(md.mesh.vertexonboundary);
    1010md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
    1111
  • issm/trunk/test/NightlyRun/test626.m

    r9703 r9714  
    77%Ice sheet only
    88md=modelextract(md,md.mask.elementongroundedice);
    9 pos=find(md.nodeonboundary);
     9pos=find(md.mesh.vertexonboundary);
    1010md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
    1111
  • issm/trunk/test/Par/79North.par

    r9702 r9714  
    4444%Boundary conditions:
    4545md=SetMarineIceSheetBC(md);
    46 pos=find(md.nodeonboundary);
     46pos=find(md.mesh.vertexonboundary);
    4747md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
    4848md.prognostic.spcthickness(pos)=md.geometry.thickness(pos);
  • issm/trunk/test/Par/RoundSheetShelf.par

    r9702 r9714  
    8383md.diagnostic.spcvy(pos)=0;
    8484
    85 pressureload=md.segments;
     85pressureload=md.mesh.segments;
    8686pressureload=[pressureload 1*md.mask.elementonfloatingice(pressureload(:,end)) + 0*md.mask.elementongroundedice(pressureload(:,end))];
    8787md.diagnostic.icefront=pressureload;
Note: See TracChangeset for help on using the changeset viewer.