1. The current state
1.1. Class structure
- Three classes displaying similarly looking (but not the same!) extra namelist panels:
- Grid2DExtraInputPanel
- Used by Grid2D application
- A member of Grid2DNamelistPanel that extends CenterPanel
- ENamelistPanel
- Used by Edge2D application
- A member of EGoNamelistPanel that extends CenterPanelCheck (that extends CenterPanel)
- ExtraNamelistPanel
- Used by Jetto, Sanco, Mishka, Helena, Elite
- A member of OutputExtraNamelistPanel that extends CenterPanelCheck (that extends CenterPanel)
- Grid2DExtraInputPanel
2. Challenges
- Complex legacy code
- The current implementation violates Model-View-Controller principia:
- No clear separation of data and GUI that makes both 'tightly coupled'
- Some data are kept in table 'model'
- GUI influences the way data are storing
- Arrays specified as a set of entries: (variable name, index, value)
- Quite a lot of time spent on 'reverse engineering' essential to understand dependencies and internal mechanisms working 'under the hood'
- How / from data are being read?
- How / where data are being saved?
- Necessity to kept backward compatibility in terms of produced output files
3. Development
3.1. GUI
NewExtraNamelistPanel
class, replacingExtraNamelistPanel -
designed and developed- package jet.misc.extranamelist.gui;
Integration of NewExtraNamelistPanel
class:- Integrated:
- Jetto
- Sanco
- Mishka
- Helena
- Elite
- Not integrated
- Grid2D
- Edge2D
- Integrated:
- Additional dialog to present variable data and metadata and to edit value
3.2. Data handling
- A Variable class:
- name
- overview
- obsolete
- Specification class
- namelist
- model
- tab
- Data class
- meta_type
- type
- value
- Info class
- link
- description
4. Open points
4.1. Config files
4.1.1. YAML file format
YAML file format to be finally accepted.
# any comments can be put here (manually!!!) .... e.g.: ############################################### ### ITRFASTIONS. ### ############################################### - name: ITRFASTIONS overview: Short description of variable obsolete: false specification: name_list: NLIST3 model: "" tab: "" data: !<array> meta_type: array type: integer default_value: "" info: link: http://documentation.server/link/to/documentation/page description: ' Weiland model switches'
4.1.2. Conversions of config files
- Working ('dirty') mechanism for conversion of configs prepared (can be extracted)
- Every time 'old' config file is read, the new one is saved
- Files saved to
"jams/v210321_gateway_v5/java/lib/jet/misc/extranamelist/resources/" + config_name + ".yaml"
- What should be an 'final' destination for them?
4.2. Settings
4.2.1. File format
OutputExtraNamelist.selItems.cell[0][0] : EUP OutputExtraNamelist.selItems.cell[0][1] : 1 OutputExtraNamelist.selItems.cell[0][2] : 2.5 ... OutputExtraNamelist.selItems.columns : 3 OutputExtraNamelist.selItems.rows : 17 OutputExtraNamelist.select : true
- always 3 columns? Any use cases for more/less columns?
4.2.2. A role of user settings vs group (owner) settings
Read SETTINGS from: /pfs/work/g2fkoech/cmg/jams/v210321_gateway_v5/java/data/group_data/settings/startup.set Read SETTINGS from: /pfs/work/g2bpalak/cmg/jams/data/settings/startup.set Read SETTINGS from: /pfs/work/g2fkoech/cmg/jams/v210321_gateway_v5/java/data/group_data/settings/startup.jset Read SETTINGS from: /pfs/work/g2bpalak/cmg/jams/data/settings/startup.jset
- Group settings being read
- User settings being added
- overwrites group settings (especially
OutputExtraNamelist.selItems.rows
) - not shown anywhere (??)
- overwrites group settings (especially
- Incorrect management of file - artefacts remain!!!
4.3. Namelist
- Can
updateNamelist
method be unified somehow? Lots of IFs....
5. Tests
5.1. Installation
PREPARE ENVIRONMENT
module use /pfs/work/g2fjc/jintrac/default/modules module load jintrac mkdir -p $HOME/cmg/jams cd $HOME/cmg/jams
CLONING
git clone git@git.ccfe.ac.uk:jintrac/jams.git jams-test
BUILDING
cd jams-test module unload jams module use $HOME/cmg/jams/jams-test/modules/ module load jams make clone MODULE=all make
SWITCH TO TEST VERSION
cd java/lib/jet/misc/ git checkout JETTONamelistGUI make
5.2. Launching
module use /pfs/work/g2fkoech/jintrac/v210321_gateway_v5/modules module load jintrac/gateway.gfortran cd ~/work/cmg/jams jams-test/java/sh/jams