!/===========================================================================/ ! Copyright (c) 2007, The University of Massachusetts Dartmouth ! Produced at the School of Marine Science & Technology ! Marine Ecosystem Dynamics Modeling group ! All rights reserved. ! ! FVCOM has been developed by the joint UMASSD-WHOI research team. For ! details of authorship and attribution of credit please see the FVCOM ! technical manual or contact the MEDM group. ! ! ! This file is part of FVCOM. For details, see http://fvcom.smast.umassd.edu ! The full copyright notice is contained in the file COPYRIGHT located in the ! root directory of the FVCOM code. This original header must be maintained ! in all distributed versions. ! ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ! THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ! PURPOSE ARE DISCLAIMED. ! !/---------------------------------------------------------------------------/ ! CVS VERSION INFORMATION ! $Id$ ! $Name$ ! $Revision$ !/===========================================================================/ SUBROUTINE GRID_METRICS USE MOD_PAR USE MOD_OBCS USE ALL_VARS USE MOD_NORTHPOLE USE MOD_SETUP USE MOD_STATION_TIMESERIES USE MOD_SPARSE_TIMESERIES USE MOD_NESTING, ONLY: NESTING_ON # if defined (THIN_DAM) USE MOD_DAM # endif IMPLICIT NONE INTEGER:: STATUS INTEGER:: I ! THESE SUBROUTINES SHOULD BE FURTHER BROKEN DOWN INTO THEIR ! COMPONENT OPERATIONS AND THE WHOLE THING SHOULD BE MODULAR !============================================ !Set up fluxes and control Volumes !============================================ CALL TRIANGLE_GRID_EDGE # if defined (WAVE_CURRENT_INTERACTION) IF(OUT_STATION_TIMESERIES_ON .OR. OUT_WAVE_SPARSE_TIMESERIES_ON) & & CALL TRIANGLE_GRID_EDGE_GL # else IF(OUT_STATION_TIMESERIES_ON) CALL TRIANGLE_GRID_EDGE_GL # endif !============================================ !Calculate Element and Control Volume Areas !============================================ CALL CELL_AREA !==================================================== ! Calculate Shape Coefficients for Flux Construction !==================================================== # if defined (GCN) CALL SHAPE_COEF_GCN # else CALL SHAPE_COEF_GCY # endif # if defined (SPHERICAL) CALL FIND_NORTHPOLE CALL SHAPE_COEF_XY CALL FIND_CELLSIDE # endif !============================================ !Calculate Node Control Volume Edge Lengths !============================================ CALL EDGE_LEN !==================================================== ! EXCHANGE SHAPE FACTOR INFORMATION !==================================================== # if defined (MULTIPROCESSOR) IF(PAR)CALL AEXCHANGE(EC,MYID,NPROCS,A1U,A2U) IF(PAR)CALL AEXCHANGE(EC,MYID,NPROCS,AWX,AWY,AW0) IF(PAR)CALL AEXCHANGE(EC,MYID,NPROCS,ALPHA) IF(PAR)CALL AEXCHANGE(EC,MYID,NPROCS,ART) ! THESE MUST BE SET CORRECTLY IN THE HALO FOR OUTPUT! IF(PAR)CALL AEXCHANGE(NC,MYID,NPROCS,ART1,ART2) IF(PAR)CALL AEXCHANGE(NC,MYID,NPROCS,NTSN,NTVE) # endif !==================================================== ! Calculate the horizontal gradient of the bathymetry !==================================================== CALL DEPTH_GRADIENT !==================================================== ! SETUP BOUNDARY NEIGHBORS AND SUCH !==================================================== CALL SETUP_OBC # if defined (SEMI_IMPLICIT) IF(NESTING_ON) THEN ISONB_3 = ISONB DO I=1,IOBCN ISONB_3(NEXT_OBC(I)) = 3 END DO ENDIF # endif !-------------------Read dam info-------------------- # if defined (THIN_DAM) CALL READ_DAM !==================================================== ! Calculate Shape Coefficients for Thin Dam !==================================================== CALL SHAPE_COEF_DAM # endif !==================================================== ! SETUP THE LONGSHORE FLOW INDEX AND ANGLES !==================================================== IF(OBC_LONGSHORE_FLOW_ON) CALL longshore_flow END SUBROUTINE GRID_METRICS