Changeset 24998


Ignore:
Timestamp:
06/10/20 21:13:04 (5 years ago)
Author:
Eric.Larour
Message:

CHG: getting rid of qmu.vpartition and qmu.epartition completely.
Resposes also needed their parttion vector. Had to adapt AverageOntoPartitionx
accordingy.

Location:
issm/trunk-jpl/src
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r24994 r24998  
    44914491        char   root[50];
    44924492        int    index;
    4493         int    npart;
    44944493        double femmodel_response;
    44954494        int    flag;
     
    44984497        double *responses_pointer = NULL;
    44994498
    4500         /*retrieve npart: */
    4501         parameters->FindParam(&npart,QmuNumberofpartitionsEnum);
     4499        IssmDouble **response_partitions         = NULL;
     4500        IssmDouble * response_partition         = NULL;
     4501        int * response_partitions_npart         = NULL;
     4502        int          response_partitions_num;
     4503        int          npart;
     4504
     4505        /*retrieve partition vectors for responses that are scaled:*/
     4506        this->parameters->FindParam(&response_partitions,&response_partitions_num,NULL,NULL,QmuResponsePartitionsEnum);
     4507        this->parameters->FindParam(&response_partitions_npart,NULL,NULL,QmuResponsePartitionsNpartEnum);
     4508       
     4509        /*retrieve my_rank: */
    45024510        my_rank=IssmComm::GetRank();
    45034511
     
    45174525                        GetVectorFromInputsx(&vertex_response,this, StringToEnumx(root),VertexPIdEnum);
    45184526
     4527                        /*recover partition vector: */
     4528                        response_partition=response_partitions[i];
     4529                        npart=response_partitions_npart[i];
     4530
    45194531                        /*Now, average it onto the partition nodes: */
    4520                         AverageOntoPartitionx(&qmu_response,elements,nodes,vertices,loads,materials,parameters,vertex_response);
     4532                        AverageOntoPartitionx(&qmu_response,elements,nodes,vertices,loads,materials,parameters,vertex_response,response_partition,npart);
    45214533
    45224534                        /*Copy onto our dakota responses: */
     
    45794591        }
    45804592        /*}}}*/
     4593
     4594        /*Free ressources:*/
     4595        for(i=0;i<response_partitions_num;i++){
     4596                IssmDouble* matrix=response_partitions[i];
     4597                xDelete<IssmDouble>(matrix);
     4598        }
     4599        xDelete<IssmDouble*>(response_partitions);
    45814600
    45824601}
  • issm/trunk-jpl/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp

    r24168 r24998  
    1414#include "../../toolkits/toolkits.h"
    1515
    16 void AverageOntoPartitionx(double** paverage, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response){
    17 
    18         int     npart;
    19         double *qmu_vpart  = NULL;
     16void AverageOntoPartitionx(double** paverage, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response,double* qmu_part,int npart){
    2017
    2118        /*output: */
     
    2421        Vector<IssmDouble>* vec_average=NULL;
    2522        double* average=NULL;
    26 
    27         /*First, recover qmu partition of vertices: */
    28         parameters->FindParam(&qmu_vpart,NULL,QmuVpartitionEnum);
    29 
    30         /*Some parameters: */
    31         parameters->FindParam(&npart,QmuNumberofpartitionsEnum);
    3223
    3324        /*average onto the separate areas. The result will be a npart sized vector. */
     
    4132        for(int i=0;i<elements->Size();i++){
    4233                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    43                 element->AverageOntoPartition(partition_contributions,partition_areas,vertex_response,qmu_vpart);
     34                element->AverageOntoPartition(partition_contributions,partition_areas,vertex_response,qmu_part);
    4435        }
    4536
     
    5546
    5647        /*Free ressources:*/
    57         xDelete<double>(qmu_vpart);
    5848        delete partition_contributions;
    5949        delete partition_areas;
  • issm/trunk-jpl/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.h

    r15000 r24998  
    88#include "../../classes/classes.h"
    99
    10 void AverageOntoPartitionx(double** average, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response);
     10void AverageOntoPartitionx(double** paverage, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response,double* qmu_part,int npart);
    1111
    1212#endif  /* _AVERAGEONTOPARTITIONXX_H */
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp

    r24989 r24998  
    7373                parameters->AddObject(new StringArrayParam(QmuResponsedescriptorsEnum,responsedescriptors,numresponsedescriptors));
    7474
    75                 /*Load partitioning vectors (both vertex and element based: */
    76                 parameters->AddObject(iomodel->CopyConstantObject("md.qmu.numberofpartitions",QmuNumberofpartitionsEnum));
    77                
    7875                /*Load partitioning vectors specific to variables:*/
    7976                iomodel->FetchData(&array,&mdims_array,&ndims_array,&num_partitions,"md.qmu.variablepartitions");
     
    8178                iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_npart");
    8279                parameters->AddObject(new IntMatParam(QmuVariablePartitionsNpartEnum,intarray,M,N));
     80
     81                /*free arrays: {{{*/
     82                for(i=0;i<num_partitions;i++){
     83                        IssmDouble* matrix=array[i];
     84                        xDelete<IssmDouble>(matrix);
     85                }
     86                xDelete<int>(mdims_array);
     87                xDelete<int>(ndims_array);
     88                xDelete<IssmDouble*>(array);
     89                xDelete<int>(intarray);
     90                /*}}}*/
     91
     92                /*Load partitioning vectors specific to responses:*/
     93                iomodel->FetchData(&array,&mdims_array,&ndims_array,&num_partitions,"md.qmu.responsepartitions");
     94                parameters->AddObject(new DoubleMatArrayParam(QmuResponsePartitionsEnum,array,num_partitions,mdims_array,ndims_array));
     95                iomodel->FetchData(&intarray,&M,&N,"md.qmu.responsepartitions_npart");
     96                parameters->AddObject(new IntMatParam(QmuResponsePartitionsNpartEnum,intarray,M,N));
     97
     98                /*free arrays: {{{*/
     99                for(i=0;i<num_partitions;i++){
     100                        IssmDouble* matrix=array[i];
     101                        xDelete<IssmDouble>(matrix);
     102                }
     103                xDelete<int>(mdims_array);
     104                xDelete<int>(ndims_array);
     105                xDelete<IssmDouble*>(array);
     106                xDelete<int>(intarray);
     107                /*}}}*/
     108
    83109
    84110                /*Deal with data needed because of qmu variables*/
     
    124150                xDelete<char>(qmuoutname);
    125151
    126                 for(i=0;i<num_partitions;i++){
    127                         IssmDouble* matrix=array[i];
    128                         xDelete<IssmDouble>(matrix);
    129                 }
    130                 xDelete<int>(mdims_array);
    131                 xDelete<int>(ndims_array);
    132                 xDelete<IssmDouble*>(array);
    133                 xDelete<int>(intarray);
    134 
     152               
     153               
    135154        }
    136155
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r24989 r24998  
    290290syn keyword cConstant QmuInNameEnum
    291291syn keyword cConstant QmuIsdakotaEnum
    292 syn keyword cConstant QmuNumberofpartitionsEnum
    293292syn keyword cConstant QmuOutNameEnum
    294293syn keyword cConstant QmuOutputEnum
    295294syn keyword cConstant QmuCurrEvalIdEnum
    296 syn keyword cConstant QmuEpartitionEnum
    297 syn keyword cConstant QmuVpartitionEnum
    298295syn keyword cConstant QmuResponsedescriptorsEnum
    299296syn keyword cConstant QmuVariableDescriptorsEnum
    300297syn keyword cConstant QmuVariablePartitionsEnum
    301298syn keyword cConstant QmuVariablePartitionsNpartEnum
     299syn keyword cConstant QmuResponsePartitionsEnum
     300syn keyword cConstant QmuResponsePartitionsNpartEnum
    302301syn keyword cConstant RestartFileNameEnum
    303302syn keyword cConstant ResultsEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24989 r24998  
    284284        QmuInNameEnum,
    285285        QmuIsdakotaEnum,
    286         QmuNumberofpartitionsEnum,
    287286        QmuOutNameEnum,
    288287        QmuOutputEnum,
    289288        QmuCurrEvalIdEnum,
    290         QmuEpartitionEnum,
    291         QmuVpartitionEnum,
    292289        QmuResponsedescriptorsEnum,
    293290        QmuVariableDescriptorsEnum,
    294291        QmuVariablePartitionsEnum,
    295292        QmuVariablePartitionsNpartEnum,
     293        QmuResponsePartitionsEnum,
     294        QmuResponsePartitionsNpartEnum,
    296295        RestartFileNameEnum,
    297296        ResultsEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24989 r24998  
    292292                case QmuInNameEnum : return "QmuInName";
    293293                case QmuIsdakotaEnum : return "QmuIsdakota";
    294                 case QmuNumberofpartitionsEnum : return "QmuNumberofpartitions";
    295294                case QmuOutNameEnum : return "QmuOutName";
    296295                case QmuOutputEnum : return "QmuOutput";
    297296                case QmuCurrEvalIdEnum : return "QmuCurrEvalId";
    298                 case QmuEpartitionEnum : return "QmuEpartition";
    299                 case QmuVpartitionEnum : return "QmuVpartition";
    300297                case QmuResponsedescriptorsEnum : return "QmuResponsedescriptors";
    301298                case QmuVariableDescriptorsEnum : return "QmuVariableDescriptors";
    302299                case QmuVariablePartitionsEnum : return "QmuVariablePartitions";
    303300                case QmuVariablePartitionsNpartEnum : return "QmuVariablePartitionsNpart";
     301                case QmuResponsePartitionsEnum : return "QmuResponsePartitions";
     302                case QmuResponsePartitionsNpartEnum : return "QmuResponsePartitionsNpart";
    304303                case RestartFileNameEnum : return "RestartFileName";
    305304                case ResultsEnum : return "Results";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24989 r24998  
    298298              else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
    299299              else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
    300               else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
    301300              else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
    302301              else if (strcmp(name,"QmuOutput")==0) return QmuOutputEnum;
    303302              else if (strcmp(name,"QmuCurrEvalId")==0) return QmuCurrEvalIdEnum;
    304               else if (strcmp(name,"QmuEpartition")==0) return QmuEpartitionEnum;
    305               else if (strcmp(name,"QmuVpartition")==0) return QmuVpartitionEnum;
    306303              else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
    307304              else if (strcmp(name,"QmuVariableDescriptors")==0) return QmuVariableDescriptorsEnum;
    308305              else if (strcmp(name,"QmuVariablePartitions")==0) return QmuVariablePartitionsEnum;
    309306              else if (strcmp(name,"QmuVariablePartitionsNpart")==0) return QmuVariablePartitionsNpartEnum;
     307              else if (strcmp(name,"QmuResponsePartitions")==0) return QmuResponsePartitionsEnum;
     308              else if (strcmp(name,"QmuResponsePartitionsNpart")==0) return QmuResponsePartitionsNpartEnum;
    310309              else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
    311310              else if (strcmp(name,"Results")==0) return ResultsEnum;
     
    383382              else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
    384383              else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
     384              else if (strcmp(name,"SmbK")==0) return SmbKEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbK")==0) return SmbKEnum;
    389               else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
     388              if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
    390389              else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
    391390              else if (strcmp(name,"SmbRdl")==0) return SmbRdlEnum;
     
    506505              else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;
    507506              else if (strcmp(name,"Bed")==0) return BedEnum;
     507              else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
    512               else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
     511              if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
    513512              else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
    514513              else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
     
    629628              else if (strcmp(name,"HydrologyWatercolumnMax")==0) return HydrologyWatercolumnMaxEnum;
    630629              else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
     630              else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
    635               else if (strcmp(name,"Ice")==0) return IceEnum;
     634              if (strcmp(name,"Ice")==0) return IceEnum;
    636635              else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
    637636              else if (strcmp(name,"Input")==0) return InputEnum;
     
    752751              else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
    753752              else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
     753              else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
    758               else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
     757              if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
    759758              else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
    760759              else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
     
    875874              else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
    876875              else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
     876              else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    881               else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
     880              if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
    882881              else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
    883882              else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
     
    998997              else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
    999998              else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
     999              else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
    1004               else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
     1003              if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
    10051004              else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
    10061005              else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum;
     
    11211120              else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum;
    11221121              else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum;
     1122              else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
    1127               else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
     1126              if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
    11281127              else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
    11291128              else if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
     
    12441243              else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
    12451244              else if (strcmp(name,"P2")==0) return P2Enum;
     1245              else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
    1250               else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
     1249              if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
    12511250              else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
    12521251              else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
     
    13671366              else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
    13681367              else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
     1368              else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
    1373               else if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
     1372              if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
    13741373              else if (strcmp(name,"SubelementMigration4")==0) return SubelementMigration4Enum;
    13751374              else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
  • issm/trunk-jpl/src/m/classes/qmu.m

    r24989 r24998  
    1515                vpartition                   = NaN;
    1616                epartition                   = NaN;
    17                 numberofpartitions          = 0;
    1817                numberofresponses           = 0;
    1918                variabledescriptors         = {};
     
    2120                variablepartitions_npart    = [];
    2221                responsedescriptors         = {};
     22                responsepartitions          = {};
     23                responsepartitions_npart    = [];
    2324                mass_flux_profile_directory = NaN;
    2425                mass_flux_profiles          = NaN;
     
    194195                        WriteData(fid,prefix,'object',self,'fieldname','vpartition','format','DoubleMat','mattype',2);
    195196                        WriteData(fid,prefix,'object',self,'fieldname','epartition','format','DoubleMat','mattype',2);
    196                         WriteData(fid,prefix,'object',self,'fieldname','numberofpartitions','format','Integer');
    197197                        WriteData(fid,prefix,'object',self,'fieldname','numberofresponses','format','Integer');
    198198                        WriteData(fid,prefix,'object',self,'fieldname','variabledescriptors','format','StringArray');
     
    200200                        WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_npart','format','IntMat','mattype',3);
    201201                        WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray');
     202                        WriteData(fid,prefix,'object',self,'fieldname','responsepartitions','format','MatArray');
     203                        WriteData(fid,prefix,'object',self,'fieldname','responsepartitions_npart','format','IntMat','mattype',3);
    202204                        if ~isempty(self.mass_flux_segments),
    203205                                WriteData(fid,prefix,'data',self.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
  • issm/trunk-jpl/src/m/classes/qmu/response_function.m

    r24870 r24998  
    5353                disp(sprintf('          rell: %s'      ,string_vec(rf(i).rell)));
    5454                disp(sprintf('         grell: %s'    ,string_vec(rf(i).grell)));
    55                 if ~isempty(self.partition),
    56                     disp(sprintf('     partition: %s'    ,string_vec(rf(i).partition)));
     55                if ~isempty(rf.partition),
     56                                        fielddisplay(rf,'partition','partition vector defining where response will be computed');
    5757                end
    5858                disp(sprintf('\n'));
  • issm/trunk-jpl/src/m/partition/partitioner.m

    r24173 r24998  
    1 function md=partitioner(md,varargin)
     1function partitionvector=partitioner(md,varargin)
    22%PARTITIONER - partition mesh
    33%
     
    1010%   recomputeadjacency:  'on' by default (set to 'off' to compute existing one)
    1111%   type: 'node' or 'element' partition vector (default to 'node')
    12 %   Output: md.qmu.partition recover the partition vector
     12%   Output: partitionvector: the partition vector
    1313%   
    1414%   Usage:
    15 %      md=partitioner(md,'package','chaco','npart',100,'weighting','on');
     15%      partitionvector=partitioner(md,'package','chaco','npart',100,'weighting','on');
    1616%
    1717
     
    140140end
    141141
    142 if strcmpi(vectortype,'element')
    143         md.qmu.epartition=part;
    144         if isempty(md.qmu.vpartition) | (prod(size(md.qmu.vpartition))==1 & isnan(md.qmu.vpartition))
    145                 md.qmu.vpartition=zeros(md.mesh.numberofvertices,1);
    146         end
    147 else
    148         md.qmu.vpartition=part;
    149         if isempty(md.qmu.epartition) | (prod(size(md.qmu.epartition))==1 & isnan(md.qmu.epartition))
    150                 md.qmu.epartition=zeros(md.mesh.numberofelements,1);
    151         end
    152 end
     142%output
     143partitionvector=part;
  • issm/trunk-jpl/src/m/qmu/preqmu.m

    r24989 r24998  
    103103end
    104104
     105%build a MatArray of response partitions:
     106response_fieldnames=fieldnames(md.qmu.responses(ivar));
     107responsepartitions={};
     108responsepartitions_npart=[];
     109for i=1:length(response_fieldnames),
     110        field_name=response_fieldnames{i};
     111        fieldresponse=md.qmu.responses(ivar).(field_name);
     112        if fieldresponse.isscaled();
     113                responsepartitions{end+1}=fieldresponse.partition;
     114                responsepartitions_npart(end+1)=qmupart2npart(fieldresponse.partition);
     115        else
     116                responsepartitions{end+1}=[];
     117                responsepartitions_npart(end+1)=0;
     118        end
     119end
     120
    105121
    106122%register the fields that will be needed by the Qmu model.
     
    110126md.qmu.variablepartitions_npart=variablepartitions_npart;
    111127md.qmu.responsedescriptors=responsedescriptors;
     128md.qmu.responsepartitions=responsepartitions;
     129md.qmu.responsepartitions_npart=responsepartitions_npart;
    112130
    113131%now, we have to provide all the info necessary for the solutions to compute the responses. For ex, if mass_flux
  • issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupResponses.m

    r9650 r24998  
    1313        %ok, dealing with semi-discrete distributed response. Distribute according to how many
    1414        %partitions we want
     15        npart=qmupart2npart(responses.partition);
    1516
    16         for j=1:md.qmu.numberofpartitions
     17        for j=1:npart,
    1718                dresp(end+1)           =responses;
    1819                dresp(end  ).descriptor=sprintf('%s_%d',responses.descriptor,j);
Note: See TracChangeset for help on using the changeset viewer.