--- MITgcm/pkg/generic_advdiff/gad_advection.F 2002/03/06 02:01:54 1.11 +++ MITgcm/pkg/generic_advdiff/gad_advection.F 2002/11/12 20:42:24 1.14 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/generic_advdiff/gad_advection.F,v 1.11 2002/03/06 02:01:54 jmc Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/generic_advdiff/gad_advection.F,v 1.14 2002/11/12 20:42:24 heimbach Exp $ C $Name: $ CBOI @@ -128,6 +128,8 @@ CEOP #ifdef ALLOW_AUTODIFF_TAMC + act0 = tracerIdentity - 1 + max0 = maxpass act1 = bi - myBxLo(myThid) max1 = myBxHi(myThid) - myBxLo(myThid) + 1 act2 = bj - myByLo(myThid) @@ -135,9 +137,13 @@ act3 = myThid - 1 max3 = nTx*nTy act4 = ikey_dynamics - 1 - ikey = (act1 + 1) + act2*max1 - & + act3*max1*max2 - & + act4*max1*max2*max3 + igadkey = (act0 + 1) + & + act1*max0 + & + act2*max0*max1 + & + act3*max0*max1*max2 + & + act4*max0*max1*max2*max3 + if (tracerIdentity.GT.maxpass) + & STOP 'maxpass seems smaller than tracerIdentity' #endif /* ALLOW_AUTODIFF_TAMC */ C-- Set up work arrays with valid (i.e. not NaN) values @@ -166,8 +172,9 @@ C-- Start of k loop for horizontal fluxes DO k=1,Nr #ifdef ALLOW_AUTODIFF_TAMC - kkey = (ikey-1)*Nr + k -CADJ STORE tracer(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte + kkey = (igadkey-1)*Nr + k +CADJ STORE tracer(:,:,k,bi,bj) = +CADJ & comlev1_bibj_k_gad, key=kkey, byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ C-- Get temporary terms used by tendency routines @@ -192,6 +199,10 @@ IF (useCubedSphereExchange) THEN nipass=3 +#ifdef ALLOW_AUTODIFF_TAMC + if ( nipass.GT.maxcube ) + & STOP 'maxcube needs to be = 3' +#endif ELSE nipass=1 ENDIF @@ -200,10 +211,10 @@ C-- Multiple passes for different directions on different tiles DO ipass=1,nipass #ifdef ALLOW_AUTODIFF_TAMC - passkey = ipass + (k-1) *maxpass - & + (ikey-1)*maxpass*Nr + passkey = ipass + (k-1) *maxcube + & + (igadkey-1)*maxcube*Nr IF (nipass .GT. maxpass) THEN - STOP 'GAD_ADVECTION: nipass > maxpass. check tamc.h' + STOP 'GAD_ADVECTION: nipass > maxcube. check tamc.h' ENDIF #endif /* ALLOW_AUTODIFF_TAMC */ @@ -252,7 +263,8 @@ #ifdef ALLOW_AUTODIFF_TAMC #ifndef DISABLE_MULTIDIM_ADVECTION -CADJ STORE localTij(:,:) = comlev1_bibj_pass, key=passkey, byte=isbyte +CADJ STORE localTij(:,:) = +CADJ & comlev1_bibj_k_gad_pass, key=passkey, byte=isbyte #endif #endif /* ALLOW_AUTODIFF_TAMC */ @@ -266,7 +278,6 @@ CALL GAD_DST3FL_ADV_X( & bi,bj,k,deltaTtracer,uTrans,uVel,localTij,af,myThid) ELSE - write(0,*) advectionScheme STOP 'GAD_ADVECTION: adv. scheme incompatibale with multi-dim' ENDIF @@ -319,7 +330,8 @@ #ifdef ALLOW_AUTODIFF_TAMC #ifndef DISABLE_MULTIDIM_ADVECTION -CADJ STORE localTij(:,:) = comlev1_bibj_pass, key=passkey, byte=isbyte +CADJ STORE localTij(:,:) = +CADJ & comlev1_bibj_k_gad_pass, key=passkey, byte=isbyte #endif #endif /* ALLOW_AUTODIFF_TAMC */ @@ -389,7 +401,9 @@ #ifdef ALLOW_AUTODIFF_TAMC CADJ STORE localTijk(:,:,k) -CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte +CADJ & = comlev1_bibj_k_gad, key=kkey, byte=isbyte +CADJ STORE rTrans(:,:) +CADJ & = comlev1_bibj_k_gad, key=kkey, byte=isbyte #endif /* ALLOW_AUTODIFF_TAMC */ C-- Compute Vertical transport