#include "swancpp.h"
      MODULE SWPOINT_MOD

#if defined SWAN_MODEL
!
!svn $Id: swpoint_mod.F 756 2008-09-14 20:18:28Z jcwarner $
!==================================================== John C. Warner ===
!                                                                      !
!                                                                      !
!=======================================================================
!
      USE TIMECOMM
      USE OCPCOMM2
      USE OCPCOMM4
      USE SWCOMM1
      USE SWCOMM2
      USE SWCOMM3
      USE SWCOMM4
      USE OUTP_DATA
      USE M_GENARR
      USE M_PARALL
      USE M_PARALL2
      USE M_BNDSPEC
      USE M_CVMESH
# ifdef NESTING
      USE M_SREFINED
# endif

      implicit none
!
      PRIVATE

      PUBLIC :: ALLOCATE_SWAN_ARRAYS
      PUBLIC :: INIT_POINTERS
      PUBLIC :: INIT_COUPLING_POINTERS
      PUBLIC :: DEALLOCATE_SWAN_ARRAYS

      include 'mpif.h'
!
!  Declarations.
!
      CONTAINS

      SUBROUTINE ALLOCATE_SWAN_ARRAYS (ng, Numgrids)
!
!=======================================================================
!                                                                      !
!  Initialize global arrays.                                           !
!                                                                      !
!=======================================================================
!
      INTEGER, INTENT(IN) :: ng, Numgrids
!     INTEGER NSECTM, MXTIMR
!     PARAMETER (NSECTM=300, MXTIMR=10)
!
!
!  Allocate Type arrays
!
      IF (ng.eq.1) THEN
        ALLOCATE (M_GENARR_MOD(Numgrids))
        ALLOCATE (PARALL_MOD(Numgrids))
        ALLOCATE (PARALL2_MOD(Numgrids))
        ALLOCATE (BGPDATZ_MOD(Numgrids))
        ALLOCATE (OPSDATZ_MOD(Numgrids))
        ALLOCATE (ORQDATZ_MOD(Numgrids))
        ALLOCATE (COMPT_MOD(Numgrids))
# ifdef NESTING
        ALLOCATE (REFINED_MOD(Numgrids))
# endif
!
!  Allocate pointers
!
!  M_BNDSPEC
!
        ALLOCATE (LBGP_G(Numgrids))
!       LBGP_G(ng)=.FALSE.
!
!  M_PARALL
!
        IF (.not.allocated(MCGRDGL_G)) ALLOCATE (MCGRDGL_G(Numgrids))
        IF (.not.allocated(NGRBGL_G)) ALLOCATE (NGRBGL_G(Numgrids))
        IF (.not.allocated(MXCGL_G)) ALLOCATE (MXCGL_G(Numgrids))
        IF (.not.allocated(MYCGL_G)) ALLOCATE (MYCGL_G(Numgrids))
        IF (.not.allocated(MXF_G)) ALLOCATE (MXF_G(Numgrids))
        IF (.not.allocated(MXL_G)) ALLOCATE (MXL_G(Numgrids))
        IF (.not.allocated(MYF_G)) ALLOCATE (MYF_G(Numgrids))
        IF (.not.allocated(MYL_G)) ALLOCATE (MYL_G(Numgrids))
        IF (.not.allocated(NBGGL_G)) ALLOCATE (NBGGL_G(Numgrids))
        IF (.not.allocated(XCLMAX_G)) ALLOCATE (XCLMAX_G(Numgrids))
        IF (.not.allocated(YCLMAX_G)) ALLOCATE (YCLMAX_G(Numgrids))
        IF (.not.allocated(XCLMIN_G)) ALLOCATE (XCLMIN_G(Numgrids))
        IF (.not.allocated(YCLMIN_G)) ALLOCATE (YCLMIN_G(Numgrids))
        IF (.not.allocated(LMXF_G)) ALLOCATE (LMXF_G(Numgrids))
        IF (.not.allocated(LMXL_G)) ALLOCATE (LMXL_G(Numgrids))
        IF (.not.allocated(LMYF_G)) ALLOCATE (LMYF_G(Numgrids))
        IF (.not.allocated(LMYL_G)) ALLOCATE (LMYL_G(Numgrids))
