| 1 |
jscott |
1.1 |
C $Header: /u/gcmpack/MITgcm/pkg/atm_ocn_coupler/cpl_send_ocn_fields.F,v 1.3 2006/06/15 23:29:17 jmc Exp $ |
| 2 |
|
|
C $Name: $ |
| 3 |
|
|
#ifdef ATM2D_MPI_ON |
| 4 |
|
|
#include "CPP_OPTIONS.h" |
| 5 |
|
|
|
| 6 |
|
|
CStartOfInterface |
| 7 |
|
|
SUBROUTINE CPL_SEND_OCN_FIELDS |
| 8 |
|
|
C /==========================================================\ |
| 9 |
|
|
C | SUBROUTINE CPL_SEND_OCN_FIELDS | |
| 10 |
|
|
C | o Routine for sending surface flux to ocean component | |
| 11 |
|
|
C |==========================================================| |
| 12 |
|
|
C | This version talks to the MITgcm general circulation | |
| 13 |
|
|
C | model. | |
| 14 |
|
|
C \==========================================================/ |
| 15 |
|
|
IMPLICIT NONE |
| 16 |
|
|
|
| 17 |
|
|
C == Global variables == |
| 18 |
|
|
Cjrs#include "ATMSIZE.h" |
| 19 |
|
|
Cjrs#include "ATMVARS.h" |
| 20 |
|
|
#include "OCNSIZE.h" |
| 21 |
|
|
#include "OCNVARS.h" |
| 22 |
|
|
#include "OCNIDS.h" |
| 23 |
|
|
|
| 24 |
|
|
C == Routine arguments == |
| 25 |
|
|
|
| 26 |
|
|
C == Local variables == |
| 27 |
|
|
|
| 28 |
|
|
CEndOfInterface |
| 29 |
|
|
|
| 30 |
|
|
C-- Map Sea Level atmos. pressure onto ocean grid |
| 31 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 32 |
|
|
C I Nx_atm, Ny_atm, atmSLPr_atm, Nx_ocn, Ny_ocn, |
| 33 |
|
|
C O atmSLPr_ocn ) |
| 34 |
|
|
C Send Sea Level atmos. pressure to ocean component |
| 35 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnSLPrName, |
| 36 |
|
|
I Nx_ocn, Ny_ocn, atmSLPr_ocn ) |
| 37 |
|
|
|
| 38 |
|
|
C-- Map heatflux onto ocean grid |
| 39 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 40 |
|
|
C I Nx_atm, Ny_atm, HeatFlux_atm, Nx_ocn, Ny_ocn, |
| 41 |
|
|
C O HeatFlux_ocn ) |
| 42 |
|
|
C Map Energy flux carried by RunOff onto ocean grid and substract it |
| 43 |
|
|
C from previous (direct) FWFlux => total Heat-Flux = Qnet - EnRunOff |
| 44 |
|
|
Cjrs CALL ATM_TO_OCN_MAPRUNOFF( |
| 45 |
|
|
C I ROEnFx_atm, |
| 46 |
|
|
C U HeatFlux_ocn) |
| 47 |
|
|
C Send (net) heatflux. to ocean component |
| 48 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnHeatFluxName, |
| 49 |
|
|
I Nx_ocn, Ny_ocn, HeatFlux_ocn ) |
| 50 |
|
|
|
| 51 |
|
|
C-- Map net shortwave radiation onto ocean grid |
| 52 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 53 |
|
|
C I Nx_atm, Ny_atm, qShortWave_atm, Nx_ocn, Ny_ocn, |
| 54 |
|
|
C O qShortWave_ocn ) |
| 55 |
|
|
C Send net shortwave radiation to ocean component |
| 56 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnQshortWaveName, |
| 57 |
|
|
I Nx_ocn, Ny_ocn, qShortWave_ocn ) |
| 58 |
|
|
|
| 59 |
|
|
C-- Map Zonal momentum flux onto ocean grid |
| 60 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 61 |
|
|
C I Nx_atm, Ny_atm, TauX_atm, Nx_ocn, Ny_ocn, |
| 62 |
|
|
C O TauX_ocn ) |
| 63 |
|
|
C Send Zonal momentum flux to ocean component |
| 64 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnTauXName, |
| 65 |
|
|
I Nx_ocn, Ny_ocn, TauX_ocn ) |
| 66 |
|
|
|
| 67 |
|
|
C-- Map Meridional momentum flux onto ocean grid |
| 68 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 69 |
|
|
C I Nx_atm, Ny_atm, TauY_atm, Nx_ocn, Ny_ocn, |
| 70 |
|
|
C O TauY_ocn ) |
| 71 |
|
|
C Send Meridional momentum flux to ocean component |
| 72 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnTauYName, |
| 73 |
|
|
I Nx_ocn, Ny_ocn, TauY_ocn ) |
| 74 |
|
|
|
| 75 |
|
|
C-- Map atmos. fresh water flux onto ocean grid : Evap - Precip |
| 76 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 77 |
|
|
C I Nx_atm, Ny_atm, EvMPr_atm, Nx_ocn, Ny_ocn, |
| 78 |
|
|
C O FWFlux_ocn ) |
| 79 |
|
|
C Map atmos. runOff from land onto ocean grid and substract it |
| 80 |
|
|
C from previous (direct) FWFlux => total FWFlux = E-P-R |
| 81 |
|
|
Cjrs CALL ATM_TO_OCN_MAPRUNOFF( |
| 82 |
|
|
C I RunOff_atm, |
| 83 |
|
|
C U FWFlux_ocn) |
| 84 |
|
|
C Send E-P-R to ocean component |
| 85 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnFWFluxName, |
| 86 |
|
|
I Nx_ocn, Ny_ocn, FWFlux_ocn ) |
| 87 |
|
|
|
| 88 |
|
|
C-- Map salt flux from sea-ice compon. onto ocean grid |
| 89 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 90 |
|
|
C I Nx_atm, Ny_atm, SaltFlx_atm, Nx_ocn, Ny_ocn, |
| 91 |
|
|
C O SaltFlx_ocn ) |
| 92 |
|
|
C Send salt flux to ocean component |
| 93 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnSaltFxName, |
| 94 |
|
|
I Nx_ocn, Ny_ocn, SaltFlx_ocn ) |
| 95 |
|
|
|
| 96 |
|
|
C-- Map sea-ice mass onto ocean grid |
| 97 |
|
|
Cjrs CALL ATM_TO_OCN_MAPXYR8( |
| 98 |
|
|
C I Nx_atm, Ny_atm, sIceMass_atm, Nx_ocn, Ny_ocn, |
| 99 |
|
|
C O sIceMass_ocn ) |
| 100 |
|
|
C Send sea-ice mass to ocean component |
| 101 |
|
|
CALL COUPSEND_R8TILES( ocnCompName, ocnSeaIceName, |
| 102 |
|
|
I Nx_ocn, Ny_ocn, sIceMass_ocn ) |
| 103 |
|
|
Cjrs comment out seaice mass variable? |
| 104 |
|
|
C or make a dummy field? |
| 105 |
|
|
C or just go ahead and send it? |
| 106 |
|
|
|
| 107 |
|
|
RETURN |
| 108 |
|
|
END |
| 109 |
|
|
|
| 110 |
|
|
#endif |
| 111 |
|
|
|