File: pick-dir/wr_uniheterogeneous_latex.f90

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