source: CPL/oasis3-mct_5.0/examples/spoc/spoc_regridding/function_ana.f90 @ 6328

Last change on this file since 6328 was 6328, checked in by aclsce, 17 months ago

First import of oasis3-mct_5.0 (from oasis git server, branch OASIS3-MCT_5.0)

File size: 1.3 KB
Line 
1SUBROUTINE function_ana(ni, nj, xcoor, ycoor, fnc_ana)
2
3!**** *function ana*  - calculate analytical function
4  !
5  IMPLICIT NONE
6  !
7  INTEGER, PARAMETER :: wp = SELECTED_REAL_KIND(12,307) ! double
8  !
9  INTEGER, INTENT(IN) :: ni, nj
10  REAL(kind=wp), DIMENSION(ni,nj), INTENT(IN)  :: xcoor, ycoor
11  REAL(kind=wp), DIMENSION(ni,nj), INTENT(OUT) :: fnc_ana
12  !
13  REAL (kind=wp), PARAMETER    :: dp_pi=3.14159265359
14  REAL (kind=wp), PARAMETER    :: dp_conv = dp_pi/180.
15  REAL(kind=wp)  :: dp_length, coef, coefmult
16  INTEGER             :: i,j
17  CHARACTER(LEN=7) :: cl_anaftype="fcos"
18  !
19  DO j=1,nj
20    DO i=1,ni
21!
22      SELECT CASE (cl_anaftype)
23      CASE ("fcos")
24        dp_length = 1.2*dp_pi
25        coef = 2.
26        coefmult = 1.
27        fnc_ana(i,j) = coefmult*(coef - COS( dp_pi*(ACOS( COS(xcoor(i,j)*dp_conv)*COS(ycoor(i,j)*dp_conv) )/dp_length)) )
28!
29      CASE ("fcossin")
30        dp_length = 1.d0*dp_pi
31        coef = 21.d0
32        coefmult = 3.846d0 * 20.d0
33        fnc_ana(i,j) = coefmult*(coef - COS( dp_pi*(ACOS( COS(ycoor(i,j)*dp_conv)*COS(ycoor(i,j)*dp_conv) )/dp_length)) * &
34                                        SIN( dp_pi*(ASIN( SIN(xcoor(i,j)*dp_conv)*SIN(ycoor(i,j)*dp_conv) )/dp_length)) )
35      END SELECT
36!
37    ENDDO
38  ENDDO
39  !
40END SUBROUTINE function_ana
Note: See TracBrowser for help on using the repository browser.