Changeset 8823


Ignore:
Timestamp:
07/06/11 14:30:00 (14 years ago)
Author:
Eric.Larour
Message:

Split spcvelocity into spcvx, spcvy and spcvz

Location:
issm/trunk/src
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateConstraintsBalancevelocities.cpp

    r8330 r8823  
    2828
    2929        /*Fetch data: */
    30         IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
     30        IoModelFetchData(&iomodel->spcvx,NULL,NULL,iomodel_handle,"spcvx");
     31        IoModelFetchData(&iomodel->spcvy,NULL,NULL,iomodel_handle,"spcvy");
    3132
    3233        count=1; //matlab indexing
     
    3637                if((iomodel->my_vertices[i])){
    3738
    38                         if ((int)iomodel->spcvelocity[6*i+0] && (int)iomodel->spcvelocity[6*i+1]){ //spc if vx and vy are constrained
     39                        if (!isnan(iomodel->spcvx[i]) && !isnan(iomodel->spcvy[i])){ //spc if vx and vy are constrained
    3940
    4041                                /*This node needs to be spc'd: */
    4142                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
    42                                                                 pow( pow(*(iomodel->spcvelocity+6*i+4),2.0) + pow(*(iomodel->spcvelocity+6*i+5),2.0) ,0.5),BalancevelocitiesAnalysisEnum));
     43                                                                pow( pow(iomodel->spcvx[i],2.0) + pow(iomodel->spcvy[i],2.0) ,0.5),BalancevelocitiesAnalysisEnum));
    4344                                count++;
    4445                        }
     
    4748
    4849        /*Free data: */
    49         xfree((void**)&iomodel->spcvelocity);
     50        xfree((void**)&iomodel->spcvx);
     51        xfree((void**)&iomodel->spcvy);
    5052       
    5153        /*Assign output pointer: */
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r8330 r8823  
    3232       
    3333        /*Spcs: fetch data: */
    34         IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
     34        IoModelFetchData(&iomodel->spcvx,NULL,NULL,iomodel_handle,"spcvx");
     35        IoModelFetchData(&iomodel->spcvy,NULL,NULL,iomodel_handle,"spcvy");
     36        IoModelFetchData(&iomodel->spcvz,NULL,NULL,iomodel_handle,"spcvz");
    3537        IoModelFetchData(&iomodel->nodeonhutter,NULL,NULL,iomodel_handle,"nodeonhutter");
    3638        IoModelFetchData(&iomodel->nodeonmacayeal,NULL,NULL,iomodel_handle,"nodeonmacayeal");
     
    5658                                                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.
    5759                                                count++;
    58                                                 if ((int)iomodel->spcvelocity[6*i+0]){
    59                                                         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.
    60                                                         count++;
    61                                                 }
    62                                                 if ((int)iomodel->spcvelocity[6*i+1]){
    63                                                         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.
     60                                                if (!isnan(iomodel->spcvx[i])){
     61                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvx[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     62                                                        count++;
     63                                                }
     64                                                if (!isnan(iomodel->spcvy[i])){
     65                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,iomodel->spcvy[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    6466                                                        count++;
    6567                                                }
     
    7173                                                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.
    7274                                                count++;
    73                                                 if ((int)iomodel->spcvelocity[6*i+0]){
    74                                                         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.
    75                                                         count++;
    76                                                 }
    77                                                 if ((int)iomodel->spcvelocity[6*i+1]){
    78                                                         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.
     75                                                if (!isnan(iomodel->spcvx[i])){
     76                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     77                                                        count++;
     78                                                }
     79                                                if (!isnan(iomodel->spcvy[i])){
     80                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    7981                                                        count++;
    8082                                                }
     
    9395                                                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.
    9496                                                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.
     97                                                if (!isnan(iomodel->spcvx[i])){
     98                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     99                                                        count++;
     100                                                }
     101                                                if (!isnan(iomodel->spcvy[i])){
     102                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    101103                                                        count++;
    102104                                                }
     
    108110                                                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.
    109111                                                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.
     112                                                if (!isnan(iomodel->spcvx[i])){
     113                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvx[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     114                                                        count++;
     115                                                }
     116                                                if (!isnan(iomodel->spcvy[i])){
     117                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,iomodel->spcvy[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     118                                                        count++;
     119                                                }
     120                                                if (!isnan(iomodel->spcvz[i])){
     121                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,iomodel->spcvz[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    120122                                                        count++;
    121123                                                }
     
    133135                                                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.
    134136                                                count++;
    135                                                 if ((int)iomodel->spcvelocity[6*i+0]){
    136                                                         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.
    137                                                         count++;
    138                                                 }
    139                                                 if ((int)iomodel->spcvelocity[6*i+1]){
    140                                                         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.
     137                                                if (!isnan(iomodel->spcvx[i])){
     138                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     139                                                        count++;
     140                                                }
     141                                                if (!isnan(iomodel->spcvy[i])){
     142                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    141143                                                        count++;
    142144                                                }
     
    148150                                                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.
    149151                                                count++;
    150                                                 if ((int)iomodel->spcvelocity[6*i+0]){
    151                                                         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.
    152                                                         count++;
    153                                                 }
    154                                                 if ((int)iomodel->spcvelocity[6*i+1]){
    155                                                         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.
    156                                                         count++;
    157                                                 }
    158                                                 if ((int)iomodel->spcvelocity[6*i+2]){
    159                                                         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.
     152                                                if (!isnan(iomodel->spcvx[i])){
     153                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvx[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     154                                                        count++;
     155                                                }
     156                                                if (!isnan(iomodel->spcvy[i])){
     157                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,iomodel->spcvy[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     158                                                        count++;
     159                                                }
     160                                                if (!isnan(iomodel->spcvz[i])){
     161                                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,iomodel->spcvz[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    160162                                                        count++;
    161163                                                }
     
    165167                        /*Now add the regular spcs*/
    166168                        else{
    167                                 if ((int)iomodel->spcvelocity[6*i+0] || (int)iomodel->nodeonhutter[i]){
    168                                         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.
     169                                if (!isnan(iomodel->spcvx[i]) || (int)iomodel->nodeonhutter[i]){
     170                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    169171                                        count++;
    170172                                }
    171173                               
    172                                 if ((int)iomodel->spcvelocity[6*i+1] || (int)iomodel->nodeonhutter[i]){
    173                                         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 2 to vy
    174                                         count++;
    175                                 }
    176                                 if ((int)iomodel->spcvelocity[6*i+2] && ((int)iomodel->vertices_type[i]==StokesApproximationEnum ||  ((int)iomodel->vertices_type[i]==NoneApproximationEnum))){
    177                                         constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,*(iomodel->spcvelocity+6*i+5)/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     174                                if (!isnan(iomodel->spcvy[i]) || (int)iomodel->nodeonhutter[i]){
     175                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     176                                        count++;
     177                                }
     178                                if (!isnan(iomodel->spcvz[i]) && ((int)iomodel->vertices_type[i]==StokesApproximationEnum ||  ((int)iomodel->vertices_type[i]==NoneApproximationEnum))){
     179                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,iomodel->spcvz[i]/iomodel->yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    178180                                        count++;
    179181                                }
     
    187189         
    188190        /*Free data: */
    189         xfree((void**)&iomodel->spcvelocity);
     191        xfree((void**)&iomodel->spcvx);
     192        xfree((void**)&iomodel->spcvy);
     193        xfree((void**)&iomodel->spcvz);
    190194        xfree((void**)&iomodel->nodeonhutter);
    191195        xfree((void**)&iomodel->nodeonmacayeal);
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp

    r8330 r8823  
    107107        IoModelFetchData(&iomodel->nodeonstokes,NULL,NULL,iomodel_handle,"nodeonstokes");
    108108        IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
    109         IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
     109        IoModelFetchData(&iomodel->spcvx,NULL,NULL,iomodel_handle,"spcvx");
     110        IoModelFetchData(&iomodel->spcvy,NULL,NULL,iomodel_handle,"spcvy");
     111        IoModelFetchData(&iomodel->spcvz,NULL,NULL,iomodel_handle,"spcvz");
    110112        IoModelFetchData(&iomodel->vertices_type,NULL,NULL,iomodel_handle,"vertices_type");
    111113        CreateSingleNodeToElementConnectivity(iomodel);
     
    128130        xfree((void**)&iomodel->nodeonicesheet);
    129131        xfree((void**)&iomodel->elements);
    130         xfree((void**)&iomodel->spcvelocity);
     132        xfree((void**)&iomodel->spcvx);
     133        xfree((void**)&iomodel->spcvy);
     134        xfree((void**)&iomodel->spcvz);
    131135        xfree((void**)&iomodel->vertices_type);
    132136        xfree((void**)&iomodel->singlenodetoelementconnectivity);
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp

    r8330 r8823  
    3131
    3232        /*Fetch data: */
    33         IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
     33        IoModelFetchData(&iomodel->spcvx,NULL,NULL,iomodel_handle,"spcvx");
     34        IoModelFetchData(&iomodel->spcvy,NULL,NULL,iomodel_handle,"spcvy");
    3435        IoModelFetchData(&iomodel->nodeonhutter,NULL,NULL,iomodel_handle,"nodeonhutter");
    3536
     
    5051                        }
    5152                        else{
    52                                 if ((int)iomodel->spcvelocity[6*i+0]){
    53                                         constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,*(iomodel->spcvelocity+6*i+3)/iomodel->yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     53                                if (!isnan(iomodel->spcvx[i])){
     54                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->spcvx[i]/iomodel->yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    5455                                        count++;
    5556                                }
    5657
    57                                 if ((int)iomodel->spcvelocity[6*i+1]){
    58                                         constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,*(iomodel->spcvelocity+6*i+4)/iomodel->yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
     58                                if (!isnan(iomodel->spcvy[i])){
     59                                        constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->spcvy[i]/iomodel->yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
    5960                                        count++;
    6061                                }
     
    6566        /*Free data: */
    6667        xfree((void**)&iomodel->nodeonhutter);
    67         xfree((void**)&iomodel->spcvelocity);
     68        xfree((void**)&iomodel->spcvx);
     69        xfree((void**)&iomodel->spcvy);
    6870
    6971        cleanup_and_return:
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp

    r8330 r8823  
    3030
    3131        /*Fetch data: */
    32         IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
     32        IoModelFetchData(&iomodel->spcvz,NULL,NULL,iomodel_handle,"spcvz");
    3333        IoModelFetchData(&iomodel->nodeonstokes,NULL,NULL,iomodel_handle,"nodeonstokes");
    3434
     
    4646                                count++;
    4747                        }
    48                         else if ((int)iomodel->spcvelocity[6*i+2]){
     48                        else if (!isnan(iomodel->spcvz[i])){
    4949                                constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
    50                                                                 *(iomodel->spcvelocity+6*i+5)/iomodel->yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
     50                                                                iomodel->spcvz[i]/iomodel->yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
    5151                                count++;
    5252
     
    5656
    5757        /*Free data: */
    58         xfree((void**)&iomodel->spcvelocity);
     58        xfree((void**)&iomodel->spcvz);
    5959        xfree((void**)&iomodel->nodeonstokes);
    6060
  • issm/trunk/src/c/objects/IoModel.cpp

    r8800 r8823  
    7979        xfree((void**)&this->nodeonwater);
    8080        xfree((void**)&this->pressureload);
    81         xfree((void**)&this->spcvelocity);
     81        xfree((void**)&this->spcvx);
     82        xfree((void**)&this->spcvy);
     83        xfree((void**)&this->spcvz);
    8284        xfree((void**)&this->spcthickness);
    8385        xfree((void**)&this->spcwatercolumn);
     
    325327        this->numberofpressureloads=0;
    326328        this->pressureload=NULL;
    327         this-> spcvelocity=NULL;
     329        this-> spcvx=NULL;
     330        this-> spcvy=NULL;
     331        this-> spcvz=NULL;
    328332        this-> spctemperature=NULL;
    329333        this-> spcthickness=NULL;
  • issm/trunk/src/c/objects/IoModel.h

    r8800 r8823  
    101101                int     numberofpressureloads;
    102102                double* pressureload;
    103                 double* spcvelocity;
     103                double* spcvx;
     104                double* spcvy;
     105                double* spcvz;
    104106                double* spctemperature;
    105107                double* spcthickness;
  • issm/trunk/src/m/classes/version/7.6/model.m

    r8803 r8823  
    161161                 nodeonboundary=NaN;
    162162                 pressureload=NaN;
    163                  spcvelocity=NaN;
     163                 spcvx=NaN;
     164                 spcvy=NaN;
     165                 spcvz=NaN;
    164166                 spctemperature=NaN;
    165167                 spcthickness=NaN;
  • issm/trunk/src/m/classes/version/7.7/model.m

    r8803 r8823  
    161161                 nodeonboundary=NaN;
    162162                 pressureload=NaN;
    163                  spcvelocity=NaN;
     163                 spcvx=NaN;
     164                 spcvy=NaN;
     165                 spcvz=NaN;
    164166                 spctemperature=NaN;
    165167                 spcthickness=NaN;
  • issm/trunk/src/m/model/BasinConstrain.m

    r8298 r8823  
    4848
    4949%all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
    50 md.spcvelocity(nodenotondomain,1:2)=1;
    51 md.spcvelocity(nodenotondomain,4)=md.vx_obs(nodenotondomain);
    52 md.spcvelocity(nodenotondomain,5)=md.vy_obs(nodenotondomain);
     50md.spcvx(nodenotondomain)=md.vx_obs(nodenotondomain);
     51md.spcvy(nodenotondomain)=md.vy_obs(nodenotondomain);
    5352md.elementonwater(elementnotondomain)=1;
    5453
     
    5756numpos=unique(md.elements(pos,:));
    5857nodes=setdiff(1:1:md.numberofnodes,numpos);
    59 md.spcvelocity(nodes,1:2)=1;
    60 md.spcvelocity(nodes,4)=md.vx_obs(nodes);
    61 md.spcvelocity(nodes,5)=md.vy_obs(nodes);
     58md.spcvx(nodes)=md.vx_obs(nodes);
     59md.spcvy(nodes)=md.vy_obs(nodes);
    6260
    6361%make sure icefronts that are completely spc'd are taken out:
    64 free_segments=find(sum(md.spcvelocity(md.pressureload(:,1:2),1:2),2)~=2);
     62free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))))~=2);
    6563md.pressureload=md.pressureload(free_segments,:);
  • issm/trunk/src/m/model/BasinConstrain2.m

    r8298 r8823  
    4848
    4949%all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
    50 md.spcvelocity(nodenotondomain,1:2)=1;
    51 md.spcvelocity(nodenotondomain,4)=md.vx_obs(nodenotondomain);
    52 md.spcvelocity(nodenotondomain,5)=md.vy_obs(nodenotondomain);
     50md.spcvx(nodenotondomain)=md.vx_obs(nodenotondomain);
     51md.spcvy(nodenotondomain)=md.vy_obs(nodenotondomain);
    5352md.elementonwater(elementnotondomain)=1;
    5453
     
    5756numpos=unique(md.elements(pos,:));
    5857nodes=setdiff(1:1:md.numberofnodes,numpos);
    59 md.spcvelocity(nodes,1:2)=1;
    60 md.spcvelocity(nodes,4)=md.vx_obs(nodes);
    61 md.spcvelocity(nodes,5)=md.vy_obs(nodes);
     58md.spcvx(nodes)=md.vx_obs(nodes);
     59md.spcvy(nodes)=md.vy_obs(nodes);
    6260
    6361
    6462%make sure icefronts that are completely spc'd are taken out:
    65 free_segments=find(sum(md.spcvelocity(md.pressureload(:,1:2),1:2),2)~=2);
     63free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))))~=2);
    6664md.pressureload=md.pressureload(free_segments,:);
  • issm/trunk/src/m/model/BasinConstrainShelf.m

    r8298 r8823  
    4848
    4949%all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
    50 md.spcvelocity(nodenotondomain,1:2)=1;
    51 md.spcvelocity(nodenotondomain,4)=md.vx_obs(nodenotondomain);
    52 md.spcvelocity(nodenotondomain,5)=md.vy_obs(nodenotondomain);
     50md.spcvx(nodenotondomain)=md.vx_obs(nodenotondomain);
     51md.spcvy(nodenotondomain)=md.vy_obs(nodenotondomain);
    5352md.elementonwater(elementnotondomain)=1;
    5453
     
    5756numpos=unique(md.elements(pos,:));
    5857nodes=setdiff(1:1:md.numberofnodes,numpos);
    59 md.spcvelocity(nodes,1:2)=1;
    60 md.spcvelocity(nodes,4)=md.vx_obs(nodes);
    61 md.spcvelocity(nodes,5)=md.vy_obs(nodes);
     58md.spcvx(nodes)=md.vx_obs(nodes);
     59md.spcvy(nodes)=md.vy_obs(nodes);
    6260
    6361
    6462%make sure any node with NaN velocity is spc'd:
     63%we spc to the smoothed value, so that control methods don't go berserk trying to figure out what reaction force to apply for the spc to stand.
    6564pos=find(isnan(md.vel_obs_raw));
    66 md.spcvelocity(pos,1:2)=1;
    67 %we spc to the smoothed value, so that control methods don't go berserk trying to figure out what reaction force to apply for the spc to stand.
    68 md.spcvelocity(pos,4)=md.vx_obs(pos);
    69 md.spcvelocity(pos,5)=md.vy_obs(pos);
     65md.spcvx(pos)=md.vx_obs(pos);
     66md.spcvy(pos)=md.vy_obs(pos);
    7067
    7168%iceshelves: any node on icesheet is spc'd
    7269pos=find(md.nodeonicesheet);
    73 md.spcvelocity(pos,1:2)=1;
    74 md.spcvelocity(pos,4)=md.vx_obs(pos);
    75 md.spcvelocity(pos,5)=md.vy_obs(pos);
     70md.spcvx(pos)=md.vx_obs(pos);
     71md.spcvy(pos)=md.vy_obs(pos);
    7672
    7773%make sure icefronts that are completely spc'd are taken out:
    78 free_segments=find(sum(md.spcvelocity(md.pressureload(:,1:2),1:2),2)~=2);
     74free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))) )~=2);
    7975md.pressureload=md.pressureload(free_segments,:);
  • issm/trunk/src/m/model/collapse.m

    r8399 r8823  
    6161
    6262%boundary conditions
    63 md.spcvelocity=project2d(md,md.spcvelocity,md.numlayers);
     63md.spcvx=project2d(md,md.spcvx,md.numlayers);
     64md.spcvy=project2d(md,md.spcvy,md.numlayers);
     65md.spcvz=project2d(md,md.spcvz,md.numlayers);
    6466md.spcthickness=project2d(md,md.spcthickness,md.numlayers);
    6567md.spctemperature=project2d(md,md.spctemperature,md.numlayers);
  • issm/trunk/src/m/model/display/displaybc.m

    r8392 r8823  
    1919
    2020disp(sprintf('\n      diagnostic:'));
    21 fielddisplay(md,'spcvelocity','constraints flag list (first 3 columns) and values [m/yr] (last 3 columns)');
     21fielddisplay(md,'spcvx','x-axis velocity constraint (NaN means no constraint)');
     22fielddisplay(md,'spcvy','y-axis velocity constraint (NaN means no constraint)');
     23fielddisplay(md,'spcvz','z-axis velocity constraint (NaN means no constraint)');
    2224fielddisplay(md,'pressureload','segments on ice front list');
    2325
  • issm/trunk/src/m/model/display/displaydiagnostic.m

    r3201 r8823  
    1919
    2020disp(sprintf('\n      boundary conditions:'));
    21 fielddisplay(md,'spcvelocity','constraints flag list (first 3 columns) and values [m/yr] (last 3 columns)');
     21fielddisplay(md,'spcvx','x-axis velocity constraint (NaN means no constraint)');
     22fielddisplay(md,'spcvy','y-axis velocity constraint (NaN means no constraint)');
     23fielddisplay(md,'spcvz','z-axis velocity constraint (NaN means no constraint)');
    2224fielddisplay(md,'pressureload','segments on ice front list');
    2325
  • issm/trunk/src/m/model/extrude.m

    r8486 r8823  
    201201
    202202%boundary conditions
    203 md.spcvelocity=project3d(md,md.spcvelocity,'node');
     203md.spcvx=project3d(md,md.spcvx,'node');
     204md.spcvy=project3d(md,md.spcvy,'node');
     205md.spcvz=project3d(md,md.spcvz,'node');
    204206md.spctemperature=project3d(md,md.spctemperature,'node',md.numlayers);
    205207md.spcthickness=project3d(md,md.spcthickness,'node');
  • issm/trunk/src/m/model/ismodelselfconsistent.m

    r8731 r8823  
    9999%}}}
    100100%OTHER SIZES {{{1
    101 fields={'spcvelocity','diagnostic_ref'};
     101fields={'diagnostic_ref'};
    102102checksize(md,fields,[md.numberofnodes 6]);
    103103%}}}
     
    385385                        % {{{2
    386386                        %SINGULAR
    387                         if ~any(sum(md.spcvelocity(:,1:2),2)==2),
     387                        if ~any((~isnan(md.spcvx)+~isnan(md.spcvy))==2),
    388388                                message(['model not consistent: model ' md.name ' is not well posed (singular). You need at least one node with fixed velocity!'])
    389389                        end
     
    603603
    604604                        %SPC
    605                         if any(md.spcvelocity(find(md.nodeonboundary),[1:2])~=1),
    606                                 message(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcvelocity']);
     605                        if any((~isnan(md.spcvx(find(md.nodeonboundary))))~=1),
     606                                message(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcvx']);
     607                        end
     608
     609                        if any((~isnan(md.spcvy(find(md.nodeonboundary))))~=1),
     610                                message(['model not consistent: model ' md.name ' should have all the nodes on boundary constrained in field spcvy']);
    607611                        end
    608612                        %}}}
  • issm/trunk/src/m/model/marshall.m

    r8803 r8823  
    7777WriteData(fid,md.nodeonwater,'Mat','nodeonwater');
    7878
    79 WriteData(fid,md.spcvelocity,'Mat','spcvelocity');
     79WriteData(fid,md.spcvx,'Mat','spcvx');
     80WriteData(fid,md.spcvy,'Mat','spcvy');
     81WriteData(fid,md.spcvz,'Mat','spcvz');
    8082WriteData(fid,md.spctemperature,'Mat','spctemperature');
    8183WriteData(fid,md.spcthickness,'Mat','spcthickness');
  • issm/trunk/src/m/model/modelextract.m

    r8298 r8823  
    195195        nodestoflag1=intersect(orphans_node,pos_node);
    196196        nodestoflag2=Pnode(nodestoflag1);
    197         if ~isnan(md1.spcvelocity),
    198                 md2.spcvelocity(nodestoflag2,1:3)=1;
     197        if ~isnan(md1.spcvx) && ~isnan(md1.spcvy) && ~isnan(md1.spcvz),
    199198                if ~isnan(md1.vx_obs) & ~isnan(md1.vy_obs)
    200                         md2.spcvelocity(nodestoflag2,4)=md2.vx_obs(nodestoflag2);
    201                         md2.spcvelocity(nodestoflag2,5)=md2.vy_obs(nodestoflag2);
     199                        md2.spcvx(nodestoflag2)=md2.vx_obs(nodestoflag2);
     200                        md2.spcvy(nodestoflag2)=md2.vy_obs(nodestoflag2);
    202201                else
    203                         md2.spcvelocity(nodestoflag2,4:5)=zeros(length(nodestoflag2),2);
     202                        md2.spcvx(nodestoflag2)=NaN;
     203                        md2.spcvy(nodestoflag2)=NaN;
    204204                        disp(' ')
    205205                        disp('!! modelextract warning: spc values should be checked !!')
  • issm/trunk/src/m/model/plot/plot_BC.m

    r8361 r8823  
    77
    88%plot dirichlets
    9 h1=plot(md.x(find(md.spcvelocity(:,1))),md.y(find(md.spcvelocity(:,1))),'ro','MarkerSize',14,'MarkerFaceColor','r');
    10 h2=plot(md.x(find(md.spcvelocity(:,2))),md.y(find(md.spcvelocity(:,2))),'bo','MarkerSize',10,'MarkerFaceColor','b');
    11 h3=plot(md.x(find(md.spcvelocity(:,3))),md.y(find(md.spcvelocity(:,3))),'yo','MarkerSize',6 ,'MarkerFaceColor','y');
     9h1=plot(md.x(find(~isnan(md.spcvx))),md.y(find(~isnan(md.spcvx))),'ro','MarkerSize',14,'MarkerFaceColor','r');
     10h2=plot(md.x(find(~isnan(md.spcvy))),md.y(find(~isnan(md.spcvy))),'bo','MarkerSize',10,'MarkerFaceColor','b');
     11h3=plot(md.x(find(~isnan(md.spcvz))),md.y(find(~isnan(md.spcvz))),'yo','MarkerSize',6 ,'MarkerFaceColor','y');
    1212
    1313%update legend
  • issm/trunk/src/m/model/setelementstype.m

    r8298 r8823  
    9797        nodeonstokes=zeros(md.numberofnodes,1);
    9898        nodeonstokes(md.elements(find(stokesflag),:))=1;
    99         fullspcnodes=double(sum(md.spcvelocity(:,1:3),2)==3 | (nodeonpattyn & nodeonstokes));         %find all the nodes on the boundary of the domain without icefront
     99        fullspcnodes=double((~isnan(md.spcvx)+~isnan(md.spcvy)+~isnan(md.spcvz))==3 | (nodeonpattyn & nodeonstokes));         %find all the nodes on the boundary of the domain without icefront
    100100        fullspcelems=double(sum(fullspcnodes(md.elements),2)==6);         %find all the nodes on the boundary of the domain without icefront
    101101        stokesflag(find(fullspcelems))=0;
  • issm/trunk/src/m/utils/Analysis/resetspcs.m

    r8298 r8823  
    33        resolution=20000; x_ellsworth=-1.24*10^6; y_ellsworth=1*10^5;
    44        pos=find((md.x>(x_ellsworth-resolution)) & (md.x<(x_ellsworth+resolution)) & (md.y>(y_ellsworth-resolution)) & (md.y<(y_ellsworth+resolution)));
    5         md.spcvelocity=zeros(md.numberofnodes,6);
    6         md.spcvelocity(pos,1:3)=1;
     5        md.spcvx=NaN*ones(md.numberofnodes);
     6        md.spcvy=NaN*ones(md.numberofnodes);
     7        md.spcvz=NaN*ones(md.numberofnodes);
     8        md.spcvx(pos)=0;
     9        md.spcvy(pos)=0;
     10        md.spcvz(pos)=0;
    711
    812        %recompute with spcs reinitialized
  • issm/trunk/src/m/utils/BC/SetIceSheetBC.m

    r8399 r8823  
    99%node on Dirichlet
    1010pos=find(md.nodeonboundary);
    11 md.spcvelocity=zeros(md.numberofnodes,6);
    12 md.spcvelocity(pos,1:3)=1;
     11md.spcvx=NaN*ones(md.numberofnodes,1);
     12md.spcvy=NaN*ones(md.numberofnodes,1);
     13md.spcvz=NaN*ones(md.numberofnodes,1);
     14md.spcvx(pos)=0;
     15md.spcvy(pos)=0;
     16md.spcvz(pos)=0;
    1317md.diagnostic_ref=NaN*ones(md.numberofnodes,6);
    1418
     
    1620if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes)
    1721        disp('      boundary conditions for diagnostic model: spc set as observed velocities');
    18         md.spcvelocity(:,4:5)=[md.vx_obs md.vy_obs]; %vz is zero
     22        md.spcvx=md.vx_obs(pos);
     23        md.spcvy=md.vy_obs(pos);
    1924else
    2025        disp('      boundary conditions for diagnostic model: spc set as zero');
  • issm/trunk/src/m/utils/BC/SetIceShelfBC.m

    r8399 r8823  
    2828end
    2929pos=find(md.nodeonboundary & ~nodeonicefront);
    30 md.spcvelocity=zeros(md.numberofnodes,6);
    31 md.spcvelocity(pos,1:3)=1;
     30md.spcvx=NaN*ones(md.numberofnodes,1);
     31md.spcvy=NaN*ones(md.numberofnodes,1);
     32md.spcvz=NaN*ones(md.numberofnodes,1);
     33md.spcvx(pos)=0;
     34md.spcvy(pos)=0;
     35md.spcvz(pos)=0;
    3236md.diagnostic_ref=NaN*ones(md.numberofnodes,6);
    3337
     
    3539if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes)
    3640        disp('      boundary conditions for diagnostic model: spc set as observed velocities');
    37         md.spcvelocity(pos,4:5)=[md.vx_obs(pos) md.vy_obs(pos)]; %zeros for vz
     41        md.spcvx(pos)=md.vx_obs(pos);
     42        md.spcvy(pos)=md.vy_obs(pos);
    3843else
    3944        disp('      boundary conditions for diagnostic model: spc set as zero');
  • issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m

    r8399 r8823  
    3535        warning('SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually')
    3636end
    37 md.spcvelocity=zeros(md.numberofnodes,6);
    38 md.spcvelocity(pos,1:3)=1;
     37md.spcvx=NaN*ones(md.numberofnodes,1);
     38md.spcvy=NaN*ones(md.numberofnodes,1);
     39md.spcvz=NaN*ones(md.numberofnodes,1);
     40md.spcvx(pos)=0;
     41md.spcvy(pos)=0;
     42md.spcvz(pos)=0;
    3943md.diagnostic_ref=NaN*ones(md.numberofnodes,6);
    4044
     
    4246if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes)
    4347        disp('      boundary conditions for diagnostic model: spc set as observed velocities');
    44         md.spcvelocity(pos,4:5)=[md.vx_obs(pos) md.vy_obs(pos)]; %zeros for vz
     48        md.spcvx(pos)=md.vx_obs(pos);
     49        md.spcvy(pos)=md.vy_obs(pos);
    4550else
    4651        disp('      boundary conditions for diagnostic model: spc set as zero');
Note: See TracChangeset for help on using the changeset viewer.