Changeset 4886 for anuga_core/source/anuga/utilities/util_ext.h
- Timestamp:
- Dec 12, 2007, 5:38:37 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_core/source/anuga/utilities/util_ext.h
r4883 r4886 166 166 167 167 168 void _limit_by_edge(int N, double beta, double* qc, double* qv,169 double* qmin, double* qmax) {170 171 //N are the number of elements172 int k, i, k3;173 double dq, dqa[3], phi, r;174 175 //printf("INSIDE\n");176 for (k=0; k<N; k++) {177 k3 = k*3;178 179 //Find the gradient limiter (phi) across vertices180 phi = 1.0;181 for (i=0; i<3; i++) {182 r = 1.0;183 184 dq = qv[k3+i] - qc[k]; //Delta between vertex and centroid values185 dqa[i] = dq; //Save dq for use in the next loop186 187 if (dq > 0.0) r = (qmax[k] - qc[k])/dq;188 if (dq < 0.0) r = (qmin[k] - qc[k])/dq;189 190 191 phi = min( min(r*beta, 1.0), phi);192 }193 194 //Then update using phi limiter195 for (i=0; i<3; i++) {196 qv[k3+i] = qc[k] + phi*dqa[i];197 }198 }199 }200 201 void _limit_by_vertex(int N, double beta, double* qc, double* qv,202 double* qmin, double* qmax) {203 204 //N are the number of elements205 int k, i, k3;206 double dq, dqa[3], phi, r;207 208 //printf("INSIDE\n");209 for (k=0; k<N; k++) {210 k3 = k*3;211 212 //Find the gradient limiter (phi) across vertices213 phi = 1.0;214 for (i=0; i<3; i++) {215 r = 1.0;216 217 dq = qv[k3+i] - qc[k]; //Delta between vertex and centroid values218 dqa[i] = dq; //Save dq for use in the next loop219 220 if (dq > 0.0) r = (qmax[k] - qc[k])/dq;221 if (dq < 0.0) r = (qmin[k] - qc[k])/dq;222 223 224 phi = min( min(r*beta, 1.0), phi);225 }226 227 //Then update using phi limiter228 for (i=0; i<3; i++) {229 qv[k3+i] = qc[k] + phi*dqa[i];230 }231 }232 }233 168 234 169
Note: See TracChangeset
for help on using the changeset viewer.