29 type(
qg_geom),
intent(in) :: geom
30 real(kind_real),
intent(in) :: q(geom%nx,geom%ny,geom%nz)
31 real(kind_real),
intent(in) :: x_north(geom%nz)
32 real(kind_real),
intent(in) :: x_south(geom%nz)
33 real(kind_real),
intent(out) :: x(geom%nx,geom%ny,geom%nz)
37 real(kind_real) :: q_nobc(geom%nx,geom%ny,geom%nz),pinv_q(geom%nx,geom%ny,geom%nz),pinv_x(geom%nx,geom%ny,geom%nz)
42 q_nobc(:,iy,:) = q(:,iy,:)-geom%bet(iy)
43 q_nobc(:,iy,1) = q_nobc(:,iy,1)-geom%heat(:,iy)
50 q_nobc(:,1,iz) = q_nobc(:,1,iz)-x_south(iz)/geom%deltay**2
51 q_nobc(:,geom%ny,iz) = q_nobc(:,geom%ny,iz)-x_north(iz)/geom%deltay**2
60 pinv_q(ix,iy,iz) = sum(geom%f_pinv(iz,:)*q_nobc(ix,iy,:))
68 call solve_helmholz(geom,geom%f_d(iz),pinv_q(:,:,iz),pinv_x(:,:,iz))
76 x(ix,iy,iz) = sum(geom%f_p(iz,:)*pinv_x(ix,iy,:))
90 type(
qg_geom),
intent(in) :: geom
91 real(kind_real),
intent(in) :: q(geom%nx,geom%ny,geom%nz)
92 real(kind_real),
intent(out) :: x(geom%nx,geom%ny,geom%nz)
96 real(kind_real) :: pinv_q(geom%nx,geom%ny,geom%nz),pinv_x(geom%nx,geom%ny,geom%nz)
107 pinv_q(ix,iy,iz) = sum(geom%f_pinv(iz,:)*q(ix,iy,:))
115 call solve_helmholz(geom,geom%f_d(iz),pinv_q(:,:,iz),pinv_x(:,:,iz))
123 x(ix,iy,iz) = sum(geom%f_p(iz,:)*pinv_x(ix,iy,:))
137 type(
qg_geom),
intent(in) :: geom
138 real(kind_real),
intent(in) :: x(geom%nx,geom%ny,geom%nz)
139 real(kind_real),
intent(inout) :: q(geom%nx,geom%ny,geom%nz)
143 real(kind_real) :: pinv_q(geom%nx,geom%ny,geom%nz),pinv_x(geom%nx,geom%ny,geom%nz),qtmp(geom%nx,geom%ny,geom%nz)
150 pinv_x(ix,iy,iz) = sum(geom%f_p(:,iz)*x(ix,iy,:))
167 qtmp(ix,iy,iz) = sum(geom%f_pinv(:,iz)*pinv_q(ix,iy,:))