Update Shoebox with GFDL fork#675
Conversation
new file: config_src/solo_driver/channel_surface_forcing.F90 new file: config_src/solo_driver/shoebox_surface_forcing.F90 modified: src/initialization/MOM_fixed_initialization.F90 modified: src/initialization/MOM_state_initialization.F90 new file: src/user/bowlhk_initialization.F90 new file: src/user/box_initialization.F90 new file: src/user/channel3_initialization.F90 new file: src/user/channel_initialization.F90 new file: src/user/channels_initialization.F90 new file: src/user/channelssp_initialization.F90 new file: src/user/shoebox_initialization.F90
modified: src/user/channel_initialization.F90 modified: src/user/channelssp_initialization.F90
modified: src/user/channelssp_initialization.F90
new file: config_src/solo_driver/channel2_surface_forcing.F90 modified: config_src/solo_driver/channel_surface_forcing.F90 modified: config_src/solo_driver/shoebox_surface_forcing.F90 modified: src/initialization/MOM_fixed_initialization.F90 modified: src/initialization/MOM_state_initialization.F90 new file: src/user/channel2_initialization.F90 modified: src/user/channel3_initialization.F90 modified: src/user/channel_initialization.F90 modified: src/user/channels_initialization.F90 modified: src/user/channelssp_initialization.F90 modified: src/user/shoebox_initialization.F90
modified: src/initialization/MOM_fixed_initialization.F90 modified: src/initialization/MOM_state_initialization.F90 modified: src/user/channel2_initialization.F90 new file: src/user/channel4_initialization.F90
modified: src/initialization/MOM_fixed_initialization.F90 new file: src/user/channel5_initialization.F90 new file: src/user/shoebox2_initialization.F90 new file: src/user/shoebox3_initialization.F90
renamed: src/user/shoebox3_initialization.F90 -> src/user/shoebox0_initialization.F90 modified: src/user/shoebox2_initialization.F90
Update with MOM6 folk
modified: src/user/shoebox2_initialization.F90
modified: config_src/solo_driver/channel2_surface_forcing.F90 new file: config_src/solo_driver/channel3_surface_forcing.F90 modified: src/user/channel5_initialization.F90
new file: config_src/solo_driver/shoebox3_surface_forcing.F90 modified: src/user/channel5_initialization.F90
modified: config_src/solo_driver/shoebox3_surface_forcing.F90 modified: src/user/channel4_initialization.F90
new file: config_src/solo_driver/shoebox4_surface_forcing.F90
|
Thank you, @hlkong, for this pull request. I see where you are going with this, and we appreciate your willingness to contribute to the MOM6 development. Looking over this contribution, there are couple of things that we think need to be addressed before this development is brought onto the dev/gfdl branch of MOM6. Specifically, (1) we think that there are ways to achieve the initialization that you would like to see without adding quite so many new modules, and (2) there are a number of places where closer attention should be paid to the MOM6 coding conventions (https://github.com/NOAA-GFDL/MOM6/wiki/Code-style-guide) with respect to indents, trailing white space, etc. Looking over this contribution, I see that there are 12 new named topography configurations, 2 new thickness configurations, and 4 new sponge configurations. Many of the topographies differ in the number and locations of the topographic spikes and bells. I also note that the "channel" and "shoebox" configurations seem to be identical apart from the use of reentrant boundary conditions. I suspect that with a little creativity, all 12 topographies could be generated from a single routine by providing a run-time parsed list of the locations, sizes and amplitudes of spikes and bells to add. Similarly, the thickness configuration routines are identical to what is already available in Neverland_initialize_thickness. We could justifiably be accused of hypocrisy here because we already have a lot of (too many?) named options for topographies, sponges and thickness configurations, but we do want to try to keep the options to a minimum in the interest of preserving as simple a user interface as possible. Please try to consolidate your various options into a single subroutine, with internal run-time options that can be used to generate your desired configurations, and then we will be happy to reconsider this PR. This sort of development could benefit from a virtual group discussion of MOM6 development. Over the next few days, we intend to set up a regular conference call, and we would like you to join. A discussion of how to parsimoniously implement the family of test cases you are using would seem like an valuable and instructive exercise. Again, thank you for this PR. We look forward to a revised, streamlined version, and would be happy to work with you to help make that happen. |
|
Thank you for your comments, @Hallberg-NOAA ! It sounds to be a great idea to have all my topography and sponge layer setups implemented parsimoniously. I would love to join the virtual meeting if it fits into my schedule - could you please let me know the time and link to join once it is scheduled? Meanwhile, I'll revise the my code to make it compatible with MOM6 conventions. Thank you! |
new file: config_src/solo_driver/channel4_surface_forcing.F90 new file: config_src/solo_driver/channel5_surface_forcing.F90 new file: config_src/solo_driver/channel6_surface_forcing.F90 new file: config_src/solo_driver/shoebox8_surface_forcing.F90 new file: config_src/solo_driver/shoebox9_surface_forcing.F90 modified: src/initialization/MOM_fixed_initialization.F90 modified: src/user/channel4_initialization.F90 deleted: src/user/channel5_initialization.F90
modified: config_src/solo_driver/shoebox4_surface_forcing.F90 new file: config_src/solo_driver/shoebox5_surface_forcing.F90 modified: src/initialization/MOM_state_initialization.F90
new file: config_src/solo_driver/channel7_surface_forcing.F90 modified: src/initialization/MOM_fixed_initialization.F90 modified: src/initialization/MOM_state_initialization.F90 new file: src/user/channel5_initialization.F90 new file: src/user/channel7_initialization.F90
new file: src/user/channel47_initialization.F90 new file: src/user/channel4t_initialization.F90 new file: src/user/channel74_initialization.F90
new file: src/user/channel42d_initialization.F90 modified: src/user/channel4_initialization.F90 new file: src/user/channel4tt_initialization.F90 new file: src/user/channel6_initialization.F90 new file: src/user/user_change_diffusivity_Hailu.F90
modified: src/parameterizations/vertical/MOM_vert_friction.F90 modified: src/user/channel4_initialization.F90 modified: src/user/channel6_initialization.F90
modified: src/parameterizations/lateral/MOM_MEKE.F90 new file: src/parameterizations/lateral/MOM_MEKE_old.F90
|
This pull request had issues that were discussed but not resolved with the updates to the pull request. The shoebox test case is a good idea, but it needs to be implemented as a single reconfigurable module covering the whole familly of related test cases for sustainability. @hlkong, we can talk again about how to implement this if you would like. For now I am closing this pull request because it is substantially out-of-date with the latest MOM6 code. |
In the MOM_streaming_filter module, a system of two coupled ODEs is configured as a streaming band-pass filter that takes the broadband model output as the input and returns the filtered signal at a user specified tidal frequency as the output. It is capable of detecting the instantaneous tidal signals while the model is running, and can be used to impose frequency-dependent wave drag or to de-tide model output. An example of filtering the M2 and K1 barotropic velocities is provided in the MOM_barotropic module. Added runtime flags for the M2 and K1 filters. Simplified the code by removing the control structure of the linked list, and now each filter has its own control structure. Using hor_index_type argument to avoid calculation in halo regions.
In the MOM_streaming_filter module, a system of two coupled ODEs is configured as a streaming band-pass filter that takes the broadband model output as the input and returns the filtered signal at a user specified tidal frequency as the output. It is capable of detecting the instantaneous tidal signals while the model is running, and can be used to impose frequency-dependent wave drag or to de-tide model output. An example of filtering the M2 and K1 barotropic velocities is provided in the MOM_barotropic module. Added runtime flags for the M2 and K1 filters. Simplified the code by removing the control structure of the linked list, and now each filter has its own control structure. Using hor_index_type argument to avoid calculation in halo regions.
In the MOM_streaming_filter module, a system of two coupled ODEs is configured as a streaming band-pass filter that takes the broadband model output as the input and returns the filtered signal at a user specified tidal frequency as the output. It is capable of detecting the instantaneous tidal signals while the model is running, and can be used to impose frequency-dependent wave drag or to de-tide model output. An example of filtering the M2 and K1 barotropic velocities is provided in the MOM_barotropic module. Added runtime flags for the M2 and K1 filters. Simplified the code by removing the control structure of the linked list, and now each filter has its own control structure. Using hor_index_type argument to avoid calculation in halo regions.
No description provided.