'!!$\n' Comment '!!$\n' Comment '!!$ MD2P4\n' Comment '!!$ Multilevel Domain Decomposition Parallel Preconditioner Package for PSBLAS\n' Comment '!!$ for\n' Comment '!!$ Parallel Sparse BLAS v2.0\n' Comment '!!$ (C) Copyright 2006 Salvatore Filippone University of Rome Tor Vergata\n' Comment '!!$ Alfredo Buttari University of Rome Tor Vergata\n' Comment '!!$ Daniela Di Serafino II University of Naples\n' Comment "!!$ Pasqua D'Ambra ICAR-CNR\n" Comment '!!$\n' Comment '!!$ Redistribution and use in source and binary forms, with or without\n' Comment '!!$ modification, are permitted provided that the following conditions\n' Comment '!!$ are met:\n' Comment '!!$ 1. Redistributions of source code must retain the above copyright\n' Comment '!!$ notice, this list of conditions and the following disclaimer.\n' Comment '!!$ 2. Redistributions in binary form must reproduce the above copyright\n' Comment '!!$ notice, this list of conditions, and the following disclaimer in the\n' Comment '!!$ documentation and/or other materials provided with the distribution.\n' Comment '!!$ 3. The name of the MD2P4 group or the names of its contributors may\n' Comment '!!$ not be used to endorse or promote products derived from this\n' Comment '!!$ software without specific written permission.\n' Comment '!!$\n' Comment '!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n' Comment "!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n" Comment '!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n' Comment '!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MD2P4 GROUP OR ITS CONTRIBUTORS\n' Comment '!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n' Comment '!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n' Comment '!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n' Comment '!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n' Comment '!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n' Comment '!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n' Comment '!!$ POSSIBILITY OF SUCH DAMAGE.\n' Comment '!!$\n' Comment '!!$\n' Comment 'subroutine ' Keyword 'psb_zmlprc_aply' Name '(' Punctuation 'alpha' Name ',' Punctuation 'baseprecv' Name ',' Punctuation 'x' Name ',' Punctuation 'beta' Name ',' Punctuation 'y' Name ',' Punctuation 'desc_data' Name ',' Punctuation 'trans' Name ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Compute Y <- beta*Y + alpha*K^-1 X\n' Comment ' ' Text.Whitespace '! where K is a multilevel preconditioner stored in baseprecv\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! cfr.: Smith, Biorstad & Gropp\n' Comment ' ' Text.Whitespace '! Domain Decomposition\n' Comment ' ' Text.Whitespace '! Cambridge Univ. Press\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! To each level I there corresponds a matrix A(I) and a preconditioner K(I)\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! A notational difference: in the DD reference above the preconditioner for\n' Comment ' ' Text.Whitespace '! a given level K(I) is written out as a sum over the subdomains\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! SUM_k(R_k^T A_k R_k)\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! whereas in this code the sum is implicit in the parallelization,\n' Comment ' ' Text.Whitespace '! i.e. each process takes care of one subdomain, and for each level we have\n' Comment ' ' Text.Whitespace '! as many subdomains as there are processes (except for the coarsest level where\n' Comment ' ' Text.Whitespace '! we might have a replicated index space). Thus the sum apparently disappears\n' Comment ' ' Text.Whitespace '! from our code, but only apparently, because it is implicit in the call\n' Comment ' ' Text.Whitespace '! to psb_baseprc_aply.\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! A bit of description of the baseprecv(:) data structure:\n' Comment ' ' Text.Whitespace '! 1. Number of levels = NLEV = size(baseprecv(:))\n' Comment ' ' Text.Whitespace '! 2. baseprecv(ilev)%av(:) sparse matrices needed for the current level.\n' Comment ' ' Text.Whitespace '! Includes:\n' Comment ' ' Text.Whitespace '! 2.1.: baseprecv(ilev)%av(l_pr_) L factor of ILU preconditioners\n' Comment ' ' Text.Whitespace '! 2.2.: baseprecv(ilev)%av(u_pr_) U factor of ILU preconditioners\n' Comment ' ' Text.Whitespace '! 2.3.: baseprecv(ilev)%av(ap_nd_) Off-diagonal part of A for Jacobi sweeps\n' Comment ' ' Text.Whitespace '! 2.4.: baseprecv(ilev)%av(ac_) Aggregated matrix of level ILEV\n' Comment ' ' Text.Whitespace '! 2.5.: baseprecv(ilev)%av(sm_pr_t_) Smoother prolongator transpose; maps vectors\n' Comment ' ' Text.Whitespace '! (ilev-1) ---> (ilev)\n' Comment ' ' Text.Whitespace '! 2.6.: baseprecv(ilev)%av(sm_pr_) Smoother prolongator; maps vectors\n' Comment ' ' Text.Whitespace '! (ilev) ---> (ilev-1)\n' Comment ' ' Text.Whitespace "! Shouldn't we keep just one of them and handle transpose in the sparse BLAS? maybe\n" Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! 3. baseprecv(ilev)%desc_data comm descriptor for level ILEV\n' Comment ' ' Text.Whitespace '! 4. baseprecv(ilev)%base_a Pointer (really a pointer!) to the base matrix\n' Comment ' ' Text.Whitespace '! of the current level, i.e.: if ILEV=1 then A\n' Comment ' ' Text.Whitespace '! else the aggregated matrix av(ac_); so we have\n' Comment ' ' Text.Whitespace '! a unified treatment of residuals. Need this to\n' Comment ' ' Text.Whitespace '! avoid passing explicitly matrix A to the\n' Comment ' ' Text.Whitespace '! outer prec. routine\n' Comment ' ' Text.Whitespace '! 5. baseprecv(ilev)%mlia The aggregation map from (ilev-1)-->(ilev)\n' Comment ' ' Text.Whitespace '! if no smoother, it is used instead of sm_pr_\n' Comment ' ' Text.Whitespace '! 6. baseprecv(ilev)%nlaggr Number of aggregates on the various procs.\n' Comment ' ' Text.Whitespace '!\n' Comment '\n ' Text.Whitespace 'use ' Keyword 'psb_serial_mod' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_descriptor_type' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_prec_type' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_psblas_mod' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_penv_mod' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_const_mod' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_error_mod' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_penv_mod' Name '\n ' Text.Whitespace 'implicit ' Keyword 'none\n\n ' Keyword 'type' Keyword '(' Punctuation 'psb_desc_type' Name ')' Punctuation ',' Punctuation 'intent' Keyword '(' Punctuation 'in' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'desc_data' Name '\n ' Text.Whitespace 'type' Keyword '(' Punctuation 'psb_zbaseprc_type' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'intent' Keyword '(' Punctuation 'in' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation 'intent' Keyword '(' Punctuation 'in' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'alpha' Name ',' Punctuation 'beta' Name '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation 'intent' Keyword '(' Punctuation 'inout' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'x' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'y' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n ' Text.Whitespace 'character' Keyword.Type ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'trans' Name '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation 'target' Keyword ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'work' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n ' Text.Whitespace 'integer' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'intent' Keyword '(' Punctuation 'out' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'info' Name '\n\n\n ' Text.Whitespace '! Local variables\n' Comment ' ' Text.Whitespace 'integer' Keyword.Type ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'n_row' Name ',' Punctuation 'n_col' Name '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'allocatable' Keyword ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'tx' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation 'ty' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation 't2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation 'w2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation 'b2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation 'tz' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation 'tty' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n ' Text.Whitespace 'character' Keyword.Type ' ' Text.Whitespace '::' Keyword.Declaration 'diagl' Name ',' Punctuation ' ' Text.Whitespace 'diagu' Name '\n ' Text.Whitespace 'integer' Keyword.Type ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'ictxt' Name ',' Punctuation 'np' Name ',' Punctuation 'me' Name ',' Punctuation 'i' Name ',' Punctuation ' ' Text.Whitespace 'isz' Name ',' Punctuation ' ' Text.Whitespace 'nrg' Name ',' Punctuation 'nr2l' Name ',' Punctuation 'err_act' Name ',' Punctuation ' ' Text.Whitespace 'iptype' Name ',' Punctuation ' ' Text.Whitespace 'int_err' Name '(' Punctuation '5' Literal.Number.Integer ')' Punctuation '\n ' Text.Whitespace 'real' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'omega' Name '\n ' Text.Whitespace 'real' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 't1' Name ',' Punctuation ' ' Text.Whitespace 't2' Name ',' Punctuation ' ' Text.Whitespace 't3' Name ',' Punctuation ' ' Text.Whitespace 't4' Name ',' Punctuation ' ' Text.Whitespace 't5' Name ',' Punctuation ' ' Text.Whitespace 't6' Name ',' Punctuation ' ' Text.Whitespace 't7' Name ',' Punctuation ' ' Text.Whitespace 'mpi_wtime' Name '\n ' Text.Whitespace 'logical' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'parameter' Keyword ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'debug' Name '=' Operator '.' Punctuation 'false' Name '.' Punctuation ',' Punctuation ' ' Text.Whitespace 'debugprt' Name '=' Operator '.' Punctuation 'false' Name '.' Punctuation '\n ' Text.Whitespace 'integer' Keyword.Type ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'ismth' Name ',' Punctuation ' ' Text.Whitespace 'nlev' Name ',' Punctuation ' ' Text.Whitespace 'ilev' Name '\n ' Text.Whitespace 'external ' Keyword 'mpi_wtime' Name '\n ' Text.Whitespace 'character' Keyword.Type '(' Punctuation 'len' Name.Builtin '=' Operator '20' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'name' Name ',' Punctuation ' ' Text.Whitespace 'ch_err' Name '\n\n ' Text.Whitespace 'type ' Keyword 'psb_mlprec_wrk_type' Name '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'pointer' Keyword ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'tx' Name '(' Punctuation ':' Punctuation ')' Punctuation '=' Operator '>' Operator 'null' Name.Builtin '(' Punctuation ')' Punctuation ',' Punctuation 'ty' Name '(' Punctuation ':' Punctuation ')' Punctuation '=' Operator '>' Operator 'null' Name.Builtin '(' Punctuation ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation '=' Operator '>' Operator 'null' Name.Builtin '(' Punctuation ')' Punctuation ',' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation '=' Operator '>' Operator 'null' Name.Builtin '(' Punctuation ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'b2l' Name '(' Punctuation ':' Punctuation ')' Punctuation '=' Operator '>' Operator 'null' Name.Builtin '(' Punctuation ')' Punctuation ',' Punctuation 'tty' Name '(' Punctuation ':' Punctuation ')' Punctuation '=' Operator '>' Operator 'null' Name.Builtin '(' Punctuation ')' Punctuation '\n ' Text.Whitespace 'end ' Keyword 'type ' Keyword 'psb_mlprec_wrk_type' Name '\n ' Text.Whitespace 'type' Keyword '(' Punctuation 'psb_mlprec_wrk_type' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'pointer' Keyword ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n\n ' Text.Whitespace 'interface ' Keyword 'psb_baseprc_aply' Name '\n ' Text.Whitespace 'subroutine ' Keyword 'psb_zbaseprc_aply' Name '(' Punctuation 'alpha' Name ',' Punctuation 'prec' Name ',' Punctuation 'x' Name ',' Punctuation 'beta' Name ',' Punctuation 'y' Name ',' Punctuation 'desc_data' Name ',' Punctuation 'trans' Name ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'use ' Keyword 'psb_descriptor_type' Name '\n ' Text.Whitespace 'use ' Keyword 'psb_prec_type' Name '\n ' Text.Whitespace 'type' Keyword '(' Punctuation 'psb_desc_type' Name ')' Punctuation ',' Punctuation 'intent' Keyword '(' Punctuation 'in' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'desc_data' Name '\n ' Text.Whitespace 'type' Keyword '(' Punctuation 'psb_zbaseprc_type' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'intent' Keyword '(' Punctuation 'in' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'prec' Name '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation 'intent' Keyword '(' Punctuation 'inout' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'x' Name '(' Punctuation ':' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'y' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation 'intent' Keyword '(' Punctuation 'in' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'alpha' Name ',' Punctuation 'beta' Name '\n ' Text.Whitespace 'character' Keyword.Type '(' Punctuation 'len' Name.Builtin '=' Operator '1' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'trans' Name '\n ' Text.Whitespace 'complex' Keyword.Type '(' Punctuation 'kind' Name.Builtin '(' Punctuation '1.d0' Literal.Number.Float ')' Punctuation ')' Punctuation ',' Punctuation 'target' Keyword ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'work' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n ' Text.Whitespace 'integer' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'intent' Keyword '(' Punctuation 'out' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'info' Name '\n ' Text.Whitespace 'end ' Keyword 'subroutine ' Keyword 'psb_zbaseprc_aply' Name '\n ' Text.Whitespace 'end ' Keyword 'interface\n\n ' Keyword 'name' Name '=' Operator "'psb_mlprc_aply'" Literal.String.Single '\n ' Text.Whitespace 'info' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer '\n ' Text.Whitespace 'call ' Keyword 'psb_erractionsave' Name '(' Punctuation 'err_act' Name ')' Punctuation '\n\n\n ' Text.Whitespace 'ictxt' Name '=' Operator 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_ctxt_' Name ')' Punctuation '\n ' Text.Whitespace 'call ' Keyword 'psb_info' Name '(' Punctuation 'ictxt' Name ',' Punctuation ' ' Text.Whitespace 'me' Name ',' Punctuation ' ' Text.Whitespace 'np' Name ')' Punctuation '\n\n ' Text.Whitespace 'nlev' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'size' Name '(' Punctuation 'baseprecv' Name ')' Punctuation '\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'nlev' Name ')' Punctuation ',' Punctuation 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'Allocate'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'end ' Keyword 'if\n\n\n ' Keyword 'select ' Keyword 'case' Keyword '(' Punctuation 'baseprecv' Name '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'ml_type_' Name ')' Punctuation ')' Punctuation '\n\n ' Text.Whitespace 'case' Keyword '(' Punctuation 'no_ml_' Name ')' Punctuation '\n ' Text.Whitespace '! Should not really get here.\n' Comment ' ' Text.Whitespace 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'no_ml_ in mlprc_aply?'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n\n ' Text.Whitespace 'case' Keyword '(' Punctuation 'add_ml_prec_' Name ')' Punctuation '\n\n\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Additive is very simple.\n' Comment ' ' Text.Whitespace '! 1. X(1) = Xext\n' Comment ' ' Text.Whitespace '! 2. DO ILEV=2,NLEV\n' Comment ' ' Text.Whitespace '! X(ILEV) = AV(PR_SM_T_)*X(ILEV-1)\n' Comment ' ' Text.Whitespace '! 3. Y(ILEV) = (K(ILEV)**(-1))*X(ILEV)\n' Comment ' ' Text.Whitespace '! 4. DO ILEV=NLEV-1,1,-1\n' Comment ' ' Text.Whitespace '! Y(ILEV) = AV(PR_SM_)*Y(ILEV+1)\n' Comment ' ' Text.Whitespace '! 5. Yext = beta*Yext + Y(1)\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Note: level numbering reversed wrt ref. DD, i.e.\n' Comment ' ' Text.Whitespace '! 1..NLEV <=> (j) <-> 0\n' Comment '\n\n ' Text.Whitespace 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'alpha' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ',' Punctuation 'x' Name ',' Punctuation 'beta' Name ',' Punctuation 'y' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'trans' Name ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'size' Name '(' Punctuation 'x' Name ')' Punctuation ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'size' Name '(' Punctuation 'y' Name ')' Punctuation ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'x' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n\n\n ' Text.Whitespace 'do ' Keyword 'ilev' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'nlev' Name '\n ' Text.Whitespace 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nrg' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'max' Name.Builtin '(' Punctuation 'n_row' Name ',' Punctuation 'n_col' Name ')' Punctuation ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation 'max' Name.Builtin '(' Punctuation 'n_row' Name ',' Punctuation 'n_col' Name ')' Punctuation ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'Allocate'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation '1' Literal.Number.Integer ':' Punctuation 'n_row' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation '1' Literal.Number.Integer ':' Punctuation 'n_row' Name ')' Punctuation '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'n_row' Name '+' Operator '1' Literal.Number.Integer ':' Punctuation 'max' Name.Builtin '(' Punctuation 'n_row' Name ',' Punctuation 'n_col' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n\n ' Text.Whitespace 'ismth' Name '=' Operator 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Smoothed aggregation\n' Comment ' ' Text.Whitespace '!\n' Comment '\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'glb_smth_' Name ')' Punctuation ' ' Text.Whitespace '>' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_halo' Name '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'else\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'n_row' Name '+' Operator '1' Literal.Number.Integer ':' Punctuation 'max' Name.Builtin '(' Punctuation 'n_row' Name ',' Punctuation 'n_col' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_t_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Raw aggregation, may take shortcut\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'i' Name ')' Punctuation '\n ' Text.Whitespace 'end ' Keyword 'do\n\n ' Keyword 'end ' Keyword 'if\n\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '==' Operator 'mat_repl_' Name ')' Punctuation ' ' Text.Whitespace 'Then\n ' Keyword 'call ' Keyword 'psb_sum' Name '(' Punctuation 'ictxt' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation '1' Literal.Number.Integer ':' Punctuation 'nrg' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'else ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'mat_distr_' Name ')' Punctuation ' ' Text.Whitespace 'Then\n ' Keyword 'write' Keyword '(' Punctuation '0' Literal.Number.Integer ',' Punctuation '*' Operator ')' Punctuation ' ' Text.Whitespace "'Unknown value for baseprecv(2)%iprcparm(coarse_mat_) '" Literal.String.Single ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '\n ' Text.Whitespace 'endif\n\n ' Keyword 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name ',' Punctuation ' ' Text.Whitespace "'N'" Literal.String.Single ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'enddo\n\n ' Keyword 'do ' Keyword 'ilev' Name ' ' Text.Whitespace '=' Operator 'nlev' Name ',' Punctuation '2' Literal.Number.Integer ',' Punctuation '-' Operator '1' Literal.Number.Integer '\n\n ' Text.Whitespace 'ismth' Name '=' Operator 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n ' Text.Whitespace 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nrg' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then\n\n ' Keyword 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else\n\n ' Keyword 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'enddo\n\n ' Keyword 'end ' Keyword 'if\n ' Keyword 'end ' Keyword 'do\n\n ' Keyword 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'alpha' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'zone' Name ',' Punctuation 'y' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n\n ' Text.Whitespace 'case' Keyword '(' Punctuation 'mult_ml_prec_' Name ')' Punctuation '\n\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Multiplicative multilevel\n' Comment ' ' Text.Whitespace '! Pre/post smoothing versions.\n' Comment ' ' Text.Whitespace '!\n' Comment '\n ' Text.Whitespace 'select ' Keyword 'case' Keyword '(' Punctuation 'baseprecv' Name '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_pos_' Name ')' Punctuation ')' Punctuation '\n\n ' Text.Whitespace 'case' Keyword '(' Punctuation 'post_smooth_' Name ')' Punctuation '\n\n\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Post smoothing.\n' Comment ' ' Text.Whitespace '! 1. X(1) = Xext\n' Comment ' ' Text.Whitespace '! 2. DO ILEV=2, NLEV :: X(ILEV) = AV(PR_SM_T_,ILEV)*X(ILEV-1)\n' Comment ' ' Text.Whitespace '! 3. Y(NLEV) = (K(NLEV)**(-1))*X(NLEV)\n' Comment ' ' Text.Whitespace '! 4. DO ILEV=NLEV-1,1,-1\n' Comment ' ' Text.Whitespace '! Y(ILEV) = AV(PR_SM_,ILEV+1)*Y(ILEV+1)\n' Comment ' ' Text.Whitespace '! Y(ILEV) = Y(ILEV) + (K(ILEV)**(-1))*(X(ILEV)-A(ILEV)*Y(ILEV))\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! 5. Yext = beta*Yext + Y(1)\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Note: level numbering reversed wrt ref. DD, i.e.\n' Comment ' ' Text.Whitespace '! 1..NLEV <=> (j) <-> 0\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Also: post smoothing is not spelled out in detail in DD.\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '!\n' Comment '\n\n ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n\n ' Text.Whitespace 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'zone' Name ',' Punctuation 'x' Name ',' Punctuation 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'zone' Name ',' Punctuation 'x' Name ',' Punctuation 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'do ' Keyword 'ilev' Name '=' Operator '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'nlev' Name '\n ' Text.Whitespace 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nrg' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'ismth' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'Allocate'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Smoothed aggregation\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'glb_smth_' Name ')' Punctuation ' ' Text.Whitespace '>' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_halo' Name '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'else\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'n_row' Name '+' Operator '1' Literal.Number.Integer ':' Punctuation 'max' Name.Builtin '(' Punctuation 'n_row' Name ',' Punctuation 'n_col' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_t_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Raw aggregation, may take shortcut\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'i' Name ')' Punctuation '\n ' Text.Whitespace 'end ' Keyword 'do\n ' Keyword 'end ' Keyword 'if\n\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '==' Operator 'mat_repl_' Name ')' Punctuation ' ' Text.Whitespace 'Then\n ' Keyword 'call ' Keyword 'psb_sum' Name '(' Punctuation 'ictxt' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation '1' Literal.Number.Integer ':' Punctuation 'nrg' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'else ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'mat_distr_' Name ')' Punctuation ' ' Text.Whitespace 'Then\n ' Keyword 'write' Keyword '(' Punctuation '0' Literal.Number.Integer ',' Punctuation '*' Operator ')' Punctuation ' ' Text.Whitespace "'Unknown value for baseprecv(2)%iprcparm(coarse_mat_) '" Literal.String.Single ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '\n ' Text.Whitespace 'endif\n ' Keyword 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'enddo\n\n\n ' Keyword 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'nlev' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'nlev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'nlev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'nlev' Name ')' Punctuation '%' Punctuation 'desc_data' Name ',' Punctuation "'N'" Literal.String.Single ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n\n ' Text.Whitespace 'do ' Keyword 'ilev' Name '=' Operator 'nlev' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '-' Operator '1' Literal.Number.Integer '\n ' Text.Whitespace 'ismth' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'smth_omg_' Name ')' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'call ' Keyword 'psb_halo' Name '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else\n ' Keyword 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'enddo\n\n ' Keyword 'end ' Keyword 'if\n\n ' Keyword 'call ' Keyword 'psb_spmm' Name '(' Punctuation '-' Operator 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_a' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation ' ' Text.Whitespace 'trans' Name ',' Punctuation ' ' Text.Whitespace 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'enddo\n\n ' Keyword 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'alpha' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'beta' Name ',' Punctuation 'y' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n\n ' Text.Whitespace 'case' Keyword '(' Punctuation 'pre_smooth_' Name ')' Punctuation '\n\n\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Pre smoothing.\n' Comment ' ' Text.Whitespace '! 1. X(1) = Xext\n' Comment ' ' Text.Whitespace '! 2. Y(1) = (K(1)**(-1))*X(1)\n' Comment ' ' Text.Whitespace '! 3. TX(1) = X(1) - A(1)*Y(1)\n' Comment ' ' Text.Whitespace '! 4. DO ILEV=2, NLEV\n' Comment ' ' Text.Whitespace '! X(ILEV) = AV(PR_SM_T_,ILEV)*TX(ILEV-1)\n' Comment ' ' Text.Whitespace '! Y(ILEV) = (K(ILEV)**(-1))*X(ILEV)\n' Comment ' ' Text.Whitespace '! TX(ILEV) = (X(ILEV)-A(ILEV)*Y(ILEV))\n' Comment ' ' Text.Whitespace '! 5. DO ILEV=NLEV-1,1,-1\n' Comment ' ' Text.Whitespace '! Y(ILEV) = Y(ILEV) + AV(PR_SM_,ILEV+1)*Y(ILEV+1)\n' Comment ' ' Text.Whitespace '! 6. Yext = beta*Yext + Y(1)\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Note: level numbering reversed wrt ref. DD, i.e.\n' Comment ' ' Text.Whitespace '! 1..NLEV <=> (j) <-> 0\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '!\n' Comment '\n ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'Allocate'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n\n\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'x' Name '\n\n ' Text.Whitespace 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'trans' Name ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '\n\n ' Text.Whitespace 'call ' Keyword 'psb_spmm' Name '(' Punctuation '-' Operator 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_a' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'do ' Keyword 'ilev' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'nlev' Name '\n ' Text.Whitespace 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nrg' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'ismth' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'Allocate'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '!Smoothed Aggregation\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'glb_smth_' Name ')' Punctuation ' ' Text.Whitespace '>' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n\n ' Keyword 'call ' Keyword 'psb_halo' Name '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'else\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'n_row' Name '+' Operator '1' Literal.Number.Integer ':' Punctuation 'max' Name.Builtin '(' Punctuation 'n_row' Name ',' Punctuation 'n_col' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_t_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation 'zzero' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Raw aggregation, may take shortcuts\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'i' Name ')' Punctuation '\n ' Text.Whitespace 'end ' Keyword 'do\n ' Keyword 'end ' Keyword 'if\n\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '==' Operator 'mat_repl_' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_sum' Name '(' Punctuation 'ictxt' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation '1' Literal.Number.Integer ':' Punctuation 'nrg' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'else ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'mat_distr_' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'write' Keyword '(' Punctuation '0' Literal.Number.Integer ',' Punctuation '*' Operator ')' Punctuation ' ' Text.Whitespace "'Unknown value for baseprecv(2)%iprcparm(coarse_mat_) '" Literal.String.Single ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '\n ' Text.Whitespace 'endif\n\n\n ' Keyword 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name ',' Punctuation ' ' Text.Whitespace "'N'" Literal.String.Single ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'ilev' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'nlev' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '\n ' Text.Whitespace 'call ' Keyword 'psb_spmm' Name '(' Punctuation '-' Operator 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_a' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'endif\n\n ' Keyword 'enddo\n\n ' Keyword 'do ' Keyword 'ilev' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'nlev' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '-' Operator '1' Literal.Number.Integer '\n\n ' Text.Whitespace 'ismth' Name '=' Operator 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then\n\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'smth_omg_' Name ')' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'call ' Keyword 'psb_halo' Name '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else\n\n ' Keyword 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'enddo\n\n ' Keyword 'end ' Keyword 'if\n\n ' Keyword 'enddo\n\n ' Keyword 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'alpha' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'beta' Name ',' Punctuation 'y' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n\n\n ' Text.Whitespace 'case' Keyword '(' Punctuation 'smooth_both_' Name ')' Punctuation '\n\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Symmetrized smoothing.\n' Comment ' ' Text.Whitespace '! 1. X(1) = Xext\n' Comment ' ' Text.Whitespace '! 2. Y(1) = (K(1)**(-1))*X(1)\n' Comment ' ' Text.Whitespace '! 3. TX(1) = X(1) - A(1)*Y(1)\n' Comment ' ' Text.Whitespace '! 4. DO ILEV=2, NLEV\n' Comment ' ' Text.Whitespace '! X(ILEV) = AV(PR_SM_T_,ILEV)*TX(ILEV-1)\n' Comment ' ' Text.Whitespace '! Y(ILEV) = (K(ILEV)**(-1))*X(ILEV)\n' Comment ' ' Text.Whitespace '! TX(ILEV) = (X(ILEV)-A(ILEV)*Y(ILEV))\n' Comment ' ' Text.Whitespace '! 5. DO ILEV=NLEV-1,1,-1\n' Comment ' ' Text.Whitespace '! Y(ILEV) = Y(ILEV) + AV(PR_SM_,ILEV+1)*Y(ILEV+1)\n' Comment ' ' Text.Whitespace '! Y(ILEV) = Y(ILEV) + (K(ILEV)**(-1))*(X(ILEV)-A(ILEV)*Y(ILEV))\n' Comment ' ' Text.Whitespace '! 6. Yext = beta*Yext + Y(1)\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Note: level numbering reversed wrt ref. DD, i.e.\n' Comment ' ' Text.Whitespace '! 1..NLEV <=> (j) <-> 0\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'Allocate'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'zone' Name ',' Punctuation 'x' Name ',' Punctuation 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'zone' Name ',' Punctuation 'x' Name ',' Punctuation 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'trans' Name ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'x2l' Name '\n\n ' Text.Whitespace 'call ' Keyword 'psb_spmm' Name '(' Punctuation '-' Operator 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_a' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name ',' Punctuation 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'do ' Keyword 'ilev' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '2' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'nlev' Name '\n ' Text.Whitespace 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'n_col' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nr2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_col_' Name ')' Punctuation '\n ' Text.Whitespace 'nrg' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'ismth' Name '=' Operator 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n ' Text.Whitespace 'allocate' Keyword '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'nr2l' Name ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'stat' Name.Builtin '=' Operator 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation ':' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n\n\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4010' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'Allocate'" Literal.String.Single ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'end ' Keyword 'if\n\n\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '!Smoothed Aggregation\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'glb_smth_' Name ')' Punctuation ' ' Text.Whitespace '>' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'then\n\n ' Keyword 'call ' Keyword 'psb_halo' Name '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'else\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation 'n_row' Name '+' Operator '1' Literal.Number.Integer ':' Punctuation 'max' Name.Builtin '(' Punctuation 'n_row' Name ',' Punctuation 'n_col' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'end ' Keyword 'if\n\n ' Keyword 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_t_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name ',' Punctuation 'zzero' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else' Keyword '\n ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace '! Raw aggregation, may take shortcuts\n' Comment ' ' Text.Whitespace '!\n' Comment ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'zzero' Name '\n ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '-' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'ty' Name '(' Punctuation 'i' Name ')' Punctuation '\n ' Text.Whitespace 'end ' Keyword 'do\n ' Keyword 'end ' Keyword 'if\n\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '==' Operator 'mat_repl_' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_sum' Name '(' Punctuation 'ictxt' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '(' Punctuation '1' Literal.Number.Integer ':' Punctuation 'nrg' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'else ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'mat_distr_' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'write' Keyword '(' Punctuation '0' Literal.Number.Integer ',' Punctuation '*' Operator ')' Punctuation ' ' Text.Whitespace "'Unknown value for baseprecv(2)%iprcparm(coarse_mat_) '" Literal.String.Single ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'coarse_mat_' Name ')' Punctuation '\n ' Text.Whitespace 'endif\n\n ' Keyword 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zzero' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'desc_data' Name ',' Punctuation ' ' Text.Whitespace "'N'" Literal.String.Single ',' Punctuation 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'ilev' Name ' ' Text.Whitespace '<' Operator ' ' Text.Whitespace 'nlev' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'ty' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'x2l' Name '\n ' Text.Whitespace 'call ' Keyword 'psb_spmm' Name '(' Punctuation '-' Operator 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_a' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'ty' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n ' Text.Whitespace 'endif\n\n ' Keyword 'enddo\n\n\n ' Keyword 'do ' Keyword 'ilev' Name '=' Operator 'nlev' Name '-' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace '-' Operator '1' Literal.Number.Integer '\n\n ' Text.Whitespace 'ismth' Name '=' Operator 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_kind_' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '/' Operator '=' Operator ' ' Text.Whitespace 'no_smth_' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'ismth' Name ' ' Text.Whitespace '==' Operator ' ' Text.Whitespace 'smth_omg_' Name ')' Punctuation ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'call ' Keyword 'psb_halo' Name '(' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'desc_data' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n ' Text.Whitespace 'call ' Keyword 'psb_csmm' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'av' Name '(' Punctuation 'sm_pr_' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'info' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'else\n ' Keyword 'n_row' Name ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name '%' Punctuation 'matrix_data' Name '(' Punctuation 'psb_n_row_' Name ')' Punctuation '\n ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'n_row' Name '\n ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'i' Name ')' Punctuation ' ' Text.Whitespace '+' Operator ' ' Text.Whitespace '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'mlprec_wrk' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name '(' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name '+' Operator '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'mlia' Name '(' Punctuation 'i' Name ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'enddo\n\n ' Keyword 'end ' Keyword 'if\n\n ' Keyword 'call ' Keyword 'psb_spmm' Name '(' Punctuation '-' Operator 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_a' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ',' Punctuation 'work' Name '=' Operator 'work' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'call ' Keyword 'psb_baseprc_aply' Name '(' Punctuation 'zone' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'tx' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'zone' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'baseprecv' Name '(' Punctuation 'ilev' Name ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation ' ' Text.Whitespace 'trans' Name ',' Punctuation ' ' Text.Whitespace 'work' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'enddo\n\n ' Keyword 'call ' Keyword 'psb_geaxpby' Name '(' Punctuation 'alpha' Name ',' Punctuation 'mlprec_wrk' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'y2l' Name ',' Punctuation 'beta' Name ',' Punctuation 'y' Name ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'baseprecv' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation '%' Punctuation 'base_desc' Name ',' Punctuation 'info' Name ')' Punctuation '\n\n ' Text.Whitespace 'if' Keyword '(' Punctuation 'info' Name ' ' Text.Whitespace '/' Operator '=' Operator '0' Literal.Number.Integer ')' Punctuation ' ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n\n ' Text.Whitespace 'case ' Keyword 'default' Name '\n\n ' Text.Whitespace 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4013' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'wrong smooth_pos'" Literal.String.Single ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'i_Err' Name '=' Operator '(' Punctuation '/' Operator 'baseprecv' Name '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'smth_pos_' Name ')' Punctuation ',' Punctuation '0' Literal.Number.Integer ',' Punctuation '0' Literal.Number.Integer ',' Punctuation '0' Literal.Number.Integer ',' Punctuation '0' Literal.Number.Integer '/' Operator ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'end ' Keyword 'select\n\n ' Keyword 'case ' Keyword 'default' Name '\n ' Text.Whitespace 'call ' Keyword 'psb_errpush' Name '(' Punctuation '4013' Literal.Number.Integer ',' Punctuation 'name' Name ',' Punctuation 'a_err' Name '=' Operator "'wrong mltype'" Literal.String.Single ',' Punctuation '&' Punctuation '\n ' Text.Whitespace '&' Punctuation ' ' Text.Whitespace 'i_Err' Name '=' Operator '(' Punctuation '/' Operator 'baseprecv' Name '(' Punctuation '2' Literal.Number.Integer ')' Punctuation '%' Punctuation 'iprcparm' Name '(' Punctuation 'ml_type_' Name ')' Punctuation ',' Punctuation '0' Literal.Number.Integer ',' Punctuation '0' Literal.Number.Integer ',' Punctuation '0' Literal.Number.Integer ',' Punctuation '0' Literal.Number.Integer '/' Operator ')' Punctuation ')' Punctuation '\n ' Text.Whitespace 'go' Keyword 'to' Keyword ' ' Text.Whitespace '9999' Literal.Number.Integer '\n\n ' Text.Whitespace 'end ' Keyword 'select\n\n\n ' Keyword 'call ' Keyword 'mlprec_wrk_free' Name '(' Punctuation 'mlprec_wrk' Name ')' Punctuation '\n ' Text.Whitespace 'deallocate' Keyword '(' Punctuation 'mlprec_wrk' Name ')' Punctuation '\n\n ' Text.Whitespace 'call ' Keyword 'psb_erractionrestore' Name '(' Punctuation 'err_act' Name ')' Punctuation '\n ' Text.Whitespace 'return\n\n' Keyword '9999' Literal.Number.Integer ' ' Text.Whitespace 'continue\n ' Keyword 'call ' Keyword 'psb_errpush' Name '(' Punctuation 'info' Name ',' Punctuation 'name' Name ')' Punctuation '\n ' Text.Whitespace 'call ' Keyword 'psb_erractionrestore' Name '(' Punctuation 'err_act' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'err_act' Name '.' Punctuation 'eq' Name '.' Punctuation 'act_abort' Name ')' Punctuation ' ' Text.Whitespace 'then\n ' Keyword 'call ' Keyword 'psb_error' Name '(' Punctuation ')' Punctuation '\n ' Text.Whitespace 'return\n ' Keyword 'end ' Keyword 'if\n ' Keyword 'return\n\n' Keyword 'contains\n ' Keyword 'subroutine ' Keyword 'mlprec_wrk_free' Name '(' Punctuation 'wrk' Name ')' Punctuation '\n ' Text.Whitespace 'type' Keyword '(' Punctuation 'psb_mlprec_wrk_type' Name ')' Punctuation ' ' Text.Whitespace '::' Keyword.Declaration ' ' Text.Whitespace 'wrk' Name '(' Punctuation ':' Punctuation ')' Punctuation '\n ' Text.Whitespace '! This will not be needed when we have allocatables, as\n' Comment ' ' Text.Whitespace '! it is sufficient to deallocate the container, and\n' Comment ' ' Text.Whitespace '! the compiler is supposed to recursively deallocate the\n' Comment ' ' Text.Whitespace '! various components.\n' Comment ' ' Text.Whitespace 'integer ' Keyword.Type 'i' Name '\n\n ' Text.Whitespace 'do ' Keyword 'i' Name '=' Operator '1' Literal.Number.Integer ',' Punctuation ' ' Text.Whitespace 'size' Name '(' Punctuation 'wrk' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'associated' Name.Builtin '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'tx' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'deallocate' Keyword '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'tx' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'associated' Name.Builtin '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'ty' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'deallocate' Keyword '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'ty' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'associated' Name.Builtin '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'x2l' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'deallocate' Keyword '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'x2l' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'associated' Name.Builtin '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'y2l' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'deallocate' Keyword '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'y2l' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'associated' Name.Builtin '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'b2l' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'deallocate' Keyword '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'b2l' Name ')' Punctuation '\n ' Text.Whitespace 'if' Keyword ' ' Text.Whitespace '(' Punctuation 'associated' Name.Builtin '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'tty' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'deallocate' Keyword '(' Punctuation 'wrk' Name '(' Punctuation 'i' Name ')' Punctuation '%' Punctuation 'tty' Name ')' Punctuation '\n ' Text.Whitespace 'end ' Keyword 'do\n ' Keyword 'end ' Keyword 'subroutine ' Keyword 'mlprec_wrk_free' Name '\n\n' Text.Whitespace 'end ' Keyword 'subroutine ' Keyword 'psb_zmlprc_aply' Name '\n' Text.Whitespace