!
!  OCPCOMM4
!
        IF (.not.allocated(FUNHI_G)) ALLOCATE (FUNHI_G(Numgrids))
        IF (.not.allocated(FUNLO_G)) ALLOCATE (FUNLO_G(Numgrids))
        IF (.not.allocated(HIOPEN_G)) ALLOCATE (HIOPEN_G(Numgrids))
        IF (.not.allocated(PRINTF_G)) ALLOCATE (PRINTF_G(Numgrids))
        IF (.not.allocated(INPUTF_G)) ALLOCATE (INPUTF_G(Numgrids))
!
!  SWANCOMM3
!
        IF (.not.allocated(MXC_G)) ALLOCATE (MXC_G(Numgrids))
        IF (.not.allocated(MYC_G)) ALLOCATE (MYC_G(Numgrids))
        IF (.not.allocated(MCGRD_G)) ALLOCATE (MCGRD_G(Numgrids))
        IF (.not.allocated(NGRBND_G)) ALLOCATE (NGRBND_G(Numgrids))
        IF (.not.allocated(MSC_G)) ALLOCATE (MSC_G(Numgrids))
        IF (.not.allocated(MDC_G)) ALLOCATE (MDC_G(Numgrids))
        IF (.not.allocated(MTC_G)) ALLOCATE (MTC_G(Numgrids))
        IF (.not.allocated(XCGMIN_G)) ALLOCATE (XCGMIN_G(Numgrids))
        IF (.not.allocated(XCGMAX_G)) ALLOCATE (XCGMAX_G(Numgrids))
        IF (.not.allocated(YCGMIN_G)) ALLOCATE (YCGMIN_G(Numgrids))
        IF (.not.allocated(YCGMAX_G)) ALLOCATE (YCGMAX_G(Numgrids))
!
!  TIMECOMM
!
        IF (.not.allocated(TINIC_G)) ALLOCATE (TINIC_G(Numgrids))
        IF (.not.allocated(DT_G)) ALLOCATE (DT_G(Numgrids))
        IF (.not.allocated(TFINC_G)) ALLOCATE (TFINC_G(Numgrids))
        IF (.not.allocated(TIMCO_G)) ALLOCATE (TIMCO_G(Numgrids))
!       IF (.not.allocated(NCUMTM_G))                                   &
!    &     ALLOCATE (NCUMTM_G(Numgrids,NSECTM))
!       IF (.not.allocated(LISTTM_G))                                   &
!    &     ALLOCATE (LISTTM_G(Numgrids,MXTIMR))
!       IF (.not.allocated(LASTTM_G)) ALLOCATE (LASTTM_G(Numgrids))
!       IF (.not.allocated(DCUMTM_G))                                   &
!    &      ALLOCATE (DCUMTM_G(Numgrids,NSECTM,2))
!       IF (.not.allocated(TIMERS_G))                                   &
!    &     ALLOCATE (TIMERS_G(Numgrids,MXTIMR,2))
!
!  SWCOMM1
!
        IF (.not.allocated(CHTIME_G)) ALLOCATE (CHTIME_G(Numgrids))
!
! OUTP_DATA
!
        ALLOCATE (NREOQ_G(Numgrids))
!       NREOQ_G(ng)=0
        ALLOCATE (LOPS_G(Numgrids))
!       LOPS_G(ng)=.FALSE.
        ALLOCATE (LORQ_G(Numgrids))
!       LORQ_G(ng)=.FALSE.
        ALLOCATE (OUTP_FILES_G(Numgrids,1:MAX_OUTP_REQ))
        ALLOCATE (IREC(MAX_OUTP_REQ))
        ALLOCATE (IREC_G(Numgrids,MAX_OUTP_REQ))
!
!       ALLOCATE (ORQDATZ_MOD(ng)%FORQ)
!
!  SWANCOMM2
!
        IF (.not.allocated(CVLEFT_G)) ALLOCATE (CVLEFT_G(Numgrids))
        IF (.not.allocated(LXOFFS_G)) ALLOCATE (LXOFFS_G(Numgrids))
        IF (.not.allocated(VARFR_G)) ALLOCATE (VARFR_G(Numgrids))
        IF (.not.allocated(VARWI_G)) ALLOCATE (VARWI_G(Numgrids))
        IF (.not.allocated(VARWLV_G)) ALLOCATE (VARWLV_G(Numgrids))
        IF (.not.allocated(DYNDEP_G)) ALLOCATE (DYNDEP_G(Numgrids))
        IF (.not.allocated(VARAST_G)) ALLOCATE (VARAST_G(Numgrids))
        IF (.not.allocated(ICOND_G)) ALLOCATE (ICOND_G(Numgrids))
        IF (.not.allocated(NWAMN_G)) ALLOCATE (NWAMN_G(Numgrids))
        IF (.not.allocated(OPTG_G)) ALLOCATE (OPTG_G(Numgrids))
        IF (.not.allocated(NBFILS_G)) ALLOCATE (NBFILS_G(Numgrids))
        IF (.not.allocated(NBSPEC_G)) ALLOCATE (NBSPEC_G(Numgrids))
        IF (.not.allocated(NBGRPT_G)) ALLOCATE (NBGRPT_G(Numgrids))

        IF (.not.allocated(MXG_G)) ALLOCATE (MXG_G(Numgrids,NUMGRD))
        IF (.not.allocated(MYG_G)) ALLOCATE (MYG_G(Numgrids,NUMGRD))
        IF (.not.allocated(IGTYPE_G))                                   &
     &           ALLOCATE (IGTYPE_G(Numgrids,NUMGRD))
        IF (.not.allocated(LEDS_G)) ALLOCATE (LEDS_G(Numgrids,NUMGRD))

        IF (.not.allocated(COSVC_G)) ALLOCATE (COSVC_G(Numgrids))
        IF (.not.allocated(COSWC_G)) ALLOCATE (COSWC_G(Numgrids))
        IF (.not.allocated(RDTIM_G)) ALLOCATE (RDTIM_G(Numgrids))
        IF (.not.allocated(SINVC_G)) ALLOCATE (SINVC_G(Numgrids))
        IF (.not.allocated(SINWC_G)) ALLOCATE (SINWC_G(Numgrids))
        IF (.not.allocated(XOFFS_G)) ALLOCATE (XOFFS_G(Numgrids))
        IF (.not.allocated(YOFFS_G)) ALLOCATE (YOFFS_G(Numgrids))

        IF (.not.allocated(ALPG_G))  ALLOCATE (ALPG_G(Numgrids,NUMGRD))
        IF (.not.allocated(COSPG_G)) ALLOCATE (COSPG_G(Numgrids,NUMGRD))
        IF (.not.allocated(DXG_G))   ALLOCATE (DXG_G(Numgrids,NUMGRD))
        IF (.not.allocated(DYG_G))   ALLOCATE (DYG_G(Numgrids,NUMGRD))
        IF (.not.allocated(EXCFLD_G))                                   &
     &           ALLOCATE (EXCFLD_G(Numgrids,NUMGRD))
        IF (.not.allocated(SINPG_G)) ALLOCATE (SINPG_G(Numgrids,NUMGRD))
        IF (.not.allocated(STAGX_G)) ALLOCATE (STAGX_G(Numgrids,NUMGRD))
        IF (.not.allocated(STAGY_G)) ALLOCATE (STAGY_G(Numgrids,NUMGRD))
        IF (.not.allocated(XPG_G))   ALLOCATE (XPG_G(Numgrids,NUMGRD))
        IF (.not.allocated(YPG_G))   ALLOCATE (YPG_G(Numgrids,NUMGRD))

        IF (.not.allocated(IFLDYN_G))                                   &
     &           ALLOCATE (IFLDYN_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLIDL_G))                                   &
     &           ALLOCATE (IFLIDL_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLIFM_G))                                   &
     &           ALLOCATE (IFLIFM_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLNHF_G))                                   &
     &           ALLOCATE (IFLNHF_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLNHD_G))                                   &
     &           ALLOCATE (IFLNHD_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLNDS_G))                                   &
     &           ALLOCATE (IFLNDS_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLNDF_G))                                   &
     &           ALLOCATE (IFLNDF_G(Numgrids,NUMGRD))
        IFLNDF_G=0
        IF (.not.allocated(IFLBEG_G))                                   &
     &           ALLOCATE (IFLBEG_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLINT_G))                                   &
     &           ALLOCATE (IFLINT_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLEND_G))                                   &
     &           ALLOCATE (IFLEND_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLTIM_G))                                   &
     &           ALLOCATE (IFLTIM_G(Numgrids,NUMGRD))
        IF (.not.allocated(IFLFAC_G))                                   &
     &           ALLOCATE (IFLFAC_G(Numgrids,NUMGRD))
