Changeset 13486
- Timestamp:
- 09/28/12 21:17:31 (12 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
r13483 r13486 29 29 AutodiffFosForwardIndexEnum, 30 30 AutodiffFovForwardIndicesEnum, 31 AutodiffMassFluxSegmentsPresentEnum, 31 32 BalancethicknessSpcthicknessEnum, 32 33 BalancethicknessStabilizationEnum, … … 159 160 MassFluxSegmentsEnum, 160 161 MassFluxSegmentsPresentEnum, 162 QmuMassFluxSegmentsPresentEnum, 161 163 QmuNumberofpartitionsEnum, 162 164 QmuNumberofresponsesEnum, -
issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
r13483 r13486 34 34 case AutodiffFosForwardIndexEnum : return "AutodiffFosForwardIndex"; 35 35 case AutodiffFovForwardIndicesEnum : return "AutodiffFovForwardIndices"; 36 case AutodiffMassFluxSegmentsPresentEnum : return "AutodiffMassFluxSegmentsPresent"; 36 37 case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness"; 37 38 case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization"; … … 164 165 case MassFluxSegmentsEnum : return "MassFluxSegments"; 165 166 case MassFluxSegmentsPresentEnum : return "MassFluxSegmentsPresent"; 167 case QmuMassFluxSegmentsPresentEnum : return "QmuMassFluxSegmentsPresent"; 166 168 case QmuNumberofpartitionsEnum : return "QmuNumberofpartitions"; 167 169 case QmuNumberofresponsesEnum : return "QmuNumberofresponses"; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r13485 r13486 25 25 Parameters *parameters = NULL; 26 26 IssmDouble *requestedoutputs = NULL; 27 bool isdelta18o ,isautodiff;27 bool isdelta18o; 28 28 29 29 /*parameters for mass flux: {{{*/ 30 30 int mass_flux_num_profiles=0; 31 bool qmu_mass_flux_present=false; 32 bool autodiff_mass_flux_present=false; 31 33 bool mass_flux_present=false; 32 34 IssmDouble** array=NULL; … … 156 158 157 159 158 if(isautodiff){ 159 /*Deal with mass flux segments: {{{*/ 160 iomodel->Constant(&isautodiff,AutodiffIsautodiffEnum); 161 iomodel->FetchData(&mass_flux_present,MassFluxSegmentsPresentEnum); 162 parameters->AddObject(new BoolParam(MassFluxSegmentsPresentEnum,mass_flux_present)); 163 164 if(mass_flux_present){ 165 166 /*Fetch the mass flux segments necessary to compute the mass fluxes. Build a DoubleMatArrayParam object out of them: */ 167 iomodel->FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,MassFluxSegmentsEnum); 168 if(mass_flux_num_profiles==0)_error_("mass_flux_num_profiles is 0, when MassFlux computations were requested!"); 169 170 /*Go through segments, and extract those that belong to this cpu: */ 171 for(i=0;i<mass_flux_num_profiles;i++){ 172 temp_matrix=array[i]; 173 temp_m=mdims_array[i]; 174 temp_n=ndims_array[i]; 175 176 m=0; 160 /*Deal with mass flux segments: {{{*/ 161 iomodel->FetchData(&qmu_mass_flux_present,QmuMassFluxSegmentsPresentEnum); 162 iomodel->FetchData(&autodiff_mass_flux_present,AutodiffMassFluxSegmentsPresentEnum); 163 164 if(qmu_mass_flux_present || autodiff_mass_flux_present)mass_flux_present=true; 165 else mass_flux_present=false; 166 parameters->AddObject(new BoolParam(MassFluxSegmentsPresentEnum,mass_flux_present)); 167 168 if(mass_flux_present){ 169 170 /*Fetch the mass flux segments necessary to compute the mass fluxes. Build a DoubleMatArrayParam object out of them: */ 171 iomodel->FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,MassFluxSegmentsEnum); 172 if(mass_flux_num_profiles==0)_error_("mass_flux_num_profiles is 0, when MassFlux computations were requested!"); 173 174 /*Go through segments, and extract those that belong to this cpu: */ 175 for(i=0;i<mass_flux_num_profiles;i++){ 176 temp_matrix=array[i]; 177 temp_m=mdims_array[i]; 178 temp_n=ndims_array[i]; 179 180 m=0; 181 for(j=0;j<temp_m;j++){ 182 if ( iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++; 183 } 184 if(m){ 185 matrix=xNewZeroInit<IssmDouble>(5*m); 186 count=0; 177 187 for(j=0;j<temp_m;j++){ 178 if ( iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++; 179 } 180 if(m){ 181 matrix=xNewZeroInit<IssmDouble>(5*m); 182 count=0; 183 for(j=0;j<temp_m;j++){ 184 if (iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){ 185 for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k); 186 count++; 187 } 188 if (iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){ 189 for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k); 190 count++; 188 191 } 189 192 } 190 else{191 matrix=NULL;192 }193 194 /*Assign: */195 array[i]=matrix;196 mdims_array[i]=m;197 ndims_array[i]=5;198 199 /*Free temporary matrix: */200 xDelete<IssmDouble>(temp_matrix);201 193 } 202 203 /*Ok, we have an array of segments, different on every cpu. Create a DoubleMatArrayParam object with it: */ 204 parameters->AddObject(new DoubleMatArrayParam(MassFluxSegmentsEnum,array,mass_flux_num_profiles,mdims_array,ndims_array)); 205 206 /*Free data: */ 207 for(i=0;i<mass_flux_num_profiles;i++){ 208 IssmDouble* matrix=array[i]; 209 xDelete<IssmDouble>(matrix); 194 else{ 195 matrix=NULL; 210 196 } 211 xDelete<int>(mdims_array); 212 xDelete<int>(ndims_array); 213 xDelete<IssmDouble*>(array); 197 198 /*Assign: */ 199 array[i]=matrix; 200 mdims_array[i]=m; 201 ndims_array[i]=5; 202 203 /*Free temporary matrix: */ 204 xDelete<IssmDouble>(temp_matrix); 214 205 } 215 /*}}}*/ 206 207 /*Ok, we have an array of segments, different on every cpu. Create a DoubleMatArrayParam object with it: */ 208 parameters->AddObject(new DoubleMatArrayParam(MassFluxSegmentsEnum,array,mass_flux_num_profiles,mdims_array,ndims_array)); 209 210 /*Free data: */ 211 for(i=0;i<mass_flux_num_profiles;i++){ 212 IssmDouble* matrix=array[i]; 213 xDelete<IssmDouble>(matrix); 214 } 215 xDelete<int>(mdims_array); 216 xDelete<int>(ndims_array); 217 xDelete<IssmDouble*>(array); 216 218 } 219 /*}}}*/ 217 220 218 221 /*Before returning, create parameters in case we are running Qmu or control types runs: */ -
issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
r13483 r13486 35 35 else if (strcmp(name,"AutodiffFosForwardIndex")==0) return AutodiffFosForwardIndexEnum; 36 36 else if (strcmp(name,"AutodiffFovForwardIndices")==0) return AutodiffFovForwardIndicesEnum; 37 else if (strcmp(name,"AutodiffMassFluxSegmentsPresent")==0) return AutodiffMassFluxSegmentsPresentEnum; 37 38 else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum; 38 39 else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum; … … 137 138 else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum; 138 139 else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum; 139 else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;140 140 else stage=2; 141 141 } 142 142 if(stage==2){ 143 if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum; 143 if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum; 144 else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum; 144 145 else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum; 145 146 else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum; … … 168 169 else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum; 169 170 else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum; 171 else if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum; 170 172 else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum; 171 173 else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum; … … 259 261 else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum; 260 262 else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum; 261 else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;262 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;263 263 else stage=3; 264 264 } 265 265 if(stage==3){ 266 if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 266 if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum; 267 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 268 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 267 269 else if (strcmp(name,"Approximation")==0) return ApproximationEnum; 268 270 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; … … 382 384 else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum; 383 385 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum; 384 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;385 else if (strcmp(name,"Temperature")==0) return TemperatureEnum;386 386 else stage=4; 387 387 } 388 388 if(stage==4){ 389 if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum; 389 if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; 390 else if (strcmp(name,"Temperature")==0) return TemperatureEnum; 391 else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum; 390 392 else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum; 391 393 else if (strcmp(name,"TemperatureSurface")==0) return TemperatureSurfaceEnum; … … 505 507 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 506 508 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 507 else if (strcmp(name,"XY")==0) return XYEnum;508 else if (strcmp(name,"XYZP")==0) return XYZPEnum;509 509 else stage=5; 510 510 } 511 511 if(stage==5){ 512 if (strcmp(name,"Option")==0) return OptionEnum; 512 if (strcmp(name,"XY")==0) return XYEnum; 513 else if (strcmp(name,"XYZP")==0) return XYZPEnum; 514 else if (strcmp(name,"Option")==0) return OptionEnum; 513 515 else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum; 514 516 else if (strcmp(name,"OptionCell")==0) return OptionCellEnum; -
issm/trunk-jpl/src/m/classes/autodiff.m
r13483 r13486 56 56 57 57 %early return 58 if ~obj.isautodiff, return; end 58 if ~obj.isautodiff, 59 WriteData(fid,'data',false,'enum',AutodiffMassFluxSegmentsPresentEnum,'format','Boolean'); 60 return; 61 end 59 62 60 63 %process dependent variables {{{ … … 148 151 end 149 152 end 150 if ~isempty(mass_flux_segments), 153 if ~isempty(mass_flux_segments), 151 154 WriteData(fid,'data',mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray'); 152 155 flag=true; 153 WriteData(fid,'data',flag,'enum',MassFluxSegmentsPresentEnum,'format','Boolean'); 156 else 157 flag=false; 154 158 end 159 WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum,'format','Boolean'); 155 160 %}}} 156 161 -
issm/trunk-jpl/src/m/classes/qmu.m
r13483 r13486 142 142 function marshall(obj,fid) % {{{ 143 143 WriteData(fid,'object',obj,'fieldname','isdakota','format','Boolean'); 144 if ~obj.isdakota, return; end 144 if ~obj.isdakota, 145 WriteData(fid,'data',false,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean'); 146 return; 147 end 145 148 WriteData(fid,'object',obj,'fieldname','partition','format','DoubleMat','mattype',2); 146 149 WriteData(fid,'object',obj,'fieldname','numberofpartitions','format','Integer'); … … 148 151 WriteData(fid,'object',obj,'fieldname','variabledescriptors','format','StringArray'); 149 152 WriteData(fid,'object',obj,'fieldname','responsedescriptors','format','StringArray'); 150 WriteData(fid,'data',obj.mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray'); 151 if ~isempty(mass_flux_segments), 152 flag=true; 153 WriteData(fid,'data',flag,'enum',MassFluxSegmentsPrsentEnum,'format','Boolean'); 153 if ~isempty(obj.mass_flux_segments), 154 WriteData(fid,'data',obj.mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray'); 155 flag=true; 156 else 157 flag=false; 154 158 end 159 WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean'); 155 160 end % }}} 156 161 end -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r13483 r13486 179 179 return StringToEnum('AutodiffFovForwardIndices')[0] 180 180 181 def AutodiffMassFluxSegmentsPresentEnum(): 182 """ 183 AUTODIFFMASSFLUXSEGMENTSPRESENTENUM - Enum of AutodiffMassFluxSegmentsPresent 184 185 Usage: 186 macro=AutodiffMassFluxSegmentsPresentEnum() 187 """ 188 189 return StringToEnum('AutodiffMassFluxSegmentsPresent')[0] 190 181 191 def BalancethicknessSpcthicknessEnum(): 182 192 """ … … 1479 1489 return StringToEnum('MassFluxSegmentsPresent')[0] 1480 1490 1491 def QmuMassFluxSegmentsPresentEnum(): 1492 """ 1493 QMUMASSFLUXSEGMENTSPRESENTENUM - Enum of QmuMassFluxSegmentsPresent 1494 1495 Usage: 1496 macro=QmuMassFluxSegmentsPresentEnum() 1497 """ 1498 1499 return StringToEnum('QmuMassFluxSegmentsPresent')[0] 1500 1481 1501 def QmuNumberofpartitionsEnum(): 1482 1502 """ … … 4907 4927 """ 4908 4928 4909 return 4 894910 4929 return 491 4930 -
issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
r13483 r13486 9 9 % macro=MaximumNumberOfEnums() 10 10 11 macro=4 89;11 macro=491; -
issm/trunk-jpl/test/NightlyRun/test223.m
r12791 r13486 4 4 md=setflowequation(md,'macayeal','all'); 5 5 md.geometry.bed=md.geometry.bed+50; md.geometry.surface=md.geometry.surface+50; 6 md.cluster=generic('name',oshostname(),'np', 3);6 md.cluster=generic('name',oshostname(),'np',1); 7 7 md.prognostic.hydrostatic_adjustment='Incremental'; 8 8 md=solve(md,TransientSolutionEnum);
Note:
See TracChangeset
for help on using the changeset viewer.