File: pick-dir/wr_bulktransfer_latex.f90

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