Ignore:
Timestamp:
Oct 9, 2008, 12:54:08 PM (15 years ago)
Author:
sudi
Message:

Adding new versions of shallow_water_domain

File:
1 edited

Legend:

Unmodified
Added
Removed
  • anuga_work/development/anuga_1d/comp_flux_ext_wellbalanced.c

    r5725 r5827  
    2626//Innermost flux function (using w=z+h)
    2727int _flux_function_wellbalanced(double *q_left, double *q_right,
    28         double z_left, double z_right,
    2928                double normals, double g, double epsilon,
    3029                double *edgeflux, double *max_speed) {
    3130               
    3231                int i;
     32        double z_left, z_right;
    3333                double ql[2], qr[2], flux_left[2], flux_right[2];
    3434                double z_star, w_left, h_left, h_left_star, uh_left, soundspeed_left, u_left;
     
    3636                double s_max, s_min, denom;
    3737               
     38                w_left = q_left[0];
     39                uh_left = q_left[1];
     40                uh_left = uh_left*normals;
     41        z_left = q_left[2];
     42       
     43                w_right = q_right[0];
     44                uh_right = q_right[1];
     45                uh_right = uh_right*normals;
     46        z_right = q_right[2];
     47         
    3848                if (z_left-z_right != 0.0 ) printf("z_l - z_r = %f \n",z_left-z_right);
    39                 ql[0] = q_left[0];
    40                 ql[1] = q_left[1];
    41                 ql[1] = ql[1]*normals;
    42        
    43                 qr[0] = q_right[0];
    44                 qr[1] = q_right[1];
    45                 qr[1] = qr[1]*normals;
    46          
     49       
    4750                //z = (z_left+z_right)/2.0;
    4851                z_star = max(z_left, z_right);                                                                                                          //equation(7) 
    4952                                   
    5053                // Compute speeds in x-direction
    51                 w_left = ql[0];
    5254                h_left = w_left-z_left;                                                                         //This is used for computing the edgeflux[1].
    5355                h_left_star = max(0, w_left-z_star);                                                                                                            //(8)
    54                 uh_left = ql[1];
     56   
    5557                if (h_left_star < epsilon) {
    5658                        u_left = 0.0; h_left_star = 0.0;
     
    6062                }
    6163       
    62                 w_right = qr[0];
    6364                h_right = w_right-z_right;                                                                                                                                                                                                     
    6465                h_right_star = max(0, w_right-z_star);                                                                                                          //(9)
    65                 uh_right = qr[1];
     66
    6667                if (h_right_star < epsilon) {
    6768                        u_right = 0.0; h_right_star = 0.0;
     
    134135                double* max_speed_array) {
    135136               
    136                 double flux[2], ql[2], qr[2], edgeflux[2];
     137                double flux[2], ql[3], qr[3], edgeflux[2];
    137138                double zl, zr, max_speed, normal;
    138139                int k, i, ki, n, m, nm=0;
     
    147148                                ql[0] = stage_edge_values[ki];
    148149                                ql[1] = xmom_edge_values[ki];
    149                                 zl = bed_edge_values[ki];
    150                                
     150                                ql[2] = bed_edge_values[ki];
     151                                //ql[3] = velocity_edge_values[ki];
     152                //ql[4] = height_edge_values[ki];
     153               
    151154                                n = neighbours[ki];
    152155                                if (n<0) {
     
    154157                                        qr[0] = stage_boundary_values[m];
    155158                                        qr[1] = xmom_boundary_values[m];
    156                                         zr = zl;
     159                                        qr[2] = ql[2];
     160                   
    157161                                } else {
    158162                                        m = neighbour_vertices[ki];
     
    160164                                        qr[0] = stage_edge_values[nm];
    161165                                        qr[1] = xmom_edge_values[nm];
    162                                         zr = bed_edge_values[nm];                               
     166                                        qr[2] = bed_edge_values[nm];                           
    163167                                }
    164168                               
    165169                                normal = normals[ki];
    166                                 _flux_function_wellbalanced(ql, qr, zl, zr, normal, g, epsilon, edgeflux, &max_speed);
     170                                _flux_function_wellbalanced(ql, qr, normal, g, epsilon, edgeflux, &max_speed);
    167171                                flux[0] -= edgeflux[0];
    168172                                flux[1] -= edgeflux[1];
     
    186190                        max_speed_array[k]=max_speed;
    187191                }
    188                 printf("timestep = %f \n",timestep);
     192                //printf("timestep = %f \n",timestep);
    189193                return timestep;       
    190194        }
Note: See TracChangeset for help on using the changeset viewer.