⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lateral_mixing.c

📁 波浪数值模拟
💻 C
📖 第 1 页 / 共 3 页
字号:
    case NONE: fprintf(stderr," No Lateral Mixing in this Run\n");    }    fprintf(stderr,"-------------------------------------------------\n");}/*void lateral_lateral_mixing2(field2D *DU, field2D *DV, mix_t  dd){  switch(dd) {  case NEWT0:      newtonian0_friction(DU, DV,);    break;  case NEWT1:      newtonian1_u_all(DU);    newtonian1_v_all(DV);    break;  case NEWT2:      newtonian2_u_all(DU);    newtonian2_v_all(DV);    break;  case BI0:      laplacian0_all(LUU,LVV);    biharmonic0_u_all(DU,LUU);    biharmonic0_v_all(DV,LVV);    break;  case BI1:      laplacian0_all(LUU,LVV);    mult_laplacian0_depth(LUU,LVV);    biharmonic1_u_all(DU,LUU);    biharmonic1_v_all(DV,LVV);    break;  case BI2:      laplacian0_all(LUU,LVV);    mult_laplacian0_depth(LUU,LVV);    biharmonic2_u_all(DU,LUU,LVV);    biharmonic2_v_all(DV,LUU,LVV);    break;  case NONE:    return;  }}*//* ********** NEWTONIAN 1 FUNCTIONS **************** *//* void newtonian1_u_all(field2D *NU) *//* { *//*   int i,j,im,M,MN; *//*   double tmp0, tmp1, tmp2, tmp3; *//*   double *nud; *//*   double *ud, *udup, *uddn; *//*   double hi, hm, hbar; *//*   M = NU->M; *//*   MN = M-1; *//*   nud = NU->data; *//*   ud = &(UU->data[M]); *//*   udup = &(UU->data[2*M]); *//*   uddn = UU->data; *//*   for (i=1;i<nx-1;i++) { *//*     im = i-1; *//*     hbar = HBAR[im]; *//*     hm = HH[im]; *//*     hi = HH[i]; *//*     tmp0 = (*ud) * 2.0; *//*     tmp1 = hi * (*udup++ - *ud); *//*     tmp2 = hm * ( *ud - *uddn++); *//*     tmp3 = hbar*(*(ud+1) - tmp0 + *(ud+MN)); *//*     *nud++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*     ud++;  *//*     for (j=1;j<ny-1;j++) { *//*       tmp0 = (*ud) * 2.0; *//*       tmp1 = hi * (*udup++ - *ud); *//*       tmp2 = hm * ( *ud - *uddn++); *//*       tmp3 = hbar*(*(ud+1) - tmp0 + *(ud-1)); *//*       *nud++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*       ud++;  *//*     } *//*     tmp0 = (*ud) * 2.0; *//*     tmp1 = hi * (*udup++ - *ud); *//*     tmp2 = hm * ( *ud - *uddn++); *//*     tmp3 = hbar*(*(ud-MN) - tmp0 + *(ud-1)); *//*     *nud++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*     ud++;  *//*   } *//* } *//* void newtonian1_v_all(field2D *NV) *//* { *//*   int i,j,im,M,MN; *//*   double tmp0, tmp1, tmp2, tmp3; *//*   double *nvd; *//*   double *vd, *vdup, *vddn; *//*   double him, hbim, hbim2; *//*   M = NV->M; *//*   MN = M-1; *//*   nvd = NV->data; *//*   vd = &(VV->data[M]); *//*   vdup = &(VV->data[2*M]); *//*   vddn = &(VV->data[M]); *//*   /\* first do i=1 consider slip & no slip *\/ *//*   i=1; *//*   im = i-1; *//*   hbim = HBAR[im]; *//*   him = HH[im]; *//*   tmp1 = hbim * (*vdup++ - *vd); *//* #ifdef SLIP *//*   tmp2 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*   tmp2 = 2.0*HEXT0* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd+MN)); *//*   *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*   vd++;  *//*   for (j=1;j<ny-1;j++) { *//*     tmp1 = hbim * (*vdup++ - *vd); *//* #ifdef SLIP *//*     tmp2 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*     tmp2 = 2.0*HEXT0* (*vd); *//* #endif /\* NOSLIP *\/ *//*     tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd-1)); *//*     *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*     vd++;  *//*   } *//*   tmp1 = hbim * (*vdup++ - *vd); *//* #ifdef SLIP *//*     tmp2 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*     tmp2 = 2.0*HEXT0* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp3 = him*(*(vd-MN) - 2.0*(*vd) + *(vd-1)); *//*   *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*   vd++;  *//*   /\* away from BC do the interior *\/ *//*   for (i=2;i<nx-1;i++) { *//*     im = i-1; *//*     hbim = HBAR[im]; *//*     hbim2 = HBAR[im-1]; *//*     him = HH[im]; *//*     tmp1 = hbim * (*vdup++ - *vd); *//*     tmp2 = hbim2 * ( *vd - *vddn++); *//*     tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd+MN)); *//*     *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*     vd++;  *//*     for (j=1;j<ny-1;j++) { *//*       tmp1 = hbim * (*vdup++ - *vd); *//*       tmp2 = hbim2 * ( *vd - *vddn++); *//*       tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd-1)); *//*       *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*       vd++;  *//*     } *//*     tmp1 = hbim * (*vdup++ - *vd); *//*     tmp2 = hbim2 * ( *vd - *vddn++); *//*     tmp3 = him*(*(vd-MN) - 2.0*(*vd) + *(vd-1)); *//*     *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*     vd++;  *//*   } *//*   /\* last do i=nx-1  consider slip & no slip *\/ *//*   i=nx-1; *//*   im = i-1; *//*   hbim2 = HBAR[im-1]; *//*   him = HH[im]; *//* #ifdef SLIP *//*   tmp1 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*   tmp1 = -2.0*HEXTN* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp2 = hbim2 * ( *vd - *vddn++); *//*   tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd+MN)); *//*   *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*   vd++;  *//*   for (j=1;j<ny-1;j++) { *//* #ifdef SLIP *//*     tmp1 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*     tmp1 = -2.0*HEXTN* (*vd); *//* #endif /\* NOSLIP *\/ *//*     tmp2 = hbim2 * ( *vd - *vddn++); *//*     tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd-1)); *//*     *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*     vd++;  *//*   } *//* #ifdef SLIP *//*   tmp1 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*   tmp1 = -2.0*HEXTN* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp2 = hbim2 * ( *vd - *vddn++); *//*   tmp3 = him*(*(vd-MN) - 2.0*(*vd) + *(vd-1)); *//*   *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*tmp3); *//*   vd++;  *//* } */     /* **** NEWTONIAN 2 FUNCTIONS ********** *//* void newtonian2_u_all(field2D *NU) *//* { *//*   int i,j,im,M,MN; *//*   double tmp0, tmp1, tmp2, tmp3, tmp4; *//*   double *nud; *//*   double *ud, *udup, *uddn; *//*   double *vd, *vdup, *vdm, *vdupm; *//*   double hi, hm, hbar; *//*   M = NU->M; *//*   MN = M-1; *//*   nud = NU->data; *//*   ud = &(UU->data[M]); *//*   udup = &(UU->data[2*M]); *//*   uddn = UU->data; *//*   vd = &(VV->data[M]); *//*   vdup = &(VV->data[2*M]); *//*   for (i=1;i<nx-1;i++) { *//*     im = i-1; *//*     hbar = HBAR[im]; *//*     hm = HH[im]; *//*     hi = HH[i]; *//*     tmp0 = (*ud) * 2.0; *//*     tmp1 = hi * (*udup++ - *ud); *//*     tmp2 = hm * ( *ud - *uddn++); *//*     tmp3 = idy*(*(ud+1) - tmp0 + *(ud+MN)); *//*     tmp4 = idx*((*vdup - *vd) - (*(vdup+MN) - *(vd+MN))); *//*     *nud++ = nu_newt*(2.0*idx2*(tmp1-tmp2) + idy*hbar*(tmp3+tmp4)); *//*     ud++;  *//*     vdm = vd++; *//*     vdupm = vdup++; *//*     for (j=1;j<ny-1;j++) { *//*       tmp0 = (*ud) * 2.0; *//*       tmp1 = hi * (*udup++ - *ud); *//*       tmp2 = hm * ( *ud - *uddn++); *//*       tmp3 = idy*(*(ud+1) - tmp0 + *(ud-1)); *//*       tmp4 = idx*((*vdup++ - *vd++) - (*vdupm++ - *vdm++)); *//*       *nud++ = nu_newt*(2.0*idx2*(tmp1-tmp2) + idy*hbar*(tmp3+tmp4)); *//*       ud++;  *//*     } *//*     tmp0 = (*ud) * 2.0; *//*     tmp1 = hi * (*udup++ - *ud); *//*     tmp2 = hm * ( *ud - *uddn++); *//*     tmp3 = idy*(*(ud-1) - tmp0 + *(ud-MN)); *//*     tmp4 = idx*((*vdup++ - *vd++) - (*vdupm++ - *vdm++)); *//*     *nud++ = nu_newt*(2.0*idx2*(tmp1-tmp2) + idy*hbar*(tmp3+tmp4)); *//*     ud++; *//*   } *//* } *//* void newtonian2_v_all(field2D *NV) *//* { *//*   int i,j,im,M,MN; *//*   double tmp0, tmp1, tmp2, tmp3, tmp4; *//*   double *nvd; *//*   double *vd, *vdup, *vddn; *//*   double *ud, *uddn, *udp, *uddnp; *//*   double him, hbim, hbim2; *//*   M = NV->M; *//*   MN = M-1; *//*   /\* set up all the pointers *\/ *//*   nvd = NV->data; *//*   vd = &(VV->data[M]); *//*   vdup = &(VV->data[2*M]); *//*   vddn = vd; *//*   ud = &(UU->data[M]); *//*   udp = ud+1; *//*   uddn = ud; *//*   uddnp = udp; *//*   /\* first do i=1 consider slip & no slip *\/ *//*   i=1; *//*   im = i-1; *//*   hbim = HBAR[im]; *//*   him = HH[im]; *//*   tmp1 = hbim * (idx*(*vdup++ - *vd) + idy*(*udp++ - *ud++)); *//* #ifdef SLIP *//*   tmp2 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*   tmp2 = 2.0*HEXT0* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd+MN)); *//*   *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*   vd++;  *//*   for (j=1;j<ny-1;j++) { *//*     tmp1 = hbim * (idx*(*vdup++ - *vd) + idy*(*udp++ - *ud++)); *//* #ifdef SLIP *//*     tmp2 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*     tmp2 = 2.0*HEXT0* (*vd); *//* #endif /\* NOSLIP *\/ *//*     tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd-1)); *//*     *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*     vd++;  *//*   } *//*   tmp1 = hbim * (idx*(*vdup++ - *vd) + idy*(*(udp++ - M) - *ud++)); *//* #ifdef SLIP *//*   tmp2 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*   tmp2 = 2.0*HEXT0* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp3 = him*(*(vd-MN) - 2.0*(*vd) + *(vd-1)); *//*   *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*   vd++;  *//*   /\* away from BC do the interior *\/ *//*   for (i=2;i<nx-1;i++) { *//*     im = i-1; *//*     hbim = HBAR[im]; *//*     hbim2 = HBAR[im-1]; *//*     him = HH[im]; *//*     tmp1 = hbim * (idx*(*vdup++ - *vd) + idy*(*udp++ - *ud++)); *//*     tmp2 = hbim2 * (idx*( *vd - *vddn++) + idy*(*uddnp++ - *uddn++));  *//*     tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd+MN)); *//*     *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*     vd++;  *//*     for (j=1;j<ny-1;j++) { *//*       tmp1 = hbim * (idx*(*vdup++ - *vd) + idy*(*udp++ - *ud++)); *//*       tmp2 = hbim2 * (idx*( *vd - *vddn++) + idy*(*uddnp++ - *uddn++)); *//*       tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd-1)); *//*       *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*       vd++;  *//*     } *//*     tmp1 = hbim * (idx*(*vdup++ - *vd) + idy*(*(udp++ -M) - *ud++)); *//*     tmp2 = hbim2 * (idx* (*vd - *vddn++) + idy*(*(uddnp++ -M) - *uddn++)); *//*     tmp3 = him*(*(vd-MN) - 2.0*(*vd) + *(vd-1)); *//*     *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*     vd++;  *//*   } *//*   /\* last do i=nx-1  consider slip & no slip *\/ *//*   i=nx-1; *//*   im = i-1; *//*   hbim2 = HBAR[im-1]; *//*   him = HH[im]; *//* #ifdef SLIP *//*   tmp1 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*   tmp1 = -2.0*HEXTN* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp2 = hbim2 * (idx* (*vd - *vddn++) + idy*(*uddnp++ - *uddn++)); *//*   tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd+MN)); *//*   *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*   vd++;  *//*   for (j=1;j<ny-1;j++) { *//* #ifdef SLIP *//*     tmp1 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*     tmp1 = -2.0*HEXTN* (*vd); *//* #endif /\* NOSLIP *\/ *//*     tmp2 = hbim2 * (idx* (*vd - *vddn++) + idy*(*uddnp++ - *uddn++)); *//*     tmp3 = him*(*(vd+1) - 2.0*(*vd) + *(vd-1)); *//*     *nvd++ = nu_newt*(idx2*(tmp1-tmp2) + idy2*2.0*tmp3); *//*     vd++;  *//*   } *//* #ifdef SLIP *//*   tmp1 = 0.0; *//* #endif  /\* SLIP *\/ *//* #ifdef NOSLIP *//*   tmp1 = -2.0*HEXTN* (*vd); *//* #endif /\* NOSLIP *\/ *//*   tmp2 = hbim2 * (idx* (*vd - *vddn++) + idy*(*(uddnp++ -M) - *uddn++)); *//*   tmp3 = him*(*(vd-MN) - 2.0*(*vd) + *(vd-1)); *//*   *nvd++ = nu_newt*(idx*(tmp1-tmp2) + idy2*2.0*tmp3); *//*   vd++;  *//* } */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -