37 subroutine calc_top_3(time, z_sl, z_mar, dtime, dxi, deta, mean_accum, &
47 integer(i4b),
intent(in) :: ii((imax+1)*(jmax+1)), jj((imax+1)*(jmax+1))
48 integer(i4b),
intent(in) :: nn(0:jmax,0:imax)
49 real(dp),
intent(in) :: time
50 real(dp),
intent(in) :: z_sl, z_mar
51 real(dp),
intent(in) :: dtime, dxi, deta
52 real(dp),
intent(in) :: mean_accum
54 integer(i4b) :: i, j, kc, kt
55 integer(i4b) :: k, nnz
57 real(dp) :: czs2(0:jmax,0:imax), czs3(0:jmax,0:imax)
58 real(dp) :: year_sec_inv
60 real(dp) :: dt_dxi, dt_deta
61 real(dp) :: azs2, azs3
62 real(dp),
dimension(0:JMAX,0:IMAX) :: h, h_neu
63 real(dp) :: rhosw_rho_ratio, rho_rhosw_ratio
64 real(dp) :: vx_m_help, vy_m_help
65 real(dp) :: vx_m_1, vx_m_2, vy_m_1, vy_m_2
66 real(dp) :: uph_x_1, uph_x_2, uph_y_1, uph_y_2
68 real(dp) :: target_topo_time_lag, target_topo_weight_lin
69 logical :: flag_calving_event
71 real(dp),
parameter :: h_isol_max = 1.0e+03_dp
78 integer(i4b) :: nc, nr
79 integer(i4b),
parameter :: nmax = (imax+1)*(jmax+1)
80 integer(i4b),
parameter :: n_sprs = 10*(imax+1)*(jmax+1)
81 integer(i4b),
allocatable,
dimension(:) :: lgs_a_ptr, lgs_a_index
82 integer(i4b),
allocatable,
dimension(:) :: lgs_a_diag_index
83 integer(i4b),
allocatable,
dimension(:) :: lgs_a_index_trim
84 real(dp),
allocatable,
dimension(:) :: lgs_a_value, lgs_b_value, lgs_x_value
85 real(dp),
allocatable,
dimension(:) :: lgs_a_value_trim
102 stop
' calc_top_3: Option CALCZS==4 not supported by this routine!'
108 year_sec_inv = 1.0_dp/year_sec
110 rho_rhosw_ratio = rho/rho_sw
111 rhosw_rho_ratio = rho_sw/rho
113 dtime_inv = 1.0_dp/dtime
118 azs2 = dtime/(dxi*dxi)
119 azs3 = dtime/(deta*deta)
127 if (maske(j,i) <= 1_i2b)
then
129 zb_neu(j,i) = zl_neu(j,i)
130 dzb_dtau(j,i) = dzl_dtau(j,i)
134 zb_neu(j,i) = zb(j,i)
135 dzb_dtau(j,i) = 0.0_dp
157 czs2(j,i) = azs2*0.5_dp*(h_diff(j,i)+h_diff(j,i+1)) &
158 *sq_g22_sgx(j,i)*insq_g11_sgx(j,i)
164 czs3(j,i) = azs3*0.5_dp*(h_diff(j,i)+h_diff(j+1,i)) &
165 *sq_g11_sgy(j,i)*insq_g22_sgy(j,i)
172 if ( (maske(j,i) <= 1_i2b) &
174 (.not.flag_grounding_line_1(j,i)) &
176 (.not.flag_shelfy_stream(j,i)) &
181 h_neu(j,i) = h(j,i) &
182 + dtime*(as_perp(j,i)-q_b_tot(j,i)) &
183 + ( czs2(j,i) *(zs(j,i+1)-zs(j,i) ) &
184 -czs2(j,i-1)*(zs(j,i) -zs(j,i-1)) &
185 +czs3(j,i) *(zs(j+1,i)-zs(j,i) ) &
186 -czs3(j-1,i)*(zs(j,i) -zs(j-1,i)) ) &
187 *insq_g11_g(j,i)*insq_g22_g(j,i)
191 vx_m_help = 0.5_dp*(vx_m(j,i)+vx_m(j,i-1))
192 vy_m_help = 0.5_dp*(vy_m(j,i)+vy_m(j-1,i))
194 vx_m_1 = min(vx_m_help, 0.0_dp)
195 vx_m_2 = max(vx_m_help, 0.0_dp)
196 vy_m_1 = min(vy_m_help, 0.0_dp)
197 vy_m_2 = max(vy_m_help, 0.0_dp)
199 uph_x_1 = h(j,i+1)-h(j,i )
200 uph_x_2 = h(j,i )-h(j,i-1)
201 uph_y_1 = h(j+1,i)-h(j ,i)
202 uph_y_2 = h(j ,i)-h(j-1,i)
204 h_neu(j,i) = h(j,i) &
205 + dtime*(as_perp(j,i)-q_b_tot(j,i)) &
207 * ( vx_m_1*uph_x_1 + vx_m_2*uph_x_2 &
208 + (vx_m(j,i)-vx_m(j,i-1))*h(j,i) ) &
210 * ( vy_m_1*uph_y_1 + vy_m_2*uph_y_2 &
211 + (vy_m(j,i)-vy_m(j-1,i))*h(j,i) )
219 h_neu(jmax,i) = 0.0_dp
224 h_neu(j,imax) = 0.0_dp
229 #elif (CALCZS==1 || CALCZS==2)
231 stop
' calc_top_3: Options CALCZS==1 or 2 not supported by this routine!'
239 czs2(j,i) = azs2*0.5_dp*(h_diff(j,i)+h_diff(j,i+1)) &
240 *sq_g22_sgx(j,i)*insq_g11_sgx(j,i)
246 czs3(j,i) = azs3*0.5_dp*(h_diff(j,i)+h_diff(j+1,i)) &
247 *sq_g11_sgy(j,i)*insq_g22_sgy(j,i)
251 allocate(lgs_a_value(n_sprs), lgs_a_index(n_sprs), lgs_a_ptr(nmax+1))
252 allocate(lgs_a_diag_index(nmax), lgs_b_value(nmax), lgs_x_value(nmax))
264 i = ii(nr) ; j = jj(nr)
266 if ( (i /= 0).and.(i /= imax).and.(j /= 0).and.(j /= jmax) )
then
268 if ( (maske(j,i) <= 1_i2b) &
270 (.not.flag_grounding_line_1(j,i)) &
272 (.not.flag_shelfy_stream(j,i)) &
277 lgs_a_ptr(nr)=k+1 ; lgs_x_value(nr)=h(j,i)
279 k=k+1 ; nc=nn(j-1,i) ; lgs_a_index(k)=nc
280 lgs_a_value(k) = -czs3(j-1,i)*ovi_weight &
281 *insq_g11_g(j,i)*insq_g22_g(j,i)
283 k=k+1 ; nc=nn(j,i-1) ; lgs_a_index(k)=nc
284 lgs_a_value(k) = -czs2(j,i-1)*ovi_weight &
285 *insq_g11_g(j,i)*insq_g22_g(j,i)
287 k=k+1 ; lgs_a_index(k)=nr ; lgs_a_diag_index(nr)=k
288 lgs_a_value(k) = 1.0_dp + (czs2(j,i)+czs2(j,i-1) &
289 +czs3(j,i)+czs3(j-1,i)) &
291 *insq_g11_g(j,i)*insq_g22_g(j,i)
293 k=k+1 ; nc=nn(j,i+1) ; lgs_a_index(k)=nc
294 lgs_a_value(k) = -czs2(j,i)*ovi_weight &
295 *insq_g11_g(j,i)*insq_g22_g(j,i)
297 k=k+1 ; nc=nn(j+1,i) ; lgs_a_index(k)=nc
298 lgs_a_value(k) = -czs3(j,i)*ovi_weight &
299 *insq_g11_g(j,i)*insq_g22_g(j,i)
301 lgs_b_value(nr) = h(j,i) &
302 + dtime*(as_perp(j,i)-q_b_tot(j,i)) &
303 + ( czs2(j,i) *(h(j,i+1)-h(j,i )) &
304 -czs2(j,i-1)*(h(j,i )-h(j,i-1)) &
305 +czs3(j,i) *(h(j+1,i)-h(j,i )) &
306 -czs3(j-1,i)*(h(j,i )-h(j-1,i)) ) &
307 *(1.0_dp-ovi_weight) &
308 *insq_g11_g(j,i)*insq_g22_g(j,i) &
309 + ( czs2(j,i) *(zb_neu(j,i+1)-zb_neu(j,i )) &
310 -czs2(j,i-1)*(zb_neu(j,i )-zb_neu(j,i-1)) &
311 +czs3(j,i) *(zb_neu(j+1,i)-zb_neu(j,i )) &
312 -czs3(j-1,i)*(zb_neu(j,i )-zb_neu(j-1,i)) ) &
313 *insq_g11_g(j,i)*insq_g22_g(j,i)
316 #if (!defined(ZS_EVOL_SSA) || ZS_EVOL_SSA==1)
320 #elif (ZS_EVOL_SSA==0)
322 else if ( flag_grounding_line_1(j,i) &
324 flag_shelfy_stream(j,i) &
329 stop
' calc_top_3: ZS_EVOL_SSA must be either 1 or 0!'
332 vx_m_help = 0.5_dp*(vx_m(j,i)+vx_m(j,i-1))
333 vy_m_help = 0.5_dp*(vy_m(j,i)+vy_m(j-1,i))
335 vx_m_1 = min(vx_m_help, 0.0_dp)
336 vx_m_2 = max(vx_m_help, 0.0_dp)
337 vy_m_1 = min(vy_m_help, 0.0_dp)
338 vy_m_2 = max(vy_m_help, 0.0_dp)
340 uph_x_1 = h(j,i+1)-h(j,i )
341 uph_x_2 = h(j,i )-h(j,i-1)
342 uph_y_1 = h(j+1,i)-h(j ,i)
343 uph_y_2 = h(j ,i)-h(j-1,i)
345 lgs_a_ptr(nr)=k+1 ; lgs_x_value(nr)=h(j,i)
347 k=k+1 ; nc=nn(j-1,i) ; lgs_a_index(k)=nc
348 lgs_a_value(k) = -vy_m_2*dt_deta*ovi_weight
351 k=k+1 ; nc=nn(j,i-1) ; lgs_a_index(k)=nc
352 lgs_a_value(k) = -vx_m_2*dt_dxi *ovi_weight
355 k=k+1 ; lgs_a_index(k)=nr ; lgs_a_diag_index(nr)=k
356 lgs_a_value(k) = 1.0_dp &
360 +(vx_m(j,i)-vx_m(j,i-1)) ) &
363 +(vy_m(j,i)-vy_m(j-1,i)) ) )
366 k=k+1 ; nc=nn(j,i+1) ; lgs_a_index(k)=nc
367 lgs_a_value(k) = vx_m_1*dt_dxi *ovi_weight
370 k=k+1 ; nc=nn(j+1,i) ; lgs_a_index(k)=nc
371 lgs_a_value(k) = vy_m_1*dt_deta*ovi_weight
374 lgs_b_value(nr)= h(j,i) &
375 +dtime*(as_perp(j,i)-q_b_tot(j,i)) &
376 -(1.0_dp-ovi_weight) &
378 * ( vx_m_1*uph_x_1 + vx_m_2*uph_x_2 &
379 + (vx_m(j,i)-vx_m(j,i-1))*h(j,i) ) &
381 * ( vy_m_1*uph_y_1 + vy_m_2*uph_y_2 &
382 + (vy_m(j,i)-vy_m(j-1,i))*h(j,i) ) )
385 #if (!defined(ZS_EVOL_SSA) || ZS_EVOL_SSA==1)
389 #elif (ZS_EVOL_SSA==0)
391 else if (maske(j,i)==3_i2b)
then
393 lgs_a_ptr(nr)=k+1 ; lgs_x_value(nr)=h(j,i)
394 lgs_b_value(nr) = h(j,i)
396 k=k+1 ; lgs_a_index(k)=nr ; lgs_a_diag_index(nr)=k
397 lgs_a_value(k) = 1.0_dp
399 else if (maske(j,i)==2_i2b)
then
401 lgs_a_ptr(nr)=k+1 ; lgs_x_value(nr)=0.0_dp
402 lgs_b_value(nr) = 0.0_dp
404 k=k+1 ; lgs_a_index(k)=nr ; lgs_a_diag_index(nr)=k
405 lgs_a_value(k) = 1.0_dp
408 stop
' calc_top_3: ZS_EVOL_SSA must be either 1 or 0!'
418 lgs_a_value(k) = 1.0_dp
419 lgs_a_diag_index(nr) = k
421 lgs_x_value(nr) = 0.0_dp
422 lgs_b_value(nr) = 0.0_dp
428 lgs_a_ptr(nmax+1)=k+1
432 allocate(lgs_a_value_trim(nnz), lgs_a_index_trim(nnz))
435 lgs_a_value_trim(k) = lgs_a_value(k)
436 lgs_a_index_trim(k) = lgs_a_index(k)
439 deallocate(lgs_a_value, lgs_a_index)
441 eps_sor = 1.0e-05_dp*mean_accum*dtime
444 lgs_a_index_trim, lgs_a_diag_index, lgs_a_ptr, &
446 nnz, nmax, omega_sor, eps_sor, lgs_x_value, ierr)
451 h_neu(j,i) = lgs_x_value(nr)
454 deallocate(lgs_a_value_trim, lgs_a_index_trim, lgs_a_ptr)
455 deallocate(lgs_a_diag_index, lgs_b_value, lgs_x_value)
463 if (time >= time_target_topo_final)
then
465 else if (time >= time_target_topo_init)
then
466 h_neu = ( target_topo_time_lag*h_neu + dtime*h_target ) &
467 / ( target_topo_time_lag + dtime )
485 h_balance = (z_sl-zl_neu(j,i))*rhosw_rho_ratio
487 #if (!defined(ZS_EVOL_SSA) || ZS_EVOL_SSA==1)
491 if ( ( maske(j,i) <= 1_i2b &
492 .and. (maske(j,i+1)>1_i2b.or.maske(j,i-1)>1_i2b &
493 .or.maske(j+1,i)>1_i2b.or.maske(j-1,i)>1_i2b) ) &
495 ( maske(j,i)>=2_i2b &
496 .and. (maske(j,i+1)==0_i2b.or.maske(j,i-1)==0_i2b &
497 .or.maske(j+1,i)==0_i2b.or.maske(j-1,i)==0_i2b) ) )
then
499 if (h_neu(j,i)>=h_min)
then
501 if (h_neu(j,i)<h_balance.and.zl_neu(j,i)<z_sl)
then
503 zb_neu(j,i) = z_sl-rho_rhosw_ratio*h_neu(j,i)
504 dzb_dtau(j,i) = dtime_inv*(zb_neu(j,i)-zb(j,i))
505 zs_neu(j,i) = zb_neu(j,i)+h_neu(j,i)
508 zb_neu(j,i) = zl_neu(j,i)
509 dzb_dtau(j,i) = dzl_dtau(j,i)
510 zs_neu(j,i) = zb_neu(j,i)+h_neu(j,i)
515 if (zl_neu(j,i)>z_sl)
then
517 zb_neu(j,i) = zl_neu(j,i)
518 dzb_dtau(j,i) = dtime_inv*(zb_neu(j,i)-zb(j,i))
519 zs_neu(j,i) = zb_neu(j,i)
523 dzb_dtau(j,i) = 0.0_dp
529 #elif (ZS_EVOL_SSA==0)
531 if (maske(j,i)==2_i2b)
then
534 dzb_dtau(j,i) = 0.0_dp
536 else if (maske(j,i)==3_i2b)
then
538 zb_neu(j,i) = zb(j,i)
539 dzb_dtau(j,i) = 0.0_dp
540 zs_neu(j,i) = zs(j,i)
543 stop
' calc_top_3: ZS_EVOL_SSA must be either 1 or 0!'
546 else if (maske(j,i) <= 1_i2b)
then
548 if (h_neu(j,i)>=h_min)
then
550 zb_neu(j,i) = zl_neu(j,i)
551 dzb_dtau(j,i) = dzl_dtau(j,i)
552 zs_neu(j,i) = zb_neu(j,i)+h_neu(j,i)
555 zb_neu(j,i) = zl_neu(j,i)
556 dzb_dtau(j,i) = dzl_dtau(j,i)
557 zs_neu(j,i) = zl_neu(j,i)
560 #if (!defined(ZS_EVOL_SSA) || ZS_EVOL_SSA==1)
564 if (h_neu(j,i)>h_min)
then
566 if (h_neu(j,i)<h_balance.and.zl_neu(j,i)<z_sl)
then
568 zb_neu(j,i) = z_sl-rho_rhosw_ratio*h_neu(j,i)
569 dzb_dtau(j,i) = dtime_inv*(zb_neu(j,i)-zb(j,i))
570 zs_neu(j,i) = zb_neu(j,i)+h_neu(j,i)
573 zb_neu(j,i) = zl_neu(j,i)
574 dzb_dtau(j,i) = dzl_dtau(j,i)
575 zs_neu(j,i) = zb_neu(j,i)+h_neu(j,i)
580 if (zl_neu(j,i)>z_sl)
then
582 zb_neu(j,i) = zl_neu(j,i)
583 dzb_dtau(j,i) = dtime_inv*(zb_neu(j,i)-zb(j,i))
584 zs_neu(j,i) = zb_neu(j,i)
588 dzb_dtau(j,i) = 0.0_dp
601 #if (ICE_SHELF_CALVING==2)
605 flag_calving_front_1 = .false.
606 flag_calving_event = .false.
611 if ( (maske(j,i)==3_i2b) &
613 ( (maske(j,i+1)==2_i2b) &
614 .or.(maske(j,i-1)==2_i2b) &
615 .or.(maske(j+1,i)==2_i2b) &
616 .or.(maske(j-1,i)==2_i2b) ) &
618 flag_calving_front_1(j,i) = .true.
621 if ( flag_calving_front_1(j,i).and.(h_neu(j,i) < h_calv) )
then
622 flag_calving_event = .true.
629 if (.not.flag_calving_event)
exit
640 if (time >= time_target_topo_final) maske = maske_target
650 if (maske_maxextent(j,i)==0_i2b)
then
652 if (maske(j,i)==0_i2b)
then
654 else if (maske(j,i)==3_i2b)
then
667 flag_grounding_line_1 = .false.
668 flag_grounding_line_2 = .false.
670 flag_calving_front_1 = .false.
671 flag_calving_front_2 = .false.
676 if ( (maske(j,i)==0_i2b) &
678 ( (maske(j,i+1)==3_i2b) &
679 .or.(maske(j,i-1)==3_i2b) &
680 .or.(maske(j+1,i)==3_i2b) &
681 .or.(maske(j-1,i)==3_i2b) ) &
683 flag_grounding_line_1(j,i) = .true.
685 if ( (maske(j,i)==3_i2b) &
687 ( (maske(j,i+1)==0_i2b) &
688 .or.(maske(j,i-1)==0_i2b) &
689 .or.(maske(j+1,i)==0_i2b) &
690 .or.(maske(j-1,i)==0_i2b) ) &
692 flag_grounding_line_2(j,i) = .true.
694 if ( (maske(j,i)==3_i2b) &
696 ( (maske(j,i+1)==2_i2b) &
697 .or.(maske(j,i-1)==2_i2b) &
698 .or.(maske(j+1,i)==2_i2b) &
699 .or.(maske(j-1,i)==2_i2b) ) &
701 flag_calving_front_1(j,i) = .true.
703 if ( (maske(j,i)==2_i2b) &
705 ( (maske(j,i+1)==3_i2b) &
706 .or.(maske(j,i-1)==3_i2b) &
707 .or.(maske(j+1,i)==3_i2b) &
708 .or.(maske(j-1,i)==3_i2b) ) &
710 flag_calving_front_2(j,i) = .true.
718 if ( (maske(j,i)==2_i2b) &
719 .and. (maske(j+1,i)==3_i2b) &
721 flag_calving_front_2(j,i) = .true.
724 if ( (maske(j,i)==2_i2b) &
725 .and. (maske(j-1,i)==3_i2b) &
727 flag_calving_front_2(j,i) = .true.
734 if ( (maske(j,i)==2_i2b) &
735 .and. (maske(j,i+1)==3_i2b) &
737 flag_calving_front_2(j,i) = .true.
740 if ( (maske(j,i)==2_i2b) &
741 .and. (maske(j,i-1)==3_i2b) &
743 flag_calving_front_2(j,i) = .true.
753 if (maske(j,i) == 1_i2b)
then
755 zs_neu(j,i) = zb_neu(j,i)
758 else if (maske(j,i) == 2_i2b)
then
764 else if (maske(j,i) == 3_i2b)
then
766 h_neu(j,i) = zs_neu(j,i)-zb_neu(j,i)
768 zb_neu(j,i) = z_sl - rho_rhosw_ratio*h_neu(j,i)
769 zs_neu(j,i) = zb_neu(j,i) + h_neu(j,i)
783 if ( (maske(j,i) == 0_i2b).or.(maske(j,i) == 3_i2b) )
then
786 as_perp(j,i) = as_perp(j,i) - (zs_neu(j,i)-zs(j,i))*dtime_inv
792 as_perp(j,i) = 0.0_dp
796 zs_neu(j,i) = zs(j,i)
797 h_neu(j,i) = zs_neu(j,i)-zb_neu(j,i)
807 if ( (maske(j,i) == 0_i2b).or.(maske(j,i) == 3_i2b) )
then
812 if ( ((maske(j,i+1) == 1_i2b).or.(maske(j,i+1) == 2_i2b)) &
813 .and. ((maske(j,i-1) == 1_i2b).or.(maske(j,i-1) == 2_i2b)) &
814 .and. ((maske(j+1,i) == 1_i2b).or.(maske(j+1,i) == 2_i2b)) &
815 .and. ((maske(j-1,i) == 1_i2b).or.(maske(j-1,i) == 2_i2b)) &
817 h_neu(j,i) = min(h_neu(j,i), h_isol_max)
818 zs_neu(j,i) = zb_neu(j,i)+h_neu(j,i)
823 if (n_cts(j,i) == 1)
then
824 h_t_neu(j,i) = h_t(j,i) * h_neu(j,i)/h(j,i)
825 zm_neu(j,i) = zb_neu(j,i)+h_t_neu(j,i)
826 h_c_neu(j,i) = zs_neu(j,i)-zm_neu(j,i)
828 h_t_neu(j,i) = 0.0_dp
829 zm_neu(j,i) = zb_neu(j,i)
830 h_c_neu(j,i) = zs_neu(j,i)-zm_neu(j,i)
835 zs_neu(j,i) = zb_neu(j,i)
836 zm_neu(j,i) = zb_neu(j,i)
837 h_c_neu(j,i) = 0.0_dp
838 h_t_neu(j,i) = 0.0_dp
843 dzs_dtau(j,i) = (zs_neu(j,i)-zs(j,i))*dtime_inv
844 dzb_dtau(j,i) = (zb_neu(j,i)-zb(j,i))*dtime_inv
845 dzm_dtau(j,i) = dh_t_dtau(j,i)+dzb_dtau(j,i)
846 dh_c_dtau(j,i) = dzs_dtau(j,i)-dzm_dtau(j,i)
849 if ( abs((time-time_target_topo_final)*year_sec_inv) < eps )
then
853 dh_c_dtau(j,i) = 0.0_dp
854 dh_t_dtau(j,i) = 0.0_dp
876 if ( ((maske(j,i) == 0_i2b).or.(maske(j,i) == 3_i2b)) &
877 .and.(n_cts(j,i) == 1_i2b))
then
880 0.5_dp*(vx_c(0,j,i)+vx_c(0,j,i-1))*dzm_dxi_g(j,i) &
881 + 0.5_dp*(vy_c(0,j,i)+vy_c(0,j-1,i))*dzm_deta_g(j,i) &
882 - 0.5_dp*(vz_c(0,j,i)+vz_t(ktmax-1,j,i))
883 am_perp(j,i) = am_perp_st(j,i) + dzm_dtau(j,i)
886 am_perp_st(j,i) = 0.0_dp
887 am_perp(j,i) = 0.0_dp
subroutine topograd_2(dxi, deta, n_switch)
Calculation of topography gradients on the staggered grid and on the grid points (the latter by fourt...
subroutine calc_top_3(time, z_sl, z_mar, dtime, dxi, deta, mean_accum, ii, jj, nn)
Computation of the ice topography (including gradients) for coupled SIA/SSA or SIA/SStA/SSA dynamics ...
Declarations of kind types for SICOPOLIS.
subroutine topograd_1(dxi, deta, n_switch)
Calculation of topography gradients on the staggered grid and on the grid points (the latter by secon...
subroutine sor_sprs(lgs_a_value, lgs_a_index, lgs_a_diag_index, lgs_a_ptr, lgs_b_value, nnz, nmax, omega, eps_sor, lgs_x_value, ierr)
SOR solver for a system of linear equations lgs_a*lgs_x=lgs_b [matrix storage: compressed sparse row ...
Declarations of global variables for SICOPOLIS (for the ANT domain).
Solvers for systems of linear equations used by SICOPOLIS.
Declarations of global variables for SICOPOLIS.