\lstdefinelanguage{wasora}{
morekeywords={
      ABORT,
      ADIABATIC,
      ALGORITHM,
      ALIAS,
      AS,
      ASCII_FILE,
      ASCII_FILE_PATH,
      BAKE,
      BC,
      BINARY_FILE,
      BINARY_FILE_PATH,
      BOUNDARY,
      BREAK,
      CALL,
      CELLS,
      CLOSE,
      COLS,
      COLUMNS,
      CONST,
      DATA,
      DEFAULT_ARGUMENT_VALUE,
      DEGREES,
      DELTAEPSABS,
      DELTAEPSREL,
      DELTA_X,
      DELTA_Y,
      DELTA_Z,
      DIFFERENTIAL,
      DIMENSIONS,
      DO_NOT_EVALUATE_AT_PARSE_TIME,
      DO_NOT_OPEN,
      DO_NOT_RERUN,
      DO_NOT_SET_BLOCK_SIZE,
      DUMP_FILE_PATH,
      ELASTIC,
      ELASTIC_AXISYMMETRIC,
      ELEMS_PER_LINE,
      ELSE,
      ENDIF,
      END_POINT,
      EPSABS,
      EPSREL,
      EPS_TYPE,
      EXPR,
      EXPRESSION,
      FILE,
      FILE_PATH,
      FINO_DEBUG,
      FINO_LINEARIZE,
      FINO_PROBLEM,
      FINO_SOLVER,
      FINO_STEP,
      FIT,
      FLUX_POST,
      FORMAT,
      FORMULATION,
      FROM,
      FUNCTION,
      FUNCTION_DATA,
      GAUSS_POINTS,
      GRADIENT,
      GRADIENT_EVALUATION,
      GRADIENT_JACOBIAN_THRESHOLD,
      GROUPS,
      GUESS,
      HEADER,
      HEAT,
      HEAT_AXISYMMETRIC,
      HISTORY,
      HORIZONTAL,
      ID,
      IF,
      IGNORE_NULL,
      I_MAX,
      IMPLICIT,
      IMPLICIT_BC,
      INCLUDE,
      INCLUDE_INPUT,
      INCREMENTAL,
      INDEX,
      INITIAL_CONDITIONS_MODE,
      INPUT,
      INPUT_FILE,
      INPUT_FILE_PATH,
      INTERPOLATION,
      INTERPOLATION_THRESHOLD,
      IS,
      JUST_BUILD,
      JUST_SOLVE,
      KSP_TYPE,
      LENGTH_X,
      LENGTH_Y,
      LENGTH_Z,
      LOAD_PLUGIN,
      LOAD_ROUTINE,
      M,
      M4,
      MACRO,
      MATERIAL,
      MATRICES_ASCII,
      MATRICES_ASCII_STRUCTURE,
      MATRICES_PETSC_ASCII,
      MATRICES_PETSC_BINARY,
      MATRICES_PETSC_COMPRESSED_BINARY,
      MATRICES_PETSC_DENSE,
      MATRICES_PETSC_OCTAVE,
      MATRICES_SIZE,
      MATRICES_SNG,
      MATRICES_SNG_STRUCT,
      MATRICES_STRIDE,
      MATRICES_X,
      MATRICES_X_SIZE,
      MATRIX,
      MAX,
      MAX_DAUGHTERS,
      MAX_ITER,
      MB,
      MEMORY_USAGE_SHMEM,
      MESH,
      MESH_FILL_VECTOR,
      MESH_FIND_MAX,
      MESH_INTEGRATE,
      MESH_MAIN,
      MESH_POST,
      METHOD,
      MILONGA_DEBUG,
      MILONGA_PROBLEM,
      MILONGA_SOLVER,
      MILONGA_STEP,
      MIN,
      MINIMIZE,
      MODAL,
      MODE,
      NAME,
      NCELLS_X,
      NCELLS_Y,
      NCELLS_Z,
      N_EIGEN,
      NODES,
      NOMESH,
      NO_MESH,
      NONEWLINE,
      NO_PHYSICAL_NAMES,
      NORERUN,
      NOSEP,
      NSTEPS,
      OFFSET,
      OFFSET_X,
      OFFSET_Y,
      OFFSET_Z,
      OPEN,
      OPTIMIZE,
      ORDERING,
      OUTER_STEPS,
      OUTPUT,
      OUTPUT_FILE,
      OUTPUT_FILE_PATH,
      OVER,
      PARAMETRIC,
      PC_TYPE,
      PEAK,
      PHASE_SPACE,
      PHYSICAL_ENTITY,
      PHYSICAL_PROPERTY,
      PLANE_STRAIN,
      PLANE_STRESS,
      PRINT,
      PRINT_FUNCTION,
      PRINT_VECTOR,
      PROGRESS_ASCII,
      PROGRESS_BUILD_SHMEM,
      PROGRESS_SOLVE_SHMEM,
      RANGE_MAX,
      RANGE_MIN,
      READ,
      READ_DATA,
      READ_FUNCTION,
      RERUN,
      RESIDUALS,
      RESULT,
      ROUTINE,
      ROWS,
      SCALE_FACTOR,
      SCHEME,
      SEM,
      SEMAPHORE,
      SEP,
      SEPARATOR,
      SET_BLOCK_SIZE,
      SET_NEAR_NULLSPACE,
      SET_NEAR_NULL_SPACE,
      SHAKE,
      SHELL,
      SHEPARD_EXPONENT,
      SHEPARD_RADIUS,
      SHM,
      SHMEM_MEMORY,
      SHMEM_PROGRESS_BUILD,
      SHMEM_PROGRESS_SOLVE,
      SHM_OBJECT,
      SIMAN_EFUNC,
      SIZE,
      SIZES,
      SOLUTION,
      SOLUTION_NAMES,
      SOLUTIONS,
      SOLVE,
      SPECTRUM,
      ST_ANTI_SHIFT,
      START_POINT,
      STEP,
      STRING,
      STRUCTURED,
      ST_SHIFT,
      ST_TYPE,
      SUBSPACE_DIM,
      SYMMETRY_AXIS,
      TEXT,
      TIME_PATH,
      TO,
      TOTAL,
      TYPE,
      UNKNOWN,
      UNKNOWNS,
      VAR,
      VECTOR,
      VECTOR_DATA,
      VECTORS,
      VERBOSE,
      VERTICAL,
      VIA,
      VOLHOM,
      WRITE,
      X_INCREASES_FIRST,
      X_MAX,
      XS,
      Y_MAX,
      Z_MAX,
      ALLOWED,
      AS_PROVIDED,
      FROM_DERIVATIVES,
      FROM_VARIABLES,
      GRADTOL,
      MAX_ITER,
      NONE,
      POST,
      SKIP_HEADER_STEP,
      SKIP_STATIC_STEP,
      SKIP_STEP,
      SKIP_TIME,
      TOL,
      WAIT,
},
morekeywords={[2]
},
morekeywords={[3]
      cells,
      cells_0,
      done,
      done_0,
      done_outer,
      done_outer_0,
      done_static,
      done_static_0,
      done_transient,
      done_transient_0,
      dont_quit,
      dont_quit_0,
      dont_report,
      dont_report_0,
      dt,
      dt_0,
      elements,
      elements_0,
      end_time,
      end_time_0,
      eps,
      eps_0,
      i,
      i_0,
      infinite,
      infinite_0,
      in_outer_initial,
      in_outer_initial_0,
      in_static,
      in_static_0,
      in_static_first,
      in_static_first_0,
      in_static_last,
      in_static_last_0,
      in_transient,
      in_transient_0,
      in_transient_first,
      in_transient_first_0,
      in_transient_last,
      in_transient_last_0,
      j,
      j_0,
      max_dt,
      max_dt_0,
      min_dt,
      min_dt_0,
      ncores,
      ncores_0,
      nodes,
      nodes_0,
      on_gsl_error,
      on_gsl_error_0,
      on_ida_error,
      on_ida_error_0,
      on_nan,
      on_nan_0,
      pi,
      pi_0,
      pid,
      pid_0,
      quit,
      quit_0,
      realtime_scale,
      realtime_scale_0,
      rel_error,
      rel_error_0,
      report,
      report_0,
      static_steps,
      static_steps_0,
      step_inner,
      step_inner_0,
      step_outer,
      step_outer_0,
      step_static,
      step_static_0,
      step_transient,
      step_transient_0,
      t,
      t_0,
      x,
      x_0,
      y,
      y_0,
      z,
      z_0,
      zero,
      zero_0,
},
morekeywords={[4]
      abs,
      acos,
      asin,
      atan,
      atan2,
      builtindecl.h,
      ceil,
      clock,
      cos,
      cosh,
      d_dt,
      deadband,
      derivative,
      equal,
      exp,
      expint1,
      expint2,
      expint3,
      expintn,
      floor,
      func_min,
      gauss_kronrod,
      gauss_legendre,
      heaviside,
      if,
      integral,
      integral_dt,
      integral_euler_dt,
      is_even,
      is_in_interval,
      is_odd,
      j0,
      lag,
      lag_bilinear,
      lag_euler,
      last,
      limit,
      limit_dt,
      log,
      mark_max,
      mark_min,
      max,
      min,
      mod,
      not,
      prod,
      random,
      random_gauss,
      root,
      round,
      sawtooth_wave,
      sgn,
      sin,
      sinh,
      sqrt,
      square_wave,
      sum,
      tan,
      tanh,
      threshold_max,
      threshold_min,
      triangular_wave,
      vecdot,
      vecmax,
      vecmaxindex,
      vecmin,
      vecminindex,
      vecnorm,
      vecsize,
      vecsum,
},
sensitive=true,
morecomment=[l]{\#},
morestring=[b]\",
}
