1 |
module radiornpb_m |
2 |
|
3 |
IMPLICIT none |
4 |
|
5 |
contains |
6 |
|
7 |
function radiornpb(tr_seri, pdtphys, tautr) |
8 |
|
9 |
! From phylmd/radiornpb.F, version 1.2, 2005/05/25 13:10:09 |
10 |
|
11 |
! Auteurs : AA + Christophe Genthon (LGGE/CNRS) |
12 |
! Date: June 1994 |
13 |
! Objet: d\'ecroissance radioactive d'un traceur dans l'atmosph\`ere |
14 |
|
15 |
! Pour un traceur, le radon. Plus un deuxi\`eme traceur, le 210 |
16 |
! Pb. Le radon d\'ecro\^it en plomb. Le pas de temps "pdtphys" est |
17 |
! suppos\'e beaucoup plus petit que la constante de temps de |
18 |
! d\'ecroissance. |
19 |
|
20 |
use dimensions, only: llm, nqmx |
21 |
use dimphy, only: klon |
22 |
use nr_util, only: assert |
23 |
|
24 |
REAL, intent(in):: tr_seri(:, :, :) ! (klon, llm, nqmx - 2) |
25 |
REAL, intent(in):: pdtphys |
26 |
REAL, intent(in):: tautr(:) ! (nqmx - 2) |
27 |
real radiornpb(klon, llm, 2) |
28 |
|
29 |
! Local: |
30 |
INTEGER it |
31 |
|
32 |
!----------------------------------------------- |
33 |
|
34 |
call assert(shape(tr_seri) == [klon, llm, nqmx - 2], "radiornpb tr_seri") |
35 |
call assert(size(tautr) == nqmx - 2, "radiornpb tautr") |
36 |
|
37 |
DO it = 1, 2 |
38 |
IF (tautr(it) > 0.) THEN |
39 |
radiornpb(:, :, it) = - tr_seri(:, :, it) * pdtphys / tautr(it) |
40 |
ELSE |
41 |
radiornpb(:, :, it) = 0. |
42 |
END IF |
43 |
END DO |
44 |
|
45 |
! Cas particulier radon 1 => plomb 2 |
46 |
radiornpb(:, :, 2) = radiornpb(:, :, 2) - radiornpb(:, :, 1) |
47 |
|
48 |
END function radiornpb |
49 |
|
50 |
end module radiornpb_m |