.. _claw46to50: ########################################## Converting from Clawpack 4.6 to 5.0 ########################################## (If you are converting code from Clawpack 4.3, see :ref:`claw43to46`.) Many input parameters have been renamed and some new options have been added in Clawpack 5.0. See :ref:`setrun_changes`. Python conversion tool ---------------------- A first pass at the conversion of *setrun.py*, *setplot.py* and the *Makefile* can often be achieved by typing:: $ python $CLAW/clawutil/src/python/clawutil/conversion/convert46to50.py in your application directory. You should then inspect the files generated and fix any broken links, etc. The original versions of various files will have `_4.x` appended to the file name for reference. When conversion is complete, these files can be deleted. **Notes:** This does not yet work for all variants of the code. Old AMRClaw codes are often in a subdirectory *amr* of an application directory, and the directory above may contain Fortran files or other files used by the AMR code. Typically you will want to combine these in one directory. The `Makefile` is currently not converted properly -- a generic `Makefile` is added to the directory but must be customized to point to any local Fortran codes, for example. In particular, make sure the Makefile points to the correct Riemann solver(s), either a local file or a library routine from the `$CLAW/riemann/src` directory. The indices in `q` and `aux` arrays were permuted in Clawpack 5.0 relative to early versions, e.g. the `m`th component of `q` in grid cell `(i,j)` is now `q(m,i,j)` rather than `q(i,j,m)`. The conversion script attempts to do this reordering if it sees a pattern of a suitable form, but you should carefully check your own local routines such as `qinit` or `setaux` to make sure this has been done properly. Calling sequences of several routines have also been changed and will need to be adjusted by hand for any Fortran routines in your application directory. See :ref:`user_routines` for calling sequences of the routines that most frequently are provided by users. If you specify your own Riemann solver, see also :ref:`riemann`, and if you have custom boundary conditions, see :ref:`bc`. Note in particular that parameter `maxmx` (and `maxmy`, `maxmz` in more dimensions) is no longer in the calling sequence. In earlier versions of Clawpack this indicated the declared dimension of the `q` and `aux` arrays. It is now assumed the arrays are dimensioned properly since dynamic memory allocation is generally used at run time based on `mx` (resp. `my`, `mz`). You should remove these from the calling sequence and also modify the declaration of input parameters to use `mx` in place of `maxmx`, etc. The classic code no longer requires a driver routine `driver.f`. In earlier versions of Clawpack this was used to declare the `q` and `aux` arrays to be sufficiently large for the size of the problem to be solved. (And specifying a larger value for `mx` led to a run-time error.) In Clawpack-5, a library routine `driver.f90` is provided that calls the Clawpack routines, which now use dynamic memory allocation to allocate the required arrays at run time.