Changeset 106 for altifloat/src/lapfilu.h
- Timestamp:
- 07/16/13 01:22:15 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
altifloat/src/lapfilu.h
r105 r106 1 forward (YREAL xu_d, YREAL fij, YREAL fim1j, YREAL fip1j, YREAL fijm1, YREAL fijp1)1 forward (YREAL xu_d, YREAL uij, YREAL uip1j, YREAL uijp1, YREAL uijm1, YREAL uim1j, YREAL vij, YREAL vip1jm1, YREAL vijm1, YREAL vip1j, YREAL c1, YREAL c2,YREAL c3,YREAL c4,YREAL c5,YREAL c6,YREAL c7,YREAL c8,YREAL c9,YREAL mask) 2 2 { 3 3 … … 12 12 13 13 //Example: a weighted mean 14 YS1= c1*fij + c2*fim1j + c3*fip1j + c4*fijm1 + c5*fijp1;14 YS1=uij + dtfil*mask*(c1*uij + c2*uip1j + c3*uijp1 + c4*uijm1 + c5*uim1j + c6*vij + c7*vip1jm1 + c8*vijm1 + c9*vip1j); 15 15 } 16 16 } 17 17 18 18 19 backward (YREAL xu_d, YREAL fij, YREAL fim1j, YREAL fip1j, YREAL fijm1, YREAL fijp1) 20 { 19 backward (YREAL xu_d, YREAL uij, YREAL uip1j, YREAL uijp1, YREAL uijm1, YREAL uim1j, YREAL vij, YREAL vip1jm1, YREAL vijm1, YREAL vip1j, YREAL c1, YREAL c2,YREAL c3,YREAL c4,YREAL c5,YREAL c6,YREAL c7,YREAL c8,YREAL c9,YREAL mask){ 21 20 /* 22 21 if (Yi==9 && Yj==16) … … 30 29 else 31 30 { 32 YJ1I2=c1; 33 YJ1I3=c2; 34 YJ1I4=c3; 35 YJ1I5=c4; 36 YJ1I6=c5; 31 YJ1I2=1+c1*mask*dtfil; 32 YJ1I3=c2*mask*dtfil; 33 YJ1I4=c3*mask*dtfil; 34 YJ1I5=c4*mask*dtfil; 35 YJ1I6=c5*mask*dtfil; 36 YJ1I7=c6*mask*dtfil; 37 YJ1I8=c7*mask*dtfil; 38 YJ1I9=c8*mask*dtfil; 39 YJ1I10=c9*mask*dtfil; 37 40 } 38 41 … … 41 44 42 45 43 //LLL START44 forward (YREAL xu_d, YREAL fij, YREAL fim1j, YREAL fip1j, YREAL fijm1, YREAL fijp1, YREAL wij, YREAL wim1j, YREAL wip1j, YREAL wijm1, YREAL wijp1)45 {46 47 if (Yt==1) { //first step time48 YS1=xu_d;49 }50 else51 {52 /* Boundary condition ?53 if(Yi==0 || Yi==nlon-1 || Yj==0 || Yj==nlat-1)54 */55 56 //LLL The filter is actually L = I + kp Dt D, where D is the Laplacian Operator, I is the identity matrix, kp is the diffusion coefficient, Dt is the time step. kp*Dt is included in the weight matrix w among possibly other things to be determined soon57 /* if(Yi==Yj) {58 YS1 = 1.0 + c1*fij*wij + c2*fim1j*wim1j + c3*fip1j*wip1j + c4*fijm1*wijm1 + c5*fijp1*wijp1;59 }60 else61 {62 YS1 = c1*fij*wij + c2*fim1j*wim1j + c3*fip1j*wip1j + c4*fijm1*wijm1 + c5*fijp1*wijp1;63 }64 }65 }66 67 68 backward (YREAL xu_d, YREAL fij, YREAL fim1j, YREAL fip1j, YREAL fijm1, YREAL fijp1, YREAL wij, YREAL wim1j, YREAL wip1j, YREAL wijm1, YREAL wijp1)69 {70 71 if (Yi==9 && Yj==16)72 {73 printf("YG=%g\n",YG1_u_d(Yi,Yj));74 }75 76 if (Yt==1) { //first step time77 YJ1I1=1;78 }79 else80 {81 YJ1I2=c1*wij;82 YJ1I3=c2*wim1j;83 YJ1I4=c3*wip1j;84 YJ1I5=c4*wijm1;85 YJ1I6=c5*wijp1;86 YJ1I7=c1*fij;87 YJ1I8=c2*fim1j;88 YJ1I9=c3*fip1j;89 YJ1I10=c4*fijm1;90 YJ1I11=c5*fijp1;91 }92 }93 */94 //LLL end
Note: See TracChangeset
for help on using the changeset viewer.