source: issm/oecreview/Archive/16554-17801/ISSM-17393-17394.diff@ 17802

Last change on this file since 17802 was 17802, checked in by Mathieu Morlighem, 11 years ago

Added archives

File size: 7.5 KB
  • ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

     
    66#include "../solutionsequences/solutionsequences.h"
    77#include "../cores/cores.h"
    88
    9 //#define FSANALYTICAL 101
     9//#define FSANALYTICAL 4
    1010
    1111/*Model processing*/
    1212int  StressbalanceAnalysis::DofsPerNode(int** pdoftype,int meshtype,int approximation){/*{{{*/
  • ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

     
    532532        StressTensoryyEnum,
    533533        StressTensoryzEnum,
    534534        StressTensorzzEnum,
     535        DivergenceEnum,
    535536        GiaCrossSectionShapeEnum,
    536537        GiadWdtEnum,
    537538        GiaWEnum,
  • ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

     
    521521                case StressTensoryyEnum : return "StressTensoryy";
    522522                case StressTensoryzEnum : return "StressTensoryz";
    523523                case StressTensorzzEnum : return "StressTensorzz";
     524                case DivergenceEnum : return "Divergence";
    524525                case GiaCrossSectionShapeEnum : return "GiaCrossSectionShape";
    525526                case GiadWdtEnum : return "GiadWdt";
    526527                case GiaWEnum : return "GiaW";
  • ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

     
    533533              else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
    534534              else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
    535535              else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
     536              else if (strcmp(name,"Divergence")==0) return DivergenceEnum;
    536537              else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
    537538              else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
    538539              else if (strcmp(name,"GiaW")==0) return GiaWEnum;
     
    627628              else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
    628629              else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
    629630              else if (strcmp(name,"Regular")==0) return RegularEnum;
    630               else if (strcmp(name,"Scaled")==0) return ScaledEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"Separate")==0) return SeparateEnum;
     634              if (strcmp(name,"Scaled")==0) return ScaledEnum;
     635              else if (strcmp(name,"Separate")==0) return SeparateEnum;
    635636              else if (strcmp(name,"Sset")==0) return SsetEnum;
    636637              else if (strcmp(name,"Verbose")==0) return VerboseEnum;
    637638              else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
  • ../trunk-jpl/src/c/classes/FemModel.cpp

     
    431431
    432432        switch (response_descriptor_enum){
    433433
     434                case DivergenceEnum:               this->Divergencex(responses); break;
    434435                case IceVolumeEnum:                this->IceVolumex(responses); break;
    435436                case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(responses); break;
    436437                case MinVelEnum:                   this->MinVelx(responses); break;
     
    503504                        switch(output_enum){
    504505
    505506                                /*Scalar output*/
     507                                case DivergenceEnum:               this->Divergencex(&double_result);               break;
    506508                                case IceVolumeEnum:                this->IceVolumex(&double_result);                break;
    507509                                case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(&double_result); break;
    508510                                case MinVelEnum:                   this->MinVelx(&double_result);                   break;
     
    10411043        *pSmb=total_smb;
    10421044
    10431045}/*}}}*/
     1046void FemModel::Divergencex(IssmDouble* pdiv){/*{{{*/
     1047
     1048        IssmDouble local_divergence=0;
     1049        IssmDouble total_divergence;
     1050
     1051        for(int i=0;i<this->elements->Size();i++){
     1052                Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
     1053                local_divergence+=element->Divergence();
     1054        }
     1055        ISSM_MPI_Reduce(&local_divergence,&total_divergence,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
     1056        ISSM_MPI_Bcast(&total_divergence,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     1057
     1058        /*Assign output pointers: */
     1059        *pdiv=total_divergence;
     1060
     1061}/*}}}*/
    10441062void FemModel::IceVolumex(IssmDouble* pV){/*{{{*/
    10451063
    10461064        IssmDouble local_ice_volume = 0;
  • ../trunk-jpl/src/c/classes/Elements/Element.h

     
    5555                /* bool       AnyActive(void); */
    5656                void       CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes,int numnodes,int* cs_array);
    5757                void       DeleteMaterials(void);
     58                IssmDouble Divergence(void);
    5859                void       FindParam(bool* pvalue,int paramenum);
    5960                void       FindParam(int* pvalue,int paramenum);
    6061                void       FindParam(IssmDouble* pvalue,int paramenum);
  • ../trunk-jpl/src/c/classes/Elements/Element.cpp

     
    129129void Element::DeleteMaterials(void){/*{{{*/
    130130        delete this->material;
    131131}/*}}}*/
     132IssmDouble Element::Divergence(void){/*{{{*/
     133        /*Compute element divergence*/
     134
     135        /*Intermediaries*/
     136        IssmDouble Jdet;
     137        IssmDouble divergence=0.;
     138        IssmDouble dvx[3],dvy[3],dvz[3];
     139        IssmDouble *xyz_list = NULL;
     140
     141        /*Get inputs and parameters*/
     142        Input* vx_input        = this->GetInput(VxEnum); _assert_(vx_input);
     143        Input* vy_input        = this->GetInput(VyEnum); _assert_(vy_input);
     144        Input* vz_input        = this->GetInput(VzEnum); _assert_(vz_input);
     145        this->GetVerticesCoordinates(&xyz_list);
     146
     147        Gauss* gauss=this->NewGaussBase(5);
     148        for(int ig=gauss->begin();ig<gauss->end();ig++){
     149                gauss->GaussPoint(ig);
     150                this->JacobianDeterminant(&Jdet,xyz_list,gauss);
     151
     152                /*Get strain rate assuming that epsilon has been allocated*/
     153                vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
     154                vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
     155                vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
     156
     157                divergence += (dvx[0]+dvy[1]+dvz[2])*gauss->weight*Jdet;
     158        }
     159
     160        /*Clean up and return*/
     161        delete gauss;
     162        return divergence;
     163}/*}}}*/
    132164void Element::FindParam(bool* pvalue,int paramenum){/*{{{*/
    133165        this->parameters->FindParam(pvalue,paramenum);
    134166}/*}}}*/
  • ../trunk-jpl/src/c/classes/FemModel.h

     
    7171                void MinVyx(IssmDouble* presponse);
    7272                void MinVzx(IssmDouble* presponse);
    7373                void TotalSmbx(IssmDouble* pSmb);
     74                void Divergencex(IssmDouble* pdiv);
    7475                void IceVolumex(IssmDouble* pV);
    7576                void IceVolumeAboveFloatationx(IssmDouble* pV);
    7677                void ElementResponsex(IssmDouble* presponse,int response_enum);
Note: See TracBrowser for help on using the repository browser.