[5725] | 1 | SUBROUTINE 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 | ! |
---|
| 40 | END SUBROUTINE function_ana |
---|