source: codes/icosagcm/trunk/src/diagnostics/vorticity.f90

Last change on this file was 548, checked in by dubos, 7 years ago

trunk : reorganize source tree

File size: 1.7 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      IF (.NOT. assigned_domain(ind)) CYCLE
19      CALL swap_dimensions(ind)
20      CALL swap_geometry(ind)
21      ue=f_ue(ind)
22      vort=f_vort(ind)
23      CALL compute_vorticity(ue, vort)
24    ENDDO
25 
26  END SUBROUTINE vorticity
27 
28  SUBROUTINE compute_vorticity(ue,vort)
29  USE icosa
30  USE disvert_mod
31  USE omp_para
32  IMPLICIT NONE
33    REAL(rstd),INTENT(IN)  :: ue(3*iim*jjm,llm)
34    REAL(rstd),INTENT(OUT) :: vort(2*iim*jjm,llm)
35    INTEGER :: i,j,ij,l
36
37    DO l = ll_begin,ll_end
38      DO j=jj_begin-1,jj_end+1
39        DO i=ii_begin-1,ii_end+1
40          ij=(j-1)*iim+i
41       
42           vort(ij+z_up,l) = 1./Av(ij+z_up)*(  ne(ij,rup)        * ue(ij+u_rup,l)        * de(ij+u_rup)         &
43                                + ne(ij+t_rup,left) * ue(ij+t_rup+u_left,l) * de(ij+t_rup+u_left)               &
44                                - ne(ij,lup)        * ue(ij+u_lup,l)        * de(ij+u_lup) )                               
45
46           vort(ij+z_down,l) = 1./Av(ij+z_down)*(  ne(ij,ldown)         * ue(ij+u_ldown,l)         * de(ij+u_ldown)          &
47                                   + ne(ij+t_ldown,right) * ue(ij+t_ldown+u_right,l) * de(ij+t_ldown+u_right)                &
48                                   - ne(ij,rdown)         * ue(ij+u_rdown,l)          * de(ij+u_rdown) )
49
50        ENDDO
51      ENDDO
52    ENDDO
53   
54  END SUBROUTINE compute_vorticity
55
56END MODULE vorticity_mod
Note: See TracBrowser for help on using the repository browser.