Changeset 12980


Ignore:
Timestamp:
08/10/12 14:09:10 (13 years ago)
Author:
Eric.Larour
Message:

NEW: implemented a new planetmesh object, simplified
mesh object and plugged it into the @planet.mesh
field.

Location:
issm/trunk-jpl/src/m/classes
Files:
2 edited

Legend:

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

    r12365 r12980  
    1414         end
    1515         methods
    16                 function md=planetmesh(md,varargin) % {{{
    17                 %PLANETMESH: build 2d shell mesh
    18                 %
    19                 % Usage: md=planetmesh(md,'method','mixed','radius',6378000,'angleresol',1);
    20                 %        md=planetmesh(md,'method','tria','shape','iso','radius',6378000,'refinement',5);
    21                 %
     16                 function md = planet(varargin) % {{{
    2217
    23                 %recover options
    24                 options=pairoptions(varargin{:});
     18                         switch nargin
     19                                 case 0
     20                                         md=setdefaultparameters(md);
     21                                 otherwise
     22                                         error('planet constructor error message: 0 of 1 argument only in input.');
     23                                 end
     24                 end
     25                 %}}}
     26                 function md = setdefaultparameters(md) % {{{
    2527
    26                 method=getfieldvalue(options,'method','mixed');
    27                
    28                 if strcmpi(method,'mixed'),
    29                         %recover radius and angleresol:
    30                         radius=getfieldvalue(options,'radius',6378000); %earth radius as default
    31                         angleresol=getfieldvalue(options,'angleresol',10); %10 degree resolution
    32                        
    33                         %call mixed mesh
    34                         md=planetmixedmesh(md,radius,angleresol);
    35                 else
    36                         %recover radius, shape and level of refinmenet
    37                         radius=getfieldvalue(options,'radius',6378000); %earth radius as default
    38                         refinement=getfieldvalue(options,'refinement',5); %refine 5 times
    39                         shape=getfieldvalue(options,'shape','ico');
    40                        
    41                         %call triangular mesh
    42                         md=planettrimesh(md,shape,radius,refinement);
    43                 end
    44 
    45                 end
    46                 % }}}
     28                         %initialize subclasses
     29                         md.mesh             = planetmesh();
     30                         md.mask             = mask();
     31                         md.constants        = constants();
     32                         md.geometry         = geometry();
     33                         md.initialization   = initialization();
     34                         md.surfaceforcings  = surfaceforcings();
     35                         md.basalforcings    = basalforcings();
     36                         md.friction         = friction();
     37                         md.rifts            = rifts();
     38                         md.timestepping     = timestepping();
     39                         md.groundingline    = groundingline();
     40                         md.materials        = materials();
     41                         md.flowequation     = flowequation();
     42                         md.debug            = debug();
     43                         md.verbose          = verbose('solution',true,'qmu',true,'control',true);
     44                         md.settings         = settings();
     45                         md.solver           = solver();
     46                         if ismumps,
     47                                 md.solver           = addoptions(md.solver,DiagnosticVertAnalysisEnum,mumpsoptions);
     48                         else
     49                                 md.solver           = addoptions(md.solver,DiagnosticVertAnalysisEnum,iluasmoptions);
     50                         end
     51                         md.cluster          = generic();
     52                         md.balancethickness = balancethickness();
     53                         md.diagnostic       = diagnostic();
     54                         md.hydrology        = hydrology();
     55                         md.prognostic       = prognostic();
     56                         md.thermal          = thermal();
     57                         md.steadystate      = steadystate();
     58                         md.transient        = transient();
     59                         md.autodiff         = autodiff();
     60                         md.flaim            = flaim();
     61                         md.inversion        = inversion();
     62                         md.qmu              = qmu();
     63                         md.radaroverlay     = radaroverlay();
     64                         md.results          = struct();
     65                         md.miscellaneous    = miscellaneous();
     66                         md.private          = private();
     67                 end
     68                 %}}}
    4769         end
    4870 end
  • issm/trunk-jpl/src/m/classes/planetmesh.m

    r12913 r12980  
    66classdef planetmesh
    77        properties (SetAccess=public)
     8                x                           = NaN;
     9                y                           = NaN;
     10                z                           = NaN;
    811                r                           = NaN;
    912                theta                       = NaN;
     
    4245                function md = checkconsistency(obj,md,solution,analyses) % {{{
    4346
     47                        md = checkfield(md,'planetmesh.x','NaN',1,'size',[md.planetmesh.numberofvertices 1]);
     48                        md = checkfield(md,'planetmesh.y','NaN',1,'size',[md.planetmesh.numberofvertices 1]);
     49                        md = checkfield(md,'planetmesh.z','NaN',1,'size',[md.planetmesh.numberofvertices 1]);
    4450                        md = checkfield(md,'planetmesh.r','NaN',1,'size',[md.planetmesh.numberofvertices 1]);
    4551                        md = checkfield(md,'planetmesh.theta','NaN',1,'size',[md.planetmesh.numberofvertices 1]);
     
    8793                        fielddisplay(obj,'numberofvertices','number of vertices');
    8894                        fielddisplay(obj,'elements','index into (x,y,z), coordinates of the vertices');
     95                        fielddisplay(obj,'x','vertices x coordinate');
     96                        fielddisplay(obj,'y','vertices y coordinate');
     97                        fielddisplay(obj,'z','vertices z coordinate');
    8998                        fielddisplay(obj,'r','vertices r coordinate');
    9099                        fielddisplay(obj,'theta','vertices theta coordinate');
     
    101110                end % }}}
    102111                function marshall(obj,fid) % {{{
     112                        WriteData(fid,'object',obj,'fieldname','x','format','DoubleMat','mattype',1);
     113                        WriteData(fid,'object',obj,'fieldname','y','format','DoubleMat','mattype',1);
     114                        WriteData(fid,'object',obj,'fieldname','z','format','DoubleMat','mattype',1);
    103115                        WriteData(fid,'object',obj,'fieldname','r','format','DoubleMat','mattype',1);
    104116                        WriteData(fid,'object',obj,'fieldname','theta','format','DoubleMat','mattype',1);
Note: See TracChangeset for help on using the changeset viewer.