SICOPOLIS V3.2
 All Classes Files Functions Variables Macros
boundary.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Subroutine : b o u n d a r y
4 !
5 !> @file
6 !!
7 !! Mars Atmosphere-Ice Coupler MAIC-1.5:
8 !! Computation of the surface temperature (must be less than 0 deg C)
9 !! and of the accumulation-ablation rate for the north polar cap of Mars.
10 !! Computation of the geothermal heat flux.
11 !!
12 !! @section Copyright
13 !!
14 !! Copyright 2009-2016 Ralf Greve
15 !!
16 !! @section License
17 !!
18 !! This file is part of SICOPOLIS.
19 !!
20 !! SICOPOLIS is free software: you can redistribute it and/or modify
21 !! it under the terms of the GNU General Public License as published by
22 !! the Free Software Foundation, either version 3 of the License, or
23 !! (at your option) any later version.
24 !!
25 !! SICOPOLIS is distributed in the hope that it will be useful,
26 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
27 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 !! GNU General Public License for more details.
29 !!
30 !! You should have received a copy of the GNU General Public License
31 !! along with SICOPOLIS. If not, see <http://www.gnu.org/licenses/>.
32 !<
33 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
34 
35 !-------------------------------------------------------------------------------
36 !> Mars Atmosphere-Ice Coupler MAIC-1.5:
37 !! Computation of the surface temperature (must be less than 0 deg C)
38 !! and of the accumulation-ablation rate for the north polar cap of Mars.
39 !! Computation of the geothermal heat flux.
40 !<------------------------------------------------------------------------------
41 subroutine boundary(time, dtime, dxi, deta, &
42  delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
43 
44 use sico_types
46 use sico_vars
47 
48 #if TSURFACE==6
49 use instemp
50 #endif
51 
52 implicit none
53 
54 real(dp), intent(in) :: time, dtime, dxi, deta
55 
56 real(dp), intent(out) :: delta_ts, glac_index, dzsl_dtau, z_mar
57 real(dp), intent(inout) :: z_sl
58 
59 ! Further return variables
60 ! (defined as global variables in module sico_variables):
61 !
62 ! accum(j,i), evap(j,i), runoff(j,i), as_perp(j,i), temp_s(j,i)
63 
64 integer(i4b) :: i, j
65 integer(i4b) :: i_gr, i_kl
66 integer(i4b) :: ndata_insol
67 real(dp) :: z_sl_old
68 real(dp) :: z_sl_min, t1, t2, t3, t4, t5, t6
69 real(dp) :: time_gr, time_kl
70 real(dp) :: z_sle_present, z_sle_help
71 real(dp), dimension(0:JMAX,0:IMAX) :: temp_ma
72 real(dp) :: eld, g_mb, accum_factor
73 real(dp) :: erosion_chasm
74 real(dp), dimension(0:JMAX,0:IMAX) :: et
75 real(dp) :: t_obliq_main, t_obliq_mod, &
76  obliq_ampl_max, obliq_ampl_min, obliq_ampl, obliq0, obliq, &
77  ecc, ecc0
78 real(dp) :: insol_ma_90_now, insol_ma_90_present, &
79  obl_now, obl_present, ecc_now, ecc_present, &
80  ave_now, ave_present, cp_now, cp_present, &
81  temp_ma_90, temp_ma_90_present, zs_90
82 real(dp), dimension(0:JMAX,0:IMAX) :: dist
83 real(dp) :: ave_data_i_kl, ave_data_i_gr
84 real(dp) :: q_geo_chasm
85 logical, dimension(0:JMAX,0:IMAX) :: check_point
86 
87 #if TSURFACE==6
88 type (ins) :: temp_now, temp_present
89 #endif
90 
91 real(dp), parameter :: &
92  time_present = 0.0_dp, & ! Present time [s]
93  zs_90_present = -2.0e+03_dp ! Present elevation of the
94  ! north pole [m]
95 real(dp), parameter :: &
96  sol = 590.0_dp, & ! Solar constant [W/m2]
97  epsilon = 1.0_dp, & ! Emissivity
98  sigma = 5.67e-08_dp ! Stefan-Boltzmann constant [W/(m2*K4)]
99 
100 real(dp), parameter :: &
101  lambda_h2o = 2.86e+06_dp, & ! Latent heat [J/kg]
102  r_h2o = 461.5_dp, & ! Gas constant [J/(kg*K)]
103  temp0_ref = 173.0_dp ! Atmopheric reference temperature [K]
104 
105 real(dp), parameter :: &
106  temp_s_min = -125.0_dp ! Minimum ice-surface temperature
107  ! (sublimation temperature of CO2) [C]
108 
109 !-------- Initialization of intent(out) variables --------
110 
111 z_sl_old = z_sl
112 
113 delta_ts = 0.0_dp
114 glac_index = 0.0_dp
115 z_sl = 0.0_dp
116 dzsl_dtau = 0.0_dp
117 z_mar = 0.0_dp
118 
119 !-------- Surface-temperature deviation from present values --------
120 
121 #if TSURFACE==1
122 delta_ts = delta_ts0
123 ! ! Steady state with prescribed constant
124 ! ! air-temperature deviation
125 #elif TSURFACE==3
126 delta_ts = -sine_amplit &
127  *cos(2.0_dp*pi*time/(sine_period*year_sec)) &
128  +sine_amplit
129 ! ! Sinusoidal air-temperature forcing
130 #elif TSURFACE==4
131 
132 ! ------ Obliquity (main cycle and first modulation) and eccentricity
133 
134 t_obliq_main = 1.25e+05_dp *year_sec
135 t_obliq_mod = 1.3e+06_dp *year_sec
136 
137 obliq0 = 25.2_dp *pi_180
138 obliq_ampl_max = 10.0_dp *pi_180
139 obliq_ampl_min = 2.5_dp *pi_180
140 
141 obliq_ampl = 0.5_dp*(obliq_ampl_max+obliq_ampl_min) &
142  -0.5_dp*(obliq_ampl_max-obliq_ampl_min) &
143  *cos(2.0_dp*pi*time/t_obliq_mod)
144 
145 obliq = obliq0 + obliq_ampl*sin(2.0_dp*pi*time/t_obliq_main)
146 
147 ecc = 0.0_dp ! Values not correct, but influence
148 ecc0 = 0.0_dp ! on mean-annual north-polar insolation is negligible
149 
150 ! ------ Mean annual insolation at the north pole
151 
152 insol_ma_90_now = (sol/pi)*sin(obliq)/sqrt(1.0_dp-ecc**2)
153 
154 insol_ma_90_present = (sol/pi)*sin(obliq0)/sqrt(1.0_dp-ecc0**2)
155  ! present value
156 
157 #elif ( TSURFACE==5 || TSURFACE==6 )
158 
159 ! ------ Mean annual insolation at the north pole
160 
161 ndata_insol = (insol_time_max-insol_time_min)/insol_time_stp
162 
163 if (time/year_sec.lt.real(insol_time_min,dp)) then
164 
165  insol_ma_90_now = insol_ma_90(0)
166  obl_now = obl_data(0)
167  ecc_now = ecc_data(0)
168  ave_now = ave_data(0)
169  cp_now = cp_data(0)
170 
171 else if (time/year_sec.lt.real(insol_time_max,dp)) then
172 
173  i_kl = floor(((time/year_sec) &
174  -real(insol_time_min,dp))/real(insol_time_stp,dp))
175  i_kl = max(i_kl, 0)
176 
177  i_gr = ceiling(((time/year_sec) &
178  -real(insol_time_min,dp))/real(insol_time_stp,dp))
179  i_gr = min(i_gr, ndata_insol)
180 
181  if (i_kl.eq.i_gr) then
182 
183  insol_ma_90_now = insol_ma_90(i_kl)
184  obl_now = obl_data(i_kl)
185  ecc_now = ecc_data(i_kl)
186  ave_now = ave_data(i_kl)
187  cp_now = cp_data(i_kl)
188 
189  else
190 
191  time_kl = (insol_time_min + i_kl*insol_time_stp) *year_sec
192  time_gr = (insol_time_min + i_gr*insol_time_stp) *year_sec
193 
194  insol_ma_90_now = insol_ma_90(i_kl) &
195  +(insol_ma_90(i_gr)-insol_ma_90(i_kl)) &
196  *(time-time_kl)/(time_gr-time_kl)
197  obl_now = obl_data(i_kl) &
198  +(obl_data(i_gr)-obl_data(i_kl)) &
199  *(time-time_kl)/(time_gr-time_kl)
200  ecc_now = ecc_data(i_kl) &
201  +(ecc_data(i_gr)-ecc_data(i_kl)) &
202  *(time-time_kl)/(time_gr-time_kl)
203 
204  if ( abs(ave_data(i_gr)-ave_data(i_kl)) < pi ) then ! regular case
205  ave_data_i_kl = ave_data(i_kl)
206  ave_data_i_gr = ave_data(i_gr)
207  else
208  if ( ave_data(i_gr) > ave_data(i_kl) ) then
209  ave_data_i_kl = ave_data(i_kl) + 2.0_dp*pi
210  ave_data_i_gr = ave_data(i_gr)
211  else
212  ave_data_i_kl = ave_data(i_kl)
213  ave_data_i_gr = ave_data(i_gr) + 2.0_dp*pi
214  end if
215  end if
216 
217  ave_now = ave_data_i_kl &
218  +(ave_data_i_gr-ave_data_i_kl) &
219  *(time-time_kl)/(time_gr-time_kl)
220 
221  cp_now = cp_data(i_kl) &
222  +(cp_data(i_gr)-cp_data(i_kl)) &
223  *(time-time_kl)/(time_gr-time_kl)
224  ! linear interpolation of the data
225  end if
226 
227 else
228 
229  insol_ma_90_now = insol_ma_90(ndata_insol)
230  obl_now = obl_data(ndata_insol)
231  ecc_now = ecc_data(ndata_insol)
232  ave_now = ave_data(ndata_insol)
233  cp_now = cp_data(ndata_insol)
234 
235 end if
236 
237 ! ---- Present value
238 
239 if (time_present/year_sec.lt.real(insol_time_min,dp)) then
240 
241  insol_ma_90_present = insol_ma_90(0)
242  obl_present = obl_data(0)
243  ecc_present = ecc_data(0)
244  ave_present = ave_data(0)
245  cp_present = cp_data(0)
246 
247 else if (time_present/year_sec.lt.real(insol_time_max,dp)) then
248 
249  i_kl = floor(((time_present/year_sec) &
250  -real(insol_time_min,dp))/real(insol_time_stp,dp))
251  i_kl = max(i_kl, 0)
252 
253  i_gr = ceiling(((time_present/year_sec) &
254  -real(insol_time_min,dp))/real(insol_time_stp,dp))
255  i_gr = min(i_gr, ndata_insol)
256 
257  if (i_kl.eq.i_gr) then
258 
259  insol_ma_90_present = insol_ma_90(i_kl)
260  obl_present = obl_data(i_kl)
261  ecc_present = ecc_data(i_kl)
262  ave_present = ave_data(i_kl)
263  cp_present = cp_data(i_kl)
264 
265  else
266 
267  time_kl = (insol_time_min + i_kl*insol_time_stp) *year_sec
268  time_gr = (insol_time_min + i_gr*insol_time_stp) *year_sec
269 
270  insol_ma_90_present = insol_ma_90(i_kl) &
271  +(insol_ma_90(i_gr)-insol_ma_90(i_kl)) &
272  *(time_present-time_kl)/(time_gr-time_kl)
273  obl_present = obl_data(i_kl) &
274  +(obl_data(i_gr)-obl_data(i_kl)) &
275  *(time_present-time_kl)/(time_gr-time_kl)
276  ecc_present = ecc_data(i_kl) &
277  +(ecc_data(i_gr)-ecc_data(i_kl)) &
278  *(time_present-time_kl)/(time_gr-time_kl)
279 
280  if ( abs(ave_data(i_gr)-ave_data(i_kl)) < pi ) then ! regular case
281  ave_data_i_kl = ave_data(i_kl)
282  ave_data_i_gr = ave_data(i_gr)
283  else
284  if ( ave_data(i_gr) > ave_data(i_kl) ) then
285  ave_data_i_kl = ave_data(i_kl) + 2.0_dp*pi
286  ave_data_i_gr = ave_data(i_gr)
287  else
288  ave_data_i_kl = ave_data(i_kl)
289  ave_data_i_gr = ave_data(i_gr) + 2.0_dp*pi
290  end if
291  end if
292 
293  ave_present = ave_data_i_kl &
294  +(ave_data_i_gr-ave_data_i_kl) &
295  *(time_present-time_kl)/(time_gr-time_kl)
296 
297  cp_present = cp_data(i_kl) &
298  +(cp_data(i_gr)-cp_data(i_kl)) &
299  *(time_present-time_kl)/(time_gr-time_kl)
300  ! linear interpolation of the data
301  end if
302 
303 else
304 
305  insol_ma_90_present = insol_ma_90(ndata_insol)
306  obl_present = obl_data(ndata_insol)
307  ecc_present = ecc_data(ndata_insol)
308  ave_present = ave_data(ndata_insol)
309  cp_present = cp_data(ndata_insol)
310 
311 end if
312 
313 #endif
314 
315 #if (TSURFACE==4 || TSURFACE==5)
316 
317 ! ------ Mean-annual surface temperature at the north pole
318 
319 temp_ma_90 = sqrt(sqrt(insol_ma_90_now*(1.0_dp-albedo)/(epsilon*sigma))) &
320  -273.15_dp ! K -> C
321 
322 ! ---- Present value
323 
324 temp_ma_90_present &
325  = sqrt(sqrt(insol_ma_90_present*(1.0_dp-albedo)/(epsilon*sigma))) &
326  -273.15_dp ! K -> C
327 
328 ! ------ Surface-temperature deviation at the north pole
329 
330 delta_ts = temp_ma_90 - temp_ma_90_present
331 
332 #elif TSURFACE==6
333 
334 ! ------ Mean-annual surface temperature at the north pole
335 
336 call setinstemp(temp_now, &
337  ecc = ecc_now, ave = ave_now*pi_180_inv, &
338  obl = obl_now*pi_180_inv, sa = albedo, ct = 148.7_dp)
339 
340 temp_ma_90 = instam(temp_now, 90.0_dp) + delta_ts0 &
341  - 273.15_dp ! K -> C
342 
343 ! ---- Present value
344 
345 call setinstemp(temp_present, &
346  ecc = ecc_present, ave = ave_present*pi_180_inv, &
347  obl = obl_present*pi_180_inv, sa = albedo, ct = 148.7_dp)
348 
349 temp_ma_90_present = instam(temp_present, 90.0_dp) + delta_ts0 &
350  - 273.15_dp ! K -> C
351 
352 ! ------ Surface-temperature deviation at the north pole
353 
354 delta_ts = temp_ma_90 - temp_ma_90_present
355 
356 #endif
357 
358 !-------- Sea level --------
359 
360 #if SEA_LEVEL==1
361 ! ------ constant sea level
362 z_sl = z_sl0
363 
364 #elif SEA_LEVEL==2
365 
366 stop ' boundary: SEA_LEVEL==2 not allowed for nmars application!'
367 
368 #elif SEA_LEVEL==3
369 
370 stop ' boundary: SEA_LEVEL==3 not allowed for nmars application!'
371 
372 #endif
373 
374 ! ------ Time derivative of the sea level
375 
376 if ( z_sl_old > -999999.9_dp ) then
377  dzsl_dtau = (z_sl-z_sl_old)/dtime
378 else ! only dummy value for z_sl_old available
379  dzsl_dtau = 0.0_dp
380 end if
381 
382 ! ------ Minimum bedrock elevation for extent of marine ice
383 
384 #if MARGIN==2
385 
386 #if ( MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3 )
387 z_mar = z_mar
388 #elif ( MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5 )
389 z_mar = fact_z_mar*z_sl
390 #elif ( MARINE_ICE_CALVING==6 || MARINE_ICE_CALVING==7 )
391 if (z_sl >= -80.0_dp) then
392  z_mar = 2.5_dp*z_sl
393 else
394  z_mar = 10.25_dp*(z_sl+80.0_dp)-200.0_dp
395 end if
396 z_mar = fact_z_mar*z_mar
397 #endif
398 
399 #endif
400 
401 ! ------ Update of the mask according to the sea level
402 
403 ! ---- Check all sea and floating-ice points and their direct
404 ! neighbours
405 
406 do i=0, imax
407 do j=0, jmax
408  check_point(j,i) = .false.
409 end do
410 end do
411 
412 do i=1, imax-1
413 do j=1, jmax-1
414  if (maske(j,i).ge.2) then
415  check_point(j ,i ) = .true.
416  check_point(j ,i+1) = .true.
417  check_point(j ,i-1) = .true.
418  check_point(j+1,i ) = .true.
419  check_point(j-1,i ) = .true.
420  end if
421 end do
422 end do
423 
424 do i=1, imax-1
425 do j=1, jmax-1
426  if (check_point(j,i)) then
427  maske_neu(j,i) = mask_update(z_sl, i, j)
428  end if
429 end do
430 end do
431 
432 ! ---- Assign new values of the mask
433 
434 do i=1, imax-1
435 do j=1, jmax-1
436  if (check_point(j,i)) then
437  maske(j,i) = maske_neu(j,i)
438  end if
439 end do
440 end do
441 
442 !-------- Surface air temperature !
443 
444 call borehole(zs, 0.0_dp, 0.0_dp, dxi, deta, 'grid', zs_90)
445  ! zs_90: elevation of the north pole
446 
447 do i=0, imax
448 do j=0, jmax
449 
450 ! ------ Present mean annual air temperature temp_ma
451 
452 #if (TSURFACE==1 || TSURFACE==2 || TSURFACE==3)
453 
454  temp_ma_90_present = temp0_ma_90n
455 
456  temp_ma(j,i) = temp_ma_90_present &
457  + (gamma_ma)*(zs(j,i)-zs_90_present) &
458  + (c_ma*pi_180_inv)*((90.0_dp*pi_180)-phi(j,i))
459 
460 #elif (TSURFACE==4 || TSURFACE==5)
461 
462  temp_ma(j,i) = temp_ma_90_present &
463  + (gamma_ma)*(zs(j,i)-zs_90_present) &
464  + (c_ma*pi_180_inv)*((90.0_dp*pi_180)-phi(j,i))
465 
466 #endif
467 
468 ! ------ Correction with deviation delta_ts
469 
470 #if (TSURFACE==1 || TSURFACE==2 || TSURFACE==3)
471 
472  temp_ma(j,i) = temp_ma(j,i) + delta_ts
473 
474 #elif (TSURFACE==4 || TSURFACE==5)
475 
476  temp_ma(j,i) = temp_ma(j,i) + delta_ts &
477  - (gamma_ma)*(zs_90-zs_90_present)
478 
479 #endif
480 
481 ! ------ Direct computation of the mean annual air temperature temp_ma
482 
483 #if TSURFACE==6
484 
485  temp_ma(j,i) = instam(temp_now, phi(j,i)*pi_180_inv) + delta_ts0 &
486  - 273.15_dp ! K -> C
487 
488 #endif
489 
490 end do
491 end do
492 
493 !-------- Accumulation-ablation function as_perp --------
494 
495 ! ------ Accumulation
496 
497 #if ACCSURFACE==1
498  accum_factor = 1.0_dp+gamma_s*delta_ts
499 #elif ACCSURFACE==2
500  accum_factor = exp(gamma_s*delta_ts)
501 #elif ACCSURFACE==3
502  accum_factor = exp(lambda_h2o/(r_h2o*temp0_ref) &
503  -lambda_h2o/(r_h2o*(temp0_ref+delta_ts)))
504 #endif
505 
506 do i=0, imax
507 do j=0, jmax
508  accum(j,i) = accum_present(j,i)*accum_factor
509  if (accum(j,i).lt.0.0_dp) stop ' boundary: Negative accumulation rate!'
510 end do
511 end do
512 
513 ! ------ Ablation
514 
515 #if ( ABLSURFACE==1 || ABLSURFACE==2)
516 
517 eld = eld_0 *1.0e+03_dp ! km -> m
518 
519 #if ACC_UNIT==1
520 g_mb = g_0 *(1.0e-06_dp/year_sec)*(rho_w/rho_i) &
521  *(1.0_dp/(1.0_dp-frac_dust))
522  ! [mm/a water equiv.]/km -> [m/s (ice+dust) equiv.]/m
523 #elif ACC_UNIT==2
524 g_mb = g_0 *(1.0e-06_dp/year_sec)
525  ! [mm/a (ice+dust) equiv.]/km -> [m/s (ice+dust) equiv.]/m
526 #endif
527 
528 #if ABLSURFACE==1
529 eld = eld*(1.0_dp+gamma_eld*delta_ts)
530 g_mb = g_mb*(gamma_g*accum_factor)
531 #elif ABLSURFACE==2
532 eld = eld*exp(gamma_eld*delta_ts)
533 g_mb = g_mb*(gamma_g*accum_factor)
534 #endif
535 
536 if (eld.lt.eps) stop ' boundary: Negative equilibrium line distance eld!'
537 
538 do i=0, imax
539 do j=0, jmax
540  dist(j,i) = sqrt( xi(i)**2 + eta(j)**2 )
541 end do
542 end do
543 
544 #endif
545 
546 #if CHASM==2
547 
548 #if ACC_UNIT==1
549 erosion_chasm = erosion_chasm *(1.0e-03_dp/year_sec)*(rho_w/rho_i) &
550  *(1.0_dp/(1.0_dp-frac_dust))
551  ! [mm/a water equiv.] -> [m/s (ice+dust) equiv.]
552 #elif ACC_UNIT==2
553 erosion_chasm = erosion_chasm *(1.0e-03_dp/year_sec)
554  ! [mm/a (ice+dust) equiv.] -> [m/s (ice+dust) equiv.]
555 #endif
556 
557 #endif
558 
559 do i=0, imax
560 do j=0, jmax
561 
562 #if ( ABLSURFACE==1 || ABLSURFACE==2 )
563 
564  as_perp(j,i) = g_mb*(eld-dist(j,i))
565  if (as_perp(j,i).gt.accum(j,i)) as_perp(j,i) = accum(j,i)
566 
567 #endif
568 
569  evap(j,i) = accum(j,i) - as_perp(j,i)
570  runoff(j,i) = 0.0_dp
571 
572 #if CHASM==2
573 
574 ! ---- Correction for additional wind erosion in the chasm area
575 
576  if ( (maske_chasm(j,i) == 7) &
577  .and.(time >= time_chasm_init) &
578  .and.(time <= time_chasm_end) ) then ! active chasm area
579  evap(j,i) = evap(j,i) + erosion_chasm
580  as_perp(j,i) = accum(j,i) - evap(j,i)
581  end if
582 
583 #endif
584 
585 end do
586 end do
587 
588 !-------- Ice-surface temperature (10-m firn temperature) temp_s --------
589 
590 temp_s = min(temp_ma, -eps) ! Cut-off of positive air temperatures
591 
592 temp_s = max(temp_s, temp_s_min) ! Cut-off of air temperatures below the
593  ! sublimation temperature of CO2
594 
595 !-------- Geothermal heat flux --------
596 
597 #if CHASM==1
598 
599 q_geo = q_geo_normal
600 
601 #elif CHASM==2
602 
603 q_geo_chasm = q_geo_chasm *1.0e-03_dp ! mW/m2 -> W/m2
604 
605 do i=0, imax
606 do j=0, jmax
607 
608  if ( (maske_chasm(j,i) == 7) &
609  .and.(time >= time_chasm_init) &
610  .and.(time <= time_chasm_end) ) then ! active chasm area
611  q_geo(j,i) = q_geo_chasm
612  else
613  q_geo(j,i) = q_geo_normal(j,i)
614  end if
615 
616 end do
617 end do
618 
619 #endif
620 
621 end subroutine boundary
622 !
real(dp) function instam(o, phi)
Annual mean temperature at latitude phi.
Definition: instemp.f90:231
subroutine borehole(field, x_pos, y_pos, dxi, deta, ch_grid, field_val)
Computation of an arbitrary field quantity for a given borehole position x_pos, y_pos by weighed aver...
Definition: borehole.F90:39
Computation of the daily mean surface temperature of Mars based on obliquity, eccentricity and the an...
Definition: instemp.f90:39
integer(i2b) function mask_update(z_sl, i, j)
Update of the topography mask due to changes of the sea level.
Definition: mask_update.F90:35
Declarations of kind types for SICOPOLIS.
Definition: sico_types.F90:35
Declarations of global variables for SICOPOLIS (for the ANT domain).
Definition: sico_vars.F90:35
Martian surface temperatures.
Definition: instemp.f90:46
subroutine setinstemp(o, ecc, ave, obl, sma, sa, sac, op, ct)
Main subroutine of module instemp.
Definition: instemp.f90:60
subroutine boundary(time, dtime, dxi, deta, delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
Computation of the surface temperature (must be less than 0 deg C!) and of the accumulation-ablation ...
Definition: boundary.F90:37
Declarations of global variables for SICOPOLIS.