Changeset 7352


Ignore:
Timestamp:
02/04/11 21:21:00 (14 years ago)
Author:
Eric.Larour
Message:

Added melting_rate_corecction, deactivated by default. Only activatable in prognostic

Location:
issm/trunk/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r7311 r7352  
    6565        parameters->AddObject(new DoubleParam(HeatCapacityEnum,iomodel->heatcapacity));
    6666        parameters->AddObject(new IntParam(ArtDiffEnum,iomodel->artdiff));
     67        parameters->AddObject(new IntParam(MeltingRateCorrectionApplyEnum,iomodel->melting_rate_correction_apply));
    6768        parameters->AddObject(new DoubleParam(PenaltyMeltingEnum,iomodel->penalty_melting));
    6869        parameters->AddObject(new IntParam(MinThermalConstraintsEnum,iomodel->min_thermal_constraints));
  • issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp

    r4441 r7352  
    2929        IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
    3030        IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
     31        if(iomodel->melting_rate_correction_apply)IoModelFetchData(&iomodel->melting_rate_correction,NULL,NULL,iomodel_handle,"melting_rate_correction");
    3132        IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
    3233        IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
     
    6061        xfree((void**)&iomodel->accumulation_rate);
    6162        xfree((void**)&iomodel->melting_rate);
     63        xfree((void**)&iomodel->melting_rate_correction);
    6264        xfree((void**)&iomodel->vx);
    6365        xfree((void**)&iomodel->vy);
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r7333 r7352  
    23212321        int        i,j,ig;
    23222322        double     Jdettria,dt;
    2323         double     accumulation_g,melting_g,thickness_g;
     2323        double     accumulation_g,melting_g,melting_correction_g,thickness_g;
    23242324        double     xyz_list[NUMVERTICES][3];
    23252325        double     L[NUMVERTICES];
     
    23352335        Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);
    23362336        Input* melting_input=inputs->GetInput(MeltingRateEnum);           _assert_(melting_input);
     2337        Input* melting_correction_input=inputs->GetInput(MeltingRateCorrectionEnum);           
    23372338        Input* thickness_input=inputs->GetInput(ThicknessEnum);           _assert_(thickness_input);
    23382339
     2340        /*Initialize melting_correction_g to 0, do not forget!:*/
    23392341        /* Start  looping on the number of gaussian points: */
    23402342        gauss=new GaussTria(2);
     
    23492351                melting_input->GetParameterValue(&melting_g,gauss);
    23502352                thickness_input->GetParameterValue(&thickness_g,gauss);
    2351 
    2352                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(accumulation_g-melting_g))*L[i];
     2353                if(melting_correction_input) melting_correction_input->GetParameterValue(&melting_correction_g,gauss);
     2354
     2355                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(accumulation_g-melting_g-melting_correction_g))*L[i];
    23532356        }
    23542357
     
    36783681                for(i=0;i<3;i++)nodeinputs[i]=iomodel->melting_rate[tria_vertex_ids[i]-1]/iomodel->yts;
    36793682                this->inputs->AddInput(new TriaVertexInput(MeltingRateEnum,nodeinputs));
     3683        }
     3684        if (iomodel->melting_rate_correction) {
     3685                for(i=0;i<3;i++)nodeinputs[i]=iomodel->melting_rate_correction[tria_vertex_ids[i]-1]/iomodel->yts;
     3686                this->inputs->AddInput(new TriaVertexInput(MeltingRateCorrectionEnum,nodeinputs));
    36803687        }
    36813688        if (iomodel->accumulation_rate) {
  • issm/trunk/src/c/objects/IoModel.cpp

    r7327 r7352  
    8383        xfree((void**)&this->geothermalflux);
    8484        xfree((void**)&this->melting_rate);
     85        xfree((void**)&this->melting_rate_correction);
    8586        xfree((void**)&this->accumulation_rate);
    8687        xfree((void**)&this->dhdt);
     
    205206        IoModelFetchData(&this->mixed_layer_capacity,iomodel_handle,"mixed_layer_capacity");
    206207        IoModelFetchData(&this->thermal_exchange_velocity,iomodel_handle,"thermal_exchange_velocity");
     208        IoModelFetchData(&this->melting_rate_correction_apply,iomodel_handle,"melting_rate_correction_apply");
    207209       
    208210        /*qmu: */
     
    268270        this->temperature=NULL;
    269271        this->melting_rate=NULL;
     272        this->melting_rate_correction=NULL;
     273        this->melting_rate_correction_apply=0;
    270274        this->geothermalflux=NULL;
    271275        this->elementonbed=NULL;
  • issm/trunk/src/c/objects/IoModel.h

    r7105 r7352  
    180180                /*basal: */
    181181                double*  melting_rate;
     182                double*  melting_rate_correction;
     183                int      melting_rate_correction_apply;
    182184                double*  accumulation_rate;
    183185                double*  dhdt;
  • issm/trunk/src/m/classes/model.m

    r7325 r7352  
    251251                 temperature=NaN; %temperature solution vector
    252252                 melting_rate=NaN;
     253                 melting_rate_correction=NaN;
     254                 melting_rate_correction_apply=NaN;
    253255                 pressure=NaN;
    254256
     
    480482                         md.latentheat=3.34*10^5;
    481483
     484                         %melting rate correction:
     485                         md.melting_rate_correction_apply=0; %do not apply
     486
    482487                         %ice thermal conductivity lamda (W/m/K)
    483488                         md.thermalconductivity=2.4;
  • issm/trunk/src/m/model/marshall.m

    r7318 r7352  
    9090WriteData(fid,md.accumulation_rate,'Mat','accumulation_rate');
    9191WriteData(fid,md.melting_rate,'Mat','melting_rate');
     92WriteData(fid,md.melting_rate_correction_apply,'Integer','melting_rate_correction_apply');
     93if md.melting_rate_correction_apply,
     94        WriteData(fid,md.melting_rate_correction,'Mat','melting_rate_correction');
     95end
    9296WriteData(fid,md.dhdt,'Mat','dhdt');
    9397
Note: See TracChangeset for help on using the changeset viewer.