!
!     MODULE M_CVMESH
!
        ALLOCATE (XCSAVE_G(Numgrids))
        ALLOCATE (YCSAVE_G(Numgrids))
        ALLOCATE (MXITNR_G(Numgrids))
      END IF

      END SUBROUTINE ALLOCATE_SWAN_ARRAYS

      SUBROUTINE INIT_POINTERS (ng)
!
!=======================================================================
!                                                                      !
!  Establish swan pointers to the global arrays.                       !
!                                                                      !
!=======================================================================
!
      INTEGER, INTENT(IN) :: ng
!
!  Allocate pointers
!
!  M_BNDSPEC
!
!     LBGP=>LBGP_G(ng)
!
!  M_PARALL
!
      MCGRDGL=>MCGRDGL_G(ng)
      NGRBGL=>NGRBGL_G(ng)
      MXCGL=>MXCGL_G(ng)
      MYCGL=>MYCGL_G(ng)
      MXF=>MXF_G(ng)
      MXL=>MXL_G(ng)
      MYF=>MYF_G(ng)
      MYL=>MYL_G(ng)
      NBGGL=>NBGGL_G(ng)
      XCLMAX=>XCLMAX_G(ng)
      YCLMAX=>YCLMAX_G(ng)
      XCLMIN=>XCLMIN_G(ng)
      YCLMIN=>YCLMIN_G(ng)
      LMXF=>LMXF_G(ng)
      LMXL=>LMXL_G(ng)
      LMYF=>LMYF_G(ng)
      LMYL=>LMYL_G(ng)
!
!  OCPCOMM4
!
      FUNHI=>FUNHI_G(ng)
      FUNLO=>FUNLO_G(ng)
      HIOPEN=>HIOPEN_G(ng)
      PRINTF=>PRINTF_G(ng)
      INPUTF=>INPUTF_G(ng)
!
!  SWANCOMM3
!
      MXC=>MXC_G(ng)
      MYC=>MYC_G(ng)
      MCGRD=>MCGRD_G(ng)
      NGRBND=>NGRBND_G(ng)
      MSC=>MSC_G(ng)
      MDC=>MDC_G(ng)
      MTC=>MTC_G(ng)
      XCGMIN=>XCGMIN_G(ng)
      XCGMAX=>XCGMAX_G(ng)
      YCGMIN=>YCGMIN_G(ng)
      YCGMAX=>YCGMAX_G(ng)
!
!  TIMECOMM
!
      TINIC=>TINIC_G(ng)
      DT=>DT_G(ng)
      TFINC=>TFINC_G(ng)
      TIMCO=>TIMCO_G(ng)
!      NCUMTM=>NCUMTM_G(ng,:)
!      LISTTM=>LISTTM_G(ng,:)
!      LASTTM=>LASTTM_G(ng)
!      DCUMTM=>DCUMTM_G(ng,:,:)
!      TIMERS=>TIMERS_G(ng,:,:)
!
!  SWCOMM1
!
      CHTIME=>CHTIME_G(ng)
!
! OUTP_DATA
!
      NREOQ=>NREOQ_G(ng)
      LOPS=>LOPS_G(ng)
!     LORQ=>LORQ_G(ng)
      OUTP_FILES=>OUTP_FILES_G(ng,:)
      IREC=>IREC_G(ng,:)
!
!  SWANCOMM2
!
      CVLEFT=>CVLEFT_G(ng)
      LXOFFS=>LXOFFS_G(ng)
      VARFR=>VARFR_G(ng)
      VARWI=>VARWI_G(ng)
      VARWLV=>VARWLV_G(ng)
      DYNDEP=>DYNDEP_G(ng)
      VARAST=>VARAST_G(ng)
      ICOND=>ICOND_G(ng)
      NWAMN=>NWAMN_G(ng)
      OPTG=>OPTG_G(ng)
      NBFILS=>NBFILS_G(ng)
      NBSPEC=>NBSPEC_G(ng)
      NBGRPT=>NBGRPT_G(ng)

      MXG=>MXG_G(ng,:)
      MYG=>MYG_G(ng,:)
      IGTYPE=>IGTYPE_G(ng,:)
      LEDS=>LEDS_G(ng,:)

      COSVC=>COSVC_G(ng)
      COSWC=>COSWC_G(ng)
      RDTIM=>RDTIM_G(ng)
      SINVC=>SINVC_G(ng)
      SINWC=>SINWC_G(ng)
      XOFFS=>XOFFS_G(ng)
      YOFFS=>YOFFS_G(ng)

      ALPG=>ALPG_G(ng,:)
      COSPG=>COSPG_G(ng,:)
      DXG=>DXG_G(ng,:)
      DYG=>DYG_G(ng,:)
      EXCFLD=>EXCFLD_G(ng,:)
      SINPG=>SINPG_G(ng,:)
      STAGX=>STAGX_G(ng,:)
      STAGY=>STAGY_G(ng,:)
      XPG=>XPG_G(ng,:)
      YPG=>YPG_G(ng,:)

      IFLDYN=>IFLDYN_G(ng,:)
      IFLIDL=>IFLIDL_G(ng,:)
      IFLIFM=>IFLIFM_G(ng,:)
      IFLNHF=>IFLNHF_G(ng,:)
      IFLNHD=>IFLNHD_G(ng,:)
      IFLNDS=>IFLNDS_G(ng,:)
      IFLNDF=>IFLNDF_G(ng,:)

      IFLBEG=>IFLBEG_G(ng,:)
      IFLINT=>IFLINT_G(ng,:)
      IFLEND=>IFLEND_G(ng,:)
      IFLTIM=>IFLTIM_G(ng,:)
      IFLFAC=>IFLFAC_G(ng,:)

      END SUBROUTINE INIT_POINTERS

      SUBROUTINE INIT_COUPLING_POINTERS (ng)
!
!=======================================================================
!                                                                      !
!  Establish swan pointers to the global arrays.                       !
!                                                                      !
!=======================================================================
!
      INTEGER, INTENT(IN) :: ng
!
!  Allocate pointers
!
!  Modules M_GENARR
!
      KGRPNT=>M_GENARR_MOD(ng)%KGRPNT_G
      KGRBND=>M_GENARR_MOD(ng)%KGRBND_G
      XYTST=> M_GENARR_MOD(ng)%XYTST_G
      AC2=>   M_GENARR_MOD(ng)%AC2_G
      XCGRID=>M_GENARR_MOD(ng)%XCGRID_G
      YCGRID=>M_GENARR_MOD(ng)%YCGRID_G
      SPCSIG=>M_GENARR_MOD(ng)%SPCSIG_G
      SPCDIR=>M_GENARR_MOD(ng)%SPCDIR_G
      DEPTH=> M_GENARR_MOD(ng)%DEPTH_G
      FRIC=>  M_GENARR_MOD(ng)%FRIC_G
      UXB=>   M_GENARR_MOD(ng)%UXB_G
      UYB=>   M_GENARR_MOD(ng)%UYB_G
      WXI=>   M_GENARR_MOD(ng)%WXI_G
      WYI=>   M_GENARR_MOD(ng)%WYI_G
      WLEVL=> M_GENARR_MOD(ng)%WLEVL_G
      ASTDF=> M_GENARR_MOD(ng)%ASTDF_G
      NPLAF=> M_GENARR_MOD(ng)%NPLAF_G
# ifdef WRF_COUPLING
      CosAngler=>M_GENARR_MOD(ng)%CosAngler_G
      SinAngler=>M_GENARR_MOD(ng)%SinAngler_G
# endif
!
!  Module M_PARALL
!
      IBLKAD=>PARALL_MOD(ng)%IBLKAD_G
      KGRPGL=>PARALL_MOD(ng)%KGRPGL_G
      KGRBGL=>PARALL_MOD(ng)%KGRBGL_G
      XGRDGL=>PARALL_MOD(ng)%XGRDGL_G
      YGRDGL=>PARALL_MOD(ng)%YGRDGL_G
!
!  Module PARALL2
!
      BSPECS=>PARALL2_MOD(ng)%BSPECS_G
      CROSS=> PARALL2_MOD(ng)%CROSS_G
      BGRIDP=>PARALL2_MOD(ng)%BGRIDP_G
      AC1=>   PARALL2_MOD(ng)%AC1_G
      COMPDA=>PARALL2_MOD(ng)%COMPDA_G
      OURQT=> PARALL2_MOD(ng)%OURQT_G
!
! SWANCOMM3
!
      NCOMPT=>COMPT_MOD(ng)%NCOMPT_G
      RCOMPT=>COMPT_MOD(ng)%RCOMPT_G
      END SUBROUTINE INIT_COUPLING_POINTERS

      SUBROUTINE DEALLOCATE_SWAN_ARRAYS (ng, Numgrids)
!
!=======================================================================
!                                                                      !
!  Initialize global arrays.                                           !
!                                                                      !
!=======================================================================
!
      INTEGER, INTENT(IN) :: ng, Numgrids
!
!
!  DEAllocate Type arrays
!
      IF (ng.eq.Numgrids) THEN
        DEALLOCATE (M_GENARR_MOD)
        DEALLOCATE (PARALL_MOD)
        DEALLOCATE (PARALL2_MOD)
        DEALLOCATE (BGPDATZ_MOD)
        DEALLOCATE (OPSDATZ_MOD)
        DEALLOCATE (ORQDATZ_MOD)
        DEALLOCATE (COMPT_MOD)
# ifdef NESTING
        DEALLOCATE (REFINED_MOD)
# endif
!
!  DEAllocate pointers
!
!  M_BNDSPEC
!
        DEALLOCATE (LBGP_G)
!       LBGP_G(ng)=.FALSE.
!
!  M_PARALL
!
        DEALLOCATE (MCGRDGL_G)
        DEALLOCATE (NGRBGL_G)
        DEALLOCATE (MXCGL_G)
        DEALLOCATE (MYCGL_G)
        DEALLOCATE (MXF_G)
        DEALLOCATE (MXL_G)
        DEALLOCATE (MYF_G)
        DEALLOCATE (MYL_G)
        DEALLOCATE (NBGGL_G)
        DEALLOCATE (XCLMAX_G)
        DEALLOCATE (YCLMAX_G)
        DEALLOCATE (XCLMIN_G)
        DEALLOCATE (YCLMIN_G)
        DEALLOCATE (LMXF_G)
        DEALLOCATE (LMXL_G)
        DEALLOCATE (LMYF_G)
        DEALLOCATE (LMYL_G)
