Changeset 17744


Ignore:
Timestamp:
04/15/14 17:57:22 (11 years ago)
Author:
cborstad
Message:

BUG: handle D vs. Dbar depending on domaintype

File:
1 edited

Legend:

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

    r17700 r17744  
    4747void DamageEvolutionAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
    4848
     49        int finiteelement = P1Enum;
     50
    4951        /*Update elements: */
    5052        int counter=0;
     
    5254                if(iomodel->my_elements[i]){
    5355                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    54                         element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
     56                        element->Update(i,iomodel,analysis_counter,analysis_type,finiteelement);
    5557                        counter++;
    5658                }
     
    7375void DamageEvolutionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
    7476
     77        int finiteelement = P1Enum;
     78
    7579        if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
    76         ::CreateNodes(nodes,iomodel,DamageEvolutionAnalysisEnum,P1Enum);
     80        ::CreateNodes(nodes,iomodel,DamageEvolutionAnalysisEnum,finiteelement);
    7781        iomodel->DeleteData(1,MeshVertexonbaseEnum);
    7882}/*}}}*/
    7983void DamageEvolutionAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
    8084
    81         int stabilization,finitelelement;
     85        int stabilization;
     86        int finiteelement = P1Enum;
    8287        iomodel->Constant(&stabilization,DamageStabilizationEnum);
    8388
    84         IoModelToConstraintsx(constraints,iomodel,DamageSpcdamageEnum,DamageEvolutionAnalysisEnum,P1Enum);
     89        IoModelToConstraintsx(constraints,iomodel,DamageSpcdamageEnum,DamageEvolutionAnalysisEnum,finiteelement);
    8590
    8691}/*}}}*/
     
    411416
    412417        /*Get all inputs and parameters*/
    413         basalelement->AddBasalInput(DamageDEnum,newdamage,P1Enum);
     418        if(domaintype==Domain2DhorizontalEnum){
     419                basalelement->AddInput(DamageDbarEnum,newdamage,element->GetElementType());
     420        }
     421        else{
     422                basalelement->AddBasalInput(DamageDEnum,newdamage,element->GetElementType());
     423        }
    414424
    415425        /*Free ressources:*/
     
    431441        IssmDouble J2s,Chi,Psi,PosPsi,NegPsi;
    432442        IssmDouble damage,tau_xx,tau_xy,tau_yy;
    433         int equivstress;
     443        int equivstress,domaintype;
    434444
    435445        /*Fetch number of vertices and allocate output*/
     
    443453        element->FindParam(&healing,DamageHealingEnum);
    444454        element->FindParam(&stress_threshold,DamageStressThresholdEnum);
     455        element->FindParam(&domaintype,DomainTypeEnum);
    445456
    446457        /*Compute stress tensor: */
     
    451462        Input* tau_xy_input  = element->GetInput(DeviatoricStressxyEnum);     _assert_(tau_xy_input);
    452463        Input* tau_yy_input  = element->GetInput(DeviatoricStressyyEnum);     _assert_(tau_yy_input);
    453         Input* damage_input    = element->GetInput(DamageDEnum); _assert_(damage_input);
     464        Input* damage_input = NULL;
     465        if(domaintype==Domain2DhorizontalEnum){
     466                damage_input = element->GetInput(DamageDbarEnum);       _assert_(damage_input);
     467        }
     468        else{
     469                damage_input = element->GetInput(DamageDEnum);   _assert_(damage_input);
     470        }
     471
     472
    454473
    455474        /*retrieve the desired type of equivalent stress*/
Note: See TracChangeset for help on using the changeset viewer.