Changeset 16463


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

CHG: added dafault outputs for stressbalance

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

Legend:

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

    r16458 r16463  
    7373                         obj.rift_penalty_lock=10;
    7474
     75                         %output default:
     76                         obj.requested_outputs={'default'};
     77
    7578                end % }}}
    7679                function md = checkconsistency(obj,md,solution,analyses) % {{{
     
    116119                                md = checkfield(md,'stressbalance.FSreconditioning','>',0);
    117120                        end
     121                end % }}}
     122                function list=defaultoutputs(self,md) % {{{
     123
     124                        if strcmp(meshtype(md.mesh),'3D'),
     125                                list = {'Vx','Vy','Vz','Vel','Pressure'};
     126                        elseif strcmp(meshtype(md.mesh),'2Dhorizontal'),
     127                                list = {'Vx','Vy','Vel','Pressure'};
     128                        elseif strcmp(meshtype(md.mesh),'2Dvertical'),
     129                                list = {'Vx','Vy','Vel','Pressure'};
     130                        else
     131                                error('mesh type not supported yet');
     132                        end
     133
    118134                end % }}}
    119135                function disp(obj) % {{{
     
    170186                        WriteData(fid,'object',obj,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
    171187                        WriteData(fid,'object',obj,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
    172                         WriteData(fid,'object',obj,'class','stressbalance','fieldname','requested_outputs','format','StringArray');
     188
    173189                        WriteData(fid,'data',obj.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
    174190                        WriteData(fid,'data',obj.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
    175191                        WriteData(fid,'data',obj.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
     192
     193                        %process requested outputs
     194                        outputs = obj.requested_outputs;
     195                        pos  = find(ismember(outputs,'default'));
     196                        if ~isempty(pos),
     197                                outputs(pos) = [];                         %remove 'default' from outputs
     198                                outputs      = [outputs defaultoutputs(obj,md)]; %add defaults
     199                        end
     200                        WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum,'format','StringArray');
    176201                end % }}}
    177202        end
  • issm/trunk-jpl/src/m/classes/stressbalance.py

    r16458 r16463  
    66from checkfield import *
    77from WriteData import *
     8from MatlabFuncs import *
    89
    910class stressbalance(object):
     
    102103                self.rift_penalty_lock=10
    103104
     105                #output default:
     106                self.requested_outputs=['default']
     107
    104108                return self
     109        #}}}
     110        def defaultoutputs(self,md): # {{{
     111
     112                if strcmp(md.mesh.meshtype(),'3D'):
     113                        list = ['Vx','Vy','Vz','Vel','Pressure']
     114                elif strcmp(md.mesh.meshtype(),'2Dhorizontal'):
     115                        list = ['Vx','Vy','Vel','Pressure']
     116                elif strcmp(md.mesh.meshtype(),'2Dvertical'):
     117                        list = ['Vx','Vy','Vel','Pressure']
     118                else:
     119                        raise TypeError('mesh type not supported yet');
     120                return list
     121
    105122        #}}}
    106123        def checkconsistency(self,md,solution,analyses):    # {{{
     
    171188                WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer')
    172189                WriteData(fid,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1)
    173                 WriteData(fid,'object',self,'class','stressbalance','fieldname','requested_outputs','format','StringArray')
     190
    174191                WriteData(fid,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum())
    175192                WriteData(fid,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum())
    176193                WriteData(fid,'data',self.loadingforce[:,2],'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum())
     194
     195                #process requested outputs
     196                outputs = self.requested_outputs
     197                indices = [i for i, x in enumerate(outputs) if x == 'default']
     198                if len(indices) > 0:
     199                        outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
     200                        outputs    =outputscopy
     201                WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum(),'format','StringArray')
    177202        # }}}
Note: See TracChangeset for help on using the changeset viewer.