Changeset 26076
- Timestamp:
- 03/11/21 10:39:53 (4 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/OceantransportAnalysis.cpp
r26047 r26076 56 56 57 57 /*Initialize sea level cumulated sea level loads :*/ 58 InputUpdateFromConstantx(inputs,elements,0.,AccumulatedDeltaBottomPressureEnum);59 InputUpdateFromConstantx(inputs,elements,0.,OldAccumulatedDeltaBottomPressureEnum);58 iomodel->ConstantToInput(inputs,elements,0.,AccumulatedDeltaBottomPressureEnum,P1Enum); 59 iomodel->ConstantToInput(inputs,elements,0.,OldAccumulatedDeltaBottomPressureEnum,P1Enum); 60 60 iomodel->FetchDataToInput(inputs,elements,"md.initialization.bottompressure",BottomPressureEnum); 61 61 … … 158 158 int i,domaintype; 159 159 int* doflist=NULL; 160 int isgrd=0;161 int frequency,count;162 160 163 161 /*Fetch number of nodes and dof for this finite element*/ … … 198 196 element->AddInput(StrEnum,&strmean,P0Enum); 199 197 200 /*Now, we need to do some "processing"*/201 IssmDouble* oldbp = xNew<IssmDouble>(numnodes);202 IssmDouble* cumdeltabp = xNew<IssmDouble>(numnodes);203 IssmDouble* oldcumdeltabp = xNew<IssmDouble>(numnodes);204 IssmDouble* deltabp = xNew<IssmDouble>(numnodes);205 IssmDouble* olddsl = xNew<IssmDouble>(numnodes);206 IssmDouble* deltadsl = xNew<IssmDouble>(numnodes);207 IssmDouble oldstr,deltastr;208 209 /*Deal with bottom pressure first. First get previous bottom pressure:*/210 element->GetInputListOnVertices(&oldbp[0],BottomPressureOldEnum);211 element->FindParam(&isgrd,SolidearthSettingsGRDEnum);212 if(isgrd)element->GetInputListOnVertices(&cumdeltabp[0],AccumulatedDeltaBottomPressureEnum);213 214 /*What is the delta bottompressure forcing the sea-level change core: cumulated over time, hence the +=:*/215 if(isgrd){216 for(int i=0;i<numnodes;i++){217 cumdeltabp[i] += bp[i]-oldbp[i];218 }219 }220 221 /*Add input to the element: */222 if(isgrd){223 element->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);224 element->FindParam(&count,SealevelchangeRunCountEnum);225 element->AddInput(AccumulatedDeltaBottomPressureEnum,cumdeltabp,P1Enum);226 if(count==frequency){227 element->GetInputListOnVertices(&oldcumdeltabp[0],OldAccumulatedDeltaBottomPressureEnum);228 element->AddInput(OldAccumulatedDeltaBottomPressureEnum,cumdeltabp,P1Enum);229 for(int i=0;i<numnodes;i++)deltabp[i]=cumdeltabp[i]-oldcumdeltabp[i];230 element->AddInput(DeltaBottomPressureEnum,deltabp,P1Enum);231 232 }233 }234 235 /*Deal with dsl and str:*/236 element->GetInputListOnVertices(&olddsl[0],DslOldEnum);237 element->GetInputValue(&oldstr,StrOldEnum);238 for (int i=0;i<numnodes;i++) deltadsl[i]=dsl[i]-olddsl[i];239 deltastr=strmean-oldstr;240 element->AddInput(DeltaDslEnum,deltadsl,P1Enum);241 element->AddInput(DeltaStrEnum,&deltastr,P0Enum);242 243 198 /*Free ressources:*/ 244 199 xDelete<IssmDouble>(bp); 245 xDelete<IssmDouble>(deltabp); 246 xDelete<IssmDouble>(cumdeltabp); 247 xDelete<IssmDouble>(oldcumdeltabp); 248 xDelete<IssmDouble>(oldbp); 200 xDelete<IssmDouble>(str); 249 201 xDelete<IssmDouble>(dsl); 250 xDelete<IssmDouble>(olddsl);251 xDelete<IssmDouble>(deltadsl);252 202 xDelete<IssmDouble>(values); 253 203 xDelete<int>(doflist); -
issm/trunk-jpl/src/c/cores/oceantransport_core.cpp
r26047 r26076 10 10 #include "../solutionsequences/solutionsequences.h" 11 11 12 void oceantransport_core(FemModel* femmodel){ 12 void SolidEarthOceanUpdates(FemModel* femmodel); 13 void oceantransport_core(FemModel* femmodel){ /*{{{*/ 13 14 14 15 /*Start profiler*/ … … 50 51 /*profiler*/ 51 52 femmodel->profiler->Stop(OCEANTRANSPORTCORE); 52 } 53 } /*}}}*/ 54 void SolidEarthOceanUpdates(FemModel* femmodel){ /*{{{*/ 55 56 int isgrd; 57 int grdmodel; 58 IssmDouble time; 59 int frequency,count; 60 61 /*retrieve parameters:*/ 62 femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum); 63 femmodel->parameters->FindParam(&grdmodel,GrdModelEnum); 64 femmodel->parameters->FindParam(&time,TimeEnum); 65 femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum); 66 femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum); 67 68 /*early return?:*/ 69 if(!isgrd)return; 70 71 /* From old and new bottom pressures, create delta bottom pressure, delta dsl and delta str. 72 * Accumulate delta bottom pressure: */ 73 femmodel->inputs->AXPY(-1, BottomPressureOldEnum,BottomPressureEnum,DeltaBottomPressureEnum); 74 femmodel->inputs->AXPY(+1, DeltaBottomPressureEnum,AccumulatedDeltaBottomPressureEnum,DummyEnum); 75 femmodel->inputs->DuplicateInput(DummyEnum,AccumulatedDeltaBottomPressureEnum); 76 77 femmodel->inputs->AXPY(-1, DslOldEnum,DslEnum,DeltaDslEnum); 78 femmodel->inputs->AXPY(-1, StrOldEnum,StrEnum,DeltaStrEnum); 79 80 /* Compute total bottom pressure change between two sea-level solver time steps, ie. every frequency*dt. */ 81 if(count==frequency){ 82 femmodel->inputs->AXPY(-1, OldAccumulatedDeltaBottomPressureEnum,AccumulatedDeltaBottomPressureEnum,DeltaBottomPressureEnum); 83 femmodel->inputs->DuplicateInput(AccumulatedDeltaBottomPressureEnum,OldAccumulatedDeltaBottomPressureEnum); 84 } 85 return; 86 }/*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.