Ignore:
Timestamp:
06/08/20 22:58:53 (5 years ago)
Author:
Eric.Larour
Message:

CHG: more integration of partition vectors into variables. Slowly stepping
away from the qmu.vpartition vector paradigm, not yet fully though.

File:
1 edited

Legend:

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

    r24820 r24988  
    1818                numberofresponses           = 0;
    1919                variabledescriptors         = {};
     20                variablepartitions          = {};
    2021                responsedescriptors         = {};
    2122                mass_flux_profile_directory = NaN;
     
    5758        methods
    5859                function self = extrude(self,md) % {{{
    59                         self.vpartition=project3d(md,'vector',self.vpartition','type','node');
    60                         self.epartition=project3d(md,'vector',self.epartition','type','element');
    6160                end % }}}
    6261                function self = qmu(varargin) % {{{
     
    9796                                end
    9897                        end
    99                         if ~isempty(md.qmu.vpartition) & ~any(isnan(md.qmu.vpartition)),
    100                                 if size(md.qmu.vpartition,1)~=md.mesh.numberofvertices
    101                                         md = checkmessage(md,['user supplied vertex partition for qmu analysis should have size md.mesh.numberofvertices x 1']);
    102                                 end
    103                                 if min(md.qmu.vpartition)~=0,
    104                                         md = checkmessage(md,['vertex partition vector not indexed from 0 on']);
    105                                 end
    106                                 if max(md.qmu.vpartition)>=md.qmu.numberofpartitions,
    107                                         md = checkmessage(md,['for qmu analysis, vertex partitioning vector cannot go over npart, number of partition areas']);
    108                                 end
    109                         end
    110                         if ~isempty(md.qmu.epartition) & ~any(isnan(md.qmu.epartition)),
    111                                 if size(md.qmu.epartition,1)~=md.mesh.numberofelements,
    112                                         md = checkmessage(md,['user supplied element partition for qmu analysis should have size md.mesh.numberofelements x 1']);
    113                                 end
    114                                 if min(md.qmu.epartition)~=0,
    115                                         md = checkmessage(md,['element partition vector not indexed from 0 on']);
    116                                 end
    117                                 if max(md.qmu.epartition)>=md.qmu.numberofpartitions,
    118                                         md = checkmessage(md,['for qmu analysis, element partitioning vector cannot go over npart, number of partition areas']);
    119                                 end
    120                         end
    121                         if isempty(md.qmu.vpartition) | any(isnan(md.qmu.vpartition)) | isempty(md.qmu.epartition) | any(isnan(md.qmu.epartition)),
    122                                 md = checkmessage(md,['for qmu analysis, both an element and partitioning vectors need to be supplied with no nan values! One can be defaulted to all zeros.']);
    123                         end
    12498
    12599                        %go through variables and check for consistency:
     
    198172                                end
    199173                        end
    200                         fielddisplay(self,'vpartition','user provided mesh partitioning (vertex based)');
    201                         fielddisplay(self,'epartition','user provided mesh partitioning (element based)');
    202                         fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu')
     174                        fielddisplay(self,'variablepartitions','');
    203175                        fielddisplay(self,'variabledescriptors','');
    204176                        fielddisplay(self,'responsedescriptors','');
     
    223195                        WriteData(fid,prefix,'object',self,'fieldname','numberofresponses','format','Integer');
    224196                        WriteData(fid,prefix,'object',self,'fieldname','variabledescriptors','format','StringArray');
     197                        WriteData(fid,prefix,'object',self,'fieldname','variablepartitions','format','MatArray');
    225198                        WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray');
    226199                        if ~isempty(self.mass_flux_segments),
Note: See TracChangeset for help on using the changeset viewer.