38 at4_1, at4_2, at5, at6, at7, &
39 atr1, acb1, acb2, acb3, acb4, alb1, &
41 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
51 integer(i4b),
intent(in) :: i, j
52 real(dp),
intent(in) :: at1(0:kcmax), at2_1(0:kcmax), at2_2(0:kcmax), &
53 at3_1(0:kcmax), at3_2(0:kcmax), &
54 at4_1(0:kcmax), at4_2(0:kcmax), &
55 at5(0:kcmax), at6(0:kcmax), at7, &
56 ai1(0:kcmax), ai2(0:kcmax), &
57 atr1, acb1, acb2, acb3, acb4, alb1
58 real(dp),
intent(in) :: dtime_temp, dtt_2dxi, dtt_2deta
60 integer(i4b) :: kc, kt, kr
61 real(dp) :: ct1(0:kcmax), ct2(0:kcmax), ct3(0:kcmax), ct4(0:kcmax), &
62 ce5(0:kcmax), ce6(0:kcmax), ce7(0:kcmax), &
63 ctr1, ccbe1, ccb2, ccb3, ccb4, clb1
64 real(dp) :: ct1_sg(0:kcmax), ct2_sg(0:kcmax), ct3_sg(0:kcmax), &
65 ct4_sg(0:kcmax), adv_vert_sg(0:kcmax), abs_adv_vert_sg(0:kcmax)
66 real(dp) :: ci1(0:kcmax), ci2(0:kcmax)
67 real(dp) :: dtt_dxi, dtt_deta
68 real(dp) :: lgs_a0(0:kcmax+ktmax+krmax+imax+jmax), &
69 lgs_a1(0:kcmax+ktmax+krmax+imax+jmax), &
70 lgs_a2(0:kcmax+ktmax+krmax+imax+jmax), &
71 lgs_x(0:kcmax+ktmax+krmax+imax+jmax), &
72 lgs_b(0:kcmax+ktmax+krmax+imax+jmax)
76 if ((i == 0).or.(i == imax).or.(j == 0).or.(j == jmax)) &
77 stop
' calc_temp_enth_1: Boundary points not allowed.'
82 at4_1, at4_2, at5, at6, at7, &
83 atr1, acb1, acb2, acb3, acb4, alb1, &
85 dtime_temp, dtt_2dxi, dtt_2deta, i, j, &
86 ct1, ct2, ct3, ct4, ce5, ce6, ce7, &
87 ctr1, ccbe1, ccb2, ccb3, ccb4, clb1, &
88 ct1_sg, ct2_sg, ct3_sg, ct4_sg, &
89 adv_vert_sg, abs_adv_vert_sg, &
90 ci1, ci2, dtt_dxi, dtt_deta)
98 lgs_a0, lgs_a1, lgs_a2, lgs_b)
102 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, krmax)
107 temp_r_neu(kr,j,i) = lgs_x(kr)
115 ct1_sg, ct2_sg, ct3_sg, ct4_sg, &
116 ccbe1, ccb2, ccb3, ccb4, &
117 adv_vert_sg, abs_adv_vert_sg, &
118 dtime_temp, dtt_dxi, dtt_deta, &
119 dtt_2dxi, dtt_2deta, &
121 lgs_a0, lgs_a1, lgs_a2, lgs_b)
125 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax)
130 enth_c_neu(kc,j,i) = lgs_x(kc)
131 temp_c_neu(kc,j,i) =
temp_fct_enth(enth_c_neu(kc,j,i), temp_c_m(kc,j,i))
132 omega_c_neu(kc,j,i) = 0.0_dp
143 enth_t_neu(kt,j,i) = enth_c_neu(0,j,i)
144 omega_t_neu(kt,j,i) = omega_c_neu(0,j,i)
152 ct1_sg, ct2_sg, ct3_sg, ct4_sg, &
153 adv_vert_sg, abs_adv_vert_sg, &
154 dtime_temp, dtt_dxi, dtt_deta, &
155 dtt_2dxi, dtt_2deta, &
157 lgs_a0, lgs_a1, lgs_a2, lgs_b)
161 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax)
168 age_c_neu(kc,j,i) = lgs_x(kc)
170 if (age_c_neu(kc,j,i) < (age_min*year_sec)) &
171 age_c_neu(kc,j,i) = 0.0_dp
172 if (age_c_neu(kc,j,i) > (age_max*year_sec)) &
173 age_c_neu(kc,j,i) = age_max*year_sec
180 age_t_neu(kt,j,i) = age_c_neu(0,j,i)
190 at4_1, at4_2, at5, at6, at7, &
191 atr1, acb1, acb2, acb3, acb4, alb1, &
193 dtime_temp, dtt_2dxi, dtt_2deta, i, j, &
194 ct1, ct2, ct3, ct4, ce5, ce6, ce7, &
195 ctr1, ccbe1, ccb2, ccb3, ccb4, clb1, &
196 ct1_sg, ct2_sg, ct3_sg, ct4_sg, &
197 adv_vert_sg, abs_adv_vert_sg, &
198 ci1, ci2, dtt_dxi, dtt_deta)
207 integer(i4b),
intent(in) :: i, j
208 real(dp),
intent(in) :: at1(0:kcmax), &
209 at2_1(0:kcmax), at2_2(0:kcmax), &
210 at3_1(0:kcmax), at3_2(0:kcmax), &
211 at4_1(0:kcmax), at4_2(0:kcmax), &
212 at5(0:kcmax), at6(0:kcmax), at7, &
213 ai1(0:kcmax), ai2(0:kcmax), &
214 atr1, acb1, acb2, acb3, acb4, alb1
215 real(dp),
intent(in) :: dtime_temp, dtt_2dxi, dtt_2deta
217 real(dp),
intent(out) :: ct1(0:kcmax), ct2(0:kcmax), ct3(0:kcmax), &
218 ct4(0:kcmax), ce5(0:kcmax), ce6(0:kcmax), &
220 ctr1, ccbe1, ccb2, ccb3, ccb4, clb1
221 real(dp),
intent(out) :: ct1_sg(0:kcmax), ct2_sg(0:kcmax), &
222 ct3_sg(0:kcmax), ct4_sg(0:kcmax), &
223 adv_vert_sg(0:kcmax), abs_adv_vert_sg(0:kcmax)
224 real(dp),
intent(out) :: ci1(0:kcmax), ci2(0:kcmax)
225 real(dp),
intent(out) :: dtt_dxi, dtt_deta
228 real(dp) :: temp_c_help(0:kcmax)
246 abs_adv_vert_sg = 0.0_dp
258 /(
c_val(temp_c(0,j,i))*h_c(j,i))
262 if (.not.flag_shelfy_stream(j,i))
then
265 ccb3 = acb3*0.5_dp*(vx_t(0,j,i)+vx_t(0,j,i-1)) &
266 *h_c(j,i)*dzs_dxi_g(j,i)
267 ccb4 = acb4*0.5_dp*(vy_t(0,j,i)+vy_t(0,j-1,i)) &
268 *h_c(j,i)*dzs_deta_g(j,i)
273 ccb3 = -c_drag(j,i) &
274 * sqrt(vx_b_g(j,i)**2 &
276 **(1.0_dp+p_weert_inv(j,i))
282 clb1 = alb1*q_geo(j,i)
287 ct1(kc) = at1(kc)/h_c(j,i)*0.5_dp*(vz_c(kc,j,i)+vz_c(kc-1,j,i))
291 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
294 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
297 #elif (ADV_VERT==2 || ADV_VERT==3)
300 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
307 ct2(kc) = ( at2_1(kc)*dzm_dtau(j,i) &
308 +at2_2(kc)*dh_c_dtau(j,i) )/h_c(j,i)
309 ct3(kc) = ( at3_1(kc)*dzm_dxi_g(j,i) &
310 +at3_2(kc)*dh_c_dxi_g(j,i) )/h_c(j,i) &
311 *0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1)) *insq_g11_g(j,i)
312 ct4(kc) = ( at4_1(kc)*dzm_deta_g(j,i) &
313 +at4_2(kc)*dh_c_deta_g(j,i) )/h_c(j,i) &
314 *0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i)) *insq_g22_g(j,i)
315 ce5(kc) = at5(kc)/h_c(j,i)
318 if (.not.flag_shelfy_stream(j,i))
then
322 *
ratefac_c_t(temp_c(kc,j,i), omega_c(kc,j,i), temp_c_m(kc,j,i)) &
323 *
creep(sigma_c(kc,j,i)) &
324 *sigma_c(kc,j,i)*sigma_c(kc,j,i)
327 ce7(kc) = 2.0_dp*at7 &
329 temp_c(kc,j,i), temp_c_m(kc,j,i), 0.0_dp, &
330 enh_c(kc,j,i), 0_i2b) &
335 ci1(kc) = ai1(kc)/h_c(j,i)
342 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
343 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
344 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
345 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
346 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
348 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
349 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
350 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
351 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
352 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
354 #elif (ADV_VERT==2 || ADV_VERT==3)
357 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
358 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
359 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
360 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
361 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
367 temp_c_help(kc) = 0.5_dp*(temp_c(kc,j,i)+temp_c(kc+1,j,i))
370 ci2(kc) = ai2(kc)/h_c(j,i)
374 dtt_dxi = 2.0_dp*dtt_2dxi
375 dtt_deta = 2.0_dp*dtt_2deta
386 lgs_a0, lgs_a1, lgs_a2, lgs_b)
394 integer(i4b),
intent(in) :: i, j
395 real(dp),
intent(in) :: ctr1, clb1
397 real(dp),
intent(out) :: lgs_a0(0:kcmax+ktmax+krmax+imax+jmax), &
398 lgs_a1(0:kcmax+ktmax+krmax+imax+jmax), &
399 lgs_a2(0:kcmax+ktmax+krmax+imax+jmax), &
400 lgs_b(0:kcmax+ktmax+krmax+imax+jmax)
423 lgs_a1(kr) = 1.0_dp + 2.0_dp*ctr1
425 lgs_b(kr) = temp_r(kr,j,i)
435 lgs_b(kr) = 2.0_dp*clb1
443 lgs_b(kr) = temp_c(0,j,i)
453 ct1_sg, ct2_sg, ct3_sg, ct4_sg, &
454 ccbe1, ccb2, ccb3, ccb4, &
455 adv_vert_sg, abs_adv_vert_sg, &
456 dtime_temp, dtt_dxi, dtt_deta, &
457 dtt_2dxi, dtt_2deta, &
459 lgs_a0, lgs_a1, lgs_a2, lgs_b)
468 integer(i4b),
intent(in) :: i, j
469 real(dp),
intent(in) :: ct1(0:kcmax), ct2(0:kcmax), ct3(0:kcmax), &
470 ct4(0:kcmax), ce5(0:kcmax), ce6(0:kcmax), &
472 real(dp),
intent(in) :: ct1_sg(0:kcmax), ct2_sg(0:kcmax), &
473 ct3_sg(0:kcmax), ct4_sg(0:kcmax), &
474 ccbe1, ccb2, ccb3, ccb4, &
475 adv_vert_sg(0:kcmax), abs_adv_vert_sg(0:kcmax)
476 real(dp),
intent(in) :: dtime_temp, dtt_dxi, dtt_deta, dtt_2dxi, dtt_2deta
478 real(dp),
intent(out) :: lgs_a0(0:kcmax+ktmax+krmax+imax+jmax), &
479 lgs_a1(0:kcmax+ktmax+krmax+imax+jmax), &
480 lgs_a2(0:kcmax+ktmax+krmax+imax+jmax), &
481 lgs_b(0:kcmax+ktmax+krmax+imax+jmax)
483 integer(i4b) :: kc, kr
484 real(dp) :: vx_c_help, vy_c_help
485 real(dp) :: adv_vert_help
500 lgs_b(kc) = ccb2*(temp_r_neu(kr,j,i)-temp_r_neu(kr-1,j,i)) + ccb3 + ccb4
506 lgs_a0(kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
508 lgs_a1(kc) = 1.0_dp+ce5(kc)*(ce6(kc)+ce6(kc-1))
509 lgs_a2(kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
515 = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
519 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
520 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
521 +ce5(kc)*(ce6(kc)+ce6(kc-1))
523 = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
528 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
531 = -max(adv_vert_help, 0.0_dp) &
535 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp) &
536 +ce5(kc)*(ce6(kc)+ce6(kc-1))
538 = min(adv_vert_help, 0.0_dp) &
545 lgs_b(kc) = enth_c(kc,j,i) + ce7(kc) &
547 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
548 *(enth_c(kc,j,i+1)-enth_c(kc,j,i)) &
550 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
551 *(enth_c(kc,j,i)-enth_c(kc,j,i-1)) &
552 *insq_g11_sgx(j,i-1) ) &
554 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
555 *(enth_c(kc,j+1,i)-enth_c(kc,j,i)) &
557 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
558 *(enth_c(kc,j,i)-enth_c(kc,j-1,i)) &
559 *insq_g22_sgy(j-1,i) )
563 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
564 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
566 lgs_b(kc) = enth_c(kc,j,i) + ce7(kc) &
568 ( min(vx_c_help, 0.0_dp) &
569 *(enth_c(kc,j,i+1)-enth_c(kc,j,i)) &
571 +max(vx_c_help, 0.0_dp) &
572 *(enth_c(kc,j,i)-enth_c(kc,j,i-1)) &
573 *insq_g11_sgx(j,i-1) ) &
575 ( min(vy_c_help, 0.0_dp) &
576 *(enth_c(kc,j+1,i)-enth_c(kc,j,i)) &
578 +max(vy_c_help, 0.0_dp) &
579 *(enth_c(kc,j,i)-enth_c(kc,j-1,i)) &
580 *insq_g22_sgy(j-1,i) )
600 ct1_sg, ct2_sg, ct3_sg, ct4_sg, &
601 adv_vert_sg, abs_adv_vert_sg, &
602 dtime_temp, dtt_dxi, dtt_deta, &
603 dtt_2dxi, dtt_2deta, &
605 lgs_a0, lgs_a1, lgs_a2, lgs_b)
613 integer(i4b),
intent(in) :: i, j
614 real(dp),
intent(in) :: ct1(0:kcmax), ct2(0:kcmax), ct3(0:kcmax), &
615 ct4(0:kcmax), ci1(0:kcmax), ci2(0:kcmax)
616 real(dp),
intent(in) :: ct1_sg(0:kcmax), ct2_sg(0:kcmax), &
617 ct3_sg(0:kcmax), ct4_sg(0:kcmax), &
618 adv_vert_sg(0:kcmax), abs_adv_vert_sg(0:kcmax)
619 real(dp),
intent(in) :: dtime_temp, dtt_dxi, dtt_deta, dtt_2dxi, dtt_2deta
621 real(dp),
intent(out) :: lgs_a0(0:kcmax+ktmax+krmax+imax+jmax), &
622 lgs_a1(0:kcmax+ktmax+krmax+imax+jmax), &
623 lgs_a2(0:kcmax+ktmax+krmax+imax+jmax), &
624 lgs_b(0:kcmax+ktmax+krmax+imax+jmax)
627 real(dp) :: vx_c_help, vy_c_help
628 real(dp) :: adv_vert_help
640 lgs_a1(kc) = 1.0_dp - min(adv_vert_sg(kc), 0.0_dp)
641 lgs_a2(kc) = min(adv_vert_sg(kc), 0.0_dp)
645 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
647 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
648 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
650 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
651 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
652 *insq_g11_sgx(j,i-1) ) &
654 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
655 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
657 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
658 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
659 *insq_g22_sgy(j-1,i) )
663 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
664 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
666 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
668 ( min(vx_c_help, 0.0_dp) &
669 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
671 +max(vx_c_help, 0.0_dp) &
672 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
673 *insq_g11_sgx(j,i-1) ) &
675 ( min(vy_c_help, 0.0_dp) &
676 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
678 +max(vy_c_help, 0.0_dp) &
679 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
680 *insq_g22_sgy(j-1,i) )
688 lgs_a0(kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
690 lgs_a1(kc) = 1.0_dp+ci1(kc)*(ci2(kc)+ci2(kc-1))
691 lgs_a2(kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
696 lgs_a0(kc) = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1))
697 lgs_a1(kc) = 1.0_dp &
698 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
699 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
700 lgs_a2(kc) = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
704 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
706 lgs_a0(kc) = -max(adv_vert_help, 0.0_dp)
707 lgs_a1(kc) = 1.0_dp &
708 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp)
709 lgs_a2(kc) = min(adv_vert_help, 0.0_dp)
715 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
717 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
718 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
720 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
721 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
722 *insq_g11_sgx(j,i-1) ) &
724 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
725 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
727 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
728 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
729 *insq_g22_sgy(j-1,i) )
733 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
734 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
736 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
738 ( min(vx_c_help, 0.0_dp) &
739 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
741 +max(vx_c_help, 0.0_dp) &
742 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
743 *insq_g11_sgx(j,i-1) ) &
745 ( min(vy_c_help, 0.0_dp) &
746 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
748 +max(vy_c_help, 0.0_dp) &
749 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
750 *insq_g22_sgy(j-1,i) )
757 if (as_perp(j,i) >= 0.0_dp)
then
762 lgs_a0(kc) = -max(adv_vert_sg(kc-1), 0.0_dp)
763 lgs_a1(kc) = 1.0_dp + max(adv_vert_sg(kc-1), 0.0_dp)
768 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
770 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
771 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
773 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
774 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
775 *insq_g11_sgx(j,i-1) ) &
777 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
778 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
780 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
781 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
782 *insq_g22_sgy(j-1,i) )
786 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
787 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
789 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
791 ( min(vx_c_help, 0.0_dp) &
792 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
794 +max(vx_c_help, 0.0_dp) &
795 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
796 *insq_g11_sgx(j,i-1) ) &
798 ( min(vy_c_help, 0.0_dp) &
799 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
801 +max(vy_c_help, 0.0_dp) &
802 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
803 *insq_g22_sgy(j-1,i) )
subroutine tri_sle(a0, a1, a2, x, b, nrows)
Solution of a system of linear equations Ax=b with tridiagonal matrix A.
subroutine calc_temp_enth_1_c(ct1, ct2, ct3, ct4, ce5, ce6, ce7, ct1_sg, ct2_sg, ct3_sg, ct4_sg, ccbe1, ccb2, ccb3, ccb4, adv_vert_sg, abs_adv_vert_sg, dtime_temp, dtt_dxi, dtt_deta, dtt_2dxi, dtt_2deta, i, j, lgs_a0, lgs_a1, lgs_a2, lgs_b)
Computation of temperature and age for a cold ice column with the enthalpy method: Set-up of the equa...
Declarations of kind types for SICOPOLIS.
real(dp) function viscosity(de_val, temp_val, temp_m_val, omega_val, enh_val, i_flag_cold_temp)
Ice viscosity as a function of the effective strain rate and the temperature (in cold ice) or the wat...
real(dp) function, public ratefac_c_t(temp_val, omega_val, temp_m_val)
Rate factor for cold and temperate ice: Combination of ratefac_c and ratefac_t (only for the enthalpy...
real(dp) function, public temp_fct_enth(enth_val, temp_m_val)
Temperature as a function of enthalpy.
Declarations of global variables for SICOPOLIS (for the ANT domain).
subroutine calc_temp_enth_1_b(ctr1, clb1, i, j, lgs_a0, lgs_a1, lgs_a2, lgs_b)
Computation of temperature and age for a cold ice column with the enthalpy method: Set-up of the equa...
subroutine calc_temp_enth_1(at1, at2_1, at2_2, at3_1, at3_2, at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, acb3, acb4, alb1, ai1, ai2, dtime_temp, dtt_2dxi, dtt_2deta, i, j)
Computation of temperature and age for a cold ice column with the enthalpy method.
Solvers for systems of linear equations used by SICOPOLIS.
real(dp) function, public kappa_val(temp_val)
Heat conductivity of ice: Linear interpolation of tabulated values in KAPPA(.).
subroutine calc_temp_enth_1_d(ct1, ct2, ct3, ct4, ci1, ci2, ct1_sg, ct2_sg, ct3_sg, ct4_sg, adv_vert_sg, abs_adv_vert_sg, dtime_temp, dtt_dxi, dtt_deta, dtt_2dxi, dtt_2deta, i, j, lgs_a0, lgs_a1, lgs_a2, lgs_b)
Computation of temperature and age for a cold ice column with the enthalpy method: Set-up of the equa...
real(dp) function, public c_val(temp_val)
Specific heat of ice: Linear interpolation of tabulated values in C(.).
Material quantities of ice: Rate factor, heat conductivity, specific heat (heat capacity).
Declarations of global variables for SICOPOLIS.
real(dp) function creep(sigma_val)
Creep response function for ice.
Conversion from temperature (temp) and water content (omega) to enthalpy (enth) and vice versa...
subroutine calc_temp_enth_1_a(at1, at2_1, at2_2, at3_1, at3_2, at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, acb3, acb4, alb1, ai1, ai2, dtime_temp, dtt_2dxi, dtt_2deta, i, j, ct1, ct2, ct3, ct4, ce5, ce6, ce7, ctr1, ccbe1, ccb2, ccb3, ccb4, clb1, ct1_sg, ct2_sg, ct3_sg, ct4_sg, adv_vert_sg, abs_adv_vert_sg, ci1, ci2, dtt_dxi, dtt_deta)
Computation of temperature and age for a cold ice column with the enthalpy method: Abbreviations...
real(dp) function, public enth_fct_temp_omega(temp_val, omega_val)
Enthalpy as a function of temperature and water content.