Subroutine transpmodel_init
317 :
318 : !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
319 : !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
320 : !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
321 :
322 : subroutine transpmodel_init (vom_invar, vom_npar, vom_command)
323 : use vom_vegwat_mod
324 : !$ USE omp_lib
325 : implicit none
326 :
327 : INTEGER, INTENT(in) :: vom_npar
328 : INTEGER, INTENT(in) :: vom_command
329 : REAL*8, DIMENSION(vom_npar), INTENT(in) :: vom_invar
330 :
331 : if( .not. allocated(pcap_) ) then
332 :
333 : allocate(pcap_(s_maxlayer))
334 : allocate(su__(s_maxlayer))
335 : allocate(ruptkt__(s_maxlayer))
336 : allocate(sunew(s_maxlayer))
337 : allocate(kunsat_(s_maxlayer))
338 :
339 : allocate(rsurft_(s_maxlayer))
340 : allocate(rsurftnew(s_maxlayer))
341 : allocate(qbl(s_maxlayer))
342 : allocate(dsu(s_maxlayer))
343 : allocate(prootm(s_maxlayer))
344 :
345 : allocate(pcapnew(s_maxlayer))
346 : allocate(ruptkt_d(s_maxlayer))
347 : allocate(ruptkt_h(s_maxlayer))
348 : allocate(ruptkg_h(s_maxlayer))
349 : allocate(ruptkg_d(s_maxlayer))
350 : allocate(refft(s_maxlayer))
351 : allocate(reffg(s_maxlayer))
352 : allocate(ruptkg__(s_maxlayer))
353 : allocate(rsurfg_(s_maxlayer))
354 : allocate(rsurfgnew(s_maxlayer))
355 : allocate(rsoil(s_maxlayer))
356 : allocate(kunsatnew(s_maxlayer))
357 : allocate(sueq(s_maxlayer))
358 : allocate(cH2Ol_s(s_maxlayer))
359 : allocate(iovec(s_maxlayer))
360 :
361 : allocate( output_mat (21, c_testday ) )
362 :
363 : end if
364 :
365 : if (vom_command .eq. 2) then
366 : optmode = 0
367 : elseif (vom_command .eq. 5) then
368 : optmode = 0
369 : elseif (vom_command .eq. 3) then
370 : optmode = 2
371 : else
372 : optmode = 1
373 : endif
374 :
375 : !*----------------------------------------------------------------------
376 : !* Optimised parameters reading from vom_invar
377 : !*----------------------------------------------------------------------
378 :
379 :
380 : if (vom_npar .ge. 1) o_lambdagf = vom_invar(1)
381 : if (vom_npar .ge. 2) o_wsgexp = vom_invar(2)
382 : if (vom_npar .ge. 3) o_lambdatf = vom_invar(3)
383 : if (vom_npar .ge. 4) o_wstexp = vom_invar(4)
384 : if (vom_npar .ge. 5) o_cai = vom_invar(5)
385 : if (vom_npar .ge. 6) o_rtdepth = vom_invar(6)
386 : if (vom_npar .ge. 7) o_mdstore = vom_invar(7)
387 : if (vom_npar .ge. 8) o_rgdepth = vom_invar(8)
388 : if (vom_npar .ge. 9) i_cgs = vom_invar(9)
389 : if (vom_npar .ge. 10) i_zr = vom_invar(10)
390 : if (vom_npar .ge. 11) i_go = vom_invar(11)
391 : if (vom_npar .ge. 12) i_ksat = vom_invar(12)
392 : if (vom_npar .ge. 13) i_thetar = vom_invar(13)
393 : if (vom_npar .ge. 14) i_thetas = vom_invar(14)
394 : if (vom_npar .ge. 15) i_nvg = vom_invar(15)
395 : if (vom_npar .ge. 16) i_avg = vom_invar(16)
396 :
397 : !set vegetation parameters to 0 if no vegetation
398 : if (i_no_veg .eq. 1) then
399 : o_lambdagf = 0.0
400 : o_wsgexp = 0.0
401 : o_lambdatf = 0.0
402 : o_wstexp = 0.0
403 : o_cai = 0.0
404 : o_rtdepth = 0.0
405 : o_mdstore = 0.0
406 : o_rgdepth = 0.0
407 : i_rsurfmin = 0.0
408 : i_rsurf_ = 0.0
409 : i_rootrad = 0.0
410 : i_incrcovg = 0.0
411 : end if
412 :
413 : !***********************************************************************
414 : !* Calculation of vegetation parameters
415 : !*
416 : !*----------------------------------------------------------------------
417 : !* Equations in equations.pdf
418 : !* (numeration in the commented parentheses)
419 : !***********************************************************************
420 :
421 : !*-----Initial values---------------------------------------------------
422 :
423 : call vom_init_vegpar()
424 :
425 : nday = 0
426 : c_testday = i_testyear * 365
427 : if (optmode .eq. 0 .or. optmode .eq. 2) c_testday = c_maxday
428 : finish = 0
429 :
430 : return
431 : end subroutine transpmodel_init