Changeset 17444


Ignore:
Timestamp:
03/17/14 08:58:00 (11 years ago)
Author:
bdef
Message:

NEW:Adding moulin Input capability to the Hydro Model

Location:
issm/trunk-jpl/src/c
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp

    r17422 r17444  
    124124        iomodel->FetchData(1,MeshVertexonbedEnum);
    125125
    126         //create penalties for nodes: no node can have a temperature over the melting point
     126        //create penalties for nodes: no node can have water above the max
    127127        CreateSingleNodeToElementConnectivity(iomodel);
    128128        for(int i=0;i<iomodel->numberofvertices;i++){
    129                 if (iomodel->meshtype==Mesh3DEnum){
     129                if (iomodel->meshtype!=Mesh3DEnum){
    130130                        /*keep only this partition's nodes:*/
    131131                        if(iomodel->my_vertices[i]){
     
    280280        bool       active_element,isefficientlayer;
    281281        IssmDouble dt,scalar;
    282         IssmDouble moulin_load,water_head;
     282        IssmDouble water_head;
    283283        IssmDouble water_load,transfer;
    284284        IssmDouble Jdet;
     
    307307        Input* bed_input         = basalelement->GetInput(BedEnum);
    308308        Input* water_input       = basalelement->GetInput(BasalforcingsMeltingRateEnum);    _assert_(water_input);
    309         Input* moulin_input      = basalelement->GetInput(HydrologydcBasalMoulinInputEnum); _assert_(moulin_input);
    310309        if(dt!= 0.){old_wh_input = basalelement->GetInput(SedimentHeadOldEnum);             _assert_(old_wh_input);}
    311310
     
    327326                /*Loading term*/
    328327                water_input->GetInputValue(&water_load,gauss);
    329                 moulin_input->GetInputValue(&moulin_load,gauss);
    330        
     328
    331329                scalar = Jdet*gauss->weight*(water_load);
    332                 scalar = scalar + Jdet* moulin_load;
    333330                if(dt!=0.) scalar = scalar*dt;
    334331                for(int i=0;i<numnodes;i++){
  • issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp

    r17391 r17444  
    181181void  Pengrid::CreatePVector(Vector<IssmDouble>* pf){
    182182
    183         /*No loads applied, do nothing: */
    184         return;
     183        ElementVector* pe=NULL;
     184        int analysis_type;
     185        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     186
     187        switch(analysis_type){
     188               
     189        case HydrologyDCInefficientAnalysisEnum:
     190                pe = CreatePVectorHydrologyDCInefficient();
     191                break;
     192        default:
     193                /*No loads applied, do nothing: */
     194                return;
     195        }
     196        if(pe){
     197                pe->AddToGlobal(pf);
     198                delete pe;
     199        }
    185200
    186201}
     
    793808}
    794809/*}}}*/
     810/*FUNCTION Pengrid::CreatePVectorHydrologyDCInefficient {{{*/
     811ElementVector* Pengrid::CreatePVectorHydrologyDCInefficient(void){
     812
     813        IssmDouble moulin_load,dt;
     814
     815        /*Initialize Element matrix*/
     816        ElementVector* pe=new ElementVector(&node,1,this->parameters);
     817
     818        this->element->GetInputValue(&moulin_load,node,HydrologydcBasalMoulinInputEnum);
     819        parameters->FindParam(&dt,TimesteppingTimeStepEnum);
     820
     821        if(dt!=0.0) pe->values[0]=moulin_load*dt;
     822
     823        /*Clean up and return*/
     824        return pe;
     825 }
     826/*}}}*/
    795827/*FUNCTION Pengrid::ResetConstraint {{{*/
    796828void  Pengrid::ResetConstraint(void){
  • issm/trunk-jpl/src/c/classes/Loads/Pengrid.h

    r17268 r17444  
    9494                void           ConstraintActivateHydrologyDCInefficient(int* punstable);
    9595                void  ConstraintActivate(int* punstable);
     96                ElementVector* CreatePVectorHydrologyDCInefficient(void);
    9697                void  ResetConstraint(void);
    9798                /*}}}*/
  • issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp

    r17230 r17444  
    7676                element->ReduceMatrices(Ke,pe);
    7777                if(Ke) Ke->AddToGlobal(Kff,Kfs);
    78                 if(pe) pe->AddToGlobal(pf);
     78                if(pe){
     79                        pe->AddToGlobal(pf);
     80                        /* printf("-------------------USUAL \n"); */
     81                        /* pf->Echo(); */
     82                }
    7983                delete Ke;
    8084                delete pe;
     
    8791                        load->CreateKMatrix(Kff,Kfs);
    8892                        load->CreatePVector(pf);
     93                        /* printf("-------------------LOADING \n"); */
     94                        /* pf->Echo(); */
    8995                }
    9096        }
     
    97103                                load->PenaltyCreateKMatrix(Kff,Kfs,kmax);
    98104                                load->PenaltyCreatePVector(pf,kmax);
     105                                /* printf("-------------------PENALTY \n"); */
     106                                /* pf->Echo(); */
    99107                        }
    100108                }
Note: See TracChangeset for help on using the changeset viewer.