📄 lateral_mixing.c
字号:
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 + -