Commit 55154157 authored by kbk's avatar kbk
Browse files

cleaned code + TABS to spaces

parent ea1c1cf2
!$Id: bottom_friction.F90,v 1.3 2003-04-07 15:41:09 kbk Exp $
!$Id: bottom_friction.F90,v 1.4 2003-04-23 12:09:43 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -17,7 +17,7 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
integer, intent(in) :: runtype
integer, intent(in) :: runtype
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -27,7 +27,10 @@
! Original author(s): Karsten Bolding & Hans Burchard
!
! $Log: bottom_friction.F90,v $
! Revision 1.3 2003-04-07 15:41:09 kbk
! Revision 1.4 2003-04-23 12:09:43 kbk
! cleaned code + TABS to spaces
!
! Revision 1.3 2003/04/07 15:41:09 kbk
! adjusted use of mask
!
! Revision 1.1.1.1 2002/05/02 14:00:41 gotm
......@@ -56,9 +59,9 @@
! initial import into CVS
!
! !LOCAL VARIABLES:
integer :: i,j
REALTYPE :: uloc(E2DFIELD),vloc(E2DFIELD)
REALTYPE :: HH(E2DFIELD),fricvel(E2DFIELD)
integer :: i,j
REALTYPE :: uloc(E2DFIELD),vloc(E2DFIELD)
REALTYPE :: HH(E2DFIELD),fricvel(E2DFIELD)
!EOP
!-----------------------------------------------------------------------
!BOC
......@@ -113,9 +116,9 @@
do j=jmin,jmax
do i=imin,imax
if (au(i,j) .gt. 0) then
vloc(i,j)=0.25* ( V(i ,j )/DV(i ,j ) &
+V(i+1,j )/DV(i+1,j ) &
+V(i ,j-1)/DV(i ,j-1) &
vloc(i,j)=0.25* ( V(i ,j )/DV(i ,j ) &
+V(i+1,j )/DV(i+1,j ) &
+V(i ,j-1)/DV(i ,j-1) &
+V(i+1,j-1)/DV(i+1,j-1) )
else
vloc(i,j) = _ZERO_
......@@ -168,9 +171,9 @@
do j=jmin,jmax
do i=imin,imax
if (av(i,j) .gt. 0) then
uloc(i,j)=0.25* ( U(i ,j )/DU(i ,j ) &
+U(i-1,j )/DU(i-1,j ) &
+U(i ,j+1)/DU(i ,j+1) &
uloc(i,j)=0.25* ( U(i ,j )/DU(i ,j ) &
+U(i-1,j )/DU(i-1,j ) &
+U(i ,j+1)/DU(i ,j+1) &
+U(i-1,j+1)/DU(i-1,j+1) )
else
uloc(i,j) = _ZERO_
......
!$Id: cfl_check.F90,v 1.3 2003-04-03 07:01:49 gotm Exp $
!$Id: cfl_check.F90,v 1.4 2003-04-23 12:09:43 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -31,7 +31,10 @@
! Original author(s): Karsten Bolding & Hans Burchard
!
! $Log: cfl_check.F90,v $
! Revision 1.3 2003-04-03 07:01:49 gotm
! Revision 1.4 2003-04-23 12:09:43 kbk
! cleaned code + TABS to spaces
!
! Revision 1.3 2003/04/03 07:01:49 gotm
! fixed CFL calc. for non cartesian grid
!
! Revision 1.2 2002/10/04 13:56:58 gotm
......@@ -63,9 +66,9 @@
!
!
! !LOCAL VARIABLES:
integer :: pos(2),max_pos(2),rc,i,j
REALTYPE :: h_max=-99.,c,max_dt,dtt
logical, dimension(:,:), allocatable :: lmask
integer :: pos(2),max_pos(2),rc,i,j
REALTYPE :: h_max=-99.,c,max_dt,dtt
logical, dimension(:,:), allocatable :: lmask
!EOP
!-----------------------------------------------------------------------
!BOC
......
!$Id: depth_update.F90,v 1.2 2003-04-07 15:27:00 kbk Exp $
!$Id: depth_update.F90,v 1.3 2003-04-23 12:09:43 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -27,7 +27,10 @@
! Original author(s): Hans Burchard & Karsten Bolding
!
! $Log: depth_update.F90,v $
! Revision 1.2 2003-04-07 15:27:00 kbk
! Revision 1.3 2003-04-23 12:09:43 kbk
! cleaned code + TABS to spaces
!
! Revision 1.2 2003/04/07 15:27:00 kbk
! parallel support
!
! Revision 1.1.1.1 2002/05/02 14:00:42 gotm
......@@ -53,8 +56,8 @@
! initial import into CVS
!
! !LOCAL VARIABLES:
integer :: i,j
REALTYPE :: d1,d2,x
integer :: i,j
REALTYPE :: d1,d2,x
!EOP
!-----------------------------------------------------------------------
!BOC
......
!$Id: divergence.F90,v 1.2 2003-04-07 13:08:37 kbk Exp $
!$Id: divergence.F90,v 1.3 2003-04-23 12:09:43 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -30,7 +30,10 @@
! Original author(s): Hans Burchard & Karsten Bolding
!
! $Log: divergence.F90,v $
! Revision 1.2 2003-04-07 13:08:37 kbk
! Revision 1.3 2003-04-23 12:09:43 kbk
! cleaned code + TABS to spaces
!
! Revision 1.2 2003/04/07 13:08:37 kbk
! cleaned code
!
! Revision 1.1.1.1 2002/05/02 14:00:43 gotm
......@@ -49,15 +52,16 @@
! initial import into CVS
!
! !LOCAL VARIABLES:
integer :: i,j
integer :: i,j
!
!EOP
!-----------------------------------------------------------------------
!BOC
do i=imin,imax
do j=jmin,jmax
surfdiv(i,j) = ((U(i,j)/DU(i,j)*DYU-U(i-1,j)/DU(i-1,j)*DYUIM1) &
- (V(i,j)/DV(i,j)*DXV-V(i,j-1)/DV(i,j-1)*DXVJM1))*ARCD1
surfdiv(i,j)=((U(i,j)/DU(i,j)*DYU-U(i-1,j)/DU(i-1,j)*DYUIM1) &
-(V(i,j)/DV(i,j)*DXV-V(i,j-1)/DV(i,j-1)*DXVJM1)) &
*ARCD1
end do
end do
return
......
!$Id: have_bdy.F90,v 1.2 2003-04-07 15:42:05 kbk Exp $
!$Id: have_bdy.F90,v 1.3 2003-04-23 12:09:43 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -12,7 +12,7 @@
!
! !USES:
use domain
use m2d, only: have_boundaries
use m2d, only: have_boundaries
IMPLICIT NONE
!
! !INPUT PARAMETERS:
......@@ -25,7 +25,10 @@
! Original author(s): Karsten Bolding & Hans Burchard
!
! $Log: have_bdy.F90,v $
! Revision 1.2 2003-04-07 15:42:05 kbk
! Revision 1.3 2003-04-23 12:09:43 kbk
! cleaned code + TABS to spaces
!
! Revision 1.2 2003/04/07 15:42:05 kbk
! parallel support
!
! Revision 1.1.1.1 2002/05/02 14:00:44 gotm
......@@ -35,9 +38,9 @@
! initial import into CVS
!
! !LOCAL VARIABLES:
integer :: i,j,k,n
integer :: nbdy
integer :: f,l
integer :: i,j,k,n
integer :: nbdy
integer :: f,l
!EOP
!-----------------------------------------------------------------------
!BOC
......
!$Id: m2d.F90,v 1.2 2003-04-07 12:17:08 kbk Exp $
!$Id: m2d.F90,v 1.3 2003-04-23 12:09:43 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -18,31 +18,34 @@
! in from the library lib2d.a.
!
! !USES:
use time, only: julianday,secondsofday
use time, only: julianday,secondsofday
use parameters, only: avmmol
use domain, only: imin,imax,jmin,jmax,az,au,av,H,HU,HV,min_depth
use variables_2d
use halo_zones, only : update_2d_halo,wait_halo,z_TAG,U_TAG,V_TAG
use domain, only: imin,imax,jmin,jmax,az,au,av,H,HU,HV,min_depth
use variables_2d
IMPLICIT NONE
!
! !PUBLIC DATA MEMBERS:
logical :: have_boundaries
REALTYPE :: dtm, z0_const=0.010, Am=-_ONE_
integer :: MM=1,residual=-1
logical :: bdy2d=.false.
integer :: bdyfmt_2d,bdytype,bdyramp_2d=-1
character(len=PATH_MAX) :: bdyfile_2d
REAL_4B :: bdy_old(1000)
REAL_4B :: bdy_new(1000)
REAL_4B :: bdy_data(1000)
REAL_4B, allocatable :: bdy_times(:)
integer, parameter :: comm_method=-1
logical :: have_boundaries
REALTYPE :: dtm, z0_const=0.010, Am=-_ONE_
integer :: MM=1,residual=-1
logical :: bdy2d=.false.
integer :: bdyfmt_2d,bdytype,bdyramp_2d=-1
character(len=PATH_MAX) :: bdyfile_2d
REAL_4B :: bdy_old(1000)
REAL_4B :: bdy_new(1000)
REAL_4B :: bdy_data(1000)
REAL_4B, allocatable :: bdy_times(:)
integer, parameter :: comm_method=-1
!
! !REVISION HISTORY:
! Original author(s): Karsten Bolding & Hans Burchard
!
! $Log: m2d.F90,v $
! Revision 1.2 2003-04-07 12:17:08 kbk
! Revision 1.3 2003-04-23 12:09:43 kbk
! cleaned code + TABS to spaces
!
! Revision 1.2 2003/04/07 12:17:08 kbk
! parallel version
!
! Revision 1.1.1.1 2002/05/02 14:00:41 gotm
......@@ -102,9 +105,9 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
integer, intent(in) :: runtype
REALTYPE, intent(in) :: timestep
logical, intent(in) :: hotstart
integer, intent(in) :: runtype
REALTYPE, intent(in) :: timestep
logical, intent(in) :: hotstart
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -118,8 +121,9 @@
! 22Apr99 Karsten Bolding & Hans Burchard Initial code.
!
! !LOCAL VARIABLES:
integer :: rc
namelist /m2d/ MM,z0_const,Am,residual,bdy2d,bdyfmt_2d,bdyramp_2d,bdyfile_2d
integer :: rc
namelist /m2d/ &
MM,z0_const,Am,residual,bdy2d,bdyfmt_2d,bdyramp_2d,bdyfile_2d
!EOP
!-------------------------------------------------------------------------
!BOC
......@@ -200,10 +204,10 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
integer, intent(in) :: runtype,loop
REALTYPE, intent(in) :: tausx(E2DFIELD)
REALTYPE, intent(in) :: tausy(E2DFIELD)
REALTYPE, intent(in) :: airp(E2DFIELD)
integer, intent(in) :: runtype,loop
REALTYPE, intent(in) :: tausx(E2DFIELD)
REALTYPE, intent(in) :: tausy(E2DFIELD)
REALTYPE, intent(in) :: airp(E2DFIELD)
!
! !INPUT/OUTPUT PARAMETERS:
!
......
!$Id: momentum.F90,v 1.5 2003-04-07 15:54:16 kbk Exp $
!$Id: momentum.F90,v 1.6 2003-04-23 12:09:44 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -15,10 +15,10 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
integer, intent(in) :: n
REALTYPE, intent(in) :: tausx(E2DFIELD)
REALTYPE, intent(in) :: tausy(E2DFIELD)
REALTYPE, intent(in) :: airp(E2DFIELD)
integer, intent(in) :: n
REALTYPE, intent(in) :: tausx(E2DFIELD)
REALTYPE, intent(in) :: tausy(E2DFIELD)
REALTYPE, intent(in) :: airp(E2DFIELD)
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -28,7 +28,10 @@
! Original author(s): Hans Burchard & Karsten Bolding
!
! $Log: momentum.F90,v $
! Revision 1.5 2003-04-07 15:54:16 kbk
! Revision 1.6 2003-04-23 12:09:44 kbk
! cleaned code + TABS to spaces
!
! Revision 1.5 2003/04/07 15:54:16 kbk
! parallel support
!
! Revision 1.1.1.1 2002/05/02 14:00:44 gotm
......@@ -63,7 +66,7 @@
! initial import into CVS
!
! !LOCAL VARIABLES:
logical :: ufirst=.false.
logical :: ufirst=.false.
!EOP
!-----------------------------------------------------------------------
!BOC
......@@ -99,13 +102,13 @@
!
! !USES:
use parameters, only: g,rho_0
use domain, only: kmax,imin,imax,jmin,jmax,H,au,min_depth,Cori,dry_u
use domain, only: av,corv
use domain, only: imin,imax,jmin,jmax
use domain, only: H,au,av,min_depth,dry_u,Cori,corv
#if defined(SPHERICAL) || defined(CURVILINEAR)
use domain, only: dxu,arvd1,dxc,dyx
use domain, only: dxu,arvd1,dxc,dyx
use variables_2d, only: V
#else
use domain, only: dx
use domain, only: dx
#endif
use m2d, only: dtm
use variables_2d, only: D,z,UEx,U,DU,fV,SlUx,SlRu,ru,fU,DV
......@@ -113,7 +116,7 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
REALTYPE, intent(in) :: tausx(E2DFIELD),airp(E2DFIELD)
REALTYPE, intent(in) :: tausx(E2DFIELD),airp(E2DFIELD)
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -123,11 +126,12 @@
! 22Nov Author name Initial code
!
! !LOCAL VARIABLES:
integer :: i,j
REALTYPE :: zx(E2DFIELD),Slr(E2DFIELD),tausu(E2DFIELD)
REALTYPE :: zp,zm,Uloc,Uold
REALTYPE :: gamma=rho_0*g
REALTYPE :: cord_curv=_ZERO_
integer :: i,j
REALTYPE :: zx(E2DFIELD)
REALTYPE :: Slr(E2DFIELD),tausu(E2DFIELD)
REALTYPE :: zp,zm,Uloc,Uold
REALTYPE :: gamma=rho_0*g
REALTYPE :: cord_curv=_ZERO_
!EOP
!-----------------------------------------------------------------------
!BOC
......@@ -170,14 +174,15 @@
! Espelid et al. [2000], IJNME 49, 1521-1545
#ifdef NEW_CORI
Uloc= &
( U(i,j )/sqrt(DU(i,j ))+ U(i-1,j )/sqrt(DU(i-1,j )) &
+ U(i,j+1)/sqrt(DU(i,j+1))+ U(i-1,j+1)/sqrt(DU(i-1,j+1))) &
( U(i,j )/sqrt(DU(i,j ))+ U(i-1,j )/sqrt(DU(i-1,j )) &
+ U(i,j+1)/sqrt(DU(i,j+1))+ U(i-1,j+1)/sqrt(DU(i-1,j+1))) &
*0.25*sqrt(DV(i,j))
#else
Uloc=0.25*( U(i,j)+ U(i-1,j)+ U(i,j+1)+ U(i-1,j+1))
#endif
#if defined(SPHERICAL) || defined(CURVILINEAR)
cord_curv=(V(i,j)*(DYX-DYXIM1)-Uloc*(DXCJP1-DXC))/DV(i,j)*ARVD1
cord_curv=(V(i,j)*(DYX-DYXIM1)-Uloc*(DXCJP1-DXC)) &
/DV(i,j)*ARVD1
fU(i,j)=(cord_curv+corv(i,j))*Uloc
#else
fU(i,j)=corv(i,j)*Uloc
......@@ -208,21 +213,21 @@
!
! !USES:
use parameters, only: g,rho_0
use domain, only: imin,imax,jmin,jmax,H,av,min_depth,Cori
use domain, only: dry_v,au,coru
use domain, only: imin,imax,jmin,jmax
use domain, only: H,au,av,min_depth,dry_v,Cori,coru
#if defined(SPHERICAL) || defined(CURVILINEAR)
use domain, only: dyv,arud1,dxx,dyc
use m2d, only: U
use domain, only: dyv,arud1,dxx,dyc
use m2d, only: U
#else
use domain, only: dy
use domain, only: dy
#endif
use m2d, only: dtm
use m2d, only: dtm
use variables_2d, only: D,z,VEx,V,DV,fU,SlVx,SlRv,rv,fV,DU
use halo_zones, only : update_2d_halo,wait_halo,V_TAG
IMPLICIT NONE
!
! !INPUT PARAMETERS:
REALTYPE, intent(in) :: tausy(E2DFIELD),airp(E2DFIELD)
REALTYPE, intent(in) :: tausy(E2DFIELD),airp(E2DFIELD)
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -232,11 +237,12 @@
! 22Nov Author name Initial code
!
! !LOCAL VARIABLES:
integer :: i,j
REALTYPE :: zy(E2DFIELD),Slr(E2DFIELD),tausv(E2DFIELD)
REALTYPE :: zp,zm,Vloc
REALTYPE :: gamma=rho_0*g
REALTYPE :: cord_curv=_ZERO_
integer :: i,j
REALTYPE :: zy(E2DFIELD)
REALTYPE :: Slr(E2DFIELD),tausv(E2DFIELD)
REALTYPE :: zp,zm,Vloc
REALTYPE :: gamma=rho_0*g
REALTYPE :: cord_curv=_ZERO_
!EOP
!-----------------------------------------------------------------------
!BOC
......@@ -279,17 +285,18 @@
! Espelid et al. [2000], IJNME 49, 1521-1545
#ifdef NEW_CORI
Vloc = &
( V(i,j )/sqrt(DV(i,j ))+ V(i+1,j )/sqrt(DV(i+1,j )) + &
V(i,j-1)/sqrt(DV(i,j-1))+ V(i+1,j-1)/sqrt(DV(i+1,j-1))) &
*0.25*sqrt(DU(i,j))
( V(i,j )/sqrt(DV(i,j ))+ V(i+1,j )/sqrt(DV(i+1,j )) + &
V(i,j-1)/sqrt(DV(i,j-1))+ V(i+1,j-1)/sqrt(DV(i+1,j-1))) &
*0.25*sqrt(DU(i,j))
#else
Vloc = 0.25*( V(i,j)+ V(i+1,j)+ V(i,j-1)+ V(i+1,j-1))
#endif
#if defined(SPHERICAL) || defined(CURVILINEAR)
cord_curv=(Vloc*(DYCIP1-DYC)-U(i,j)*(DXX-DXXJM1))/DU(i,j)*ARUD1
fV(i,j)=(cord_curv+coru(i,j))*Vloc
cord_curv=(Vloc*(DYCIP1-DYC)-U(i,j)*(DXX-DXXJM1)) &
/DU(i,j)*ARUD1
fV(i,j)=(cord_curv+coru(i,j))*Vloc
#else
fV(i,j)=coru(i,j)*Vloc
fV(i,j)=coru(i,j)*Vloc
#endif
else
fV(i,j) = _ZERO_
......
!$Id: residual.F90,v 1.2 2003-04-07 15:30:58 kbk Exp $
!$Id: residual.F90,v 1.3 2003-04-23 12:09:44 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -12,13 +12,12 @@
!
! !USES:
use domain, only: HU,HV
! use variables_2d, only: zu,zuo,zv,zvo
use variables_2d, only: zu,zv
use variables_2d, only: u,v,res_du,res_u,res_dv,res_v
IMPLICIT NONE
!
! !INPUT PARAMETERS:
integer, intent(in) :: finish
integer, intent(in) :: finish
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -28,7 +27,10 @@
! Original author(s): Karsten Bolding & Hans Burchard
!
! $Log: residual.F90,v $
! Revision 1.2 2003-04-07 15:30:58 kbk
! Revision 1.3 2003-04-23 12:09:44 kbk
! cleaned code + TABS to spaces
!
! Revision 1.2 2003/04/07 15:30:58 kbk
! needs to be fixed
!
! Revision 1.1.1.1 2002/05/02 14:00:45 gotm
......
!$Id: sealevel.F90,v 1.3 2003-04-07 15:44:13 kbk Exp $
!$Id: sealevel.F90,v 1.4 2003-04-23 12:09:44 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -32,7 +32,10 @@
! Original author(s): Hans Burchard & Karsten Bolding
!
! $Log: sealevel.F90,v $
! Revision 1.3 2003-04-07 15:44:13 kbk
! Revision 1.4 2003-04-23 12:09:44 kbk
! cleaned code + TABS to spaces
!
! Revision 1.3 2003/04/07 15:44:13 kbk
! parallel support
!
! Revision 1.1.1.1 2002/05/02 14:00:45 gotm
......@@ -71,8 +74,8 @@
!
!
! !LOCAL VARIABLES:
integer :: i,j
REALTYPE :: kk
integer :: i,j
REALTYPE :: kk
!
!EOP
!-----------------------------------------------------------------------
......@@ -115,7 +118,6 @@
call update_2d_halo(z,z,az,imin,jmin,imax,jmax,z_TAG)
call wait_halo(z_TAG)
!KBK call cp_outside_openbdy_2d(z)
#ifdef DEBUG
write(debug,*) 'Leaving sealevel()'
......
!$Id: update_2d_bdy.F90,v 1.2 2003-04-07 15:45:05 kbk Exp $
!$Id: update_2d_bdy.F90,v 1.3 2003-04-23 12:09:44 kbk Exp $
#include "cppdefs.h"
!-----------------------------------------------------------------------
!BOP
......@@ -19,7 +19,7 @@
IMPLICIT NONE
!
! !INPUT PARAMETERS:
integer, intent(in) :: loop,bdyramp
integer, intent(in) :: loop,bdyramp
!
! !INPUT/OUTPUT PARAMETERS:
!
......@@ -29,7 +29,10 @@
! Original author(s): Karsten Bolding & Hans Burchard
!
! $Log: update_2d_bdy.F90,v $
! Revision 1.2 2003-04-07 15:45:05 kbk
! Revision 1.3 2003-04-23 12:09:44 kbk
! cleaned code + TABS to spaces
!
! Revision 1.2 2003/04/07 15:45:05 kbk
! parallel support
!
! Revision 1.1.1.1 2002/05/02 14:00:45 gotm
......@@ -64,11 +67,11 @@
! initial import into CVS
!
! !LOCAL VARIABLES:
logical, save :: first=.true.
REALTYPE, save :: time_array(1000),zbo(1000),zbn(1000)
REALTYPE, save :: t,t1,t2
REALTYPE :: a,amp,ratio,fac
integer :: i,j,k,l,n
logical, save :: first=.true.
REALTYPE, save :: time_array(1000),zbo(1000),zbn(1000)
REALTYPE, save :: t,t1,t2
REALTYPE :: a,amp,ratio,fac
integer :: i,j,k,l,n
!
!EOP
!-----------------------------------------------------------------------
......@@ -96,7 +99,7 @@
bdy_data = amp*sin(OMEGA*t)
#endif
#ifdef NOMADS_TEST
bdy_data=0.
bdy_data=0.
#endif
#undef OMEGA
#ifdef CHANNEL_TEST
......@@ -106,26 +109,26 @@
#endif
#undef KBK_TESTING
#ifdef CURVI_TEST
k = 0
do n=1,NWB
i = wi(n)
if (n .eq. 1) then
a = 0.05
else
a = -0.05
end if
do j=wfj(1),wlj(1)
k = k+1
bdy_data(k) = a