Ignore:
Timestamp:
07/16/13 01:22:15 (11 years ago)
Author:
leila_ocean
Message:

ready to implement filter

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) 
     1forward (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) 
    22{ 
    33  
     
    1212 
    1313      //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); 
    1515   } 
    1616} 
    1717 
    1818 
    19 backward (YREAL xu_d, YREAL fij, YREAL fim1j, YREAL fip1j, YREAL fijm1, YREAL fijp1) 
    20 { 
     19backward (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){ 
    2120  /* 
    2221  if (Yi==9 && Yj==16) 
     
    3029  else 
    3130    { 
    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; 
    3740    } 
    3841 
     
    4144 
    4245 
    43 //LLL START 
    44 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 time 
    48     YS1=xu_d; 
    49   } 
    50   else 
    51     { 
    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 soon 
    57 /*      if(Yi==Yj) { 
    58         YS1 = 1.0 + c1*fij*wij + c2*fim1j*wim1j + c3*fip1j*wip1j + c4*fijm1*wijm1 + c5*fijp1*wijp1; 
    59     } 
    60     else 
    61     { 
    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 time 
    77     YJ1I1=1; 
    78   }  
    79   else 
    80     { 
    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.