Changeset 515
- Timestamp:
- Nov 9, 2004, 10:41:43 PM (20 years ago)
- Location:
- inundation/ga/storm_surge/pyvolution
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/ga/storm_surge/pyvolution/quantity_ext.c
r514 r515 169 169 double denominator, x; 170 170 171 171 172 //Divide semi_implicit update by conserved quantity 172 173 for (k=0; k<N; k++) { -
inundation/ga/storm_surge/pyvolution/run_profile.py
r479 r515 20 20 # 21 21 22 N = 3222 N = 16 23 23 24 24 print 'Creating domain' -
inundation/ga/storm_surge/pyvolution/shallow_water.py
r514 r515 819 819 820 820 for k in range(N): 821 if h[k] >= eps: 822 S = -g * eta[k]**2 * sqrt((uh[k]**2 + vh[k]**2)) 823 S /= h[k]**(7.0/3) 824 825 #Update momentum 826 xmom_update[k] += S*uh[k] 827 ymom_update[k] += S*vh[k] 821 if eta[k] >= eps: 822 if h[k] >= eps: 823 S = -g * eta[k]**2 * sqrt((uh[k]**2 + vh[k]**2)) 824 S /= h[k]**(7.0/3) 825 826 #Update momentum 827 xmom_update[k] += S*uh[k] 828 ymom_update[k] += S*vh[k] 828 829 829 830 … … 838 839 w = domain.quantities['level'].centroid_values 839 840 z = domain.quantities['elevation'].centroid_values 840 h = w-z841 841 842 uh = xmom.centroid_values 842 843 vh = ymom.centroid_values … … 851 852 852 853 from shallow_water_ext import manning_friction 853 manning_friction(g, eps, h, uh, vh, eta, xmom_update, ymom_update)854 manning_friction(g, eps, w, z, uh, vh, eta, xmom_update, ymom_update) 854 855 855 856 -
inundation/ga/storm_surge/pyvolution/shallow_water_ext.c
r502 r515 156 156 157 157 void _manning_friction(double g, double eps, int N, 158 double* h, double* uh, double* vh, 158 double* w, double* z, 159 double* uh, double* vh, 159 160 double* eta, double* xmom, double* ymom) { 160 161 161 162 int k; 162 double S ;163 double S, h; 163 164 164 165 for (k=0; k<N; k++) { 165 if (h[k] >= eps) { 166 S = -g * eta[k]*eta[k] * sqrt((uh[k]*uh[k] + vh[k]*vh[k])); 167 S /= pow(h[k], 7.0/3); 168 169 //Update momentum 170 xmom[k] += S*uh[k]; 171 ymom[k] += S*vh[k]; 166 if (eta[k] > eps) { 167 h = w[k]-z[k]; 168 if (h >= eps) { 169 S = -g * eta[k]*eta[k] * sqrt((uh[k]*uh[k] + vh[k]*vh[k])); 170 S /= pow(h, 7.0/3); //Expensive 171 //S /= h*h*(1 + h/3.0 - h*h/9.0); //FIXME: Use a Taylor expansion 172 //FIXME: This will save a lot of time 173 174 //Update momentum 175 xmom[k] += S*uh[k]; 176 ymom[k] += S*vh[k]; 177 } 172 178 } 173 179 } 174 175 180 } 176 181 … … 344 349 345 350 346 PyArrayObject * h, *uh, *vh, *eta, *xmom, *ymom;351 PyArrayObject *w, *z, *uh, *vh, *eta, *xmom, *ymom; 347 352 int N; 348 353 double g, eps; 349 354 350 if (!PyArg_ParseTuple(args, "ddOOOOOO ",351 &g, &eps, & h, &uh, &vh, &eta,355 if (!PyArg_ParseTuple(args, "ddOOOOOOO", 356 &g, &eps, &w, &z, &uh, &vh, &eta, 352 357 &xmom, &ymom)) 353 358 return NULL; 354 359 355 N = h-> dimensions[0];360 N = w -> dimensions[0]; 356 361 _manning_friction(g, eps, N, 357 (double*) h -> data, 362 (double*) w -> data, 363 (double*) z -> data, 358 364 (double*) uh -> data, 359 365 (double*) vh -> data,
Note: See TracChangeset
for help on using the changeset viewer.