Changeset 17808
- Timestamp:
- 04/22/14 10:51:09 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 106 added
- 1 edited
-
c/analyses/LevelsetAnalysis.cpp (modified) (1 diff)
-
java (added)
-
java/COPYING (added)
-
java/Changelog_1.0.0.txt (added)
-
java/License.txt (added)
-
java/MANIFEST.MF (added)
-
java/build (added)
-
java/build.xml (added)
-
java/build/gui_elements (added)
-
java/build/gui_elements/AlternativePanel.class (added)
-
java/build/gui_elements/CheckBoxPanel.class (added)
-
java/build/gui_elements/ColorCellRenderer.class (added)
-
java/build/gui_elements/CombinedPanel$1.class (added)
-
java/build/gui_elements/CombinedPanel$Type.class (added)
-
java/build/gui_elements/CombinedPanel.class (added)
-
java/build/gui_elements/ControlledPanel.class (added)
-
java/build/gui_elements/DecimalPanel.class (added)
-
java/build/gui_elements/DuplicatorPanel.class (added)
-
java/build/gui_elements/FramePanel.class (added)
-
java/build/gui_elements/GUIBuildException.class (added)
-
java/build/gui_elements/IntegerPanel.class (added)
-
java/build/gui_elements/OptionPanel.class (added)
-
java/build/gui_elements/PathPanel.class (added)
-
java/build/gui_elements/SelectorPanel.class (added)
-
java/build/gui_elements/TextfieldPanel.class (added)
-
java/build/main (added)
-
java/build/main/GUI.class (added)
-
java/build/main/GUIBuilder$1.class (added)
-
java/build/main/GUIBuilder.class (added)
-
java/build/main/PanelControl.class (added)
-
java/build/main/PanelNode.class (added)
-
java/build/main/XMLHelper.class (added)
-
java/build/resources (added)
-
java/build/resources/config_schema-0.1.1.xsd (added)
-
java/build/resources/config_schema.xsd (added)
-
java/build/resources/default_config.xml (added)
-
java/build/resources/document-export-4.png (added)
-
java/build/resources/document-open-2.png (added)
-
java/build/resources/document-preview.png (added)
-
java/build/resources/icons (added)
-
java/build/resources/icons/advancedsettings.png (added)
-
java/build/resources/icons/file_ops.xcf (added)
-
java/build/resources/icons/fileopen.png (added)
-
java/build/resources/icons/filesave.png (added)
-
java/build/resources/icons/filesaveas.png (added)
-
java/build/resources/icons/ini_open.png (added)
-
java/build/resources/icons/kghostview.png (added)
-
java/build/resources/icons/mydocuments.png (added)
-
java/build/resources/icons/opensettings.png (added)
-
java/build/resources/icons/readme.txt (added)
-
java/build/resources/icons/reset.png (added)
-
java/build/resources/icons/viewmag.png (added)
-
java/build/resources/icons/xml_open.png (added)
-
java/dist (added)
-
java/dist/inishell.jar (added)
-
java/doc (added)
-
java/doc/examples (added)
-
java/doc/examples/io.ini (added)
-
java/doc/examples/issm.xml (added)
-
java/doc/examples/meteoio_config.xml (added)
-
java/doc/examples/min_example.xml (added)
-
java/doc/examples/snowpack_config.xml (added)
-
java/inishell.sh (added)
-
java/lib (added)
-
java/lib/miglayout-4.0.jar (added)
-
java/src (added)
-
java/src/gui_elements (added)
-
java/src/gui_elements/AlternativePanel.java (added)
-
java/src/gui_elements/CheckBoxPanel.java (added)
-
java/src/gui_elements/CombinedPanel.java (added)
-
java/src/gui_elements/ControlledPanel.java (added)
-
java/src/gui_elements/DecimalPanel.java (added)
-
java/src/gui_elements/DuplicatorPanel.java (added)
-
java/src/gui_elements/FramePanel.java (added)
-
java/src/gui_elements/GUIBuildException.java (added)
-
java/src/gui_elements/IntegerPanel.java (added)
-
java/src/gui_elements/OptionPanel.java (added)
-
java/src/gui_elements/PathPanel.java (added)
-
java/src/gui_elements/SelectorPanel.java (added)
-
java/src/gui_elements/TextfieldPanel.java (added)
-
java/src/main (added)
-
java/src/main/GUI.java (added)
-
java/src/main/GUIBuilder.java (added)
-
java/src/main/PanelControl.java (added)
-
java/src/main/PanelNode.java (added)
-
java/src/main/XMLHelper.java (added)
-
java/src/resources (added)
-
java/src/resources/config_schema-0.1.1.xsd (added)
-
java/src/resources/config_schema.xsd (added)
-
java/src/resources/default_config.xml (added)
-
java/src/resources/document-export-4.png (added)
-
java/src/resources/document-open-2.png (added)
-
java/src/resources/document-preview.png (added)
-
java/src/resources/icons (added)
-
java/src/resources/icons/advancedsettings.png (added)
-
java/src/resources/icons/file_ops.xcf (added)
-
java/src/resources/icons/fileopen.png (added)
-
java/src/resources/icons/filesave.png (added)
-
java/src/resources/icons/filesaveas.png (added)
-
java/src/resources/icons/ini_open.png (added)
-
java/src/resources/icons/kghostview.png (added)
-
java/src/resources/icons/mydocuments.png (added)
-
java/src/resources/icons/opensettings.png (added)
-
java/src/resources/icons/readme.txt (added)
-
java/src/resources/icons/reset.png (added)
-
java/src/resources/icons/viewmag.png (added)
-
java/src/resources/icons/xml_open.png (added)
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r17801 r17808 89 89 ElementMatrix* LevelsetAnalysis::CreateKMatrix(Element* element){/*{{{*/ 90 90 91 _error_("NOT IMPLEMENTED YET"); 92 91 if(!element->IsOnBase()) return NULL; 92 Element* basalelement = element->SpawnBasalElement(); 93 94 /*Intermediaries */ 95 int dim, domaintype; 96 int i, row, col; 97 IssmDouble kappa; 98 IssmDouble Jdet, dt, D_scalar; 99 IssmDouble h,hx,hy,hz; 100 IssmDouble vel, calvingrate; 101 IssmDouble norm_dlsf; 102 IssmDouble* xyz_list = NULL; 103 104 /*Get problem dimension*/ 105 basalelement->FindParam(&domaintype,DomainTypeEnum); 106 switch(domaintype){ 107 case Domain2DverticalEnum: dim = 1; break; 108 case Domain2DhorizontalEnum: dim = 2; break; 109 case Domain3DEnum: dim = 2; break; 110 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 111 } 112 113 /*Fetch number of nodes and dof for this finite element*/ 114 int numnodes = basalelement->GetNumberOfNodes(); 115 116 /*Initialize Element vector and other vectors*/ 117 ElementMatrix* Ke = basalelement->NewElementMatrix(); 118 IssmDouble* basis = xNew<IssmDouble>(numnodes); 119 IssmDouble* B = xNew<IssmDouble>(dim*numnodes); 120 IssmDouble* Bprime = xNew<IssmDouble>(dim*numnodes); 121 IssmDouble* D = xNew<IssmDouble>(dim*dim); 122 IssmDouble* v = xNew<IssmDouble>(dim); 123 IssmDouble* w = xNew<IssmDouble>(dim); 124 IssmDouble* c = xNew<IssmDouble>(dim); 125 IssmDouble* dlsf = xNew<IssmDouble>(dim); 126 127 /*Retrieve all inputs and parameters*/ 128 basalelement->GetVerticesCoordinates(&xyz_list); 129 basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 130 Input* vx_input=NULL; 131 Input* vy_input=NULL; 132 if(domaintype==Domain2DhorizontalEnum){ 133 vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input); 134 vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input); 135 } 136 else{ 137 if(dim==1){ 138 vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input); 139 } 140 if(dim==2){ 141 vx_input=basalelement->GetInput(VxAverageEnum); _assert_(vx_input); 142 vy_input=basalelement->GetInput(VyAverageEnum); _assert_(vy_input); 143 } 144 } 145 146 Input* lsf_slopex_input = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input); 147 Input* lsf_slopey_input = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input); 148 Input* calvingrate_input = basalelement->GetInput(MasstransportCalvingrateEnum); _assert_(calvingrate_input); 149 150 /* Start looping on the number of gaussian points: */ 151 Gauss* gauss=basalelement->NewGauss(2); 152 for(int ig=gauss->begin();ig<gauss->end();ig++){ 153 gauss->GaussPoint(ig); 154 155 basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss); 156 D_scalar=gauss->weight*Jdet; 157 158 /* Transient */ 159 if(dt!=0.){ 160 basalelement->NodalFunctions(basis,gauss); 161 TripleMultiply(basis,numnodes,1,0, 162 &D_scalar,1,1,0, 163 basis,1,numnodes,0, 164 &Ke->values[0],1); 165 D_scalar*=dt; 166 } 167 168 /* Advection */ 169 GetB(B,basalelement,xyz_list,gauss); 170 GetBprime(Bprime,basalelement,xyz_list,gauss); 171 vx_input->GetInputValue(&v[0],gauss); // in 3D case, add mesh velocity 172 vy_input->GetInputValue(&v[1],gauss); 173 lsf_slopex_input->GetInputValue(&dlsf[0],gauss); 174 lsf_slopey_input->GetInputValue(&dlsf[1],gauss); 175 calvingrate_input->GetInputValue(&calvingrate,gauss); 176 177 norm_dlsf=0.; 178 for(i=0;i<dim;i++) norm_dlsf+=pow(dlsf[i],2); 179 norm_dlsf=sqrt(norm_dlsf); 180 181 if(norm_dlsf>1.e-10) 182 for(i=0;i<dim;i++) c[i]=calvingrate*dlsf[i]/norm_dlsf; 183 else 184 for(i=0;i<dim;i++) c[i]=0.; 185 186 for(i=0;i<dim;i++) w[i]=v[i]-c[i]; 187 188 for(row=0;row<dim;row++) 189 for(col=0;col<dim;col++) 190 if(row==col) 191 D[row*dim+col]=D_scalar*w[row]; 192 else 193 D[row*dim+col]=0.; 194 195 TripleMultiply(B,dim,numnodes,1, 196 D,dim,dim,0, 197 Bprime,dim,numnodes,0, 198 &Ke->values[0],1); 199 200 /* Stabilization */ 201 int stabilization=2; 202 vel=0.; 203 for(i=0;i<dim;i++) vel+=v[i]*v[i]; 204 vel=sqrt(vel)+1.e-14; 205 switch(stabilization){ 206 case 0: 207 // no stabilization, do nothing 208 break; 209 case 1: 210 /* Artificial Diffusion */ 211 basalelement->ElementSizes(&hx,&hy,&hz); 212 h=sqrt( pow(hx*v[0]/vel,2) + pow(hy*v[1]/vel,2) ); 213 kappa=h*vel/2.; 214 for(row=0;row<dim;row++) 215 for(col=0;col<dim;col++) 216 if(row==col) 217 D[row*dim+col]=D_scalar*kappa; 218 else 219 D[row*dim+col]=0.; 220 221 TripleMultiply(Bprime,dim,numnodes,1, 222 D,dim,dim,0, 223 Bprime,dim,numnodes,0, 224 &Ke->values[0],1); 225 break; 226 case 2: 227 /* Streamline Upwinding */ 228 basalelement->ElementSizes(&hx,&hy,&hz); 229 h=sqrt( pow(hx*v[0]/vel,2) + pow(hy*v[1]/vel,2) ); 230 for(row=0;row<dim;row++) 231 for(col=0;col<dim;col++) 232 D[row*dim+col] = D_scalar*h/(2.*vel)*v[row]*v[col]; 233 234 TripleMultiply(Bprime,dim,numnodes,1, 235 D,dim,dim,0, 236 Bprime,dim,numnodes,0, 237 &Ke->values[0],1); 238 break; 239 default: 240 _error_("unknown type of stabilization in LevelsetAnalysis.cpp"); 241 } 242 } 243 244 /*Clean up and return*/ 245 xDelete<IssmDouble>(xyz_list); 246 xDelete<IssmDouble>(basis); 247 xDelete<IssmDouble>(B); 248 xDelete<IssmDouble>(D); 249 xDelete<IssmDouble>(Bprime); 250 xDelete<IssmDouble>(v); 251 xDelete<IssmDouble>(w); 252 xDelete<IssmDouble>(c); 253 xDelete<IssmDouble>(dlsf); 254 delete gauss; 255 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; 256 return Ke; 93 257 }/*}}}*/ 94 258 ElementVector* LevelsetAnalysis::CreatePVector(Element* element){/*{{{*/
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/trac/issm/chrome/common/trac_banner.png)