File: pick-dir/wr_cr_latex.f90

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