c **NOTE** ALL SUBROUTINES INCLUDING THIS FILE MUST HAVE THE c FOLLOWING IN THE PARAMETER LIST: c nx,ny,ntrac include 'comm_para.h' include 'dyice.h' c======================================================================== c Common block DynVariables: dynamic variables (defined on the C-grid) c======================================================================== dimension + h (0:nx+1,0:ny+1), + A (0:nx+1,0:ny+1), + tracer (0:nx+1,0:ny+1,ntrac), + uice (0:nx+2,0:ny+2), + vice (0:nx+2,0:ny+2), + p (0:nx+1,0:ny+1), + etaC (0:nx+1,0:ny+1), + etaB (0:nx+2,0:ny+2), + effshear (0:nx+1,0:ny+1) pointer (p_h,h), (p_A,A), + (p_tracer,tracer), (p_uice,uice), (p_vice,vice), + (p_p,p), (p_etaC,etaC), (p_etaB,etaB), (p_effshear,effshear) common/DynVariables/ + p_h, ! ice thickness ( = tracer(i,j,1) ) + p_A, ! ice concentration ( = tracer(i,j,2) ) + p_tracer, ! passive tracer + p_uice, ! x-comp ice velocity + p_vice, ! y-comp ice velocity + p_p, ! internal ice pressure + p_etaC, ! coefficient of viscosity + p_etaB, ! coefficient of viscosity (B-grid) + p_effshear ! effective shear strain c======================================================================== c Common block CharacScale: characteristic scales c======================================================================== real L common/CharacScales/ + L, ! characteristic length + Hi, ! characteristic ice thickness + Ui, ! characteristic ice speed + Sigma, ! characteristic internal ice stress + Ua, ! characteristic air speed + Tauw ! characteristic water drag c======================================================================== c Common block NonDim: dimensionless parameters in the mom equations c======================================================================== dimension + CdwA (0:nx+1,0:ny+1), + CdwC1 (nx+1,ny), + CdwC2 (nx,ny+1), + CdaA (0:nx+1,0:ny+1), + CdaC1 (nx+1,ny), + CdaC2 (nx,ny+1) pointer + (p_CdwA,CdwA), (p_CdwC1,CdwC1), (p_CdwC2,CdwC2), + (p_CdaA,CdaA), (p_CdaC1,CdaC1), (p_CdaC2,CdaC2) common/NonDim/ + rhof, ! non-dim Coriolis parameter + gradp, ! non-dim internal ice pressure gradient + Cdw, ! non-dim water drag + p_CdwA, ! water drag coefficient (A-grid) + p_CdwC1, ! water drag coefficient (C-grid) + p_CdwC2, ! water drag coefficient (C-grid) + Cda, ! non-dim wind stress + p_CdaA, ! air stress coefficient (A-grid) + p_CdaC1, ! air stress coefficient (C-grid) + p_CdaC2 ! air stress coefficient (C-grid) c======================================================================== c Common block const: program constants c======================================================================== common/const_dyice/ + Deltax, ! grid size in the x-dir + Deltay, ! grid size in the y-dir + Deltat, ! time step + theta_a, ! air turning angle + theta_w, ! water turning angle + sintheta_a, ! sin (theta_a) + costheta_a, ! cos (theta_a) + sintheta_w, ! sin (theta_w) + costheta_w ! cos (theta_w) c======================================================================== c Common block ForcingFields: forcing field variables c (defined on the A-grid) c======================================================================== dimension + uair (0:nx+1,0:ny+1), + vair (0:nx+1,0:ny+1), + speeda (0:nx+1,0:ny+1), + uwater (0:nx+1,0:ny+1), + vwater (0:nx+1,0:ny+1), + speediw (0:nx+1,0:ny+1), + ufd (0:nx+1,0:ny+1), + vfd (0:nx+1,0:ny+1) pointer + (p_uair,uair), (p_vair,vair), (p_speeda,speeda), + (p_uwater,uwater), (p_vwater,vwater), (p_speediw,speediw), + (p_ufd,ufd), (p_vfd,vfd) common/ForcingFields/ + p_uair, ! x-comp wind velocity + p_vair, ! y-comp wind velocity + p_speeda, ! wind speed + p_uwater, ! x-comp ocean current velocity + p_vwater, ! y-comp ocean current velocity + p_speediw, ! ice speed relative to ocean current + p_ufd, ! x-comp freedrift ice velocity + p_vfd ! y-comp freedrift ice velocity c======================================================================== c Common block mask: masks for the node (B-grid) and grid center (C-grid) c======================================================================== integer + maskB (0:nx+2, 0:ny+2), + maskC (0:nx+1, 0:ny+1), + lsm (nx, ny) pointer + (p_maskB,maskB), (p_maskC,maskC), (p_lsm,lsm) common/mask/ + p_maskB, ! defined at the node ( 0: bndy, 1: ocean ) + p_maskC, ! defined at the center ( 0: land, 1: ocean ) + p_lsm !uncompressed -> compressed A-grid, (0: land, >0 ocean) c======================================================================== c local variables c======================================================================== dimension R1p(nx+1,ny+1), R2p(nx+1,ny+1) dimension R1pp(nx+1,ny+1), R2pp(nx+1,ny+1) dimension A11(nx+1,ny+1), A12(nx+1,ny+1) dimension A21(nx+1,ny+1), A22(nx+1,ny+1), detA(nx+1,ny+1) dimension uterm(nx+1,ny+1), vterm(nx+1,ny+1) dimension dudy(0:nx+2,0:ny+2), dvdx(0:nx+2,0:ny+2) dimension tracermax(MAXTR_SUR), tracermin(MAXTR_SUR) real Pmax(0:nx,0:ny) dimension + R1(0:nx+2,0:ny+2), x2(0:nx+1,0:ny+1), + R2(0:nx+2,0:ny+2), divflux(nx,ny) pointer + (p_R1,R1), (p_R2,R2), (p_x2,x2), (p_divflux,divflux), + (p_R1p,R1p), (p_R2p,R2p), (p_R1pp,R1pp), (p_R2pp,R2pp), + (p_A11,A11), (p_A12,A12), (p_A21,A21), (p_A22,A22), + (p_detA,detA), + (p_uterm,uterm), (p_vterm,vterm), + (p_dudy,dudy), (p_dvdx,dvdx), (p_Pmax,Pmax) common/extra/ p_R1, p_R2, p_divflux, p_x2, + p_R1p, p_R2p, p_R1pp, p_R2pp, + p_A11, p_A12, p_A21, p_A22, p_detA, p_uterm, p_vterm, + p_dudy, p_dvdx, p_Pmax