Changeset 19117


Ignore:
Timestamp:
02/18/15 11:19:14 (10 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added IoModelToDynamicConstraintsx for PDD module

Location:
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp

    r18170 r19117  
    2929        xDelete<IssmDouble>(spcdata);
    3030}
    31 
    32 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){
     31void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof){
     32
     33        /*intermediary: */
     34        int         code,vector_layout;
     35        IssmDouble *spcdata = NULL;
     36        int         M,N;
     37
     38        /*First of, find the record for the enum, and get code  of data type: */
     39        iomodel->SetFilePointerToData(&code, &vector_layout,vector_enum);
     40        if(code!=7)_error_("expecting a IssmDouble vector for constraints with enum " << EnumToStringx(vector_enum));
     41        if(vector_layout!=1)_error_("expecting a nodal vector for constraints with enum " << EnumToStringx(vector_enum));
     42
     43        /*Fetch vector:*/
     44        iomodel->FetchData(&spcdata,&M,&N,vector_enum);
     45
     46        /*Call IoModelToConstraintsx*/
     47        IoModelToDynamicConstraintsx(constraints,iomodel,spcdata,M,N,analysis_type,finite_element,dof);
     48
     49        /*Clean up*/
     50        xDelete<IssmDouble>(spcdata);
     51}
     52
     53void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
    3354
    3455        /*intermediary: */
     
    537558        xDelete<bool>(my_faces);
    538559        xDelete<bool>(boundaryedge);
    539 }
     560}/*}}}*/
     561void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
     562
     563        /*intermediary: */
     564        int i,count;
     565
     566        switch(finite_element){
     567                case P1Enum:
     568                        /*Nothing else to do*/
     569                        break;
     570                default:
     571                        _error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
     572        }
     573
     574        count=0;
     575        if(M==iomodel->numberofvertices){
     576                switch(finite_element){
     577                        case P1Enum:
     578                                for(i=0;i<iomodel->numberofvertices;i++){
     579                                        if((iomodel->my_vertices[i])){
     580                                                if (!xIsNan<IssmDouble>(spcdata[i])){
     581                                                        constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,analysis_type));
     582                                                        count++;
     583                                                }
     584                                        }
     585                                }
     586                                break;
     587                        default:
     588                                _error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
     589                }
     590        }
     591        else{
     592                _error_("Size of spc field not supported");
     593        }
     594}/*}}}*/
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h

    r17600 r19117  
    1010void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=0);
    1111void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
     12void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=0);
     13void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
    1214
    1315#endif  /* _IOMODELTOELEMENTINPUTX_H */
Note: See TracChangeset for help on using the changeset viewer.