File: pick-dir/wr_heterogeneous_latex.f90

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