Changeset 3830


Ignore:
Timestamp:
05/18/10 17:17:18 (15 years ago)
Author:
Eric.Larour
Message:

New GetParameterAverage routine in inputs

Location:
issm/trunk/src/c
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/DataSet/DataSet.h

    r3821 r3830  
    137137                void GetParameterValue(double* pvalue,double* gauss,int enum_type);
    138138                void GetParameterValue(double* pvalue,double* gauss,int enum_type,double defaultvalue);
     139                void GetParameterAverage(double* pvalue, int enum_type);
    139140               
    140141                void GetParameterValues(double* values,double* gauss_pointers, int numgauss,int enum_type);
  • issm/trunk/src/c/DataSet/Inputs.cpp

    r3808 r3830  
    187187}
    188188/*}}}*/
     189/*FUNCTION Inputs::GetParameterAverage(double* pvalue,int enum-type){{{1*/
     190void Inputs::GetParameterAverage(double* pvalue,int enum_type){
     191
     192        vector<Object*>::iterator object;
     193        Input* input=NULL;
     194
     195        /*Go through inputs and check whether any input with the same name is already in: */
     196        for ( object=objects.begin() ; object < objects.end(); object++ ){
     197
     198                input=(Input*)(*object);
     199                if (input->EnumType()==enum_type)break;
     200        }
     201
     202        if (!input){
     203                /*we could not find an input with the correct enum type. No defaults values were provided,
     204                 * error out: */
     205                ISSMERROR("%s%i"," could not find input with enum type ",enum_type);
     206        }
     207
     208        /*Ok, we have an input if we made it here, request the input to return the value: */
     209        input->GetParameterAverage(pvalue);
     210
     211}
     212/*}}}*/
    189213/*FUNCTION Inputs::GetParameterValue(bool* pvalue,int enum-type){{{1*/
    190214void Inputs::GetParameterValue(bool* pvalue,int enum_type){
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r3828 r3830  
    733733        double  gauss_weight;
    734734        double  gauss_l1l2l3[3];
    735         double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
    736735
    737736        /* matrices: */
     
    750749
    751750        /*input parameters for structural analysis (diagnostic): */
    752         double  vx_list[numgrids];
    753         double  vy_list[numgrids];
    754751        double  dvx[2];
    755752        double  dvy[2];
     
    771768        GetDofList(&doflist[0],&numberofdofspernode);
    772769
    773         /*Recover velocity: */
    774         inputs->GetParameterValues(&vx_list[0],&gaussgrids[0][0],3,VxAverageEnum);
    775         inputs->GetParameterValues(&vy_list[0],&gaussgrids[0][0],3,VyAverageEnum);
    776 
    777770        /*retrieve some parameters: */
    778771        this->parameters->FindParam(&artdiff,ArtDiffEnum);
     
    785778
    786779                //Build K matrix (artificial diffusivity matrix)
    787                 v_gauss[0]=ONETHIRD*(vx_list[0]+vx_list[1]+vx_list[2]);
    788                 v_gauss[1]=ONETHIRD*(vy_list[0]+vy_list[1]+vy_list[2]);
     780                inputs->GetParameterAverage(&v_gauss[0],VxAverageEnum);
     781                inputs->GetParameterAverage(&v_gauss[1],VyAverageEnum);
    789782
    790783                K[0][0]=pow(Jdettria,(double).5)/2.0*fabs(v_gauss[0]);
     
    811804
    812805                //Get vx, vy and their derivatives at gauss point
    813                 this->GetParameterValue(&vx, &vx_list[0],gauss_l1l2l3);
    814                 this->GetParameterValue(&vy, &vy_list[0],gauss_l1l2l3);
    815 
    816                 this->GetParameterDerivativeValue(&dvx[0], &vx_list[0],&xyz_list[0][0], gauss_l1l2l3);
    817                 this->GetParameterDerivativeValue(&dvy[0], &vy_list[0],&xyz_list[0][0], gauss_l1l2l3);
     806                inputs->GetParameterValue(&vx, &gauss_l1l2l3[0],VxAverageEnum);
     807                inputs->GetParameterValue(&vy, &gauss_l1l2l3[0],VyAverageEnum);
     808
     809                inputs->GetParameterDerivativeValue(&dvx[0],&xyz_list[0][0],&gauss_l1l2l3[0],VxAverageEnum);
     810                inputs->GetParameterDerivativeValue(&dvy[0],&xyz_list[0][0],&gauss_l1l2l3[0],VyAverageEnum);
    818811
    819812                dvxdx=dvx[0];
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp

    r3808 r3830  
    164164}
    165165/*}}}*/
     166/*FUNCTION BeamVertexInput::GetParameterAverage(double* pvalue){{{1*/
     167void BeamVertexInput::GetParameterAverage(double* pvalue){
     168        *pvalue=1./2.*(values[0]+values[1]);
     169}
     170/*}}}*/
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.h

    r3808 r3830  
    5858                void GetParameterValue(double* pvalue,double* gauss,double defaultvalue);
    5959               
     60                void GetParameterAverage(double* pvalue);
     61       
    6062                void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    6163       
  • issm/trunk/src/c/objects/Inputs/BoolInput.h

    r3808 r3830  
    5858                void GetParameterValue(double* pvalue,double* gauss,double defaultvalue);
    5959               
     60                void GetParameterAverage(double* pvalue){ISSMERROR("not implemented yet");};
     61               
    6062                void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    6163       
  • issm/trunk/src/c/objects/Inputs/DoubleInput.h

    r3808 r3830  
    5858                void GetParameterValue(double* pvalue,double* gauss,double defaultvalue);
    5959               
     60                void GetParameterAverage(double* pvalue){ISSMERROR("not implemented yet");};
     61               
    6062                void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    6163       
  • issm/trunk/src/c/objects/Inputs/Input.h

    r3808 r3830  
    3030                virtual void GetParameterValue(double* pvalue,double* gauss)=0;
    3131                virtual void GetParameterValue(double* pvalue,double* gauss,double defaultvalue)=0;
     32
     33                virtual void GetParameterAverage(double* pvalue)=0;
    3234               
    3335                virtual void GetParameterValues(double* values,double* gauss_pointers, int numgauss)=0;
  • issm/trunk/src/c/objects/Inputs/IntInput.h

    r3808 r3830  
    5858                void GetParameterValue(double* pvalue,double* gauss,double defaultvalue);
    5959               
     60                void GetParameterAverage(double* pvalue){ISSMERROR("not implemented yet");};
     61               
    6062                void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    6163       
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r3808 r3830  
    168168}
    169169/*}}}*/
     170/*FUNCTION PentaVertexInput::GetParameterAverage(double* pvalue){{{1*/
     171void PentaVertexInput::GetParameterAverage(double* pvalue){
     172        *pvalue=1./6.*(values[0]+values[1]+values[2]+values[3]+values[4]+values[5]);
     173}
     174/*}}}*/
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.h

    r3808 r3830  
    5757                void GetParameterValue(double* pvalue,double* gauss,double defaultvalue);
    5858               
     59                void GetParameterAverage(double* pvalue);
     60               
    5961                void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    6062       
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp

    r3808 r3830  
    163163}
    164164/*}}}*/
     165/*FUNCTION SingVertexInput::GetParameterAverage(double* pvalue){{{1*/
     166void SingVertexInput::GetParameterAverage(double* pvalue){
     167        *pvalue=value;
     168}
     169/*}}}*/
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.h

    r3808 r3830  
    5757                void GetParameterValue(double* pvalue,double* gauss,double defaultvalue);
    5858               
     59                void GetParameterAverage(double* pvalue);
     60               
    5961                void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
    6062       
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp

    r3828 r3830  
    239239void TriaVertexInput::ChangeEnum(int newenumtype){
    240240        this->enum_type=newenumtype;
     241}
     242/*}}}*/
     243/*FUNCTION TriaVertexInput::GetParameterAverage(double* pvalue){{{1*/
     244void TriaVertexInput::GetParameterAverage(double* pvalue){
     245        *pvalue=1./3.*(values[0]+values[1]+values[2]);
    241246}
    242247/*}}}*/
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.h

    r3828 r3830  
    5959                void GetParameterValue(double* pvalue,double* gauss,double defaultvalue){ISSMERROR("not implemented yet");}
    6060                void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
     61               
     62                void GetParameterAverage(double* pvalue);
    6163       
    6264                void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
Note: See TracChangeset for help on using the changeset viewer.