source: codes/icosagcm/trunk/src/vorticity.f90 @ 182

Last change on this file since 182 was 146, checked in by ymipsl, 11 years ago

Set constant sign for wind way :
ne(ij,right)==ne_right=1
ne(ij,rup)==ne_rup=-1
ne(ij,lup)==ne_lup=1
ne(ij,left)==ne_left=-1
ne(ij,ldown)==ne_ldown=1
ne(ij,rdown)==ne_rdown=-1

Modified transfert function to be compliant for this convention.

YM

File size: 1.6 KB
Line 
1MODULE vorticity_mod
2
3CONTAINS
4
5  SUBROUTINE vorticity(f_ue,f_vort)
6  USE icosa
7  IMPLICIT NONE
8    TYPE(t_field), POINTER :: f_ue(:)
9    TYPE(t_field), POINTER :: f_vort(:)
10 
11    REAL(rstd), POINTER :: ue(:,:)
12    REAL(rstd), POINTER :: vort(:,:)
13    INTEGER :: ind
14
15    CALL transfert_request(f_ue,req_e1_vect)
16   
17    DO ind=1,ndomain
18      CALL swap_dimensions(ind)
19      CALL swap_geometry(ind)
20      ue=f_ue(ind)
21      vort=f_vort(ind)
22      CALL compute_vorticity(ue, vort)
23    ENDDO
24 
25  END SUBROUTINE vorticity
26 
27  SUBROUTINE compute_vorticity(ue,vort)
28  USE icosa
29  USE disvert_mod
30  IMPLICIT NONE
31    REAL(rstd),INTENT(IN)  :: ue(3*iim*jjm,llm)
32    REAL(rstd),INTENT(OUT) :: vort(2*iim*jjm,llm)
33    INTEGER :: i,j,ij,l
34
35    DO l = 1,llm
36      DO j=jj_begin-1,jj_end+1
37        DO i=ii_begin-1,ii_end+1
38          ij=(j-1)*iim+i
39       
40           vort(ij+z_up,l) = 1./Av(ij+z_up)*(  ne(ij,rup)        * ue(ij+u_rup,l)        * de(ij+u_rup)         &
41                                + ne(ij+t_rup,left) * ue(ij+t_rup+u_left,l) * de(ij+t_rup+u_left)               &
42                                - ne(ij,lup)        * ue(ij+u_lup,l)        * de(ij+u_lup) )                               
43
44           vort(ij+z_down,l) = 1./Av(ij+z_down)*(  ne(ij,ldown)         * ue(ij+u_ldown,l)         * de(ij+u_ldown)          &
45                                   + ne(ij+t_ldown,right) * ue(ij+t_ldown+u_right,l) * de(ij+t_ldown+u_right)                &
46                                   - ne(ij,rdown)         * ue(ij+u_rdown,l)          * de(ij+u_rdown) )
47
48        ENDDO
49      ENDDO
50    ENDDO
51   
52  END SUBROUTINE compute_vorticity
53
54END MODULE vorticity_mod
Note: See TracBrowser for help on using the repository browser.