Changeset 28102
- Timestamp:
- 02/15/24 13:53:15 (13 months ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp ¶
r27856 r28102 39 39 iomodel->FindConstant(&smb_model,"md.smb.model"); 40 40 iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing"); 41 InputUpdateFromConstantx(inputs,elements,false,SmbIsInitializedEnum); 41 42 switch(smb_model){ 42 43 case SMBforcingEnum: … … 67 68 iomodel->FetchDataToInput(inputs,elements,"md.smb.Tz",SmbTzEnum); 68 69 iomodel->FetchDataToInput(inputs,elements,"md.smb.Vz",SmbVzEnum); 69 InputUpdateFromConstantx(inputs,elements,false,SmbIsInitializedEnum);70 70 iomodel->FetchDataToInput(inputs,elements,"md.smb.Dzini",SmbDziniEnum); 71 71 iomodel->FetchDataToInput(inputs,elements,"md.smb.Dini",SmbDiniEnum); -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.cpp ¶
r28067 r28102 3409 3409 3410 3410 int i,vertexlids[MAXVERTICES]; 3411 bool isinitialized=false; 3411 3412 IssmDouble* agd=xNew<IssmDouble>(NUM_VERTICES); // surface mass balance 3412 IssmDouble* melt=xNew<IssmDouble>(NUM_VERTICES); // surface m ass balance3413 IssmDouble* accu=xNew<IssmDouble>(NUM_VERTICES); // surface mass balance3413 IssmDouble* melt=xNew<IssmDouble>(NUM_VERTICES); // surface melt 3414 IssmDouble* accu=xNew<IssmDouble>(NUM_VERTICES); // surface precipitation 3414 3415 IssmDouble* monthlytemperatures=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR); 3415 3416 IssmDouble* monthlyprec=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR); … … 3422 3423 IssmDouble pddsnowfac = -1.; 3423 3424 IssmDouble pddicefac = -1.; 3425 IssmDouble accsumM = 0.0; 3426 IssmDouble accsumSMB = 0.0; 3427 IssmDouble accsumP = 0.0; 3428 IssmDouble avgM = 0.0; 3429 IssmDouble avgSMB = 0.0; 3430 IssmDouble avgP = 0.0; 3424 3431 IssmDouble rho_water,rho_ice,desfac,rlaps,rlapslgm; 3425 3432 IssmDouble PfacTime,TdiffTime,sealevTime; … … 3428 3435 /*Get vertex Lids for later*/ 3429 3436 this->GetVerticesLidList(&vertexlids[0]); 3437 3438 /*Check for smb initialization*/ 3439 this->GetInputValue(&isinitialized,SmbIsInitializedEnum); 3430 3440 3431 3441 /*Get material parameters :*/ … … 3438 3448 rlapslgm=this->FindParam(SmbRlapslgmEnum); 3439 3449 3440 IssmDouble time,yts,time_yr ;3450 IssmDouble time,yts,time_yr,dt; 3441 3451 this->parameters->FindParam(&time,TimeEnum); 3442 3452 this->parameters->FindParam(&yts,ConstantsYtsEnum); 3453 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); /*transient core time step*/ 3443 3454 time_yr=floor(time/yts)*yts; 3444 3455 … … 3490 3501 GetInputListOnVertices(&s0t[0],SmbS0tEnum); 3491 3502 3503 //Get accumulated input 3504 Input *accsumM_input = NULL; 3505 Input *accsumP_input = NULL; 3506 Input *accsumSMB_input = NULL; 3507 if (isinitialized){ 3508 accsumM_input = this->GetInput(SmbAccumulatedMeltEnum); _assert_(accsumM_input); 3509 accsumP_input = this->GetInput(SmbAccumulatedPrecipitationEnum); _assert_(accsumP_input); 3510 accsumSMB_input = this->GetInput(SmbAccumulatedMassBalanceEnum); _assert_(accsumSMB_input); 3511 } 3512 3492 3513 /*measure the surface mass balance*/ 3493 3514 for(int iv = 0; iv<NUM_VERTICES; iv++){ … … 3507 3528 yearlytemperatures[iv]=yearlytemperatures[iv]+(monthlytemperatures[iv*12+month]+273.15)*mavg; // Has to be in Kelvin 3508 3529 } 3509 } 3530 3531 } 3532 3533 /*Save accumulated inputs {{{*/ 3534 Input *avgM_input = NULL; 3535 Input *avgP_input = NULL; 3536 Input *avgSMB_input = NULL; 3537 3538 if (isinitialized){ 3539 accsumM_input->GetInputAverage(&accsumM); 3540 accsumP_input->GetInputAverage(&accsumP); 3541 accsumSMB_input->GetInputAverage(&accsumSMB); 3542 } 3543 3544 /*}}}*/ 3510 3545 3511 3546 /*Update inputs*/ … … 3583 3618 break; 3584 3619 default: _error_("Not implemented yet"); 3620 } 3621 3622 avgM_input = this->GetInput(SmbMeltEnum); _assert_(avgM_input); 3623 avgP_input = this->GetInput(SmbAccumulationEnum); _assert_(avgP_input); 3624 avgSMB_input = this->GetInput(SmbMassBalanceEnum); _assert_(avgSMB_input); 3625 3626 avgM_input->GetInputAverage(&avgM); 3627 avgP_input->GetInputAverage(&avgP); 3628 avgSMB_input->GetInputAverage(&avgSMB); 3629 3630 this->SetElementInput(SmbAccumulatedMassBalanceEnum,accsumSMB+avgSMB*dt); 3631 this->SetElementInput(SmbAccumulatedPrecipitationEnum,accsumP+avgP*dt); 3632 this->SetElementInput(SmbAccumulatedMeltEnum,accsumM+avgM*dt); 3633 if (!isinitialized){ 3634 /*Flag the initialization:*/ 3635 this->SetBoolInput(this->inputs,SmbIsInitializedEnum,true); 3585 3636 } 3586 3637
Note:
See TracChangeset
for help on using the changeset viewer.