File: pick-dir/wr_photolysis_latex.f90

    1       SUBROUTINE WR_PHOTOLYSIS_LATEX(Fn,Jchan,Species,Photolysis,NMAXR, &
    2                                    & NMAXS,Nspec,Nkj,Nlinesperpage)
    3       USE KINETIC
    4       IMPLICIT NONE
    5 !
    6 ! Dummy arguments
    7 !
    8       CHARACTER(200) :: Fn
    9       INTEGER :: Jchan , Nkj , Nlinesperpage , Nspec
   10       INTEGER :: NMAXR , NMAXS
   11       TYPE (PHOTOLYSIS_RECORD) , DIMENSION(NMAXR) :: Photolysis
   12       TYPE (SPECIES_RECORD) , DIMENSION(NMAXS) :: Species
   13       INTENT (IN) Fn , Jchan , Nkj , Nlinesperpage , NMAXR , NMAXS ,    &
   14                 & Photolysis
   15 !
   16 ! Local variables
   17 !
   18       INTEGER :: i , i1 , i2 , ii , ilines , itl , iwantp , j ,         &
   19                & nproductsperline
   20       INTEGER :: INT
   21       INTEGER :: ISPEC
   22       LOGICAL :: lend , lfirst , lstart , ltable
   23       CHARACTER(200) :: string , string_m1
   24       CHARACTER(20) :: st_blank , st_hv
   25       CHARACTER(10) :: st_num
   26 !
   27 !-----------------------------------------------------------------------
   28 !
   29 !     Written by:   David Lary
   30 !
   31 !     Started:      7/1/1993
   32 !
   33 !     Last updated: 29/1/2004
   34 !
   35 !----------------------------------------------------------------------
   36 !
   37       CALL BLANK(st_blank)
   38       CALL BLANK(st_hv)
   39       st_hv(1:7) = "Photon '
   40 !
   41 !----------------------------------------------------------------------
   42 !
   43 !     photolysis.
   44       WRITE (6,*) TRIM(Fn)
   45       OPEN (Jchan,FILE=TRIM(Fn),STATUS="unknown')
   46 !
   47 !----------------------------------------------------------------------
   48 !
   49 !     LaTeX document header.
   50       WRITE (Jchan,FMT="(a)') "\documentclass[10pt,a4]{article}'
   51       WRITE (Jchan,FMT="(a)')
   52       WRITE (Jchan,FMT="(73a)') "%' , ("-',i=1,72)
   53       WRITE (Jchan,FMT="(a)') "%'
   54       WRITE (Jchan,FMT="(a)')                                           &
   55      &"% LaTeX document automatically generated by the AutoChem Programm&
   56      &e "Pick"."
   57       WRITE (Jchan,FMT="(a)') "%'
   58       WRITE (Jchan,FMT="(a)') "% by David Lary 1993-2004.'
   59       WRITE (Jchan,FMT="(a)') "%'
   60       WRITE (Jchan,FMT="(a)') "% photolysis reaction list.'
   61       WRITE (Jchan,FMT="(a)') "%'
   62       WRITE (Jchan,FMT="(73a)') "%' , ("-',i=1,72)
   63       WRITE (Jchan,FMT="(a)')
   64       WRITE (Jchan,FMT="(a)') "% Margins.'
   65       WRITE (Jchan,FMT="(a)') "\textwidth      5.9in '
   66       WRITE (Jchan,FMT="(a)') "\oddsidemargin -0.12in '
   67       WRITE (Jchan,FMT="(a)') "\evensidemargin .3in'
   68       WRITE (Jchan,FMT="(a)') "\marginparwidth 1.3in '
   69       WRITE (Jchan,FMT="(a)') "\topmargin     -.9in '
   70       WRITE (Jchan,FMT="(a)') "\textheight    9.4in'
   71       WRITE (Jchan,FMT="(a)')
   72       WRITE (Jchan,FMT="(a)') "% Package definitions.'
   73       WRITE (Jchan,FMT="(a)') "\usepackage{hyperref}'
   74       WRITE (Jchan,FMT="(a)') "\usepackage{times}'
   75       WRITE (Jchan,FMT="(a)')
   76       WRITE (Jchan,FMT="(a)')                                           &
   77                          &"% Make sure equations will not be in italic.'
   78       WRITE (Jchan,FMT="(a)') "\everymath={\fam0 }'
   79       WRITE (Jchan,FMT="(a)')
   80       WRITE (Jchan,FMT="(a)') "% Begin Document.'
   81       WRITE (Jchan,FMT="(a)') "\begin{document}'
   82       WRITE (Jchan,FMT="(a)')
   83 !
   84 !----------------------------------------------------------------------
   85 !
   86 !     photolysis reaction section.
   87       WRITE (Jchan,FMT="(a)') "\section{photolysis Reactions}'
   88       WRITE (Jchan,FMT="(a)')
   89       WRITE (Jchan,FMT="(a)') "A total of '
   90       WRITE (Jchan,FMT="(i6)') Nkj
   91       WRITE (Jchan,FMT="(a)')                                           &
   92             &"photolysis reactions were selected and they are given in '
   93       WRITE (Jchan,FMT="(a)') "Table~\ref{Table:photolysis.reactions}.'
   94       WRITE (Jchan,FMT="(a)')
   95 !
   96 !----------------------------------------------------------------------
   97 !
   98 !     photolysis reaction table.
   99 !
  100 !     Reaction loop.
  101       ilines = 0
  102       lstart = .TRUE.
  103       lfirst = .TRUE.
  104       DO i = 1 , Nkj
  105 !
  106          WRITE (string,FMT="(i6)') i
  107          WRITE (string_m1,FMT="(i6)') i - 1
  108 !
  109          IF ( lstart ) THEN
  110 !
  111 !           Start table.
  112             lstart = .FALSE.
  113 !
  114             WRITE (Jchan,FMT="(a)') "\begin{table*}'
  115             WRITE (Jchan,FMT="(a)') "\centering'
  116 !           WRITE (Jchan,FMT='(a)') '\small'
  117             WRITE (Jchan,FMT="(a)') "\begin{tabular}{|c|rcl|c|}'
  118             WRITE (Jchan,FMT="(a)') "\hline'
  119             WRITE (Jchan,FMT="(a)')                                     &
  120                     &"\# & Reactants & & Products & Rate coefficient \\'
  121             WRITE (Jchan,FMT="(a)') "\hline'
  122             WRITE (Jchan,FMT="(a)')
  123             WRITE (Jchan,FMT="(a)') "\vspace{-0.12in}&&&&\\'
  124 !
  125          ENDIF
  126 !
  127 !        See the size of the reaction product line and determine
  128 !        if we need to split it up.
  129          itl = 0
  130          DO j = 1 , Photolysis(i)%iwantp
  131             itl = itl + LEN_TRIM(Photolysis(i)%P(j))
  132 !
  133             WRITE (st_num,FMT="(f6.3)') Photolysis(i)%Z(j)
  134             i1 = SCAN(TRIM(st_num),"1.000')
  135             i2 = SCAN(TRIM(st_num),".000')
  136             IF ( i1/=2 ) THEN
  137                IF ( i2==3 ) WRITE (st_num,FMT="(i6)')                   &
  138                                  & INT(Photolysis(i)%Z(j))
  139                st_num = TRIM(st_num)
  140             ELSEIF ( i1==2 .AND. i2==2 ) THEN
  141                st_num = TRIM(st_num)
  142             ELSE
  143                st_num = st_blank
  144             ENDIF
  145             itl = itl + LEN_TRIM(st_num)
  146          ENDDO
  147 !
  148          IF ( ANY(INT(Photolysis(i)%Z(1:Photolysis(i)%iwantp))/=1) )    &
  149             & THEN
  150             nproductsperline = 2
  151          ELSE
  152             nproductsperline = 3
  153          ENDIF
  154          IF ( itl>11 ) nproductsperline = 1
  155 !
  156          ltable = .FALSE.
  157          IF ( Photolysis(i)%iwantp>nproductsperline ) ltable = .TRUE.
  158          IF ( ltable ) WRITE (Jchan,FMT="(a)') "\vspace{-0.12in}&&&&\\'
  159 !
  160          WRITE (Jchan,FMT="(i6,a)') i , " & '
  161 !
  162          DO j = 1 , Photolysis(i)%iwantr
  163             ii = ISPEC(Photolysis(i)%RE(j),Species,Nspec)
  164             IF ( Photolysis(i)%RE(j)==st_hv ) THEN
  165                WRITE (Jchan,FMT="(a))') "$h\nu$'
  166             ELSE
  167                WRITE (Jchan,FMT="(a))') "$'//TRIM(Species(ii)%latex)    &
  168                                        &//"$'
  169             ENDIF
  170             IF ( j<Photolysis(i)%iwantr ) WRITE (Jchan,FMT="(a))') "+'
  171          ENDDO
  172 !
  173          WRITE (Jchan,FMT="(a)') "& $\longrightarrow$ &'
  174 !
  175          IF ( ltable ) THEN
  176             WRITE (Jchan,FMT="(a)') "\vline \ '
  177             IF ( nproductsperline==3 ) THEN
  178                WRITE (Jchan,FMT="(a)') "\begin{tabular}{lclclc}'
  179             ELSEIF ( nproductsperline==2 ) THEN
  180                WRITE (Jchan,FMT="(a)') "\begin{tabular}{lclc}'
  181             ELSEIF ( nproductsperline==1 ) THEN
  182                WRITE (Jchan,FMT="(a)') "\begin{tabular}{lc}'
  183             ENDIF
  184          ENDIF
  185          iwantp = Photolysis(i)%iwantp
  186          IF ( Photolysis(i)%P(iwantp)==st_hv ) iwantp = iwantp - 1
  187          DO j = 1 , iwantp
  188 !
  189             WRITE (st_num,FMT="(f6.3)') Photolysis(i)%Z(j)
  190             i1 = SCAN(TRIM(st_num),"1.000')
  191             i2 = SCAN(TRIM(st_num),".000')
  192             IF ( i1/=2 ) THEN
  193                IF ( i2==3 ) WRITE (st_num,FMT="(i6)')                   &
  194                                  & INT(Photolysis(i)%Z(j))
  195                WRITE (Jchan,FMT="(a)') TRIM(st_num)
  196             ELSEIF ( i1==2 .AND. i2==2 ) THEN
  197                WRITE (Jchan,FMT="(a)') TRIM(st_num)
  198             ENDIF
  199 !
  200 !
  201             ii = ISPEC(Photolysis(i)%P(j),Species,Nspec)
  202             WRITE (Jchan,FMT="(a))') "$'//TRIM(Species(ii)%latex)//"$'
  203             IF ( j<iwantp ) THEN
  204                IF ( ltable ) WRITE (Jchan,FMT="(a)') "&'
  205                WRITE (Jchan,FMT="(a))') "+'
  206             ENDIF
  207             IF ( ltable ) THEN
  208                IF ( MOD(j,nproductsperline)==0 ) THEN
  209                   WRITE (Jchan,FMT="(a)') "\\'
  210                   ilines = ilines + 1
  211                ELSE
  212                   WRITE (Jchan,FMT="(a)') "&'
  213                ENDIF
  214             ENDIF
  215          ENDDO
  216          IF ( ltable ) WRITE (Jchan,FMT="(a)') "\end{tabular}'
  217 !
  218 !----------------------------------------------------------------------
  219 !
  220 !        Rate coeffecient expression
  221 !
  222 !----------------------------------------------------------------------
  223 !
  224          WRITE (Jchan,FMT="(a)') "&'
  225          WRITE (Jchan,FMT="(a)') "\\'
  226          ilines = ilines + 1
  227 !
  228          lend = (i==Nkj) .OR. (ilines>Nlinesperpage)
  229 !
  230          IF ( lend ) THEN
  231 !
  232             ilines = 0
  233             lstart = .TRUE.
  234 !
  235 !           Close table.
  236             WRITE (Jchan,FMT="(a)')
  237             WRITE (Jchan,FMT="(a)') "\vspace{-0.01in}&&&&\\'
  238             WRITE (Jchan,FMT="(a)') "\hline'
  239             WRITE (Jchan,FMT="(a)') "\end{tabular}'
  240             IF ( lfirst ) THEN
  241                WRITE (Jchan,FMT="(a)') "\caption{photolysis reactions.}'
  242                WRITE (Jchan,FMT="(a)')                                  &
  243                                    &"\label{Table:photolysis.reactions}'
  244                lfirst = .FALSE.
  245             ELSE
  246                WRITE (Jchan,FMT="(a)')                                  &
  247                           &"\caption{(continued) photolysis reactions.}'
  248             ENDIF
  249             WRITE (Jchan,FMT="(a)') "\end{table*}'
  250             WRITE (Jchan,FMT="(a)') "\addtocounter{table}{-1}'
  251 !
  252          ENDIF
  253 !
  254       ENDDO
  255 !     End of reaction loop.
  256 !
  257 !----------------------------------------------------------------------
  258 !
  259 !     Close LaTeX document.
  260       WRITE (Jchan,FMT="(a)')
  261       WRITE (Jchan,FMT="(a)') "\end{document}'
  262       CLOSE (Jchan)
  263 !
  264 !----------------------------------------------------------------------
  265 !
  266       END SUBROUTINE WR_PHOTOLYSIS_LATEX