!
!  OCPCOMM4
!
        DEALLOCATE (FUNHI_G)
        DEALLOCATE (FUNLO_G)
        DEALLOCATE (HIOPEN_G)
        DEALLOCATE (PRINTF_G)
        DEALLOCATE (INPUTF_G)
!
!  SWANCOMM3
!
        DEALLOCATE (MXC_G)
        DEALLOCATE (MYC_G)
        DEALLOCATE (MCGRD_G)
        DEALLOCATE (NGRBND_G)
        DEALLOCATE (MSC_G)
        DEALLOCATE (MDC_G)
        DEALLOCATE (MTC_G)
        DEALLOCATE (XCGMIN_G)
        DEALLOCATE (XCGMAX_G)
        DEALLOCATE (YCGMIN_G)
        DEALLOCATE (YCGMAX_G)
!
!  TIMECOMM
!
        DEALLOCATE (TINIC_G)
        DEALLOCATE (DT_G)
        DEALLOCATE (TFINC_G)
        DEALLOCATE (TIMCO_G)
!        DEALLOCATE (NCUMTM_G)
!        DEALLOCATE (LISTTM_G)
!        DEALLOCATE (LASTTM_G)
!        DEALLOCATE (DCUMTM_G)
!        DEALLOCATE (TIMERS_G)
!
!  SWCOMM1
!
        DEALLOCATE (CHTIME_G)
!
!  OUTP_DATA
!
        DEALLOCATE (NREOQ_G)
!       NREOQ_G(ng)=0
        DEALLOCATE (LOPS_G)
!       LOPS_G(ng)=.FALSE.
        DEALLOCATE (LORQ_G)
!       LORQ_G(ng)=.FALSE.
        DEALLOCATE (OUTP_FILES_G)
!       DEALLOCATE (IREC)
        DEALLOCATE (IREC_G)
!
!       ALLOCATE (ORQDATZ_MOD(ng)%FORQ)
!
!  SWANCOMM2
!
        DEALLOCATE (CVLEFT_G)
        DEALLOCATE (LXOFFS_G)
        DEALLOCATE (VARFR_G)
        DEALLOCATE (VARWI_G)
        DEALLOCATE (VARWLV_G)
        DEALLOCATE (DYNDEP_G)
        DEALLOCATE (VARAST_G)
        DEALLOCATE (ICOND_G)
        DEALLOCATE (NWAMN_G)
        DEALLOCATE (OPTG_G)
        DEALLOCATE (NBFILS_G)
        DEALLOCATE (NBSPEC_G)
        DEALLOCATE (NBGRPT_G)

        DEALLOCATE (MXG_G)
        DEALLOCATE (MYG_G)
        DEALLOCATE (IGTYPE_G)
        DEALLOCATE (LEDS_G)

        DEALLOCATE (COSVC_G)
        DEALLOCATE (COSWC_G)
        DEALLOCATE (RDTIM_G)
        DEALLOCATE (SINVC_G)
        DEALLOCATE (SINWC_G)
        DEALLOCATE (XOFFS_G)
        DEALLOCATE (YOFFS_G)

        DEALLOCATE (ALPG_G)
        DEALLOCATE (COSPG_G)
        DEALLOCATE (DXG_G)
        DEALLOCATE (DYG_G)
        DEALLOCATE (EXCFLD_G)
        DEALLOCATE (SINPG_G)
        DEALLOCATE (STAGX_G)
        DEALLOCATE (STAGY_G)
        DEALLOCATE (XPG_G)
        DEALLOCATE (YPG_G)
!
!     MODULE M_CVMESH
!
        DEALLOCATE (XCSAVE_G)
        DEALLOCATE (YCSAVE_G)
        DEALLOCATE (MXITNR_G)
      END IF

      END SUBROUTINE DEALLOCATE_SWAN_ARRAYS

#endif
      END MODULE SWPOINT_MOD