Changeset 10452


Ignore:
Timestamp:
11/03/11 14:18:13 (13 years ago)
Author:
Mathieu Morlighem
Message:

improved structtomodel

File:
1 edited

Legend:

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

    r10276 r10452  
    124124                         %loaded model is a struct, initialize output and recover all fields
    125125                         md = structtoobj(model,structmd);
     126
     127                         %Old field now classes
     128                         if (isfield(structmd,'timestepping') & isnumeric(md.timestepping)), md.timestepping=timestepping(); end
     129                         if (isfield(structmd,'mask') & isnumeric(md.mask)),md.mask=mask(); end
    126130
    127131                         %Field name change
     
    188192                         if isfield(structmd,'penalties'), md.prognostic.vertex_pairing=structmd.penalties; end
    189193                         if isfield(structmd,'penalty_offset'), md.prognostic.penalty_factor=structmd.penalty_offset; end
     194                         if isfield(structmd,'B'), md.materials.rheology_B=structmd.B; end
     195                         if isfield(structmd,'n'), md.materials.rheology_n=structmd.n; end
    190196                         if isfield(structmd,'rheology_B'), md.materials.rheology_B=structmd.rheology_B; end
    191197                         if isfield(structmd,'rheology_n'), md.materials.rheology_n=structmd.rheology_n; end
    192                          if isfield(structmd,'elementoniceshelf'),
    193                                  md.mask=mask(); %maks already existed in a previous version
    194                                  md.mask.elementonfloatingice=structmd.elementoniceshelf;
    195                          end
     198                         if isfield(structmd,'elementoniceshelf'), md.mask.elementonfloatingice=structmd.elementoniceshelf; end
    196199                         if isfield(structmd,'elementonicesheet'), md.mask.elementongroundedice=structmd.elementonicesheet; end
    197200                         if isfield(structmd,'elementonwater'), md.mask.elementonwater=structmd.elementonwater; end
     
    282285                                 md.verbose=verbose;
    283286                         end
     287                         if size(md.diagnostic.icefront,2)==3 || size(md.diagnostic.icefront,2)==5,
     288                                 front=md.diagnostic.icefront;
     289                                 md.diagnostic.icefront=[front 1*md.mask.elementonfloatingice(front(:,end))];
     290                         end
    284291                         if isfield(structmd,'spcvelocity'),
    285292                                 md.diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);
     
    368375                         %New fields
    369376                         if ~isfield(structmd,'upperelements');
    370                                  md.upperelements=transpose(1:md.mesh.numberofelements)+md.mesh.numberofelements2d;
    371                                  md.upperelements(end-md.mesh.numberofelements2d+1:end)=NaN;
     377                                 md.mesh.upperelements=transpose(1:md.mesh.numberofelements)+md.mesh.numberofelements2d;
     378                                 md.mesh.upperelements(end-md.mesh.numberofelements2d+1:end)=NaN;
    372379                         end
    373380                         if ~isfield(structmd,'lowerelements');
    374                                  md.lowerelements=transpose(1:md.mesh.numberofelements)-md.mesh.numberofelements2d;
    375                                  md.lowerelements(1:md.mesh.numberofelements2d)=NaN;
     381                                 md.mesh.lowerelements=transpose(1:md.mesh.numberofelements)-md.mesh.numberofelements2d;
     382                                 md.mesh.lowerelements(1:md.mesh.numberofelements2d)=NaN;
    376383                         end
    377384                         if ~isfield(structmd,'diagnostic_ref');
    378                                  md.diagnostic.referential=NaN*ones(md.mesh.numberofvertices2d,6);
     385                                 md.diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);
    379386                         end
    380387                 end% }}}
Note: See TracChangeset for help on using the changeset viewer.