source: trunk/LMDZ.MARS/libf/phymars/suaer.F90 @ 3807

Last change on this file since 3807 was 3756, checked in by emillour, 6 weeks ago

Mars PCM:
Code tidying: turn aerave.F and suaer.F90 into modules and modernize
"blackl" routine (enforce "implicit none", make true constants "parameters")
and include it in the aerave module since it is only called there.
EM

File size: 21.0 KB
RevLine 
[3756]1MODULE suaer_mod
2
3IMPLICIT NONE
4
5CONTAINS
6
[38]7SUBROUTINE suaer
[1047]8use dimradmars_mod, only: longrefvis, longrefir, nsizemax, long1vis, &
[1246]9                    long2vis, long3vis, long1ir, long2ir, long1co2, &
10                    long2co2, nsun, nir,&
11                    naerkind, name_iaer, &
12                    iaer_dust_conrath,iaer_dust_doubleq,&
13                    iaer_dust_submicron,iaer_h2o_ice,&
[2199]14                    iaer_stormdust_doubleq,iaer_topdust_doubleq,&
[1246]15                    file_id,radiustab, gvis, omegavis, &
16                    QVISsQREF, gIR, omegaIR, &
17                    QIRsQREF, QREFvis, QREFir, &
18                    omegaREFvis, omegaREFir, &
[1047]19                    nsize
[1918]20use datafile_mod, only: datadir
[2584]21USE mod_phys_lmdz_transfert_para, ONLY: bcast
[3726]22use callkeys_mod, only: dustrefir
[3756]23use aerave_mod, only: aerave
[3726]24
[38]25IMPLICIT NONE
26!==================================================================
27!     Purpose.
28!     --------
29!     initialize yomaer, the common that contains the
30!     radiative characteristics of the aerosols
31!     
32!     AUTHORS.
33!     --------
34!     Richard Fournier (1996) Francois Forget (1996)
35!     Frederic Hourdin
36!     Jean-jacques morcrette *ECMWF*
37!     MODIF Francois Forget (2000)
38!     MODIF Franck Montmessin (add water ice)
39!     MODIF J.-B. Madeleine 2008W27
40!       - Optical properties read in ASCII files
41!       - Add varying radius of the particules
42!
43!    Summary.
44!    --------
45!
46!    Read the optical properties -> Mean  -> Variable assignment
47!                  (ASCII files)                  (see yomaer.h)
48!    wvl(nwvl)                      longsun
49!    ep(nwvl)                       epav     QVISsQREF(nsun)
50!    omeg(nwvl)                     omegav   omegavis(nsun)
51!    gfactor(nwvl)                  gav      gvis(nsun)
52!   
53!==================================================================
54
55! Optical properties (read in external ASCII files)
56INTEGER          :: nwvl     ! Number of wavelengths in
57                             ! the domain (VIS or IR)
58REAL, DIMENSION(:),&
59  ALLOCATABLE, SAVE :: wvl       ! Wavelength axis
60REAL, DIMENSION(:),&
61  ALLOCATABLE, SAVE :: radiusdyn ! Particle size axis
62
63REAL, DIMENSION(:,:),&
64  ALLOCATABLE, SAVE :: ep,&    ! Extinction coefficient Qext
65                       omeg,&  ! Single Scattering Albedo
66                       gfactor ! Assymetry Factor
67
[2584]68!$OMP THREADPRIVATE(wvl,radiusdyn,ep,omeg,gfactor)
69
[38]70! Local variables:
71
72INTEGER :: iaer                ! Aerosol index
73INTEGER :: idomain             ! Domain index (1=VIS,2=IR)
74INTEGER :: iir                 ! IR channel index
75                               ! iir=1: 15um CO2 bands
76                               ! iir=2 : CO2 band wings
77                               ! iir=3 : 9 um band
78                               ! iir=4 : Far IR
79INTEGER :: isun                ! Solar band index
80INTEGER :: isize               ! Particle size index
81INTEGER :: jfile               ! ASCII file scan index
82INTEGER :: file_unit = 60
83LOGICAL :: file_ok, endwhile
84CHARACTER(LEN=132) :: scanline ! ASCII file scanning line
85INTEGER :: read_ok
86
87! I/O  of "aerave" (subroutine averaging spectrally
88!   sing.scat.parameters)
89
90REAL tsun            ! Sun brightness temperature (for SW)
91REAL tsol            ! Surface reference brightness temp (LW)
92REAL longref         ! reference wavelengths
93REAL longsun(nsun+1) ! solar band boundaries
94REAL longir(nir+1)   ! IR band boundaries
95REAL epref           ! reference extinction ep
96                     ! at wavelength "longref"
97REAL epav(nir)       ! average ep
98                     ! (= <Qext>/Qext(longref) if epref=1)
99REAL omegav(nir)     ! Average sing.scat.albedo
100REAL gav(nir)        ! Average assymetry parameter
101
[2584]102!$OMP MASTER
103
[38]104!==================================================================
105!---- Please indicate the names of the optical property files below
106!     Please also choose the reference wavelengths of each aerosol
107
108      DO iaer = 1, naerkind ! Loop on aerosol kind
109        aerkind: SELECT CASE (name_iaer(iaer))
110!==================================================================
111        CASE("dust_conrath") aerkind      ! Typical dust profile
112!==================================================================
113!       Visible domain:
114        file_id(iaer,1) = 'optprop_dustvis_TM.dat'     !M.Wolff TM
[222]115!       file_id(iaer,1) = 'optprop_dustvis_clancy.dat' !Clancy-Lee
[38]116!       file_id(iaer,1) = 'optprop_dustvis_ockert.dat' !Ockert-Bell
117!       Infrared domain:
118        file_id(iaer,2) = 'optprop_dustir_TM.dat'      !M.Wolff TM
[222]119!       Toon-Forget + solsir=2 using Clancy-Lee
120!       file_id(iaer,2) = 'optprop_dustir_clancy.dat'
121!       Toon-Forget + solsir=2 using Ockert-Bell
122!       file_id(iaer,2) = 'optprop_dustir_ockert.dat'
[38]123!       Reference wavelength in the visible:
124        longrefvis(iaer)=0.67E-6
125!                     For dust: change readtesassim accordingly;
126!       Reference wavelength in the infrared:
[1353]127        longrefir(iaer)=dustrefir
[38]128!==================================================================
129        CASE("dust_doubleq") aerkind! Two-moment scheme for dust
130!==================================================================
131!       Visible domain:
132        file_id(iaer,1) = 'optprop_dustvis_TM_n50.dat' !T-Matrix
133!       file_id(iaer,1) = 'optprop_dustvis_n50.dat'    !Mie
134!       Infrared domain:
135        file_id(iaer,2) = 'optprop_dustir_n50.dat'     !Mie
136!       Reference wavelength in the visible:
137        longrefvis(iaer)=0.67E-6
138!       If not equal to 0.67e-6 -> change readtesassim accordingly;
139!       Reference wavelength in the infrared:
[1353]140        longrefir(iaer)=dustrefir
[38]141!==================================================================
142        CASE("dust_submicron") aerkind   ! Small dust population
143!==================================================================
144!       Visible domain:
145        file_id(iaer,1) = 'optprop_dustvis_01um_TM.dat' !M.Wolff
146!       Infrared domain:
147        file_id(iaer,2) = 'optprop_dustir_01um_TM.dat'  !M.Wolff
148!       Reference wavelength in the visible:
149        longrefvis(iaer)=0.67E-6
150!       If not equal to 0.67e-6 -> change readtesassim accordingly;
151!       Reference wavelength in the infrared:
[1353]152        longrefir(iaer)=dustrefir
[38]153!==================================================================
154        CASE("h2o_ice") aerkind             ! Water ice crystals
155!==================================================================
156!       Visible domain:
157        file_id(iaer,1) = 'optprop_icevis_n30.dat' !Warren
158!       file_id(iaer,1) = 'optprop_icevis.dat'     !Warren
159!       Infrared domain:
160        file_id(iaer,2) = 'optprop_iceir_n30.dat'  !Warren
161!       file_id(iaer,2) = 'optprop_iceir.dat'      !Warren
162!       Reference wavelength in the visible:
163        longrefvis(iaer)=0.67E-6  ! 1.5um OMEGA/MEx
164!       Reference wavelength in the infrared:
165        longrefir(iaer)=12.1E-6  ! 825cm-1 TES/MGS
166!==================================================================
[2447]167        CASE("co2_ice") aerkind             ! CO2 ice crystals
168!==================================================================
169!       Visible domain:
170        file_id(iaer,1) = 'optprop_co2ice_vis_n50.dat' !
171!       Infrared domain:
172        file_id(iaer,2) = 'optprop_co2ice_ir_n50.dat'  !
173!       Reference wavelength in the visible:
174        longrefvis(iaer) = 0.67E-6  ! 1.5um OMEGA/MEx
175!       Reference wavelength in the infrared:
[2494]176        longrefir(iaer) = 4.26E-6  ! 2347 cm-1 OMEGA/MEx
[2447]177!==================================================================
[1974]178        CASE("stormdust_doubleq") aerkind   ! Two-moment scheme for stormdust - radiative properties
179!==================================================================
180!       Visible domain:
181        file_id(iaer,1) = 'optprop_dustvis_TM_n50.dat' !T-Matrix
182!       Infrared domain:
183        file_id(iaer,2) = 'optprop_dustir_n50.dat'     !Mie
184!       Reference wavelength in the visible:
185        longrefvis(iaer)=0.67E-6
186!       If not equal to 0.67e-6 -> change readtesassim accordingly;
187!       Reference wavelength in the infrared:
188        longrefir(iaer)=dustrefir
189!==================================================================
[2199]190        CASE("topdust_doubleq") aerkind   ! Two-moment scheme for topdust - radiative properties
191!==================================================================
192!       Visible domain:
193        file_id(iaer,1) = 'optprop_dustvis_TM_n50.dat' !T-Matrix
194!       Infrared domain:
195        file_id(iaer,2) = 'optprop_dustir_n50.dat'     !Mie
196!       Reference wavelength in the visible:
197        longrefvis(iaer)=0.67E-6
198!       If not equal to 0.67e-6 -> change readtesassim accordingly;
199!       Reference wavelength in the infrared:
200        longrefir(iaer)=dustrefir
201!==================================================================
[38]202        END SELECT aerkind
203!==================================================================
204        WRITE(*,*) "Scatterer: ",trim(name_iaer(iaer))
205        WRITE(*,*) "  corresponding files: "
206        WRITE(*,*) "VIS: ",trim(file_id(iaer,1))
207        WRITE(*,*) "IR : ",trim(file_id(iaer,2))
208!==================================================================
209      ENDDO ! iaer (loop on aerosol kind)
210
211! Initializations:
212
213radiustab(1:naerkind,1:2,1:nsizemax)=0
214
215gvis(1:nsun,1:naerkind,1:nsizemax)=0
216omegavis(1:nsun,1:naerkind,1:nsizemax)=0
217QVISsQREF(1:nsun,1:naerkind,1:nsizemax)=0
218
219gIR(1:nir,1:naerkind,1:nsizemax)=0
220omegaIR(1:nir,1:naerkind,1:nsizemax)=0
221QIRsQREF(1:nir,1:naerkind,1:nsizemax)=0
222
223QREFvis(1:naerkind,1:nsizemax)=0
224QREFir(1:naerkind,1:nsizemax)=0
225omegaREFvis(1:naerkind,1:nsizemax)=0
226omegaREFir(1:naerkind,1:nsizemax)=0
227
228DO iaer = 1, naerkind ! Loop on aerosol kind
229  DO idomain = 1, 2   ! Loop on radiation domain (VIS or IR)
[2584]230
[38]231!==================================================================
232! 1. READ OPTICAL PROPERTIES
233!==================================================================
234
235!       1.1 Open the ASCII file
236
[1918]237INQUIRE(FILE=TRIM(datadir)//&
238  '/'//TRIM(file_id(iaer,idomain)),&
[38]239  EXIST=file_ok)
240IF(.NOT.file_ok) THEN
241  write(*,*)'Problem opening ',&
[1918]242    TRIM(file_id(iaer,idomain))
[38]243  write(*,*)'It should be in: ',&
[1918]244    TRIM(datadir)
245  write(*,*)'1) You can change this directory address in callfis.def with'
246  write(*,*)'   datadir=/path/to/datafiles'
[38]247  write(*,*)'2) If ',&
[1918]248    TRIM(file_id(iaer,idomain)),&
[38]249    ' is a LMD reference datafile, it'
250  write(*,*)' can be obtained online on:'
251  write(*,*)' http://www.lmd.jussieu.fr/',&
[1381]252    '~lmdz/planets/mars/datadir'
[38]253  write(*,*)'3) If the name of the file is wrong, you can'
254  write(*,*)' change it in file phymars/suaer.F90. Just'
255  write(*,*)' modify the variable called file_id.'
[2311]256  CALL abort_physic("suaer","missing file "//trim(file_id(iaer,idomain)),1)
[38]257ENDIF
258OPEN(UNIT=file_unit,&
[1918]259  FILE=TRIM(datadir)//&
260  '/'//TRIM(file_id(iaer,idomain)),&
[38]261  FORM='formatted')
262
263!       1.2 Allocate the optical property table
264
265jfile = 1
266endwhile = .false.
267DO WHILE (.NOT.endwhile)
268  READ(file_unit,*,iostat=read_ok) scanline
269  if (read_ok.ne.0) then
270    write(*,*)' readoptprop: Error reading file',&
[1918]271    TRIM(datadir)//&
272    '/'//TRIM(file_id(iaer,idomain))
[2311]273    call abort_physic("suaer","problem reading "//trim(file_id(iaer,idomain)),1)
[38]274  endif
275  IF ((scanline(1:1) .ne. '#').and.&
276    (scanline(1:1) .ne. ' ')) THEN
277    BACKSPACE(file_unit)
278    reading1_seq: SELECT CASE (jfile) ! ====================
279    CASE(1) reading1_seq ! nwvl ----------------------------
280        read(file_unit,*,iostat=read_ok) nwvl
281        if (read_ok.ne.0) then
282          write(*,*)' readoptprop: Error while reading line:',&
283          trim(scanline)
284          write(*,*)'   of file',&
[1918]285          TRIM(datadir)//&
286          '/'//TRIM(file_id(iaer,idomain))
[2311]287          call abort_physic("suaer",&
288               "problem reading "//trim(file_id(iaer,idomain)),1)
[38]289        endif
290        jfile = jfile+1
291    CASE(2) reading1_seq ! nsize ---------------------------
292        read(file_unit,*,iostat=read_ok) nsize(iaer,idomain)
293        if (read_ok.ne.0) then
294          write(*,*)' readoptprop: Error while reading line:',&
295          trim(scanline)
296          write(*,*)'   of file',&
[1918]297          TRIM(datadir)//&
298          '/'//TRIM(file_id(iaer,idomain))
[2311]299          call abort_physic("suaer",&
300               "problem reading "//trim(file_id(iaer,idomain)),1)
[38]301        endif
302        endwhile = .true.
303    CASE DEFAULT reading1_seq ! ----------------------------
304        WRITE(*,*) 'readoptprop: ',&
305          'Error while loading optical properties.'
[2311]306        call abort_physic("suaer",&
307               "problem loading optical properties",1)
[38]308    END SELECT reading1_seq ! ==============================
309  ENDIF
310ENDDO
311
312ALLOCATE(wvl(nwvl))                            ! wvl
313ALLOCATE(radiusdyn(nsize(iaer,idomain)))       ! radiusdyn
314ALLOCATE(ep(nwvl,nsize(iaer,idomain)))         ! ep
315ALLOCATE(omeg(nwvl,nsize(iaer,idomain)))       ! omeg
316ALLOCATE(gfactor(nwvl,nsize(iaer,idomain)))    ! g
317
318!       1.3 Read the data
319
320jfile = 1
321endwhile = .false.
322DO WHILE (.NOT.endwhile)
323   READ(file_unit,*) scanline
324  IF ((scanline(1:1) .ne. '#').and.&
325    (scanline(1:1) .ne. ' ')) THEN
326    BACKSPACE(file_unit)
327    reading2_seq: SELECT CASE (jfile) ! ====================
328    CASE(1) reading2_seq ! wvl -----------------------------
329        read(file_unit,*) wvl
330        jfile = jfile+1
331    CASE(2) reading2_seq ! radiusdyn -----------------------
332        read(file_unit,*) radiusdyn
333        jfile = jfile+1
334    CASE(3) reading2_seq ! ep ------------------------------
335        isize = 1
336        DO WHILE (isize .le. nsize(iaer,idomain))
337          READ(file_unit,*) scanline
338          IF ((scanline(1:1) .ne. '#').and.&
339            (scanline(1:1) .ne. ' ')) THEN
340          BACKSPACE(file_unit)
341          read(file_unit,*) ep(:,isize)
342          isize = isize + 1
343          ENDIF
344        ENDDO
345        jfile = jfile+1
346    CASE(4) reading2_seq ! omeg ----------------------------
347        isize = 1
348        DO WHILE (isize .le. nsize(iaer,idomain))
349          READ(file_unit,*) scanline
350          IF ((scanline(1:1) .ne. '#').and.&
351            (scanline(1:1) .ne. ' ')) THEN
352          BACKSPACE(file_unit)
353          read(file_unit,*) omeg(:,isize)
354          isize = isize + 1
355          ENDIF
356        ENDDO
357        jfile = jfile+1
358    CASE(5) reading2_seq ! gfactor -------------------------
359        isize = 1
360        DO WHILE (isize .le. nsize(iaer,idomain))
361          READ(file_unit,*) scanline
362          IF ((scanline(1:1) .ne. '#').and.&
363            (scanline(1:1) .ne. ' ')) THEN
364          BACKSPACE(file_unit)
365          read(file_unit,*) gfactor(:,isize)
366          isize = isize + 1
367          ENDIF
368        ENDDO
369        endwhile = .true.
370    CASE DEFAULT reading2_seq ! ----------------------------
371        WRITE(*,*) 'suaer.F90: ',&
372          'Error while loading optical properties.'
[2311]373        call abort_physic("suaer",&
374               "problem loading optical properties",1)
[38]375    END SELECT reading2_seq ! ==============================
376  ENDIF
377ENDDO
378
379!       1.4 Close the file
380
[2584]381 CLOSE(file_unit)
[38]382
[2584]383
[38]384!==================================================================
385! 2. AVERAGED PROPERTIES AND VARIABLE ASSIGNMENTS
386!==================================================================
387domain: SELECT CASE (idomain)
388!==================================================================
389CASE(1) domain !                   VISIBLE DOMAIN (idomain=1)
390!==================================================================
391
392! 2.1 Parameters
393  tsun=6000.E+0
394  longsun(1)=long1vis
395  longsun(2)=long2vis
396  longsun(3)=long3vis
397  longref=longrefvis(iaer)
398  epref=1.E+0
399
400DO isize=1,nsize(iaer,idomain)
401! test that there is enough room to store the data
402 if (isize.gt.nsizemax) then
403   write(*,*) "suaer: Error ! nsizemax is too small!"
404   write(*,*) "       nsizemax=",nsizemax
405   write(*,*) "       you must increase the value of nsizemax"
[1047]406   write(*,*) "       in dimradmars_mod !"
[2311]407   call abort_physic("suaer","nsizemax too small",1)
[38]408 endif
409! ------------------------------------------------
410! 2.2 Save the particle sizes
411  radiustab(iaer,idomain,isize)=radiusdyn(isize)
412! 2.3 Averaged optical properties (GCM channels)
413! Notice: Aerave also computes the extinction coefficient and
414!   single scattering albedo at reference wavelength
415!   (called QREFvis and OMEGAREFvis, same in the IR,
416!   and not epref, which is a different parameter);
417!   Reference wavelengths are defined for each aerosol in
[1047]418!   dimradmars_mod.
[38]419
420  CALL aerave ( nwvl,&
421       wvl(:),ep(:,isize),omeg(:,isize),gfactor(:,isize),&
422       longref,epref,tsun,&
423       nsun,longsun, epav,omegav,gav,&
424       QREFvis(iaer,isize),omegaREFvis(iaer,isize) )
425! 2.4 Variable assignements (declared by yomaer.h)
426  DO isun=1,nsun
427    QVISsQREF(isun,iaer,isize)=epav(isun)
428    gvis(isun,iaer,isize)=gav(isun)
429    omegavis(isun,iaer,isize)=omegav(isun)
430  END DO
431! 2.5 Output display
[411]432!  WRITE(*,*) 'Les donnees spectrales :'
433!  WRITE(*,*) 'Solaire (SW) ---->'
434!  WRITE(*,*) 'Aerosol number: ', iaer
435!  WRITE(*,*) 'Rayon aerosol: ', radiustab(iaer,idomain,isize)
436!  WRITE(*,*) '<Qext>/Qext(longrefvis) ; omega ; g'
437!  DO isun=1,nsun
438!    WRITE(*,*) QVISsQREF(isun,iaer,isize),&
439!         omegavis(isun,iaer,isize),&
440!         gvis(isun,iaer,isize)
441!  ENDDO
442!  WRITE(*,*) 'QREFvis(',iaer,isize,') = ',QREFvis(iaer,isize)
443!  WRITE(*,*) 'omegaREFvis(',iaer,isize,') = ',&
444!                                      omegaREFvis(iaer,isize)
[38]445! ------------------------------------------------
446ENDDO
447
448!==================================================================
449CASE(2) domain !                  INFRARED DOMAIN (idomain=2)
450!==================================================================
451
452DO isize=1,nsize(iaer,idomain) ! ----------------------------------
453
454! 2.1 solsir is not used anymore; division of Qext(IR) by solsir
455!     has to be done in the input ASCII files (if necessary).
456
457! 2.2 Save the particle sizes
458  radiustab(iaer,idomain,isize)=radiusdyn(isize)
459
460! 2.3 Parameters
461
462  tsol=215.D+0
463  longir(1)=long1ir
464  longir(2)=long1co2
465  longir(3)=long2co2
466  longir(4)=long2ir
467  longref=longrefir(iaer)
468  epref=1.E+0
469
470! 2.4 Averaged optical properties (GCM channels)
471!           epav is <QIR>/Qext(longrefir) since epref=1
472! Notice: Aerave also Computes the extinction coefficient at
473!   reference wavelength (called QREFvis or QREFir,
474!   and not epref, which is a different parameter);
475!   Reference wavelengths are defined for each aerosol in
[1047]476!   dimradmar_mod.
[38]477
478  CALL aerave ( nwvl,&
479       wvl(:),ep(:,isize),omeg(:,isize),gfactor(:,isize),&
480       longref,epref,tsol,&
481       nir-1,longir,epav,omegav,gav,&
482       QREFir(iaer,isize),omegaREFir(iaer,isize) )
[411]483!  WRITE(*,*) 'QREFir(',iaer,isize,') = ',QREFir(iaer,isize)
484!  WRITE(*,*) 'omegaREFir(',iaer,isize,') = ',&
485!                                      omegaREFir(iaer,isize)
[38]486
487! 2.5 Computing  <QIR>/Qext(longrefvis)
488
489  DO iir=1,nir-1
[411]490!    WRITE(*,*) 'QIRsQREFir Channel ',iir,': ',epav(iir)
[38]491    epav(iir)=  epav(iir) * QREFir(iaer,isize) / &
492                            QREFvis(iaer,isize)
493  ENDDO
[411]494!  WRITE(*,*) 'Aerosol number', iaer
495!  WRITE(*,*) 'Particle size: ',radiustab(iaer,idomain,isize)
496!  WRITE(*,*) 'Rapport Solaire/IR:',&
497!             QREFvis(iaer,isize) / QREFir(iaer,isize)
[38]498
499! 2.6 Variable assignements
500!           (variables are declared by yomaer.h)
501
502!         Single scattering properties
503!           in each of the "nir" bands
[1047]504!           (cf. dimradmars_mod)
[38]505
506! iir=1 : central 15um CO2 bands   
507  QIRsQREF(1,iaer,isize)=epav(2)
508  omegaIR(1,iaer,isize)=omegav(2)
509  gIR(1,iaer,isize)=gav(2)
510
511! iir=2 : CO2 band wings
512!           (same properties than for central part)
513  QIRsQREF(2,iaer,isize)=epav(2)
514  omegaIR(2,iaer,isize)=omegav(2)
515  gIR(2,iaer,isize)=gav(2)
516
517! iir=3 : 9 um band [long1ir - long1co2]
518  QIRsQREF(3,iaer,isize)=epav(1)
519  omegaIR(3,iaer,isize)=omegav(1)
520  gIR(3,iaer,isize)=gav(1)
521
522! iir=4 : Far IR    [long2co2 - long2ir]
523  QIRsQREF(4,iaer,isize)=epav(3)
524  omegaIR(4,iaer,isize)=omegav(3)
525  gIR(4,iaer,isize)=gav(3)
526
527! 2.7 Output display
528
[411]529!  WRITE(*,*) 'AEROSOL PROPERTIES: Number ',iaer
530!  WRITE(*,*) 'Thermal IR (LW) ---->'
531!  WRITE(*,*) 'Particle size: ',radiustab(iaer,idomain,isize)
532!  WRITE(*,*) '<Qext>/Qext(longrefvis) ; omega ; g'
533!  DO iir=1,nir
534!    WRITE(*,*) QIRsQREF(iir,iaer,isize),omegaIR(iir,iaer,isize),&
535!         gIR(iir,iaer,isize)
536!  ENDDO
537!  WRITE(*,*) 'CO2: <Qabs>/Qext(longrefvis) = ',&
538!       QIRsQREF(1,iaer,isize)*(1-omegaIR(1,iaer,isize))
539!  WRITE(*,*) ''
[38]540
541ENDDO ! isize (particle size) -------------------------------------
542
543END SELECT domain
544!==================================================================
545! 3. Deallocate temporary variables (read in ASCII files)
546!==================================================================
547
548DEALLOCATE(wvl)        ! wvl
549DEALLOCATE(radiusdyn)  ! radiusdyn
550DEALLOCATE(ep)         ! ep
551DEALLOCATE(omeg)       ! omeg
552DEALLOCATE(gfactor)    ! g
553
[2584]554
555
[38]556  END DO ! Loop on iaer
557END DO   ! Loop on idomain
[2584]558
559!$OMP END MASTER
560
561      call bcast(longrefvis)
562      call bcast(longrefir)
563      call bcast(radiustab)
564      call bcast(gvis)
565      call bcast(omegavis)
566      call bcast(QVISsQREF)
567      call bcast(gIR)
568      call bcast(omegaIR)
569      call bcast(QIRsQREF)
570      call bcast(QREFvis)
571      call bcast(QREFir)
572      call bcast(omegaREFvis)
573      call bcast(omegaREFir)
574      call bcast(nsize)
575
[38]576!==================================================================
[3756]577
578END SUBROUTINE suaer
579
580END MODULE suaer_mod
Note: See TracBrowser for help on using the repository browser.