Go to the documentation of this file.
6 #define TEST_W3GDATMD___disabled
7 #define TEST_W3GDATMD_W3NMOD___disabled
8 #define TEST_W3GDATMD_W3DIMX___disabled
9 #define TEST_W3GDATMD_W3DIMS___disabled
10 #define TEST_W3GDATMD_W3SETG___disabled
11 #define TEST_W3GDATMD_W3GNTX___disabled
12 #define TEST_W3GDATMD_W3DIMUG___disabled
13 #define TEST_W3GDATMD_W3SETREF___disabled
614 INTEGER,
PRIVATE :: ISTAT
682 REAL ,
POINTER ::
zb(:)
780 LOGICAL,
ALLOCATABLE :: uost_lcl_obstructed(:,:), uost_shd_obstructed(:,:)
781 INTEGER*1,
ALLOCATABLE :: uostlocalalpha(:,:,:,:), uostlocalbeta(:,:,:,:)
782 INTEGER*1,
ALLOCATABLE :: uostshadowalpha(:,:,:,:), uostshadowbeta(:,:,:,:)
783 real*4,
ALLOCATABLE :: uostcellsize(:,:,:)
784 REAL :: uostabmultfactor = 100
785 REAL :: uostcellsizefactor = 1000
786 REAL :: uostlocalfactor = 1
787 REAL :: uostshadowfactor = 1
788 LOGICAL :: uostenabled = .true.
1031 REAL :: is2c1, is2c2
1432 SUBROUTINE w3nmod ( NUMBER, NDSE, NDST, NAUX )
1498 INTEGER,
INTENT(IN) :: NUMBER, NDSE, NDST
1499 INTEGER,
INTENT(IN),
OPTIONAL :: NAUX
1506 INTEGER,
SAVE :: IENT = 0
1507 CALL strace (ient,
'W3NMOD')
1513 IF (
ngrids .NE. -1 )
THEN
1518 IF ( number .LT. 1 )
THEN
1519 WRITE (ndse,1002) number
1523 IF (
PRESENT(naux) )
THEN
1529 IF ( nlow .GT. 1 )
THEN
1530 WRITE (ndse,1003) -nlow
1539 ALLOCATE (
grids(nlow:number), &
1540 sgrds(nlow:number), &
1541 mpars(nlow:number), &
1543 check_alloc_status( istat )
1549 grids(i)%GINIT = .false.
1550 grids(i)%GUGINIT = .false.
1551 sgrds(i)%SINIT = .false.
1552 mpars(i)%PINIT = .false.
1554 mpars(i)%SNLPS%NDPTHS = 0
1557 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3NMOD)
1558 WRITE (ndst,9000) nlow,
ngrids
1565 1001
FORMAT (/
' *** ERROR W3NMOD : GRIDS ALREADY INITIALIZED *** '/ &
1567 1002
FORMAT (/
' *** ERROR W3NMOD : ILLEGAL NUMBER OF GRIDS *** '/ &
1569 1003
FORMAT (/
' *** ERROR W3NMOD : ILLEGAL NUMBER OF AUX GRIDS *** '/&
1571 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3NMOD)
1572 9000
FORMAT (
' TEST W3NMOD : SETTING UP FOR GRIDS ',i3, &
1580 SUBROUTINE w3dimx ( IMOD, MX, MY, MSEA, NDSE, NDST &
1582 , MCel, MUFc, MVFc, MRLv, MBSMC &
1583 , MARC, MBAC, MSPEC &
1672 INTEGER,
INTENT(IN) :: IMOD, MX, MY, MSEA, NDSE, NDST
1674 INTEGER,
INTENT(IN) :: MCel, MUFc, MVFc, MRLv, MBSMC
1675 INTEGER,
INTENT(IN) :: MARC, MBAC, MSPEC
1682 INTEGER :: IARC, IBAC, IBSMC
1685 INTEGER,
SAVE :: IENT = 0
1686 CALL strace (ient,
'W3DIMX')
1692 IF (
ngrids .EQ. -1 )
THEN
1702 IF ( mx.LT.3 .OR. (my.LT.3.AND.
gtype.NE.
ungtype) .OR. msea.LT.1 )
THEN
1703 WRITE (ndse,1003) mx, my, msea,
gtype
1707 IF (
grids(imod)%GINIT )
THEN
1711 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMX)
1712 WRITE (ndst,9000) imod, mx, my, msea
1721 ALLOCATE (
grids(imod)%ZB(msea), &
1722 grids(imod)%XGRD(my,mx), &
1723 grids(imod)%YGRD(my,mx), &
1725 check_alloc_status( istat )
1728 ALLOCATE (
grids(imod)%MAPSTA(my,mx), &
1729 grids(imod)%MAPST2(my,mx), &
1730 grids(imod)%MAPFS(my,mx), &
1731 grids(imod)%MAPSF(msea,3), &
1732 grids(imod)%FLAGST(msea), &
1734 grids(imod)%AnglD(msea), &
1736 grids(imod)%CLATS(0:msea), &
1737 grids(imod)%CLATIS(0:msea), &
1738 grids(imod)%CTHG0S(0:msea), &
1739 grids(imod)%TRNX(my,mx), &
1740 grids(imod)%TRNY(my,mx), &
1741 grids(imod)%DXDP(my,mx), &
1742 grids(imod)%DXDQ(my,mx), &
1743 grids(imod)%DYDP(my,mx), &
1744 grids(imod)%DYDQ(my,mx), &
1745 grids(imod)%DPDX(my,mx), &
1746 grids(imod)%DPDY(my,mx), &
1747 grids(imod)%DQDX(my,mx), &
1748 grids(imod)%DQDY(my,mx), &
1749 grids(imod)%GSQRT(my,mx), &
1750 grids(imod)%HPFAC(my,mx), &
1751 grids(imod)%HQFAC(my,mx), &
1753 check_alloc_status( istat )
1755 ALLOCATE (
grids(imod)%SED_D50(0:msea), &
1756 grids(imod)%SED_PSIC(0:msea),&
1758 check_alloc_status( istat )
1762 ALLOCATE (
grids(imod)%NLvCel(0:mrlv), &
1763 grids(imod)%NLvUFc(0:mrlv), &
1764 grids(imod)%NLvVFc(0:mrlv), &
1765 grids(imod)%IJKCel(4, -9:mcel), &
1766 grids(imod)%IJKUFc(7,mufc), &
1767 grids(imod)%IJKVFc(7,mvfc), &
1768 grids(imod)%CTRNX(-9:mcel), &
1769 grids(imod)%CTRNY(-9:mcel), &
1770 grids(imod)%CLATF(mvfc), &
1772 check_alloc_status( istat )
1774 ALLOCATE (
grids(imod)%IJKCel3(-9:mcel), &
1775 grids(imod)%IJKCel4(-9:mcel), &
1776 grids(imod)%IJKVFc5(mvfc), &
1777 grids(imod)%IJKVFc6(mvfc), &
1778 grids(imod)%IJKUFc5(mufc), &
1779 grids(imod)%IJKUFc6(mufc), &
1783 IF( marc .LE. 1 ) iarc = 1
1785 IF( mbac .LE. 1 ) ibac = 1
1787 IF( mbsmc .LE. 1 ) ibsmc = 1
1788 ALLOCATE (
grids(imod)%ICLBAC(ibac), &
1789 grids(imod)%ANGARC(iarc), &
1790 grids(imod)%SPCBAC(mspec,ibac), &
1791 grids(imod)%ISMCBP(ibsmc), &
1793 check_alloc_status( istat )
1796 grids(imod)%NLvCel(:) = 0
1797 grids(imod)%NLvUFc(:) = 0
1798 grids(imod)%NLvVFc(:) = 0
1799 grids(imod)%ISMCBP(:) = 0
1800 grids(imod)%ICLBAC(:) = 0
1801 grids(imod)%IJKCel(:,:) = 0
1802 grids(imod)%IJKUFc(:,:) = 0
1803 grids(imod)%IJKVFc(:,:) = 0
1804 grids(imod)%CTRNX(:) = 0.0
1805 grids(imod)%CTRNY(:) = 0.0
1806 grids(imod)%CLATF(:) = 0.0
1807 grids(imod)%ANGARC(:) = 0.0
1810 grids(imod)%FLAGST = .true.
1811 grids(imod)%GINIT = .true.
1812 grids(imod)%MAPSF(:,3)=0.
1813 grids(imod)%CLATS(0)=1.
1814 grids(imod)%CLATIS(0)=1.
1815 grids(imod)%CTHG0S(0)=1.
1818 ALLOCATE (
grids(imod)%RREF(4), &
1819 grids(imod)%REFPARS(10), &
1821 check_alloc_status( istat )
1823 grids(imod)%RREF(:)=.false.
1824 grids(imod)%REFPARS(:)=0.
1828 ALLOCATE (
grids(imod)%REFLC(4,0:
nsea), &
1831 check_alloc_status( istat )
1834 ALLOCATE (
grids(imod)%IGPARS(12), stat=istat )
1835 check_alloc_status( istat )
1838 ALLOCATE (
grids(imod)%IC2PARS(9), stat=istat )
1839 check_alloc_status( istat )
1842 ALLOCATE (
grids(imod)%IC3PARS(16), stat=istat )
1843 check_alloc_status( istat )
1847 ALLOCATE (
grids(imod)%IC4PARS(1), stat=istat )
1848 check_alloc_status( istat )
1849 ALLOCATE (
grids(imod)%IC4_KI(
nic4), stat=istat )
1850 check_alloc_status( istat )
1851 ALLOCATE (
grids(imod)%IC4_FC(
nic4), stat=istat )
1852 check_alloc_status( istat )
1853 ALLOCATE (
grids(imod)%IC4_CN(
nic42), stat=istat )
1854 check_alloc_status( istat )
1857 ALLOCATE (
grids(imod)%IC5PARS(9), stat=istat )
1858 check_alloc_status( istat )
1861 ALLOCATE (
grids(imod)%IS2PARS(24), stat=istat )
1862 check_alloc_status( istat )
1864 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMX)
1870 grids(imod)%REFLD(:,:)=0
1873 grids(imod)%IGPARS(:)=0.
1876 grids(imod)%IC2PARS(:)=0.
1879 grids(imod)%IS2PARS(:)=0.
1887 grids(imod)%NSEA = msea
1888 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMX)
1895 CALL w3setg ( imod, ndse, ndst )
1896 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMX)
1904 1001
FORMAT (/
' *** ERROR W3DIMX : GRIDS NOT INITIALIZED *** '/ &
1905 ' RUN W3NMOD FIRST '/)
1906 1002
FORMAT (/
' *** ERROR W3DIMX : ILLEGAL MODEL NUMBER *** '/ &
1910 1003
FORMAT (/
' *** ERROR W3DIMX : ILLEGAL GRID DIMENSION(S) *** '/ &
1912 1004
FORMAT (/
' *** ERROR W3DIMX : ARRAY(S) ALREADY ALLOCATED *** ')
1913 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMX)
1914 9000
FORMAT (
' TEST W3DIMX : MODEL ',i4,
' DIM. AT ',2i5,i7)
1915 9001
FORMAT (
' TEST W3DIMX : ARRAYS ALLOCATED')
1916 9002
FORMAT (
' TEST W3DIMX : DIMENSIONS STORED')
1917 9003
FORMAT (
' TEST W3DIMX : POINTERS RESET')
1924 SUBROUTINE w3dims ( IMOD, MK, MTH, NDSE, NDST )
2007 INTEGER,
INTENT(IN) :: IMOD, MK, MTH, NDSE, NDST
2012 INTEGER,
SAVE :: MK2, MSPEC
2017 INTEGER,
SAVE :: IENT = 0
2018 CALL strace (ient,
'W3DIMS')
2024 IF (
ngrids .EQ. -1 )
THEN
2034 IF ( mk.LT.3 .OR. mth.LT.4 )
THEN
2035 WRITE (ndse,1003) mk, mth
2039 IF (
sgrds(imod)%SINIT )
THEN
2046 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMS)
2047 WRITE (ndst,9000) imod, mth, mk, mk2, mspec
2053 ALLOCATE (
sgrds(imod)%MAPWN(mspec+mth), &
2054 sgrds(imod)%MAPTH(mspec+mth), &
2055 sgrds(imod)%TH(mth), &
2056 sgrds(imod)%ESIN(mspec+mth), &
2057 sgrds(imod)%ECOS(mspec+mth), &
2058 sgrds(imod)%ES2(mspec+mth), &
2059 sgrds(imod)%ESC(mspec+mth), &
2060 sgrds(imod)%EC2(mspec+mth), &
2061 sgrds(imod)%SIG(0:mk+1), &
2062 sgrds(imod)%SIG2(mspec), &
2063 sgrds(imod)%DSIP(0:mk+1), &
2064 sgrds(imod)%DSII(mk), &
2065 sgrds(imod)%DDEN(mk), &
2066 sgrds(imod)%DDEN2(mspec), &
2068 check_alloc_status( istat )
2069 sgrds(imod)%MAPWN(:)=0.
2070 sgrds(imod)%MAPTH(:)=0.
2071 sgrds(imod)%TH(:)=0.
2072 sgrds(imod)%ESIN(:)=0.
2073 sgrds(imod)%ECOS(:)=0.
2074 sgrds(imod)%ES2(:)=0.
2075 sgrds(imod)%ESC(:)=0.
2076 sgrds(imod)%EC2(:)=0.
2077 sgrds(imod)%SIG(:)=0.
2078 sgrds(imod)%SIG2(:)=0.
2079 sgrds(imod)%DSIP(:)=0.
2080 sgrds(imod)%DSII(:)=0.
2081 sgrds(imod)%DDEN(:)=0.
2082 sgrds(imod)%DDEN2(:)=0.
2084 ALLOCATE (
mpars(imod)%SRCPS%IKTAB(mk,
ndtab), &
2088 check_alloc_status( istat )
2089 mpars(imod)%SRCPS%IKTAB(:,:)=0.
2090 mpars(imod)%SRCPS%DCKI(:,:)=0.
2091 mpars(imod)%SRCPS%QBI(:,:)=0.
2093 ALLOCATE(
mpars(imod)%SRCPS%SATINDICES(2*sdsnth+1,mth), &
2094 mpars(imod)%SRCPS%SATWEIGHTS(2*sdsnth+1,mth), &
2095 mpars(imod)%SRCPS%CUMULW(mspec,mspec), &
2097 check_alloc_status( istat )
2098 mpars(imod)%SRCPS%SATINDICES(:,:)=0.
2099 mpars(imod)%SRCPS%SATWEIGHTS(:,:)=0.
2100 mpars(imod)%SRCPS%CUMULW(:,:)=0.
2103 sgrds(imod)%SINIT = .true.
2104 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMS)
2111 CALL w3setg ( imod, ndse, ndst )
2112 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMS)
2123 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMS)
2131 1001
FORMAT (/
' *** ERROR W3DIMS : GRIDS NOT INITIALIZED *** '/ &
2132 ' RUN W3NMOD FIRST '/)
2133 1002
FORMAT (/
' *** ERROR W3DIMS : ILLEGAL MODEL NUMBER *** '/ &
2137 1003
FORMAT (/
' *** ERROR W3DIMS : ILLEGAL GRID DIMENSION(S) *** '/ &
2139 1004
FORMAT (/
' *** ERROR W3DIMS : ARRAY(S) ALREADY ALLOCATED *** ')
2140 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMS)
2141 9000
FORMAT (
' TEST W3DIMS : MODEL ',i4,
' DIM. AT ',3i5,i7)
2142 9001
FORMAT (
' TEST W3DIMS : ARRAYS ALLOCATED')
2143 9002
FORMAT (
' TEST W3DIMS : POINTERS RESET')
2144 9003
FORMAT (
' TEST W3DIMS : DIMENSIONS STORED')
2151 SUBROUTINE w3setg ( IMOD, NDSE, NDST )
2244 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST
2250 INTEGER,
SAVE :: IENT = 0
2251 CALL strace (ient,
'W3SETG')
2257 IF (
ngrids .EQ. -1 )
THEN
2266 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3SETG)
2267 WRITE (ndst,9000) imod
2866 1001
FORMAT (/
' *** ERROR W3SETG : GRIDS NOT INITIALIZED *** '/ &
2867 ' RUN W3NMOD FIRST '/)
2868 1002
FORMAT (/
' *** ERROR W3SETG : ILLEGAL MODEL NUMBER *** '/ &
2872 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3SETG)
2873 9000
FORMAT (
' TEST W3SETG : GRID/MODEL ',i4,
' SELECTED')
2880 SUBROUTINE w3gntx ( IMOD, NDSE, NDST )
2953 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST
2958 INTEGER,
PARAMETER :: NFD = 4
2959 LOGICAL,
PARAMETER :: PTILED = .false.
2960 LOGICAL,
PARAMETER :: QTILED = .false.
2961 LOGICAL,
PARAMETER :: IJG = .false.
2962 LOGICAL,
PARAMETER :: SPHERE = .false.
2963 INTEGER :: PRANGE(2), QRANGE(2)
2964 INTEGER :: LBI(2), UBI(2), LBO(2), UBO(2), ISTAT
2965 REAL ,
ALLOCATABLE :: COSA(:,:)
2967 INTEGER,
SAVE :: IENT = 0
2968 CALL strace (ient,
'W3GNTX')
2974 IF (
ngrids .EQ. -1 )
THEN
2984 SELECT CASE (
grids(imod)%GTYPE )
2989 WRITE (ndse,1003)
grids(imod)%GTYPE
2992 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
2993 WRITE (ndst,9000) imod
3001 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
3009 CALL w3setg ( imod, ndse, ndst )
3010 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
3019 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
3020 ALLOCATE ( cosa(
ny,
nx), stat=istat )
3021 check_alloc_status( istat )
3029 SELECT CASE (
gtype )
3033 prange, qrange, lbi, ubi, lbo, ubo, real(
xgrd), real(
ygrd), &
3034 nfd=nfd, sphere=sphere, dx=
sx, dy=
sy, &
3038 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
3042 IF ( istat.NE.0 )
THEN
3043 WRITE (ndse,1004)
gtype
3048 prange, qrange, lbi, ubi, lbo, ubo, real(
xgrd), real(
ygrd), &
3049 nfd=nfd, sphere=sphere, &
3053 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
3057 IF ( istat.NE.0 )
THEN
3058 WRITE (ndse,1004)
gtype
3063 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
3064 WRITE(ndst,
'(A,2E14.6)')
'HPFAC MIN/MAX:',minval(
hpfac),maxval(
hpfac)
3065 WRITE(ndst,
'(A,2E14.6)')
'HQFAC MIN/MAX:',minval(
hqfac),maxval(
hqfac)
3066 WRITE(ndst,
'(A,2E14.6)')
'GSQRT MIN/MAX:',minval(
gsqrt),maxval(
gsqrt)
3067 WRITE(ndst,
'(A,2E14.6)')
'DXDP MIN/MAX:',minval(
dxdp),maxval(
dxdp)
3068 WRITE(ndst,
'(A,2E14.6)')
'DYDP MIN/MAX:',minval(
dydp),maxval(
dydp)
3069 WRITE(ndst,
'(A,2E14.6)')
'DXDQ MIN/MAX:',minval(
dxdq),maxval(
dxdq)
3070 WRITE(ndst,
'(A,2E14.6)')
'DYDQ MIN/MAX:',minval(
dydq),maxval(
dydq)
3071 WRITE(ndst,
'(A,2E14.6)')
'DPDX MIN/MAX:',minval(
dpdx),maxval(
dpdx)
3072 WRITE(ndst,
'(A,2E14.6)')
'DPDY MIN/MAX:',minval(
dpdy),maxval(
dpdy)
3073 WRITE(ndst,
'(A,2E14.6)')
'DQDX MIN/MAX:',minval(
dqdx),maxval(
dqdx)
3074 WRITE(ndst,
'(A,2E14.6)')
'DQDY MIN/MAX:',minval(
dqdy),maxval(
dqdy)
3075 WRITE(ndst,
'(A,2E14.6)')
'COSA MIN/MAX:',minval(cosa),maxval(cosa)
3077 DEALLOCATE ( cosa, stat=istat )
3078 check_dealloc_status( istat )
3083 1001
FORMAT (/
' *** ERROR W3GNTX : GRIDS NOT INITIALIZED *** '/ &
3084 ' RUN W3NMOD FIRST '/)
3085 1002
FORMAT (/
' *** ERROR W3GNTX : ILLEGAL MODEL NUMBER *** '/ &
3089 1003
FORMAT (/
' *** ERROR W3GNTX : UNSUPPORTED TYPE OF GRID *** '/ &
3091 1004
FORMAT (/
' *** ERROR W3GNTX : ERROR OCCURED IN W3CGDM *** '/ &
3094 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX)
3095 9000
FORMAT (
' TEST W3GNTX : MODEL ',i4)
3096 9001
FORMAT (
' TEST W3GNTX : SEARCH OBJECT CREATED')
3097 9002
FORMAT (
' TEST W3GNTX : POINTERS RESET')
3098 9003
FORMAT (
' TEST W3GNTX : GRID ARRAYS CONSTRUCTED')
3105 SUBROUTINE w3dimug ( IMOD, MTRI, MX, COUNTOTA, NNZ, NDSE, NDST )
3183 INTEGER,
INTENT(IN) :: IMOD, MTRI, MX, COUNTOTA, NNZ, NDSE, NDST
3184 INTEGER :: IAPROC = 1
3190 INTEGER,
SAVE :: IENT = 0
3191 CALL strace (ient,
'W3DIMUG')
3197 IF (
ngrids .EQ. -1 )
THEN
3203 WRITE (ndse,1002) imod,
ngrids
3206 IF (
grids(imod)%GUGINIT )
THEN
3211 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMUG)
3212 WRITE (ndst,9000) imod, mx, mtri
3218 ALLOCATE (
grids(imod)%TRIGP(3,mtri), &
3219 grids(imod)%SI(mx), &
3220 grids(imod)%XGRD(1,mx), &
3221 grids(imod)%YGRD(1,mx), &
3222 grids(imod)%ZB(mx), &
3223 grids(imod)%TRIA(mtri), &
3224 grids(imod)%CROSSDIFF(6,mtri), &
3225 grids(imod)%IEN(mtri,6), &
3226 grids(imod)%LEN(mtri,3), &
3227 grids(imod)%ANGLE(mtri,3), &
3228 grids(imod)%ANGLE0(mtri,3), &
3229 grids(imod)%CCON(mx), &
3230 grids(imod)%COUNTCON(mx), &
3231 grids(imod)%INDEX_CELL(mx+1), &
3232 grids(imod)%IE_CELL(countota), &
3233 grids(imod)%POS_CELL(countota), &
3235 grids(imod)%JAA(nnz), &
3236 grids(imod)%POSI(3,countota), &
3238 grids(imod)%JA_IE(3,3,mtri), &
3239 grids(imod)%IOBP(mx), &
3241 grids(imod)%IOBDP(mx), &
3242 grids(imod)%IOBPA(mx), &
3244 check_alloc_status( istat )
3246 grids(imod)%IOBP(:)=1
3247 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMUG)
3256 CALL w3setg ( imod, ndse, ndst )
3257 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMUG)
3268 grids(imod)%GUGINIT = .true.
3269 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMUG)
3276 1001
FORMAT (/
' *** ERROR W3DIMUG : GRIDS NOT INITIALIZED *** '/ &
3277 ' RUN W3NMOD FIRST '/)
3278 1002
FORMAT (/
' *** ERROR W3DIMUG : ILLEGAL MODEL NUMBER *** '/ &
3281 1004
FORMAT (/
' *** ERROR W3DIMUG : ARRAY(S) ALREADY ALLOCATED *** ')
3282 #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMUG)
3283 9000
FORMAT (
' TEST W3DIMUG: MODEL ',i4,
' DIM. AT ',2i5,i7)
3284 9001
FORMAT (
' TEST W3DIMUG : ARRAYS ALLOCATED')
3285 9002
FORMAT (
' TEST W3DIMUG : POINTERS RESET')
3286 9003
FORMAT (
' TEST W3DIMUG : DIMENSIONS STORED')
3356 INTEGER :: ISEA, IX, IY, IXY, IXN, IXP, IYN, IYP
3357 INTEGER :: J, K, NEIGH1(0:7)
3358 INTEGER :: ILEV, NLEV
3360 INTEGER,
SAVE :: IENT = 0
3363 REAL :: TRIX(NY*NX), TRIY(NY*NX), DX, DY, &
3364 COSAVG, SINAVG, THAVG, ANGLES(0:7), CLAT
3369 CALL strace (ient,
'W3SETREF')
3384 IF (
mapsta(iy,ix).GT.0)
THEN
3408 neigh1(1:3)=8*
mapst2(iy+1,ix+1:ix-1:-1)+
mapsta(iy+1,ix+1:ix-1:-1)
3410 neigh1(5:7)=8*
mapst2(iy-1,ix-1:ix+1)+
mapsta(iy-1,ix-1:ix+1)
3414 IF (minval(abs(neigh1)).EQ.0)
THEN
3420 angles(0)= atan2(
dydp(iy,ix),
dxdp(iy,ix)*clat)
3422 angles(2)= atan2(
dydq(iy,ix),
dxdq(iy,ix)*clat)
3424 angles(4:7)= angles(0:3)+
pi
3425 IF ((neigh1(0).GE.1).AND.(neigh1(4).GE.1))
THEN
3428 IF ((neigh1(0).GE.1).OR.(neigh1(4).GE.1))
refld(3,
mapfs(iy,ix))=1
3430 IF ((neigh1(2).EQ.1).AND.(neigh1(6).GE.1))
THEN
3433 IF ((neigh1(2).GE.1).OR.(neigh1(6).GE.1))
refld(4,
mapfs(iy,ix))=1
3448 WRITE(6,*)
'POINT (IX,IY):',ix,iy
3449 WRITE(6,*)
'REFT:',neigh1(3),neigh1(2), neigh1(1)
3450 WRITE(6,*)
'REFT:',neigh1(4),1, neigh1(0)
3451 WRITE(6,*)
'REFT:',neigh1(5:7)
3452 WRITE(6,*)
'ANG:',angles(3)*
rade,angles(2)*
rade, angles(1)*
rade
3453 WRITE(6,*)
'ANG:',angles(4)*
rade,1, angles(0) *
rade
3454 WRITE(6,*)
'ANG:',angles(5:7)*
rade
3455 WRITE(6,*)
'REFT:',
xgrd(iy+1,ix-1:ix+1),
ygrd(iy+1,ix-1:ix+1)
3456 WRITE(6,*)
'REFT:',
xgrd(iy,ix-1:ix+1) ,
ygrd(iy,ix-1:ix+1)
3457 WRITE(6,*)
'REFT:',
xgrd(iy-1,ix-1:ix+1),
ygrd(iy-1,ix-1:ix+1)
3463 IF (neigh1(k).EQ.0.AND.neigh1(mod(k+7,8)).EQ.0 &
3464 .AND.neigh1(mod(k+1,8)).EQ.0 &
3465 .AND.neigh1(mod(k+4,8)).NE.0)
THEN
3479 cosavg=cosavg+cos(angles(k))
3480 sinavg=sinavg+sin(angles(k))
3486 thavg=atan2(sinavg,cosavg)
3494 IF (neigh1(k).EQ.0.AND.neigh1(mod(k+1,8)).EQ.0 &
3495 .AND.neigh1(mod(k+4,8)).NE.0)
THEN
3506 IF ( neigh1(k).EQ.0.AND.neigh1(mod(k+4,8)).NE.0)
THEN
3520 WRITE (6,*)
'COAST DIRECTION AT POINT:',ix,iy,
' IS ', &
real, dimension(:), pointer esc
integer, dimension(:,:), pointer trigp
real, parameter pi
PI Value of Pi.
real, dimension(:), pointer snlcs
logical, pointer do_change_wlv
integer, pointer nitersec1
integer, dimension(:), pointer iaa
real, dimension(:), pointer wwcor
real, dimension(:), pointer frq
double precision, dimension(:,:), pointer ygrd
real, pointer sstxftftail
integer, pointer sswellfpar
real, dimension(:), pointer clatis
integer, pointer ssdsbrfdf
type(sgrd), dimension(:), allocatable, target sgrds
real, dimension(:,:), pointer trnx
real, dimension(:), pointer zb
real, dimension(:,:), pointer dxdq
real, parameter dera
DERA Conversion factor from degrees to radians.
logical, dimension(:), pointer flagst
integer, parameter ungtype
integer, dimension(:), pointer p2msf
integer, dimension(:), pointer mapsta_loc
real, dimension(:), pointer sed_d50
integer, dimension(:,:), pointer iktab
real, dimension(:), pointer ssdsc
integer, parameter rlgtype
integer, dimension(:,:), pointer neigh
real, dimension(:), pointer ctrny
integer, dimension(:), pointer mapth
real(8), pointer b_jgs_diff_thr
real, dimension(:), pointer ic4_cn
real, dimension(:,:), pointer cumulw
integer, dimension(:,:), pointer ijkvfc
integer, dimension(:,:), pointer edges
integer, dimension(:), pointer ie_cell
integer *1, dimension(:,:), pointer iobpd_loc
real, dimension(:,:,:), pointer qst3
real, dimension(:,:), pointer reflc
real, dimension(:), pointer sig
double precision, dimension(:,:), pointer xgrd
real, dimension(:,:,:), pointer qst2
integer, parameter, public iclo_smpl
real(8), pointer b_jgs_pmin
logical, pointer fsrefraction
real, dimension(:), pointer ic5pars
integer, dimension(:), pointer i_diag
real, dimension(:,:), pointer angle0
real, pointer wwnmeanptail
integer, dimension(:), pointer nlvvfc
real, dimension(:,:), pointer satweights
real, dimension(:,:), pointer dcki
real, dimension(:), pointer ecos
real, parameter rade
RADE Conversion factor from radians to degrees.
type(grid), dimension(:), allocatable, target grids
real, dimension(:), pointer dden2
real, dimension(:), pointer snll
real, dimension(:), pointer clatf
character(len=30), pointer gname
real, dimension(:,:), pointer dydq
real, dimension(:,:), pointer snsst
integer, dimension(:), pointer iclbac
logical, pointer fssource
integer *2, dimension(:), pointer iobp_loc
real, dimension(:,:,:), pointer qst6
logical, pointer swl6cstb1
real, dimension(:), pointer dsip
integer *1, dimension(:), pointer iobpa
logical, pointer cmprtrck
integer, pointer b_jgs_maxiter
integer *1, dimension(:), pointer iobdp_loc
real, dimension(:), pointer th
integer, parameter iclose_none
real, dimension(:,:), pointer spcbac
real(8), pointer crit_dep_stp
real(8), pointer solverthr_stp
integer, dimension(:), pointer ismcbp
integer, dimension(:), pointer ijkufc5
subroutine w3dimx(IMOD, MX, MY, MSEA, NDSE, NDST ifdef W3_SMC
real, dimension(:,:), pointer hqfac
real, dimension(:), pointer ussp_wn
logical, pointer b_jgs_terminate_difference
subroutine w3setg(IMOD, NDSE, NDST)
logical, pointer b_jgs_source_nonlinear
integer, dimension(:,:,:), pointer qst1
real(8), dimension(:,:), pointer len
logical, dimension(:), pointer rref
subroutine w3dims(IMOD, MK, MTH, NDSE, NDST)
real, dimension(:), pointer es2
real, dimension(:), pointer xsi
real, dimension(:,:), pointer dqdy
integer, dimension(:,:), pointer mapfs
real, dimension(:), pointer esin
logical, pointer iicesmooth
integer, parameter, public iclo_none
integer, dimension(:,:), pointer refld
real, dimension(:), pointer sed_psic
logical, pointer b_jgs_block_gauss_seidel
integer, pointer nbnd_map
real, dimension(:,:), pointer dydp
integer, parameter clgtype
integer, dimension(:), pointer index_map
character(len=:), pointer uostfilelocal
real, dimension(:), pointer ssdsbm
real, dimension(:,:), pointer dxdp
integer, pointer b_jgs_nlevel
real, dimension(:), pointer dsii
integer, dimension(:,:,:), pointer ja_ie
real(8), dimension(:), pointer tria
integer, pointer gqnq_om2
real, dimension(:,:,:), pointer qst5
integer(kind=8), pointer qi5nnz
integer, dimension(:), pointer ijkvfc5
real, dimension(:), pointer clats
subroutine w3dimug(IMOD, MTRI, MX, COUNTOTA, NNZ, NDSE, NDST)
real(8), dimension(:,:), pointer ien
integer, dimension(:,:), pointer satindices
real, dimension(:,:), pointer crossdiff
logical, pointer iicedisp
real, dimension(:), pointer angarc
integer, dimension(:,:), pointer mapsf
real, dimension(:,:), pointer dpdx
real, dimension(:,:), pointer gsqrt
integer, dimension(:), pointer us3df
integer, parameter smctype
real, dimension(:), pointer cthg0s
integer, dimension(:), pointer ijkvfc6
logical, pointer b_jgs_limiter
integer *1, dimension(:,:), pointer iobpd
integer, dimension(:), pointer ijkufc6
real, dimension(:), pointer sig2
logical, pointer fstotalexp
integer, dimension(:), pointer jaa
integer, pointer b_jgs_limiter_func
real, dimension(:), pointer dpthnl
real, pointer ttauwshelter
real, dimension(:), pointer gqamp
real, parameter tpi
TPI 2*Pi.
real, dimension(:,:), pointer dpdy
integer, dimension(:,:), pointer ijkcel
integer, dimension(:), pointer ijkcel4
subroutine strace(IENT, SNAME)
integer, dimension(:), pointer mapwn
integer *1, dimension(:), pointer iobdp
real, dimension(:), pointer sintailpar
subroutine w3nmod(NUMBER, NDSE, NDST, NAUX)
integer, dimension(:), pointer ic4pars
integer *1, dimension(:), pointer iobpa_loc
logical, pointer b_jgs_terminate_norm
real, dimension(:), pointer ic2pars
real, pointer uostfactorshadow
integer, dimension(:), pointer ccon
real, dimension(:,:), pointer hpfac
real, dimension(:,:), pointer qbi
integer *2, dimension(:), pointer iobp
integer, parameter, public iclo_trpl
real(8), dimension(:), pointer si
real, dimension(:), pointer icescales
character(len=:), pointer uostfileshadow
Define some much-used constants for global use (all defined as PARAMETER).
real, dimension(:), pointer sbtcx
integer, dimension(:), pointer ijkcel3
logical, pointer b_jgs_use_jacobi
real, dimension(:), pointer ic3pars
real, dimension(:), pointer dden
real, dimension(:), pointer sswellf
integer, parameter iclose_trpl
logical, pointer b_jgs_terminate_maxiter
real, dimension(:), pointer ic4_ki
real, dimension(:), pointer igpars
real, dimension(:), pointer refpars
real, dimension(:,:), pointer angle
real(8), pointer b_jgs_norm_thr
real, dimension(:), pointer snlt
real(8), pointer gridshift
subroutine, public w3gsup(GSU, IUNIT, LFULL)
real, dimension(:), pointer angld
real, dimension(:), pointer capchnk
integer, dimension(:), pointer countcon
integer, dimension(:,:,:), pointer qst4
integer, dimension(:), pointer index_cell
real, dimension(:), pointer is2pars
integer, dimension(:), pointer nlvufc
subroutine w3gntx(IMOD, NDSE, NDST)
logical, pointer fsfreqshift
real, dimension(:), pointer ic4_fc
integer, dimension(:), pointer nlvcel
type(mpar), dimension(:), allocatable, target mpars
real, dimension(:), pointer ec2
integer, dimension(:), pointer usspf
integer, dimension(:,:), pointer ijkufc
integer, parameter iclose_smpl
logical, pointer fstotalimp
integer, dimension(:), pointer pos_cell
integer, dimension(:,:), pointer e3df
real, dimension(:,:), pointer dqdx
integer, dimension(:,:), pointer mapsta
real, pointer uostfactorlocal
real, dimension(:), pointer snlm
real, dimension(:,:), pointer trny
integer, dimension(:,:), pointer mapst2
integer, dimension(:,:), pointer posi
real, dimension(:), pointer snlcd
real, dimension(:), pointer ctrnx
character(len=13), pointer filext