44 integer(i4b),
intent(in) :: ii((imax+1)*(jmax+1)), jj((imax+1)*(jmax+1))
45 integer(i4b),
intent(in) :: nn(0:jmax,0:imax)
46 real(dp),
intent(in) :: dxi, deta, z_sl
48 integer(i4b) :: i, j, k, n
49 integer(i4b) :: i1, j1
50 real(dp) :: inv_dxi, inv_deta, inv_dxi_deta, inv_dxi2, inv_deta2
51 real(dp) :: factor_rhs_1, factor_rhs_2, tau_b, rhosw_rho_ratio
52 real(dp) :: h_mid, zl_mid
53 real(dp),
dimension(0:JMAX,0:IMAX) :: vis_int_sgxy
54 character(len=256) :: ch_solver_set_option
60 lis_vector :: lgs_b, lgs_x
63 lis_integer,
parameter :: nmax = 2*(imax+1)*(jmax+1)
64 lis_integer,
parameter :: n_sprs = 20*(imax+1)*(jmax+1)
65 lis_integer,
allocatable,
dimension(:) :: lgs_a_ptr, lgs_a_index
66 lis_scalar,
allocatable,
dimension(:) :: lgs_a_value, lgs_b_value, lgs_x_value
71 inv_deta = 1.0_dp/deta
72 inv_dxi_deta = 1.0_dp/(dxi*deta)
73 inv_dxi2 = 1.0_dp/(dxi*dxi)
74 inv_deta2 = 1.0_dp/(deta*deta)
76 rhosw_rho_ratio = rho_sw/rho
77 factor_rhs_1 = 0.5_dp*rho*g
78 factor_rhs_2 = 0.5_dp*rho*g*(rho_sw-rho)/rho_sw
90 if ((maske(j,i)==0_i2b).or.(maske(j,i)==3_i2b))
then
92 vis_int_sgxy(j,i) = vis_int_sgxy(j,i) + vis_int_g(j,i)
95 if ((maske(j,i+1)==0_i2b).or.(maske(j,i+1)==3_i2b))
then
97 vis_int_sgxy(j,i) = vis_int_sgxy(j,i) + vis_int_g(j,i+1)
100 if ((maske(j+1,i)==0_i2b).or.(maske(j+1,i)==3_i2b))
then
102 vis_int_sgxy(j,i) = vis_int_sgxy(j,i) + vis_int_g(j+1,i)
105 if ((maske(j+1,i+1)==0_i2b).or.(maske(j+1,i+1)==3_i2b))
then
107 vis_int_sgxy(j,i) = vis_int_sgxy(j,i) + vis_int_g(j+1,i+1)
110 if (k>0) vis_int_sgxy(j,i) = vis_int_sgxy(j,i)/
real(k,dp)
118 allocate(lgs_a_value(n_sprs), lgs_a_index(n_sprs), lgs_a_ptr(nmax+1))
119 allocate(lgs_b_value(nmax), lgs_x_value(nmax))
141 if ( (i /= imax).and.(j /= 0).and.(j /= jmax) )
then
143 h_mid=0.50_dp*(h_c(j,i)+h_t(j,i)+h_c(j,i+1)+h_t(j,i+1))
144 zl_mid=0.50_dp*(zl(j,i)+zl(j,i+1))
148 ( (maske(j,i)==3_i2b).and.(maske(j,i+1)==3_i2b) ) &
150 ((maske(j,i)==3_i2b).and.(maske(j,i+1)==0_i2b) &
151 .and.(h_mid<(z_sl-zl_mid)*rhosw_rho_ratio)) &
153 ((maske(j,i)==0_i2b).and.(maske(j,i+1)==3_i2b) &
154 .and.(h_mid<(z_sl-zl_mid)*rhosw_rho_ratio)) &
163 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
164 lgs_a_value(k) = inv_deta2*vis_int_sgxy(j-1,i)
169 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
170 lgs_a_value(k) = inv_dxi_deta &
171 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j-1,i))
176 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
177 lgs_a_value(k) = 4.0_dp*inv_dxi2*vis_int_g(j,i)
182 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
183 lgs_a_value(k) = -inv_dxi_deta &
184 *(2.0_dp*vis_int_g(j,i+1)+vis_int_sgxy(j-1,i))
189 stop
' calc_vxy_ssa_matrix: Check for diagonal element failed!'
191 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
192 lgs_a_value(k) = -4.0_dp*inv_dxi2 &
193 *(vis_int_g(j,i+1)+vis_int_g(j,i)) &
195 *(vis_int_sgxy(j,i)+vis_int_sgxy(j-1,i))
200 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
201 lgs_a_value(k) = -inv_dxi_deta &
202 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j,i))
207 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
208 lgs_a_value(k) = 4.0_dp*inv_dxi2*vis_int_g(j,i+1)
213 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
214 lgs_a_value(k) = inv_dxi_deta &
215 *(2.0_dp*vis_int_g(j,i+1)+vis_int_sgxy(j,i))
220 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
221 lgs_a_value(k) = inv_deta2*vis_int_sgxy(j,i)
224 lgs_b_value(nr) = factor_rhs_1 &
225 * (h_c(j,i)+h_t(j,i)+h_c(j,i+1)+h_t(j,i+1)) &
228 lgs_x_value(nr) = vx_m(j,i)
232 else if ( ( (maske(j,i)==3_i2b).and.(maske(j,i+1)==0_i2b) &
233 .and.(h_mid>(z_sl-zl(j,i)+zl(j,i+1))*rhosw_rho_ratio)) &
235 ( (maske(j,i)==0_i2b).and.(maske(j,i+1)==3_i2b) &
236 .and.(h_mid>(z_sl-zl_mid)*rhosw_rho_ratio) ) &
239 #if ( !defined(SHS) || SHS==0 )
241 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
242 lgs_a_value(k) = 1.0_dp
245 lgs_b_value(nr) = vx_m(j,i)
246 lgs_x_value(nr) = vx_m(j,i)
250 tau_b=((year_sec/c_slide_ssa)**(1.0_dp/p_ssa)) &
251 *(rho*g*(h_c(j,i)+h_t(j,i))**(q_ssa/p_ssa)) &
252 /((vx_m(j,i)*vx_m(j,i)+vy_m(j,i)*vy_m(j,i))**(0.50_dp*(1.0_dp-1.0_dp/p_ssa)))
256 flag_sf(j,i-1)=.true.
260 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
261 lgs_a_value(k) = inv_deta2*vis_int_sgxy(j-1,i)
266 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
267 lgs_a_value(k) = inv_dxi_deta &
268 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j-1,i))
273 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
274 lgs_a_value(k) = 4.0_dp*inv_dxi2*vis_int_g(j,i)
279 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
280 lgs_a_value(k) = -inv_dxi_deta &
281 *(2.0_dp*vis_int_g(j,i+1)+vis_int_sgxy(j-1,i))
286 stop
' calc_vxy_ssa_matrix: Check for diagonal element failed!'
288 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
289 lgs_a_value(k) = -4.0_dp*inv_dxi2 &
290 *(vis_int_g(j,i+1)+vis_int_g(j,i)) &
292 *(vis_int_sgxy(j,i)+vis_int_sgxy(j-1,i))-tau_b
297 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
298 lgs_a_value(k) = -inv_dxi_deta &
299 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j,i))
304 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
305 lgs_a_value(k) = 4.0_dp*inv_dxi2*vis_int_g(j,i+1)
310 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
311 lgs_a_value(k) = inv_dxi_deta &
312 *(2.0_dp*vis_int_g(j,i+1)+vis_int_sgxy(j,i))
317 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
318 lgs_a_value(k) = inv_deta2*vis_int_sgxy(j,i)
321 lgs_b_value(nr) = factor_rhs_1 &
322 * (h_c(j,i)+h_t(j,i)+h_c(j,i+1)+h_t(j,i+1)) &
325 lgs_x_value(nr) = vx_m(j,i)
330 ( (maske(j,i)==3_i2b).and.(maske(j,i+1)==1_i2b) ) &
332 ( (maske(j,i)==1_i2b).and.(maske(j,i+1)==3_i2b) ) &
339 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
340 lgs_a_value(k) = 1.0_dp
343 lgs_b_value(nr) = 0.0_dp
345 lgs_x_value(nr) = 0.0_dp
348 ( (maske(j,i)==3_i2b).and.(maske(j,i+1)==2_i2b) ) &
350 ( (maske(j,i)==2_i2b).and.(maske(j,i+1)==3_i2b) ) &
354 if (maske(j,i)==3_i2b)
then
361 ( (maske(j,i1-1)==3_i2b).or.(maske(j,i1+1)==3_i2b) ) &
363 ( (maske(j,i1-1)==0_i2b).or.(maske(j,i1+1)==0_i2b) ) &
365 ( (maske(j,i1-1)==1_i2b).or.(maske(j,i1+1)==1_i2b) ) &
371 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
372 lgs_a_value(k) = -2.0_dp*inv_deta*vis_int_g(j,i1)
377 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
378 lgs_a_value(k) = -4.0_dp*inv_dxi*vis_int_g(j,i1)
383 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
384 lgs_a_value(k) = 4.0_dp*inv_dxi*vis_int_g(j,i1)
389 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
390 lgs_a_value(k) = 2.0_dp*inv_deta*vis_int_g(j,i1)
393 lgs_b_value(nr) = factor_rhs_2 &
394 *(h_c(j,i1)+h_t(j,i1))*(h_c(j,i1)+h_t(j,i1))
396 lgs_x_value(nr) = vx_m(j,i)
402 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
403 lgs_a_value(k) = 1.0_dp
406 lgs_b_value(nr) = 0.0_dp
408 lgs_x_value(nr) = 0.0_dp
412 else if ( (maske(j,i)==0_i2b).or.(maske(j,i+1)==0_i2b) )
then
417 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
418 lgs_a_value(k) = 1.0_dp
421 lgs_b_value(nr) = vx_m(j,i)
423 lgs_x_value(nr) = vx_m(j,i)
429 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
430 lgs_a_value(k) = 1.0_dp
433 lgs_b_value(nr) = 0.0_dp
435 lgs_x_value(nr) = 0.0_dp
442 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
443 lgs_a_value(k) = 1.0_dp
446 lgs_b_value(nr) = 0.0_dp
448 lgs_x_value(nr) = 0.0_dp
452 lgs_a_ptr(nr+1) = k+1
458 if ( (j /= jmax).and.(i /= 0).and.(i /= imax) )
then
460 h_mid=0.50_dp*(h_c(j+1,i)+h_t(j+1,i)+h_c(j,i)+h_t(j,i))
461 zl_mid=0.50_dp*(zl(j+1,i)+zl(j,i))
464 ( (maske(j,i)==3_i2b).and.(maske(j+1,i)==3_i2b) ) &
466 ( (maske(j,i)==3_i2b).and.(maske(j+1,i)==0_i2b) &
467 .and.(h_mid<(z_sl-zl_mid)*rhosw_rho_ratio)) &
469 ( (maske(j,i)==0_i2b).and.(maske(j+1,i)==3_i2b) &
470 .and.(h_mid<(z_sl-zl_mid)*rhosw_rho_ratio)) &
478 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
479 lgs_a_value(k) = 4.0_dp*inv_deta2*vis_int_g(j,i)
484 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
485 lgs_a_value(k) = inv_dxi_deta &
486 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j,i-1))
491 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
492 lgs_a_value(k) = inv_dxi2*vis_int_sgxy(j,i-1)
497 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
498 lgs_a_value(k) = -inv_dxi_deta &
499 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j,i))
504 stop
' calc_vxy_ssa_matrix: Check for diagonal element failed!'
506 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
507 lgs_a_value(k) = -4.0_dp*inv_deta2 &
508 *(vis_int_g(j+1,i)+vis_int_g(j,i)) &
510 *(vis_int_sgxy(j,i)+vis_int_sgxy(j,i-1))
515 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
516 lgs_a_value(k) = -inv_dxi_deta &
517 *(2.0_dp*vis_int_g(j+1,i)+vis_int_sgxy(j,i-1))
522 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
523 lgs_a_value(k) = inv_dxi2*vis_int_sgxy(j,i)
528 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
529 lgs_a_value(k) = inv_dxi_deta &
530 *(2.0_dp*vis_int_g(j+1,i)+vis_int_sgxy(j,i))
535 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
536 lgs_a_value(k) = 4.0_dp*inv_deta2*vis_int_g(j+1,i)
539 lgs_b_value(nr) = factor_rhs_1 &
540 * (h_c(j,i)+h_t(j,i)+h_c(j+1,i)+h_t(j+1,i)) &
543 lgs_x_value(nr) = vy_m(j,i)
547 ( (maske(j,i)==3_i2b).and.(maske(j+1,i)==0_i2b) &
548 .and.(h_mid>=(z_sl-zl_mid)*rhosw_rho_ratio)) &
550 ( (maske(j,i)==0_i2b).and.(maske(j+1,i)==3_i2b) &
551 .and.(h_mid>=(z_sl-zl_mid)*rhosw_rho_ratio)) &
554 #if ( !defined(SHS) || SHS==0 )
556 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
557 lgs_a_value(k) = 1.0_dp
560 lgs_b_value(nr) = vy_m(j,i)
561 lgs_x_value(nr) = vy_m(j,i)
565 tau_b=((year_sec/c_slide_ssa)**(1.0_dp/p_ssa)) &
566 *(rho*g*(h_c(j,i)+h_t(j,i))**(q_ssa/p_ssa)) &
567 /((vx_m(j,i)*vx_m(j,i)+vy_m(j,i)*vy_m(j,i)) &
568 **(0.50_dp*(1.0_dp-1.0_dp/p_ssa)))
572 flag_sf(j-1,i)=.true.
576 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
577 lgs_a_value(k) = 4.0_dp*inv_deta2*vis_int_g(j,i)
582 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
583 lgs_a_value(k) = inv_dxi_deta &
584 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j,i-1))
589 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
590 lgs_a_value(k) = inv_dxi2*vis_int_sgxy(j,i-1)
595 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
596 lgs_a_value(k) = -inv_dxi_deta &
597 *(2.0_dp*vis_int_g(j,i)+vis_int_sgxy(j,i))
602 stop
' calc_vxy_ssa_matrix: Check for diagonal element failed!'
604 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
605 lgs_a_value(k) = -4.0_dp*inv_deta2 &
606 *(vis_int_g(j+1,i)+vis_int_g(j,i)) &
608 *(vis_int_sgxy(j,i)+vis_int_sgxy(j,i-1))-tau_b
613 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
614 lgs_a_value(k) = -inv_dxi_deta &
615 *(2.0_dp*vis_int_g(j+1,i)+vis_int_sgxy(j,i-1))
620 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
621 lgs_a_value(k) = inv_dxi2*vis_int_sgxy(j,i)
626 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
627 lgs_a_value(k) = inv_dxi_deta &
628 *(2.0_dp*vis_int_g(j+1,i)+vis_int_sgxy(j,i))
633 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
634 lgs_a_value(k) = 4.0_dp*inv_deta2*vis_int_g(j+1,i)
637 lgs_b_value(nr) = factor_rhs_1 &
638 * (h_c(j,i)+h_t(j,i)+h_c(j+1,i)+h_t(j+1,i)) &
641 lgs_x_value(nr) = vy_m(j,i)
646 ( (maske(j,i)==3_i2b).and.(maske(j+1,i)==1_i2b) ) &
648 ( (maske(j,i)==1_i2b).and.(maske(j+1,i)==3_i2b) ) &
654 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
655 lgs_a_value(k) = 1.0_dp
658 lgs_b_value(nr) = 0.0_dp
660 lgs_x_value(nr) = 0.0_dp
663 ( (maske(j,i)==3_i2b).and.(maske(j+1,i)==2_i2b) ) &
665 ( (maske(j,i)==2_i2b).and.(maske(j+1,i)==3_i2b) ) &
669 if (maske(j,i)==3_i2b)
then
676 ( (maske(j1-1,i)==3_i2b).or.(maske(j1+1,i)==3_i2b) ) &
678 ( (maske(j1-1,i)==0_i2b).or.(maske(j1+1,i)==0_i2b) ) &
680 ( (maske(j1-1,i)==1_i2b).or.(maske(j1+1,i)==1_i2b) ) &
686 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
687 lgs_a_value(k) = -4.0_dp*inv_deta*vis_int_g(j1,i)
692 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
693 lgs_a_value(k) = -2.0_dp*inv_dxi*vis_int_g(j1,i)
698 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
699 lgs_a_value(k) = 2.0_dp*inv_dxi*vis_int_g(j1,i)
704 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
705 lgs_a_value(k) = 4.0_dp*inv_deta*vis_int_g(j1,i)
708 lgs_b_value(nr) = factor_rhs_2 &
709 *(h_c(j1,i)+h_t(j1,i))*(h_c(j1,i)+h_t(j1,i))
711 lgs_x_value(nr) = vy_m(j,i)
717 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
718 lgs_a_value(k) = 1.0_dp
721 lgs_b_value(nr) = 0.0_dp
723 lgs_x_value(nr) = 0.0_dp
727 else if ( (maske(j,i)==0_i2b).or.(maske(j+1,i)==0_i2b) )
then
732 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
733 lgs_a_value(k) = 1.0_dp
736 lgs_b_value(nr) = vy_m(j,i)
738 lgs_x_value(nr) = vy_m(j,i)
744 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
745 lgs_a_value(k) = 1.0_dp
748 lgs_b_value(nr) = 0.0_dp
749 lgs_x_value(nr) = 0.0_dp
756 if (k > n_sprs) stop
' calc_vxy_ssa_matrix: n_sprs too small!'
757 lgs_a_value(k) = 1.0_dp
760 lgs_b_value(nr) = 0.0_dp
761 lgs_x_value(nr) = 0.0_dp
765 lgs_a_ptr(nr+1) = k+1
771 call lis_matrix_create(lis_comm_world, lgs_a, ierr)
772 call lis_vector_create(lis_comm_world, lgs_b, ierr)
773 call lis_vector_create(lis_comm_world, lgs_x, ierr)
775 call lis_matrix_set_size(lgs_a, 0, nmax, ierr)
776 call lis_vector_set_size(lgs_b, 0, nmax, ierr)
777 call lis_vector_set_size(lgs_x, 0, nmax, ierr)
781 do nc=lgs_a_ptr(nr), lgs_a_ptr(nr+1)-1
782 call lis_matrix_set_value(lis_ins_value, nr, lgs_a_index(nc), &
783 lgs_a_value(nc), lgs_a, ierr)
786 call lis_vector_set_value(lis_ins_value, nr, lgs_b_value(nr), lgs_b, ierr)
787 call lis_vector_set_value(lis_ins_value, nr, lgs_x_value(nr), lgs_x, ierr)
791 call lis_matrix_set_type(lgs_a, lis_matrix_csr, ierr)
792 call lis_matrix_assemble(lgs_a, ierr)
796 call lis_solver_create(solver, ierr)
798 ch_solver_set_option =
'-i bicgstabl -p ilu '// &
799 '-maxiter 1000 -tol 1.0e-11 -initx_zeros false'
800 call lis_solver_set_option(trim(ch_solver_set_option), solver, ierr)
802 call lis_solve(lgs_a, lgs_b, lgs_x, solver, ierr)
808 call lis_vector_gather(lgs_x, lgs_x_value, ierr)
809 call lis_matrix_destroy(lgs_a, ierr)
810 call lis_vector_destroy(lgs_b, ierr)
811 call lis_vector_destroy(lgs_x, ierr)
812 call lis_solver_destroy(solver, ierr)
820 vx_m(j,i) = lgs_x_value(nr)
823 vy_m(j,i) = lgs_x_value(nr)
827 deallocate(lgs_a_value, lgs_a_index, lgs_a_ptr)
828 deallocate(lgs_b_value, lgs_x_value)