Changeset 5596


Ignore:
Timestamp:
08/26/10 13:22:42 (15 years ago)
Author:
seroussi
Message:

some modifications for future coupling

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

Legend:

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

    r5585 r5596  
    8989        NoneApproximationEnum,
    9090        PattynApproximationEnum,
     91        PattynStokesApproximationEnum,
    9192        StokesApproximationEnum,
    9293        /*}}}*/
  • issm/trunk/src/c/EnumDefinitions/EnumToString.cpp

    r5585 r5596  
    7979                case NoneApproximationEnum : return "NoneApproximation";
    8080                case PattynApproximationEnum : return "PattynApproximation";
     81                case PattynStokesApproximationEnum : return "PattynStokesApproximation";
    8182                case StokesApproximationEnum : return "StokesApproximation";
    8283                case ObjectEnum : return "Object";
  • issm/trunk/src/c/EnumDefinitions/StringToEnum.cpp

    r5585 r5596  
    7777        else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
    7878        else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum;
     79        else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum;
    7980        else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum;
    8081        else if (strcmp(name,"Object")==0) return ObjectEnum;
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r5579 r5596  
    8383                                        else ISSMERROR("if vertices_type is MacAyealPattyn, you shoud have gridonpattyn or gridonmacayeal");
    8484                        }
     85                        /*Also add spcs of coupling: zero at the border pattyn/stokes for the appropriate dofs*/
     86                        else if ((int)iomodel->vertices_type[i]==PattynStokesApproximationEnum){
     87                                /*If grionmacayeal, spc pattyn dofs: 3 & 4*/
     88                                        if ((int)iomodel->gridonpattyn[i]){
     89                                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     90                                                count++;
     91                                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     92                                                count++;
     93                                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     94                                                count++;
     95                                                if ((int)iomodel->spcvelocity[6*i+0]){
     96                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,*(iomodel->spcvelocity+6*i+3)/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     97                                                        count++;
     98                                                }
     99                                                if ((int)iomodel->spcvelocity[6*i+1]){
     100                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,*(iomodel->spcvelocity+6*i+4)/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     101                                                        count++;
     102                                                }
     103
     104                                        }
     105                                        else if ((int)iomodel->gridonstokes[i]){
     106                                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     107                                                count++;
     108                                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     109                                                count++;
     110                                                if ((int)iomodel->spcvelocity[6*i+0]){
     111                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,*(iomodel->spcvelocity+6*i+3)/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     112                                                        count++;
     113                                                }
     114                                                if ((int)iomodel->spcvelocity[6*i+1]){
     115                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,*(iomodel->spcvelocity+6*i+4)/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     116                                                        count++;
     117                                                }
     118                                                if ((int)iomodel->spcvelocity[6*i+2]){
     119                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,*(iomodel->spcvelocity+6*i+5)/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     120                                                        count++;
     121                                                }
     122                                        }
     123                                        else ISSMERROR("if vertices_type is PattynStokes, you shoud have gridonpattyn or gridonstokes");
     124                        }
    85125                        /*Now add the regular spcs*/
    86126                        else{
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp

    r5579 r5596  
    7676                        count++;
    7777                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum));
     78                        count++;
     79                }
     80                else if ((int)*(iomodel->elements_type+element)==(PattynStokesApproximationEnum)){
     81                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum));
     82                        count++;
     83                        loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,StokesIceFrontEnum,DiagnosticHorizAnalysisEnum));
    7884                        count++;
    7985                }
  • issm/trunk/src/c/modules/ModelProcessorx/DistributeNumDofs.cpp

    r5579 r5596  
    4141                        doftype[3]=PattynApproximationEnum;
    4242                }
     43                else if (vertices_type[0]==PattynStokesApproximationEnum){
     44                        numdofs=6;
     45                        doftype=(int*)xmalloc(numdofs*sizeof(int));
     46                        doftype[0]=PattynApproximationEnum;
     47                        doftype[1]=PattynApproximationEnum;
     48                        doftype[2]=StokesApproximationEnum;
     49                        doftype[3]=StokesApproximationEnum;
     50                        doftype[4]=StokesApproximationEnum;
     51                        doftype[5]=StokesApproximationEnum;
     52                }
    4353                else ISSMERROR("Approximationtype %i (%s) not implemented yet for DiagnosticHoriz",(int)*vertices_type,EnumToString((int)*vertices_type));
    4454        }
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r5590 r5596  
    795795                        CreateKMatrixCouplingMacAyealPattyn( Kgg);
    796796                }
     797                else if(approximation==PattynStokesApproximationEnum){
     798                        CreateKMatrixDiagnosticPattyn( Kgg);
     799                        CreateKMatrixDiagnosticStokes( Kgg);
     800                        //CreateKMatrixCouplingPattynStokes( Kgg);
     801                }
    797802                else ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
    798803        }
     
    876881                        CreatePVectorDiagnosticMacAyeal( pg);
    877882                        CreatePVectorDiagnosticPattyn( pg);
     883                }
     884                else if(approximation==PattynStokesApproximationEnum){
     885                        CreatePVectorDiagnosticPattyn( pg);
     886                        CreatePVectorDiagnosticStokes( pg);
     887                        //CreatePVectorDiagnosticPattynStokes( pg);
    878888                }
    879889                else ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
     
    30063016        /* Get node coordinates and dof list: */
    30073017        GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
    3008         GetDofList(&doflist);
     3018        GetDofList(&doflist,StokesApproximationEnum);
    30093019
    30103020        /* Get gaussian points and weights. Penta is an extrusion of a Tria, we therefore
     
    41824192        /* Get node coordinates and dof list: */
    41834193        GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
    4184         GetDofList(&doflist);
     4194        GetDofList(&doflist,StokesApproximationEnum);
    41854195
    41864196        /* Get gaussian points and weights. Penta is an extrusion of a Tria, we therefore
  • issm/trunk/src/c/objects/Loads/Icefront.cpp

    r5585 r5596  
    705705
    706706        /* Get dof list and node coordinates: */
    707         GetDofList(&doflist);
     707        GetDofList(&doflist,StokesApproximationEnum);
    708708        GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
    709709       
  • issm/trunk/src/c/objects/Loads/Penpair.cpp

    r5579 r5596  
    231231                                switch(approximation1){
    232232                                        case StokesApproximationEnum: PenaltyCreateKMatrixDiagnosticStokes(Kgg,kmax); break;
     233                                        case NoneApproximationEnum: PenaltyCreateKMatrixDiagnosticStokes(Kgg,kmax); break;
     234                                        default: ISSMERROR("not supported yet");
     235                                }
     236                                break;
     237                        case NoneApproximationEnum:
     238                                switch(approximation1){
     239                                        case StokesApproximationEnum: PenaltyCreateKMatrixDiagnosticStokes(Kgg,kmax); break;
     240                                        case NoneApproximationEnum: PenaltyCreateKMatrixDiagnosticStokes(Kgg,kmax); break;
    233241                                        default: ISSMERROR("not supported yet");
    234242                                }
     
    351359        Ke[5][5]=kmax*pow((double)10.0,penalty_offset);
    352360       
    353 //      Ke[2][2]=kmax*pow((double)10.0,penalty_offset);
    354 //      Ke[2][6]=-kmax*pow((double)10.0,penalty_offset);
    355 //      Ke[6][2]=-kmax*pow((double)10.0,penalty_offset);
    356 //      Ke[6][6]=kmax*pow((double)10.0,penalty_offset);
    357 
    358 //      Ke[3][3]=kmax*pow((double)10.0,penalty_offset);
    359 //      Ke[3][7]=-kmax*pow((double)10.0,penalty_offset);
    360 //      Ke[7][3]=-kmax*pow((double)10.0,penalty_offset);
    361 //      Ke[7][7]=kmax*pow((double)10.0,penalty_offset);
     361        Ke[2][2]=kmax*pow((double)10.0,penalty_offset);
     362        Ke[2][6]=-kmax*pow((double)10.0,penalty_offset);
     363        Ke[6][2]=-kmax*pow((double)10.0,penalty_offset);
     364        Ke[6][6]=kmax*pow((double)10.0,penalty_offset);
     365
     366        Ke[3][3]=kmax*pow((double)10.0,penalty_offset);
     367        Ke[3][7]=-kmax*pow((double)10.0,penalty_offset);
     368        Ke[7][3]=-kmax*pow((double)10.0,penalty_offset);
     369        Ke[7][7]=kmax*pow((double)10.0,penalty_offset);
    362370
    363371        /*Add Ke to global matrix Kgg: */
Note: See TracChangeset for help on using the changeset viewer.