Changeset 24565
- Timestamp:
- 02/14/20 05:45:36 (5 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r24529 r24565 335 335 int smb_model; 336 336 int smbsubstepping; 337 int hydrologysubstepping; 337 338 IssmDouble dt,scalar,sediment_storing; 338 339 IssmDouble water_head,sediment_transmitivity; … … 340 341 IssmDouble Jdet; 341 342 342 IssmDouble 343 Input2 344 Input2 345 Input2 346 TransientInput2*surface_runoff_input = NULL;343 IssmDouble *xyz_list = NULL; 344 Input2 *active_element_input = NULL; 345 Input2 *old_wh_input = NULL; 346 Input2 *dummy_input = NULL; 347 Input2 *surface_runoff_input = NULL; 347 348 348 349 /*Fetch number of nodes and dof for this finite element*/ … … 370 371 371 372 if(dt!= 0.){ 372 old_wh_input = basalelement->GetInput2(SedimentHeadOldEnum); 373 old_wh_input = basalelement->GetInput2(SedimentHeadOldEnum); _assert_(old_wh_input); 373 374 } 374 375 if(smb_model==SMBgradientscomponentsEnum){ 375 376 basalelement->FindParam(&smbsubstepping,SmbStepsPerStepEnum); 376 if(smbsubstepping>1) { 377 dummy_input = basalelement->GetInput2(SmbRunoffTransientEnum); _assert_(dummy_input); 378 } 379 else { 377 basalelement->FindParam(&hydrologysubstepping,HydrologyStepsPerStepEnum); 378 379 if(smbsubstepping==1){ 380 380 dummy_input = basalelement->GetInput2(SmbRunoffEnum); _assert_(dummy_input); 381 381 } 382 _assert_(dummy_input->InstanceEnum()==TransientInput2Enum); 383 surface_runoff_input=xDynamicCast<TransientInput2*>(dummy_input); _assert_(surface_runoff_input); 382 else if(smbsubstepping>1 && smbsubstepping<=hydrologysubstepping){ 383 dummy_input = basalelement->GetInput2(SmbRunoffTransientEnum, time); _assert_(dummy_input); 384 } 385 else{ 386 dummy_input = basalelement->GetInput2(SmbRunoffTransientEnum,time-dt,time); _assert_(dummy_input); 387 } 388 surface_runoff_input=xDynamicCast<Input2*>(dummy_input); _assert_(surface_runoff_input); 384 389 } 385 390 -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r24504 r24565 157 157 ElementMatrix* NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum); 158 158 ElementVector* NewElementVector(int approximation_enum=NoneApproximationEnum); 159 void PicoUpdateBoxid(int* pmax_boxid_basin); 159 void PicoUpdateBoxid(int* pmax_boxid_basin); 160 160 void PicoUpdateBox(int loopboxid); 161 void PicoComputeBasalMelt(); 161 void PicoComputeBasalMelt(); 162 162 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm,bool issetpddfac); 163 163 void PositiveDegreeDaySicopolis(bool isfirnwarming); … … 251 251 virtual Input2* GetInput2(int inputenum)=0; 252 252 virtual Input2* GetInput2(int inputenum,IssmDouble time)=0; 253 virtual Input2* GetInput2(int inputenum,IssmDouble start_time,IssmDouble end_time)=0; 253 254 virtual void GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype){_error_("not implemented yet");}; 254 255 virtual void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){_error_("not implemented yet");}; … … 340 341 virtual Element* SpawnTopElement(void)=0; 341 342 virtual IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)=0; 342 virtual void StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)=0; 343 virtual void StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)=0; 343 344 virtual void StrainRateparallel(void)=0; 344 345 virtual void StrainRateperpendicular(void)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r24481 r24565 1 /*! \file Penta.h 1 /*! \file Penta.h 2 2 * \brief: header file for penta object 3 3 */ … … 85 85 Input2* GetInput2(int enumtype); 86 86 Input2* GetInput2(int enumtype,IssmDouble time); 87 Input2* GetInput2(int inputenum,IssmDouble start_time,IssmDouble end_time){_error_("not implemented yet!");}; 87 88 void GetInputListOnVertices(IssmDouble* pvalue,Input2* input,IssmDouble default_value); 88 89 void GetInputListOnNodes(IssmDouble* pvalue,Input2* input,IssmDouble default_value); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r24481 r24565 1 /*! \file Seg.h 1 /*! \file Seg.h 2 2 * \brief: header file for seg object 3 3 */ … … 65 65 Input2* GetInput2(int enumtype); 66 66 Input2* GetInput2(int enumtype,IssmDouble time); 67 Input2* GetInput2(int inputenum,IssmDouble start_time,IssmDouble end_time){_error_("not implemented yet!");}; 67 68 void GetInputListOnVertices(IssmDouble* pvalue,Input2* input,IssmDouble default_value); 68 69 void GetInputListOnNodes(IssmDouble* pvalue,Input2* input,IssmDouble default_value); -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r24481 r24565 1 /*! \file Tetra.h 1 /*! \file Tetra.h 2 2 * \brief: header file for seg object 3 3 */ … … 69 69 Input2* GetInput2(int enumtype); 70 70 Input2* GetInput2(int enumtype,IssmDouble time); 71 Input2* GetInput2(int inputenum,IssmDouble start_time,IssmDouble end_time){_error_("not implemented yet!");}; 71 72 void GetInputListOnVertices(IssmDouble* pvalue,Input2* input,IssmDouble default_value); 72 73 void GetInputListOnNodes(IssmDouble* pvalue,Input2* input,IssmDouble default_value); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r24505 r24565 1911 1911 } 1912 1912 }/*}}}*/ 1913 Input2* Tria::GetInput2(int inputenum,IssmDouble start_time, IssmDouble end_time){/*{{{*/ 1914 1915 /*Get Input from dataset*/ 1916 if(this->iscollapsed){ 1917 _error_("Get Average input not implemented in Penta yet"); 1918 } 1919 else{ 1920 TriaInput2* input = this->inputs2->GetTriaInput(inputenum,start_time, end_time); 1921 if(!input) return input; 1922 1923 this->InputServe(input); 1924 return input; 1925 } 1926 }/*}}}*/ 1913 1927 void Tria::GetInputListOnVertices(IssmDouble* pvalue,Input2* input,IssmDouble default_value){/*{{{*/ 1914 1928 … … 2102 2116 IssmDouble dt; 2103 2117 int found,start_offset,end_offset; 2104 int averaging_method = 0; 2118 int averaging_method=0; 2119 2105 2120 2106 2121 /*Get transient input time steps*/ … … 2121 2136 int offset = start_offset; 2122 2137 while(offset < end_offset ){ 2123 2124 2138 if(offset==-1){ 2125 2139 /*get values for the first time: */ … … 2132 2146 input->GetInputValue(¤t_values[iv],gauss); 2133 2147 } 2148 dt = timesteps[0] - start_time; 2134 2149 } 2135 2150 else{ … … 2141 2156 input->GetInputValue(¤t_values[iv],gauss); 2142 2157 } 2143 } 2144 2145 /*Step between current offset and next*/ 2146 if(offset==-1){ 2147 dt = timesteps[0] - start_time; 2148 } 2149 else if(offset == numtimesteps-1){ 2150 dt = end_time - timesteps[offset]; 2151 } 2152 else{ 2153 dt = timesteps[offset+1] - timesteps[offset]; _assert_(dt>0.); 2158 if(offset == numtimesteps-1){ 2159 dt = end_time - timesteps[offset]; 2160 } 2161 else{ 2162 dt = timesteps[offset+1] - timesteps[offset]; _assert_(dt>0.); 2163 } 2154 2164 } 2155 2165 … … 2220 2230 IssmDouble *timesteps = NULL; 2221 2231 TransientInput2* transient_input = this->inputs2->GetTransientInput(input_enum); 2232 2222 2233 transient_input->GetAllTimes(×teps,&numtimesteps); 2223 2234 … … 5557 5568 /*Computational flags:*/ 5558 5569 int bp_compute_fingerprints= 0; 5559 5570 5560 5571 /*some paramters first: */ 5561 5572 this->parameters->FindParam(&bp_compute_fingerprints,DslComputeFingerprintsEnum); 5562 5573 5563 5574 if(!IsOceanInElement()){ 5564 /*ok, there is ocean in this element, we should compute eustatic loads for the ocean if we have requested 5575 /*ok, there is ocean in this element, we should compute eustatic loads for the ocean if we have requested 5565 5576 *bottom pressure fingerprints:*/ 5566 5577 if(bp_compute_fingerprints)this->SealevelriseEustaticBottomPressure(pSgi,peustatic,latitude,longitude,radius,oceanarea,eartharea); … … 5603 5614 bool computeelastic= true; 5604 5615 bool scaleoceanarea= false; 5605 5616 5606 5617 /*early return if we are not on an ice cap:*/ 5607 5618 if(!IsIceOnlyInElement()){ … … 5805 5816 bool scaleoceanarea= false; 5806 5817 bool bp_compute_fingerprints= false; 5807 5818 5808 5819 /*we are here to compute fingerprints originating fromn bottom pressure loads:*/ 5809 5820 -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r24505 r24565 1 /*! \file Tria.h 1 /*! \file Tria.h 2 2 * \brief: header file for tria object 3 3 */ … … 165 165 IssmDouble OceanArea(void); 166 166 IssmDouble OceanAverage(IssmDouble* Sg); 167 void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea); 167 void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea); 168 168 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea); 169 169 void SealevelriseEustaticIce(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea); … … 189 189 Input2* GetInput2(int enumtype); 190 190 Input2* GetInput2(int enumtype,IssmDouble time); 191 Input2* GetInput2(int inputenum,IssmDouble start_time, IssmDouble end_time); 191 192 DatasetInput2* GetDatasetInput2(int inputenum); 192 193 void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype); -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r24529 r24565 2767 2767 /*}}}*/ 2768 2768 void FemModel::ThicknessAverage(){/*{{{*/ 2769 2769 2770 2770 int elementswidth = this->GetElementsWidth();//just 2D mesh, tria elements 2771 2771 int numberofvertices = this->vertices->NumberOfVertices();//total number of vertices … … 2780 2780 for(int i=0;i<this->elements->Size();i++){ 2781 2781 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 2782 2782 2783 2783 /*check if there is ice in this element*/ 2784 if(!element->IsIceInElement()) continue; 2785 2784 if(!element->IsIceInElement()) continue; 2785 2786 2786 /*get H on the vertices*/ 2787 2787 element->GetInputListOnVertices(H,ThicknessEnum); … … 5227 5227 } 5228 5228 /*}}}*/ 5229 void FemModel::InitTransient Outputx(int* transientinput_enum,int numoutputs){ /*{{{*/5229 void FemModel::InitTransientInputx(int* transientinput_enum,int numoutputs){ /*{{{*/ 5230 5230 5231 5231 for(int i=0;i<numoutputs;i++){ 5232 5232 this->inputs2->DeleteInput(transientinput_enum[i]); 5233 5233 this->inputs2->SetTransientInput(transientinput_enum[i],NULL,0); 5234 5235 5234 /*We need to configure this input!*/ 5236 5235 TransientInput2* transientinput = this->inputs2->GetTransientInput(transientinput_enum[i]); _assert_(transientinput); … … 5239 5238 } 5240 5239 /*}}}*/ 5241 void FemModel::StackTransient Outputx(int* input_enum,int* transientinput_enum,IssmDouble subtime,int numoutputs){ /*{{{*/5240 void FemModel::StackTransientInputx(int* input_enum,int* transientinput_enum,IssmDouble subtime,int numoutputs){ /*{{{*/ 5242 5241 5243 5242 for(int i=0;i<numoutputs;i++){ … … 5250 5249 /*Get the right transient input*/ 5251 5250 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j)); 5252 TransientInput2* transientinput = this->inputs2->GetTransientInput(transientinput_enum[i]); _assert_(transientinput);5251 TransientInput2* transientinput = this->inputs2->GetTransientInput(transientinput_enum[i]); 5253 5252 5254 5253 /*Get values and lid list*/ … … 5260 5259 5261 5260 switch(element->ObjectEnum()){ 5262 case TriaEnum: transientinput->AddTriaTimeInput( 5261 case TriaEnum: transientinput->AddTriaTimeInput(subtime,numvertices,vertexlids,values,P1Enum); break; 5263 5262 case PentaEnum: transientinput->AddPentaTimeInput(subtime,numvertices,vertexlids,values,P1Enum); break; 5264 5263 default: _error_("Not implemented yet"); … … 5271 5270 } 5272 5271 /*}}}*/ 5273 void FemModel::AverageTransient Outputx(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs){ /*{{{*/5272 void FemModel::AverageTransientInputx(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs){ /*{{{*/ 5274 5273 5275 5274 for(int i=0;i<numoutputs;i++){ … … 5595 5594 int vid,v1,v2,v3; 5596 5595 bool refine; 5597 5596 5598 5597 5599 5598 /*Fill variables*/ … … 5617 5616 if(!error_elements) _error_("error_elements is NULL!\n"); 5618 5617 if(groupthreshold<DBL_EPSILON) _error_("group threshold is too small!"); 5619 5618 5620 5619 /*Get mesh*/ 5621 5620 this->GetMesh(&index,&x,&y,&numberofvertices,&numberofelements); -
issm/trunk-jpl/src/c/classes/FemModel.h
r24490 r24565 174 174 void UpdateConstraintsExtrudeFromTopx(); 175 175 void UpdateConstraintsL2ProjectionEPLx(IssmDouble* pL2count); 176 void InitTransient Outputx(int* transientinput_enum,int numoutputs);177 void StackTransient Outputx(int* input_enum,int* transientinput_enum,IssmDouble hydrotime,int numoutputs);178 void AverageTransient Outputx(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs);176 void InitTransientInputx(int* transientinput_enum,int numoutputs); 177 void StackTransientInputx(int* input_enum,int* transientinput_enum,IssmDouble hydrotime,int numoutputs); 178 void AverageTransientInputx(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs); 179 179 void UpdateConstraintsx(void); 180 180 int UpdateVertexPositionsx(void); -
issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp
r24365 r24565 344 344 } 345 345 }/*}}}*/ 346 TriaInput2* Inputs2::GetTriaInput(int enum_in,IssmDouble start_time,IssmDouble end_time){/*{{{*/ 347 348 /*Get input id*/ 349 int id = EnumToIndex(enum_in); 350 351 /*Check that it has the right format*/ 352 Input2* input = this->inputs[id]; 353 if(!input) return NULL; 354 355 if(input->ObjectEnum()==TransientInput2Enum){ 356 return xDynamicCast<TransientInput2*>(input)->GetTriaInput(start_time,end_time); 357 } 358 else{ 359 _error_("Input "<<EnumToStringx(enum_in)<<" is not an TransientInput2"); 360 } 361 }/*}}}*/ 346 362 PentaInput2* Inputs2::GetPentaInput(int enum_in){/*{{{*/ 347 363 … … 683 699 684 700 /*This one only supports P0 and P1 because it assumes col=0*/ 685 _assert_(interpolation==P0Enum || interpolation==P1Enum); 701 _assert_(interpolation==P0Enum || interpolation==P1Enum); 686 702 687 703 /*Get input id*/ … … 802 818 803 819 /*This one only supports P0 and P1 because it assumes col=0*/ 804 _assert_(interpolation==P0Enum || interpolation==P1Enum); 820 _assert_(interpolation==P0Enum || interpolation==P1Enum); 805 821 806 822 /*Get input id*/ -
issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.h
r24360 r24565 17 17 #define NUMINPUTS InputsENDEnum - InputsSTARTEnum -1 18 18 19 /*!\brief Declaration of Inputs class. 19 /*!\brief Declaration of Inputs class. 20 20 * 21 21 * Declaration of Inputs class. Inputs are a static array of Input objects. 22 */ 22 */ 23 23 class Inputs2{ 24 24 … … 54 54 TriaInput2* GetTriaInput(int enum_type); 55 55 TriaInput2* GetTriaInput(int enum_type,IssmDouble time); 56 TriaInput2* GetTriaInput(int enum_in,IssmDouble start_time,IssmDouble end_time); 56 57 PentaInput2* GetPentaInput(int enum_type); 57 58 PentaInput2* GetPentaInput(int enum_type,IssmDouble time); -
issm/trunk-jpl/src/c/classes/Inputs2/TransientInput2.cpp
r24351 r24565 168 168 xMemCpy(this->timesteps,old_timesteps,this->numtimesteps-1); 169 169 xDelete(old_timesteps); 170 xDelete<Input2*>(old_inputs); 170 171 } 171 172 … … 243 244 /*Set current time input*/ 244 245 this->SetCurrentTimeInput(time); 246 _assert_(this->current_input); 247 248 /*Cast and return*/ 249 if(this->current_input->ObjectEnum()!=TriaInput2Enum){ 250 _error_("Cannot return a TriaInput2"); 251 } 252 return xDynamicCast<TriaInput2*>(this->current_input); 253 254 } 255 /*}}}*/ 256 TriaInput2* TransientInput2::GetTriaInput(IssmDouble start_time, IssmDouble end_time){/*{{{*/ 257 258 /*Set current time input*/ 259 this->SetAverageAsCurrentTimeInput(start_time,end_time); 245 260 _assert_(this->current_input); 246 261 … … 370 385 371 386 }/*}}}*/ 387 void TransientInput2::SetAverageAsCurrentTimeInput(IssmDouble start_time,IssmDouble end_time){/*{{{*/ 388 389 IssmDouble dt; 390 IssmDouble eps=1.0e-6; 391 IssmDouble dtsum=0; 392 int found,start_offset,end_offset; 393 int averaging_method = 0; 394 395 /*go through the timesteps, and grab offset for start and end*/ 396 found=binary_search(&start_offset,start_time-eps,this->timesteps,this->numtimesteps); 397 if(!found) _error_("Input not found (is TransientInput sorted ?)"); 398 found=binary_search(&end_offset,end_time+eps,this->timesteps,this->numtimesteps); 399 if(!found) _error_("Input not found (is TransientInput sorted ?)"); 400 401 int offset=start_offset; 402 if(this->current_input) delete this->current_input; 403 while(offset < end_offset){ 404 if (offset==-1){ 405 dt=this->timesteps[0]-start_time; 406 _assert_(start_time<this->timesteps[0]); 407 } 408 else if(offset==this->numtimesteps-1)dt=end_time-this->timesteps[offset]; 409 else if(offset==start_offset && this->timesteps[offset]<start_time) dt=this->timesteps[offset+1]-start_time; 410 else if(offset==end_offset && this->timesteps[offset]>end_time) dt=end_time-this->timesteps[offset]; 411 else dt=this->timesteps[offset+1]-this->timesteps[offset]; 412 _assert_(dt>0.); 413 414 Input2* stepinput=this->inputs[offset+1]; 415 416 switch(averaging_method){ 417 case 0: /*Arithmetic mean*/ 418 if(offset==start_offset){ 419 this->current_input = stepinput->copy(); 420 this->current_input->Scale(dt); 421 } 422 else{ 423 this->current_input->AXPY(stepinput,dt); 424 } 425 break; 426 case 1: /*Geometric mean*/ 427 _error_("Geometric not implemented yet"); 428 case 2: /*Harmonic mean*/ 429 _error_("Harmonic not implemented yet"); 430 default: 431 _error_("averaging method is not recognised"); 432 } 433 dtsum+=dt; 434 offset+=1; 435 } 436 /*Integration done, now normalize*/ 437 switch(averaging_method){ 438 case 0: //Arithmetic mean 439 this->current_input->Scale(1/(dtsum)); 440 break; 441 case 1: /*Geometric mean*/ 442 _error_("Geometric not implemented yet"); 443 case 2: /*Harmonic mean*/ 444 _error_("Harmonic not implemented yet"); 445 default: 446 _error_("averaging method is not recognised"); 447 } 448 }/*}}}*/ 372 449 IssmDouble TransientInput2::GetTimeByOffset(int offset){/*{{{*/ 373 450 if(offset<0) offset=0; -
issm/trunk-jpl/src/c/classes/Inputs2/TransientInput2.h
r24351 r24565 50 50 TriaInput2* GetTriaInput(); 51 51 TriaInput2* GetTriaInput(IssmDouble time); 52 TriaInput2* GetTriaInput(IssmDouble start_time,IssmDouble end_time); 52 53 TriaInput2* GetTriaInput(int offset); 53 54 PentaInput2* GetPentaInput(); … … 58 59 int GetTimeInputOffset(IssmDouble time); 59 60 void SetCurrentTimeInput(IssmDouble time); 61 void SetAverageAsCurrentTimeInput(IssmDouble start_time,IssmDouble end_time); 60 62 /*numerics:*/ 61 63 -
issm/trunk-jpl/src/c/cores/hydrology_core.cpp
r24335 r24565 97 97 averagedinput.assign(averagelist,averagelist+2); 98 98 } 99 femmodel->InitTransient Outputx(&transientinput[0],numaveragedinput);99 femmodel->InitTransientInputx(&transientinput[0],numaveragedinput); 100 100 while(substep<dtslices){ //loop on hydro dts 101 101 substep+=1; … … 114 114 solutionsequence_hydro_nonlinear(femmodel); 115 115 /*If we have a sub-timestep we store the substep inputs in a transient input here*/ 116 femmodel->StackTransient Outputx(&substepinput[0],&transientinput[0],subtime,numaveragedinput);116 femmodel->StackTransientInputx(&substepinput[0],&transientinput[0],subtime,numaveragedinput); 117 117 } 118 118 /*averaging the stack*/ 119 femmodel->AverageTransient Outputx(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput);119 femmodel->AverageTransientInputx(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput); 120 120 121 121 /*And reseting to global time*/ -
issm/trunk-jpl/src/c/cores/smb_core.cpp
r24507 r24565 68 68 femmodel->parameters->SetParam(subdt,TimesteppingTimeStepEnum); 69 69 70 femmodel->InitTransient Outputx(&transientinput[0],numaveragedinput);70 femmodel->InitTransientInputx(&transientinput[0],numaveragedinput); 71 71 while(substep<dtslices){ //loop on sub dts 72 72 substep+=1; … … 79 79 analysis->Core(femmodel); 80 80 /*If we have a sub-timestep we store the substep inputs in a transient input here*/ 81 femmodel->StackTransient Outputx(&substepinput[0],&transientinput[0],subtime,numaveragedinput);81 femmodel->StackTransientInputx(&substepinput[0],&transientinput[0],subtime,numaveragedinput); 82 82 delete analysis; 83 83 } 84 84 /*averaging the transient input*/ 85 femmodel->AverageTransient Outputx(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput);85 femmodel->AverageTransientInputx(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput); 86 86 /*and reset timesteping variables to original*/ 87 87 femmodel->parameters->SetParam(global_time,TimeEnum); -
issm/trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py
r24385 r24565 268 268 tensors = [field for field in fieldnames if field[-2:] in ['xx', 'yy', 'xy', 'zz', 'xz', 'yz']] 269 269 non_tensor = [field for field in fieldnames if field not in tensors] 270 vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z'] ]270 vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z'] and field[-4:] not in ['Flux']] 271 271 272 272 #check which field is a real result and print -
issm/trunk-jpl/src/m/plot/applyoptions.py
r24256 r24565 236 236 colorbarfontsize = options.getfieldvalue('colorbarfontsize') 237 237 cb.ax.tick_params(labelsize=colorbarfontsize) 238 # cb.set_ticks([0, -10])239 # cb.set_ticklabels([-10, 0, 10])240 238 if options.exist('colorbarticks'): 241 239 colorbarticks = options.getfieldvalue('colorbarticks') -
issm/trunk-jpl/src/m/plot/plot_contour.py
r24213 r24565 34 34 norm = options.getfieldvalue('colornorm') 35 35 colors = options.getfieldvalue('contourcolors', 'y') 36 linestyles = options.getfieldvalue('contourlinestyles', ' -')36 linestyles = options.getfieldvalue('contourlinestyles', '-') 37 37 linewidths = options.getfieldvalue('contourlinewidths', 1) 38 38 -
issm/trunk-jpl/src/m/plot/plot_unit.py
r24269 r24565 68 68 # }}} 69 69 # {{{ Get the colormap limits 70 dataspread = np.nanmax(data) - np.nanmin(data) 71 if dataspread != 0.: 72 limextent = np.abs(dataspread / np.nanmean(data)) 73 else: 74 limextent = 0. 70 75 if options.exist('clim'): 71 lims = options.getfieldvalue('clim', [np. amin(data), np.amax(data)])76 lims = options.getfieldvalue('clim', [np.nanmin(data), np.nanmax(data)]) 72 77 elif options.exist('caxis'): 73 lims = options.getfieldvalue('caxis', [np.amin(data), np.amax(data)]) 74 else: 75 if np.amin(data) == np.amax(data): 76 lims = [np.amin(data) * 0.9, np.amax(data) * 1.1] 77 else: 78 lims = [np.amin(data), np.amax(data)] 78 lims = options.getfieldvalue('caxis', [np.nanmin(data), np.nanmax(data)]) 79 else: 80 if np.nanmin(data) == np.nanmax(data): 81 lims = [np.nanmin(data) * 0.9, np.nanmax(data) * 1.1] 82 elif limextent < 1.0e-12: 83 lims = [np.nanmin(data) - 2 * dataspread, np.nanmax(data) + 2 * dataspread] 84 else: 85 lims = [np.nanmin(data), np.nanmax(data)] 79 86 # }}} 80 87 # {{{ Set the spread of the colormap (default is normal … … 103 110 #first deal with colormap 104 111 loccmap = plt.cm.ScalarMappable(cmap=cmap) 105 loccmap.set_array( [np.nanmin(data), np.nanmax(data)])106 loccmap.set_clim(vmin= np.nanmin(data), vmax=np.nanmax(data))112 loccmap.set_array(lims) 113 loccmap.set_clim(vmin=lims[0], vmax=lims[1]) 107 114 108 115 #dealing with prism sides … … 173 180 #first deal with the colormap 174 181 loccmap = plt.cm.ScalarMappable(cmap=cmap) 175 loccmap.set_array( [np.nanmin(data), np.nanmax(data)])176 loccmap.set_clim(vmin= np.nanmin(data), vmax=np.nanmax(data))182 loccmap.set_array(lims) 183 loccmap.set_clim(vmin=lims[0], vmax=lims[1]) 177 184 178 185 #deal with prism sides -
issm/trunk-jpl/test/NightlyRun/runme.py
r24256 r24565 144 144 if os.path.isfile(archive_file): 145 145 os.remove(archive_file) 146 147 148 149 150 151 152 153 154 155 156 157 146 for k, fieldname in enumerate(field_names): 147 field = np.array(field_values[k], dtype=float) 148 if len(field.shape) == 1: 149 if np.size(field): 150 field = field.reshape(np.size(field), 1) 151 else: 152 field = field.reshape(0, 0) 153 elif len(field.shape) == 0: 154 field = field.reshape(1, 1) 155 # Matlab uses base 1, so use base 1 in labels 156 archwrite(archive_file, archive_name + '_field' + str(k + 1), field) 157 print(("File {} saved. \n".format(os.path.join('..', 'Archives', archive_name + '.arch')))) 158 158 159 159 #ELSE: CHECK TEST
Note:
See TracChangeset
for help on using the changeset viewer.