Changeset 21674
- Timestamp:
- 04/18/17 09:23:07 (8 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 3 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r21620 r21674 1585 1585 name==FrictionPEnum || 1586 1586 name==FrictionQEnum || 1587 name==FrictionCoefficientcoulombEnum || 1587 1588 name==LoadingforceXEnum || 1588 1589 name==LoadingforceYEnum || -
issm/trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h
r21068 r21674 334 334 } /*}}}*/ 335 335 336 /*Specific instantiations for int*: */ 337 template <> inline GenericExternalResult<int*>::GenericExternalResult(int in_id, int in_enum_type,int* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ 338 339 id = in_id; 340 M = in_M; 341 N = in_N; 342 343 EnumToStringx(&this->result_name,in_enum_type); 344 345 step = in_step; 346 time = in_time; 347 348 /*Copy result in values*/ 349 if(M*N){ 350 value=xNew<int>(M*N); 351 xMemCpy<int>(value,in_values,M*N); 352 } 353 else value=NULL; 354 } 355 /*}}}*/ 356 template <> inline GenericExternalResult<int*>::GenericExternalResult(int in_id,const char* in_result_name,int* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ 357 358 id = in_id; 359 M = in_M; 360 N = in_N; 361 362 /*Copy name*/ 363 this->result_name = xNew<char>(strlen(in_result_name)+1); 364 xMemCpy<char>(this->result_name,in_result_name,strlen(in_result_name)+1); 365 366 step = in_step; 367 time = in_time; 368 369 /*Copy result in values*/ 370 if(M*N){ 371 value=xNew<int>(M*N); 372 xMemCpy<int>(value,in_values,M*N); 373 } 374 else value=NULL; 375 } 376 /*}}}*/ 377 template <> inline GenericExternalResult<int*>::GenericExternalResult(int in_id, int in_enum_type,int* in_value,int in_step, IssmDouble in_time){ /*{{{*/ 378 _error_("you cannot initialize a GenericExternalResult<int*> without providing the dimensions of the matrix! Please use a more appropriate constructor!"); 379 } /*}}}*/ 380 template <> inline GenericExternalResult<int*>::~GenericExternalResult(){ /*{{{*/ 381 xDelete<char>(result_name); 382 xDelete<int>(value); 383 } /*}}}*/ 384 template <> inline void GenericExternalResult<int*>::Echo(void){ /*{{{*/ 385 386 _printf_("GenericExternalResult<int*>:\n"); 387 this->GenericEcho(); 388 _printf_(" matrix size: " << this->M << "-" << this->N << "\n"); 389 390 } /*}}}*/ 391 template <> inline void GenericExternalResult<int*>::DeepEcho(void){ /*{{{*/ 392 393 int i,j; 394 395 _printf_("GenericExternalResult<int*>:\n"); 396 this->GenericEcho(); 397 398 _printf_(" matrix size: " << this->M << "-" << this->N << "\n"); 399 for (i=0;i<this->M;i++){ 400 _printf_(" [ "); 401 for (j=0;j<this->N;j++){ 402 _printf_( " " << setw(11) << this->value[i*this->N+j]); 403 } 404 _printf_(" ]\n"); 405 } 406 407 } /*}}}*/ 408 template <> inline Object* GenericExternalResult<int*>::copy(void){ /*{{{*/ 409 return new GenericExternalResult<int*>(this->id,StringToEnumx(this->result_name),this->value,this->M,this->N,this->step,this->time); 410 } /*}}}*/ 411 template <> inline void GenericExternalResult<int*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/ 412 413 int my_rank; 414 int type; 415 int rows,cols; 416 char *name = NULL; 417 IssmPDouble passiveDouble; 418 419 /*recover my_rank:*/ 420 my_rank=IssmComm::GetRank(); 421 422 if(io_gather){ 423 /*we are gathering the data on cpu 0, don't write on other cpus: */ 424 if(my_rank) return; 425 } 426 427 /*First write enum: */ 428 int length=(strlen(this->result_name)+1)*sizeof(char); 429 fwrite(&length,sizeof(int),1,fid); 430 fwrite(this->result_name,length,1,fid); 431 432 /*Now write time and step: */ 433 passiveDouble=reCast<IssmPDouble>(time); 434 fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid); 435 fwrite(&step,sizeof(int),1,fid); 436 437 /*writing an int array, type is 4 (see parseresultsfromdisk.m):*/ 438 type=4; 439 fwrite(&type,sizeof(int),1,fid); 440 rows=this->M; 441 fwrite(&rows,sizeof(int),1,fid); 442 cols=this->N; 443 fwrite(&cols,sizeof(int),1,fid); 444 fwrite(value,cols*rows*sizeof(int),1,fid); 445 446 } 447 /*}}}*/ 448 template <> inline int GenericExternalResult<int*>::ObjectEnum(void){ /*{{{*/ 449 return IntMatExternalResultEnum; 450 } /*}}}*/ 451 template <> inline void GenericExternalResult<int*>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/ 452 453 MARSHALLING_ENUM(this->ObjectEnum()); 454 455 MARSHALLING(id); 456 MARSHALLING(result_name); 457 MARSHALLING(M); 458 MARSHALLING(N); 459 MARSHALLING_DYNAMIC(value,int,M*N); 460 MARSHALLING(step); 461 MARSHALLING(time); 462 463 } /*}}}*/ 464 /*Specific instantiations for int*: */ 465 #if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_) //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization. 466 template <> inline void GenericExternalResult<int*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/ 467 468 int i; 469 int my_rank; 470 int type; 471 int rows,cols; 472 char *name = NULL; 473 IssmPDouble passiveDouble; 474 int* passiveInts; 475 476 /*recover my_rank:*/ 477 my_rank=IssmComm::GetRank(); 478 479 if(io_gather){ 480 /*we are gathering the data on cpu 0, don't write on other cpus: */ 481 if(my_rank) return; 482 } 483 484 /*First write enum: */ 485 int length=(strlen(this->result_name)+1)*sizeof(char); 486 fwrite(&length,sizeof(int),1,fid); 487 fwrite(this->result_name,length,1,fid); 488 489 /*Now write time and step: */ 490 passiveDouble=reCast<IssmPDouble>(time); 491 fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid); 492 fwrite(&step,sizeof(int),1,fid); 493 494 /*writing a int array, type is 4 (see parseresultsfromdisk.m):*/ 495 type=4; 496 fwrite(&type,sizeof(int),1,fid); 497 rows=this->M; 498 fwrite(&rows,sizeof(int),1,fid); 499 cols=this->N; 500 fwrite(&cols,sizeof(int),1,fid); 501 502 passiveInts=xNew<int>(this->M*this->N); 503 for (i=0;i<this->M*this->N;i++)passiveInts[i]=reCast<int>(value[i]); 504 fwrite(passiveInts,cols*rows*sizeof(int),1,fid); 505 xDelete<int>(int); 506 507 } 508 /*}}}*/ 509 #endif 510 336 511 /*Specific instantiations for IssmPDouble*: */ 337 512 template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id, int in_enum_type,IssmPDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r21583 r21674 26 26 int output_frequency; 27 27 int recording_frequency; 28 int domaintype,groundingline_migration,smb_model ;28 int domaintype,groundingline_migration,smb_model,amr_frequency; 29 29 int numoutputs; 30 30 Analysis *analysis = NULL; … … 60 60 femmodel->parameters->FindParam(&isdamageevolution,TransientIsdamageevolutionEnum); 61 61 femmodel->parameters->FindParam(&ishydrology,TransientIshydrologyEnum); 62 femmodel->parameters->FindParam(&amr_frequency,TransientAmrFrequencyEnum); 62 63 femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum); 63 64 if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum); 64 65 femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum); 65 66 if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum); 67 68 #ifdef _HAVE_NEOPZ_ 69 bool ismismip = false;//itapopo testing restart 70 if(ismismip) femmodel->ReMesh(); 71 #endif 66 72 67 73 while(time < finaltime - (yts*DBL_EPSILON)){ //make sure we run up to finaltime. … … 170 176 /*Adaptive mesh refinement*/ 171 177 #ifdef _HAVE_NEOPZ_ 172 i nt isamr=true;173 if( isamr) femmodel->ReMesh();178 if(save_results) femmodel->WriteMeshInResults(); 179 if(step%amr_frequency==0 && time<finaltime) femmodel->ReMesh();//Do not refine the last step 174 180 #endif 175 181 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r21577 r21674 84 84 parameters->AddObject(iomodel->CopyConstantObject("md.transient.isslr",TransientIsslrEnum)); 85 85 parameters->AddObject(iomodel->CopyConstantObject("md.transient.iscoupler",TransientIscouplerEnum)); 86 parameters->AddObject(iomodel->CopyConstantObject("md.transient.amr_frequency",TransientAmrFrequencyEnum)); 86 87 parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum)); 87 88 parameters->AddObject(iomodel->CopyConstantObject("md.gia.cross_section_shape",GiaCrossSectionShapeEnum)); 89 /*amr properties*/ 90 parameters->AddObject(iomodel->CopyConstantObject("md.amr.level_max",AmrLevelMaxEnum)); 91 parameters->AddObject(iomodel->CopyConstantObject("md.amr.region_level_1",AmrRegionLevel1Enum)); 92 parameters->AddObject(iomodel->CopyConstantObject("md.amr.region_level_max",AmrRegionLevelMaxEnum)); 88 93 89 94 /*For stress balance only*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r21626 r21674 581 581 DoubleMatExternalResultEnum, 582 582 IntExternalResultEnum, 583 IntMatExternalResultEnum, 583 584 JEnum, 584 585 StringExternalResultEnum, … … 819 820 EsaNumRequestedOutputsEnum, 820 821 /*}}}*/ 822 /*Adaptive mesh refinement (AMR){{{*/ 823 AmrLevelMaxEnum, 824 AmrRegionLevel1Enum, 825 AmrRegionLevelMaxEnum, 826 TransientAmrFrequencyEnum, 827 /*}}}*/ 821 828 ParametersENDEnum, 822 829 /*Coordinate Systems{{{*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r21626 r21674 577 577 case DoubleMatExternalResultEnum : return "DoubleMatExternalResult"; 578 578 case IntExternalResultEnum : return "IntExternalResult"; 579 case IntMatExternalResultEnum : return "IntMatExternalResult"; 579 580 case JEnum : return "J"; 580 581 case StringExternalResultEnum : return "StringExternalResult"; … … 796 797 case EsaRequestedOutputsEnum : return "EsaRequestedOutputs"; 797 798 case EsaNumRequestedOutputsEnum : return "EsaNumRequestedOutputs"; 799 case AmrLevelMaxEnum : return "AmrLevelMax"; 800 case AmrRegionLevel1Enum : return "AmrRegionLevel1"; 801 case AmrRegionLevelMaxEnum : return "AmrRegionLevelMax"; 802 case TransientAmrFrequencyEnum : return "TransientAmrFrequency"; 798 803 case ParametersENDEnum : return "ParametersEND"; 799 804 case XYEnum : return "XY"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r21626 r21674 589 589 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 590 590 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 591 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 591 592 else if (strcmp(name,"J")==0) return JEnum; 592 593 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; … … 628 629 else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum; 629 630 else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum; 630 else if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition33")==0) return Outputdefinition33Enum; 634 if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum; 635 else if (strcmp(name,"Outputdefinition33")==0) return Outputdefinition33Enum; 635 636 else if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum; 636 637 else if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum; … … 751 752 else if (strcmp(name,"Regular")==0) return RegularEnum; 752 753 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 753 else if (strcmp(name,"Separate")==0) return SeparateEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"Sset")==0) return SsetEnum; 757 if (strcmp(name,"Separate")==0) return SeparateEnum; 758 else if (strcmp(name,"Sset")==0) return SsetEnum; 758 759 else if (strcmp(name,"Dense")==0) return DenseEnum; 759 760 else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; … … 814 815 else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum; 815 816 else if (strcmp(name,"EsaNumRequestedOutputs")==0) return EsaNumRequestedOutputsEnum; 817 else if (strcmp(name,"AmrLevelMax")==0) return AmrLevelMaxEnum; 818 else if (strcmp(name,"AmrRegionLevel1")==0) return AmrRegionLevel1Enum; 819 else if (strcmp(name,"AmrRegionLevelMax")==0) return AmrRegionLevelMaxEnum; 820 else if (strcmp(name,"TransientAmrFrequency")==0) return TransientAmrFrequencyEnum; 816 821 else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum; 817 822 else if (strcmp(name,"XY")==0) return XYEnum; … … 870 875 else if (strcmp(name,"SegInput")==0) return SegInputEnum; 871 876 else if (strcmp(name,"Tria")==0) return TriaEnum; 872 else if (strcmp(name,"TriaInput")==0) return TriaInputEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"TriaInput")==0) return TriaInputEnum; 873 881 else if (strcmp(name,"Tetra")==0) return TetraEnum; 874 882 else if (strcmp(name,"TetraInput")==0) return TetraInputEnum; 875 883 else if (strcmp(name,"Penta")==0) return PentaEnum; 876 884 else if (strcmp(name,"PentaInput")==0) return PentaInputEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"Vertex")==0) return VertexEnum; 885 else if (strcmp(name,"Vertex")==0) return VertexEnum; 881 886 else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum; 882 887 else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum; … … 993 998 else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum; 994 999 else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum; 995 else if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum; 996 1004 else if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum; 997 1005 else if (strcmp(name,"CrouzeixRaviart")==0) return CrouzeixRaviartEnum; 998 1006 else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum; 999 1007 else if (strcmp(name,"Closed")==0) return ClosedEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Free")==0) return FreeEnum; 1008 else if (strcmp(name,"Free")==0) return FreeEnum; 1004 1009 else if (strcmp(name,"Open")==0) return OpenEnum; 1005 1010 else if (strcmp(name,"Air")==0) return AirEnum; -
issm/trunk-jpl/src/m/classes/model.js
r21584 r21674 41 41 console.log(sprintf("//19s: //-22s -- //s","inversion" ,"[1x1 " + typeof(this.inversion) + "]","parameters for inverse methods")); 42 42 console.log(sprintf("//19s: //-22s -- //s","qmu" ,"[1x1 " + typeof(this.qmu) + "]","dakota properties")); 43 console.log(sprintf("//19s: //-22s -- //s","amr" ,"[1x1 " + typeof(this.amr) + "]","adaptive mesh refinement properties")); 43 44 console.log(sprintf("//19s: //-22s -- //s","outputdefinition","[1x1 " + typeof(this.outputdefinition) + "]","output definition")); 44 45 console.log(sprintf("//19s: //-22s -- //s","results" ,"[1x1 " + typeof(this.results) + "]","model results")); … … 82 83 this.inversion = new inversion(); 83 84 this.qmu = new qmu(); 85 this.amr = new amr(); 84 86 this.radaroverlay = new radaroverlay(); 85 87 this.results = {}; … … 612 614 this.inversion = 0; 613 615 this.qmu = 0; 616 this.amr = 0; 614 617 615 618 this.results = 0; -
issm/trunk-jpl/src/m/classes/model.m
r21667 r21674 46 46 inversion = 0; 47 47 qmu = 0; 48 amr = 0; 48 49 49 50 results = 0; … … 1124 1125 md.inversion = inversion(); 1125 1126 md.qmu = qmu(); 1127 md.amr = amr(); 1126 1128 md.radaroverlay = radaroverlay(); 1127 1129 md.results = struct(); … … 1296 1298 disp(sprintf('%19s: %-22s -- %s','inversion' ,['[1x1 ' class(self.inversion) ']'],'parameters for inverse methods')); 1297 1299 disp(sprintf('%19s: %-22s -- %s','qmu' ,['[1x1 ' class(self.qmu) ']'],'dakota properties')); 1300 disp(sprintf('%19s: %-22s -- %s','amr' ,['[1x1 ' class(self.amr) ']'],'adaptive mesh refinement properties')); 1298 1301 disp(sprintf('%19s: %-22s -- %s','outputdefinition',['[1x1 ' class(self.outputdefinition) ']'],'output definition')); 1299 1302 disp(sprintf('%19s: %-22s -- %s','results' ,['[1x1 ' class(self.results) ']'],'model results')); -
issm/trunk-jpl/src/m/classes/model.py
r21584 r21674 50 50 from outputdefinition import outputdefinition 51 51 from qmu import qmu 52 from amr import amr 52 53 from results import results 53 54 from radaroverlay import radaroverlay … … 112 113 self.inversion = inversion() 113 114 self.qmu = qmu() 115 self.amr = amr() 114 116 115 117 self.results = results() … … 154 156 'inversion',\ 155 157 'qmu',\ 158 'amr',\ 156 159 'outputdefinition',\ 157 160 'results',\ … … 194 197 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods")) 195 198 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties")) 199 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("amr","[%s,%s]" % ("1x1",obj.amr.__class__.__name__),"adaptive mesh refinement properties")) 196 200 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition")) 197 201 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results")) -
issm/trunk-jpl/src/m/classes/trans.js
r21584 r21674 20 20 this.isslr = 0; 21 21 this.iscoupler = 0; 22 this.amr_frequency = 0; 22 23 23 24 //default output … … 40 41 fielddisplay(this,'isslr','indicates whether a sea-level rise model is used'); 41 42 fielddisplay(this,'iscoupler','indicates whether different models are being run with need for coupling'); 43 fielddisplay(this,'amr_frequency','frequency at which mesh is refined in simulations with multiple time_steps'); 42 44 fielddisplay(this,'requested_outputs','list of additional outputs requested'); 43 45 … … 63 65 checkfield(md,'fieldname','trans.iscoupler','numel',[1],'values',[0 ,1]); 64 66 checkfield(md,'fieldname','trans.isslr','numel',[1],'values',[0 ,1]); 67 checkfield(md,'fieldname','trans.amr_frequency','numel',[1],'>=',1,'NaN',1,'Inf',1); 65 68 checkfield(md,'fieldname','trans.requested_outputs','stringrow',1); 66 69 } // }}} … … 79 82 WriteData(fid,prefix,'object',this,'fieldname','isslr','format','Boolean'); 80 83 WriteData(fid,prefix,'object',this,'fieldname','iscoupler','format','Boolean'); 84 WriteData(fid,prefix,'object',this,'fieldname','amr_frequency','format','Integer'); 81 85 82 86 //process requested outputs … … 111 115 this.isslr = 0; 112 116 this.iscoupler = 0; 117 this.amr_frequency = 0; 113 118 this.requested_outputs = []; 114 119 -
issm/trunk-jpl/src/m/classes/transient.m
r21584 r21674 18 18 isslr = 0; 19 19 iscoupler = 0; 20 amr_frequency = 0; 20 21 isoceancoupling = 0; 21 22 requested_outputs = {}; … … 46 47 self.isoceancoupling = 0; 47 48 self.iscoupler = 0; 49 self.amr_frequency = 0; 48 50 49 51 %default output … … 66 68 self.isoceancoupling = 0; 67 69 self.iscoupler = 0; 70 self.amr_frequency = 1; 68 71 69 72 %default output … … 96 99 md = checkfield(md,'fieldname','transient.isoceancoupling','numel',[1],'values',[0 1]); 97 100 md = checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0 1]); 101 md = checkfield(md,'fieldname','transient.amr_frequency','numel',[1],'>=',1,'NaN',1,'Inf',1); 98 102 99 103 if (~strcmp(solution,'TransientSolution') & md.transient.iscoupling==1), … … 117 121 fielddisplay(self,'isoceancoupling','indicates whether a coupling with an ocean model is used in the transient'); 118 122 fielddisplay(self,'iscoupler','indicates whether different models are being run with need for coupling'); 123 fielddisplay(self,'amr_frequency','frequency at which mesh is refined in simulations with multiple time_steps'); 119 124 fielddisplay(self,'requested_outputs','list of additional outputs requested'); 120 125 … … 134 139 WriteData(fid,prefix,'object',self,'fieldname','isoceancoupling','format','Boolean'); 135 140 WriteData(fid,prefix,'object',self,'fieldname','iscoupler','format','Boolean'); 141 WriteData(fid,prefix,'object',self,'fieldname','amr_frequency','format','Integer'); 136 142 137 143 %process requested outputs … … 159 165 writejsdouble(fid,[modelname '.trans.isoceancoupling'],self.isoceancoupling); 160 166 writejsdouble(fid,[modelname '.trans.iscoupler'],self.iscoupler); 167 writejsdouble(fid,[modelname '.trans.amr_frequency'],self.amr_frequency); 161 168 writejscellstring(fid,[modelname '.trans.requested_outputs'],self.requested_outputs); 162 169 -
issm/trunk-jpl/src/m/classes/transient.py
r21584 r21674 25 25 self.isoceancoupling = False 26 26 self.iscoupler = False 27 amr_frequency = 0 27 28 self.requested_outputs = [] 28 29 … … 46 47 string="%s\n%s"%(string,fielddisplay(self,'isoceancoupling','indicates whether coupling with an ocean model is used in the transient')) 47 48 string="%s\n%s"%(string,fielddisplay(self,'iscoupler','indicates whether different models are being run with need for coupling')) 49 string="%s\n%s"%(string,fielddisplay(self,'amr_frequency','frequency at which mesh is refined in simulations with multiple time_steps')) 48 50 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested')) 49 51 return string … … 73 75 self.isslr = False 74 76 self.iscoupler = False 77 self.amr_frequency = 0 75 78 76 79 #default output … … 94 97 self.isoceancoupling = False 95 98 self.iscoupler = False 99 self.amr_frequency = 1 96 100 97 101 #default output … … 118 122 md = checkfield(md,'fieldname','transient.isoceancoupling','numel',[1],'values',[0,1]) 119 123 md = checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0,1]) 124 md = checkfield(md,'fieldname','transient.amr_frequency','numel',[1],'>=',1,'NaN',1,'Inf',1) 120 125 md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1) 121 126 … … 139 144 WriteData(fid,prefix,'object',self,'fieldname','isoceancoupling','format','Boolean') 140 145 WriteData(fid,prefix,'object',self,'fieldname','iscoupler','format','Boolean') 146 WriteData(fid,prefix,'object',self,'fieldname','amr_frequency','format','Integer') 141 147 142 148 #process requested outputs -
issm/trunk-jpl/src/m/solve/parseresultsfrombuffer.js
r20900 r21674 81 81 field=fid.fread(N*M,'double'); 82 82 } 83 else if (type==4) { 84 N=fid.fread(1,'int'); 85 field=fid.fread(N*M,'int'); 86 } 83 87 else throw Error(sprintf("%s%i",'ReadData error message: cannot read data of type ',type)); 84 88 -
issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m
r21216 r21674 154 154 N=fread(fid,1,'int'); 155 155 field=transpose(fread(fid,[N M],'double')); 156 elseif type==4, 157 N=fread(fid,1,'int'); 158 field=transpose(fread(fid,[N M],'int')); 156 159 else 157 160 error(['cannot read data of type ' num2str(type) ]); -
issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
r21303 r21674 162 162 for i in xrange(M): 163 163 field[i,:]=struct.unpack('%dd' % N,fid.read(N*struct.calcsize('d'))) 164 elif type==4: 165 N=struct.unpack('i',fid.read(struct.calcsize('i')))[0] 166 # field=transpose(fread(fid,[N M],'int')); 167 field=np.zeros(shape=(M,N),dtype=int) 168 for i in xrange(M): 169 field[i,:]=struct.unpack('%ii' % N,fid.read(N*struct.calcsize('i'))) 164 170 else: 165 171 raise TypeError("cannot read data of type %d" % type)
Note:
See TracChangeset
for help on using the changeset viewer.