| 1 | == Compiling and linking user-defined code == |
| 2 | |
| 3 | Users can add their own (modified) user-interface to a PALM-run by carrying out the following steps: |
| 4 | |
| 5 | 1. Copy the appropriate default (empty) user-interface files {{{user_***.f90}}} to a directory of your choice, e.g.: |
| 6 | {{{ |
| 7 | cd ~/palm/current_version |
| 8 | mkdir -p USER_CODE/example |
| 9 | cp trunk/SOURCE/user_***.f90 USER_CODE/example |
| 10 | }}} |
| 11 | Attention: do not change the filenames! |
| 12 | |
| 13 | 2. Set an additional path in the configuration file .mrun.config to allow mrun to find and include these files: |
| 14 | {{{ |
| 15 | %add_source_path $base_directory/USER_CODE/$fname |
| 16 | }}} |
| 17 | The default configuration file ({{{trunk/SCRIPTS/.mrun.config.default}}}) already includes this setting. |
| 18 | 3. Modify the interface routines according to your needs. |
| 19 | 4. Start a PALM run by executing |
| 20 | {{{ |
| 21 | mrun -d example ... |
| 22 | }}} |
| 23 | The files {{{user_***.f90}}} will be automatically compiled within the job and will replace the respective {{{PALM}}}‘s default user-interface routines. |
| 24 | |
| 25 | The above method with including {{{$fname}}} in the additional source path allows to use different user-interfaces for different runs at the same time. Just store the respective interface-files in subdirectories {{{USER_CODE/abcd}}}, {{{USER_CODE/cdef}}}, etc. and start '''mrun''' with option "{{{-d abcd}}}", "{{{-d cdef}}}", etc. |
| 26 | |
| 27 | If the user wants to add additional routines, he/she can a) put them into the default user-interface file {{{user_additional_routines.f90}}} or b) can create new files in the additional source directory. These files must have names different from the default {{{PALM}}} source code files. In case of b), the user must also copy the default makefile into the additional source directory: |
| 28 | {{{ |
| 29 | cp trunk/SOURCE/Makefile USER_CODE/example |
| 30 | }}} |
| 31 | The makefile must be modified appropriately followinf the "make"-rules in order to allow the new files to be compiled.\\\\ |
| 32 | '''The modified user-interface files cannot be pre-compiled by using mbuild! '''\\\\ |
| 33 | While programming user-defined code, errors are frequently made. Possible ways of error tracing are described in the next chapter. |