Changeset 8823
- Timestamp:
- 07/06/11 14:30:00 (14 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateConstraintsBalancevelocities.cpp
r8330 r8823 28 28 29 29 /*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"); 31 32 32 33 count=1; //matlab indexing … … 36 37 if((iomodel->my_vertices[i])){ 37 38 38 if ( (int)iomodel->spcvelocity[6*i+0] && (int)iomodel->spcvelocity[6*i+1]){ //spc if vx and vy are constrained39 if (!isnan(iomodel->spcvx[i]) && !isnan(iomodel->spcvy[i])){ //spc if vx and vy are constrained 39 40 40 41 /*This node needs to be spc'd: */ 41 42 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)); 43 44 count++; 44 45 } … … 47 48 48 49 /*Free data: */ 49 xfree((void**)&iomodel->spcvelocity); 50 xfree((void**)&iomodel->spcvx); 51 xfree((void**)&iomodel->spcvy); 50 52 51 53 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
r8330 r8823 32 32 33 33 /*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"); 35 37 IoModelFetchData(&iomodel->nodeonhutter,NULL,NULL,iomodel_handle,"nodeonhutter"); 36 38 IoModelFetchData(&iomodel->nodeonmacayeal,NULL,NULL,iomodel_handle,"nodeonmacayeal"); … … 56 58 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. 57 59 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. 64 66 count++; 65 67 } … … 71 73 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. 72 74 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. 79 81 count++; 80 82 } … … 93 95 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 96 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. 101 103 count++; 102 104 } … … 108 110 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 111 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. 120 122 count++; 121 123 } … … 133 135 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. 134 136 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. 141 143 count++; 142 144 } … … 148 150 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. 149 151 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. 160 162 count++; 161 163 } … … 165 167 /*Now add the regular spcs*/ 166 168 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. 169 171 count++; 170 172 } 171 173 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 vy174 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 vy174 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 178 180 count++; 179 181 } … … 187 189 188 190 /*Free data: */ 189 xfree((void**)&iomodel->spcvelocity); 191 xfree((void**)&iomodel->spcvx); 192 xfree((void**)&iomodel->spcvy); 193 xfree((void**)&iomodel->spcvz); 190 194 xfree((void**)&iomodel->nodeonhutter); 191 195 xfree((void**)&iomodel->nodeonmacayeal); -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
r8330 r8823 107 107 IoModelFetchData(&iomodel->nodeonstokes,NULL,NULL,iomodel_handle,"nodeonstokes"); 108 108 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"); 110 112 IoModelFetchData(&iomodel->vertices_type,NULL,NULL,iomodel_handle,"vertices_type"); 111 113 CreateSingleNodeToElementConnectivity(iomodel); … … 128 130 xfree((void**)&iomodel->nodeonicesheet); 129 131 xfree((void**)&iomodel->elements); 130 xfree((void**)&iomodel->spcvelocity); 132 xfree((void**)&iomodel->spcvx); 133 xfree((void**)&iomodel->spcvy); 134 xfree((void**)&iomodel->spcvz); 131 135 xfree((void**)&iomodel->vertices_type); 132 136 xfree((void**)&iomodel->singlenodetoelementconnectivity); -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
r8330 r8823 31 31 32 32 /*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"); 34 35 IoModelFetchData(&iomodel->nodeonhutter,NULL,NULL,iomodel_handle,"nodeonhutter"); 35 36 … … 50 51 } 51 52 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. 54 55 count++; 55 56 } 56 57 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 vy58 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 59 60 count++; 60 61 } … … 65 66 /*Free data: */ 66 67 xfree((void**)&iomodel->nodeonhutter); 67 xfree((void**)&iomodel->spcvelocity); 68 xfree((void**)&iomodel->spcvx); 69 xfree((void**)&iomodel->spcvy); 68 70 69 71 cleanup_and_return: -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
r8330 r8823 30 30 31 31 /*Fetch data: */ 32 IoModelFetchData(&iomodel->spcv elocity,NULL,NULL,iomodel_handle,"spcvelocity");32 IoModelFetchData(&iomodel->spcvz,NULL,NULL,iomodel_handle,"spcvz"); 33 33 IoModelFetchData(&iomodel->nodeonstokes,NULL,NULL,iomodel_handle,"nodeonstokes"); 34 34 … … 46 46 count++; 47 47 } 48 else if ( (int)iomodel->spcvelocity[6*i+2]){48 else if (!isnan(iomodel->spcvz[i])){ 49 49 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. 51 51 count++; 52 52 … … 56 56 57 57 /*Free data: */ 58 xfree((void**)&iomodel->spcv elocity);58 xfree((void**)&iomodel->spcvz); 59 59 xfree((void**)&iomodel->nodeonstokes); 60 60 -
issm/trunk/src/c/objects/IoModel.cpp
r8800 r8823 79 79 xfree((void**)&this->nodeonwater); 80 80 xfree((void**)&this->pressureload); 81 xfree((void**)&this->spcvelocity); 81 xfree((void**)&this->spcvx); 82 xfree((void**)&this->spcvy); 83 xfree((void**)&this->spcvz); 82 84 xfree((void**)&this->spcthickness); 83 85 xfree((void**)&this->spcwatercolumn); … … 325 327 this->numberofpressureloads=0; 326 328 this->pressureload=NULL; 327 this-> spcvelocity=NULL; 329 this-> spcvx=NULL; 330 this-> spcvy=NULL; 331 this-> spcvz=NULL; 328 332 this-> spctemperature=NULL; 329 333 this-> spcthickness=NULL; -
issm/trunk/src/c/objects/IoModel.h
r8800 r8823 101 101 int numberofpressureloads; 102 102 double* pressureload; 103 double* spcvelocity; 103 double* spcvx; 104 double* spcvy; 105 double* spcvz; 104 106 double* spctemperature; 105 107 double* spcthickness; -
issm/trunk/src/m/classes/version/7.6/model.m
r8803 r8823 161 161 nodeonboundary=NaN; 162 162 pressureload=NaN; 163 spcvelocity=NaN; 163 spcvx=NaN; 164 spcvy=NaN; 165 spcvz=NaN; 164 166 spctemperature=NaN; 165 167 spcthickness=NaN; -
issm/trunk/src/m/classes/version/7.7/model.m
r8803 r8823 161 161 nodeonboundary=NaN; 162 162 pressureload=NaN; 163 spcvelocity=NaN; 163 spcvx=NaN; 164 spcvy=NaN; 165 spcvz=NaN; 164 166 spctemperature=NaN; 165 167 spcthickness=NaN; -
issm/trunk/src/m/model/BasinConstrain.m
r8298 r8823 48 48 49 49 %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); 50 md.spcvx(nodenotondomain)=md.vx_obs(nodenotondomain); 51 md.spcvy(nodenotondomain)=md.vy_obs(nodenotondomain); 53 52 md.elementonwater(elementnotondomain)=1; 54 53 … … 57 56 numpos=unique(md.elements(pos,:)); 58 57 nodes=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); 58 md.spcvx(nodes)=md.vx_obs(nodes); 59 md.spcvy(nodes)=md.vy_obs(nodes); 62 60 63 61 %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);62 free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))))~=2); 65 63 md.pressureload=md.pressureload(free_segments,:); -
issm/trunk/src/m/model/BasinConstrain2.m
r8298 r8823 48 48 49 49 %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); 50 md.spcvx(nodenotondomain)=md.vx_obs(nodenotondomain); 51 md.spcvy(nodenotondomain)=md.vy_obs(nodenotondomain); 53 52 md.elementonwater(elementnotondomain)=1; 54 53 … … 57 56 numpos=unique(md.elements(pos,:)); 58 57 nodes=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); 58 md.spcvx(nodes)=md.vx_obs(nodes); 59 md.spcvy(nodes)=md.vy_obs(nodes); 62 60 63 61 64 62 %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);63 free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))))~=2); 66 64 md.pressureload=md.pressureload(free_segments,:); -
issm/trunk/src/m/model/BasinConstrainShelf.m
r8298 r8823 48 48 49 49 %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); 50 md.spcvx(nodenotondomain)=md.vx_obs(nodenotondomain); 51 md.spcvy(nodenotondomain)=md.vy_obs(nodenotondomain); 53 52 md.elementonwater(elementnotondomain)=1; 54 53 … … 57 56 numpos=unique(md.elements(pos,:)); 58 57 nodes=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); 58 md.spcvx(nodes)=md.vx_obs(nodes); 59 md.spcvy(nodes)=md.vy_obs(nodes); 62 60 63 61 64 62 %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. 65 64 pos=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); 65 md.spcvx(pos)=md.vx_obs(pos); 66 md.spcvy(pos)=md.vy_obs(pos); 70 67 71 68 %iceshelves: any node on icesheet is spc'd 72 69 pos=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); 70 md.spcvx(pos)=md.vx_obs(pos); 71 md.spcvy(pos)=md.vy_obs(pos); 76 72 77 73 %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);74 free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))) )~=2); 79 75 md.pressureload=md.pressureload(free_segments,:); -
issm/trunk/src/m/model/collapse.m
r8399 r8823 61 61 62 62 %boundary conditions 63 md.spcvelocity=project2d(md,md.spcvelocity,md.numlayers); 63 md.spcvx=project2d(md,md.spcvx,md.numlayers); 64 md.spcvy=project2d(md,md.spcvy,md.numlayers); 65 md.spcvz=project2d(md,md.spcvz,md.numlayers); 64 66 md.spcthickness=project2d(md,md.spcthickness,md.numlayers); 65 67 md.spctemperature=project2d(md,md.spctemperature,md.numlayers); -
issm/trunk/src/m/model/display/displaybc.m
r8392 r8823 19 19 20 20 disp(sprintf('\n diagnostic:')); 21 fielddisplay(md,'spcvelocity','constraints flag list (first 3 columns) and values [m/yr] (last 3 columns)'); 21 fielddisplay(md,'spcvx','x-axis velocity constraint (NaN means no constraint)'); 22 fielddisplay(md,'spcvy','y-axis velocity constraint (NaN means no constraint)'); 23 fielddisplay(md,'spcvz','z-axis velocity constraint (NaN means no constraint)'); 22 24 fielddisplay(md,'pressureload','segments on ice front list'); 23 25 -
issm/trunk/src/m/model/display/displaydiagnostic.m
r3201 r8823 19 19 20 20 disp(sprintf('\n boundary conditions:')); 21 fielddisplay(md,'spcvelocity','constraints flag list (first 3 columns) and values [m/yr] (last 3 columns)'); 21 fielddisplay(md,'spcvx','x-axis velocity constraint (NaN means no constraint)'); 22 fielddisplay(md,'spcvy','y-axis velocity constraint (NaN means no constraint)'); 23 fielddisplay(md,'spcvz','z-axis velocity constraint (NaN means no constraint)'); 22 24 fielddisplay(md,'pressureload','segments on ice front list'); 23 25 -
issm/trunk/src/m/model/extrude.m
r8486 r8823 201 201 202 202 %boundary conditions 203 md.spcvelocity=project3d(md,md.spcvelocity,'node'); 203 md.spcvx=project3d(md,md.spcvx,'node'); 204 md.spcvy=project3d(md,md.spcvy,'node'); 205 md.spcvz=project3d(md,md.spcvz,'node'); 204 206 md.spctemperature=project3d(md,md.spctemperature,'node',md.numlayers); 205 207 md.spcthickness=project3d(md,md.spcthickness,'node'); -
issm/trunk/src/m/model/ismodelselfconsistent.m
r8731 r8823 99 99 %}}} 100 100 %OTHER SIZES {{{1 101 fields={' spcvelocity','diagnostic_ref'};101 fields={'diagnostic_ref'}; 102 102 checksize(md,fields,[md.numberofnodes 6]); 103 103 %}}} … … 385 385 % {{{2 386 386 %SINGULAR 387 if ~any( sum(md.spcvelocity(:,1:2),2)==2),387 if ~any((~isnan(md.spcvx)+~isnan(md.spcvy))==2), 388 388 message(['model not consistent: model ' md.name ' is not well posed (singular). You need at least one node with fixed velocity!']) 389 389 end … … 603 603 604 604 %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']); 607 611 end 608 612 %}}} -
issm/trunk/src/m/model/marshall.m
r8803 r8823 77 77 WriteData(fid,md.nodeonwater,'Mat','nodeonwater'); 78 78 79 WriteData(fid,md.spcvelocity,'Mat','spcvelocity'); 79 WriteData(fid,md.spcvx,'Mat','spcvx'); 80 WriteData(fid,md.spcvy,'Mat','spcvy'); 81 WriteData(fid,md.spcvz,'Mat','spcvz'); 80 82 WriteData(fid,md.spctemperature,'Mat','spctemperature'); 81 83 WriteData(fid,md.spcthickness,'Mat','spcthickness'); -
issm/trunk/src/m/model/modelextract.m
r8298 r8823 195 195 nodestoflag1=intersect(orphans_node,pos_node); 196 196 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), 199 198 if ~isnan(md1.vx_obs) & ~isnan(md1.vy_obs) 200 md2.spcv elocity(nodestoflag2,4)=md2.vx_obs(nodestoflag2);201 md2.spcv elocity(nodestoflag2,5)=md2.vy_obs(nodestoflag2);199 md2.spcvx(nodestoflag2)=md2.vx_obs(nodestoflag2); 200 md2.spcvy(nodestoflag2)=md2.vy_obs(nodestoflag2); 202 201 else 203 md2.spcvelocity(nodestoflag2,4:5)=zeros(length(nodestoflag2),2); 202 md2.spcvx(nodestoflag2)=NaN; 203 md2.spcvy(nodestoflag2)=NaN; 204 204 disp(' ') 205 205 disp('!! modelextract warning: spc values should be checked !!') -
issm/trunk/src/m/model/plot/plot_BC.m
r8361 r8823 7 7 8 8 %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');9 h1=plot(md.x(find(~isnan(md.spcvx))),md.y(find(~isnan(md.spcvx))),'ro','MarkerSize',14,'MarkerFaceColor','r'); 10 h2=plot(md.x(find(~isnan(md.spcvy))),md.y(find(~isnan(md.spcvy))),'bo','MarkerSize',10,'MarkerFaceColor','b'); 11 h3=plot(md.x(find(~isnan(md.spcvz))),md.y(find(~isnan(md.spcvz))),'yo','MarkerSize',6 ,'MarkerFaceColor','y'); 12 12 13 13 %update legend -
issm/trunk/src/m/model/setelementstype.m
r8298 r8823 97 97 nodeonstokes=zeros(md.numberofnodes,1); 98 98 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 icefront99 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 100 100 fullspcelems=double(sum(fullspcnodes(md.elements),2)==6); %find all the nodes on the boundary of the domain without icefront 101 101 stokesflag(find(fullspcelems))=0; -
issm/trunk/src/m/utils/Analysis/resetspcs.m
r8298 r8823 3 3 resolution=20000; x_ellsworth=-1.24*10^6; y_ellsworth=1*10^5; 4 4 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; 7 11 8 12 %recompute with spcs reinitialized -
issm/trunk/src/m/utils/BC/SetIceSheetBC.m
r8399 r8823 9 9 %node on Dirichlet 10 10 pos=find(md.nodeonboundary); 11 md.spcvelocity=zeros(md.numberofnodes,6); 12 md.spcvelocity(pos,1:3)=1; 11 md.spcvx=NaN*ones(md.numberofnodes,1); 12 md.spcvy=NaN*ones(md.numberofnodes,1); 13 md.spcvz=NaN*ones(md.numberofnodes,1); 14 md.spcvx(pos)=0; 15 md.spcvy(pos)=0; 16 md.spcvz(pos)=0; 13 17 md.diagnostic_ref=NaN*ones(md.numberofnodes,6); 14 18 … … 16 20 if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes) 17 21 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); 19 24 else 20 25 disp(' boundary conditions for diagnostic model: spc set as zero'); -
issm/trunk/src/m/utils/BC/SetIceShelfBC.m
r8399 r8823 28 28 end 29 29 pos=find(md.nodeonboundary & ~nodeonicefront); 30 md.spcvelocity=zeros(md.numberofnodes,6); 31 md.spcvelocity(pos,1:3)=1; 30 md.spcvx=NaN*ones(md.numberofnodes,1); 31 md.spcvy=NaN*ones(md.numberofnodes,1); 32 md.spcvz=NaN*ones(md.numberofnodes,1); 33 md.spcvx(pos)=0; 34 md.spcvy(pos)=0; 35 md.spcvz(pos)=0; 32 36 md.diagnostic_ref=NaN*ones(md.numberofnodes,6); 33 37 … … 35 39 if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes) 36 40 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); 38 43 else 39 44 disp(' boundary conditions for diagnostic model: spc set as zero'); -
issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m
r8399 r8823 35 35 warning('SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually') 36 36 end 37 md.spcvelocity=zeros(md.numberofnodes,6); 38 md.spcvelocity(pos,1:3)=1; 37 md.spcvx=NaN*ones(md.numberofnodes,1); 38 md.spcvy=NaN*ones(md.numberofnodes,1); 39 md.spcvz=NaN*ones(md.numberofnodes,1); 40 md.spcvx(pos)=0; 41 md.spcvy(pos)=0; 42 md.spcvz(pos)=0; 39 43 md.diagnostic_ref=NaN*ones(md.numberofnodes,6); 40 44 … … 42 46 if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes) 43 47 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); 45 50 else 46 51 disp(' boundary conditions for diagnostic model: spc set as zero');
Note:
See TracChangeset
for help on using the changeset viewer.