rdb_ocean_bipolar Module

Pure corner-coordinate generator for the bipolar Arctic cap of a TRIPOLAR ocean grid (Murray 1996, J. Comput. Phys. 126, 251-273).

Ordinary lon-lat for lat <= phi_join; a conformal BIPOLAR cap for lat > phi_join. Two grid poles sit ON the join latitude at antipodal longitudes lon_pole and lon_pole+180, so the join circle is a coordinate line and the grid is C0-continuous across it.

Map: stereographic projection from the south pole (Z = tan((90-lat)/2)exp(ilon)), de-rotate by lon_pole, Mobius w = (Zp-A)/(Zp+A) with A = tan((90-phi_join)/2). Conformal coords (mu, xi) = (log|w|, arg w) are orthogonal by construction. The logical parameterisation makes the join a coordinate line and continuous with the lon-lat grid: i sets mu = log|tan((lam-lon_pole)/2)| (lon = lam on the join ring); j (s in [0,1]) rotates xi = sgn(pi/2 + spi/2) from the join (s=0) to the self-conjugate fold line (s=1). Inverse: w = exp(mu+ixi), Zp = A(1+w)/(1-w), Z = Zpexp(ilon_pole).


Uses

  • module~~rdb_ocean_bipolar~~UsesGraph module~rdb_ocean_bipolar rdb_ocean_bipolar module~rdb_constants rdb_constants module~rdb_ocean_bipolar->module~rdb_constants pic_types pic_types module~rdb_constants->pic_types

Used by

  • module~~rdb_ocean_bipolar~~UsedByGraph module~rdb_ocean_bipolar rdb_ocean_bipolar module~rdb_ocean_metrics rdb_ocean_metrics module~rdb_ocean_metrics->module~rdb_ocean_bipolar module~rdb_barotropic_coupling rdb_barotropic_coupling module~rdb_barotropic_coupling->module~rdb_ocean_metrics module~rdb_coriolis_adv rdb_coriolis_adv module~rdb_barotropic_coupling->module~rdb_coriolis_adv module~rdb_ocean_bottom_drag rdb_ocean_bottom_drag module~rdb_barotropic_coupling->module~rdb_ocean_bottom_drag module~rdb_ocean_horizontal_viscosity rdb_ocean_horizontal_viscosity module~rdb_barotropic_coupling->module~rdb_ocean_horizontal_viscosity module~rdb_ocean_pressure_force rdb_ocean_pressure_force module~rdb_barotropic_coupling->module~rdb_ocean_pressure_force module~rdb_barotropic_substep rdb_barotropic_substep module~rdb_barotropic_substep->module~rdb_ocean_metrics module~rdb_continuity rdb_continuity module~rdb_continuity->module~rdb_ocean_metrics module~rdb_ocean_gm rdb_ocean_gm module~rdb_continuity->module~rdb_ocean_gm module~rdb_ocean_mle rdb_ocean_mle module~rdb_continuity->module~rdb_ocean_mle module~rdb_coriolis_adv->module~rdb_ocean_metrics module~rdb_ice_evp rdb_ice_evp module~rdb_ice_evp->module~rdb_ocean_metrics module~rdb_ice_init rdb_ice_init module~rdb_ice_init->module~rdb_ocean_metrics module~rdb_ice_ocean_coupler rdb_ice_ocean_coupler module~rdb_ice_ocean_coupler->module~rdb_ocean_metrics module~rdb_ice_transport rdb_ice_transport module~rdb_ice_transport->module~rdb_ocean_metrics module~rdb_ice_transport->module~rdb_continuity module~rdb_ocean_bottom_drag->module~rdb_ocean_metrics module~rdb_ocean_bt_wide rdb_ocean_bt_wide module~rdb_ocean_bt_wide->module~rdb_ocean_metrics module~rdb_ocean_bt_wide->module~rdb_barotropic_substep module~rdb_ocean_cavity_flux rdb_ocean_cavity_flux module~rdb_ocean_cavity_flux->module~rdb_ocean_metrics module~rdb_ocean_console_stats rdb_ocean_console_stats module~rdb_ocean_console_stats->module~rdb_ocean_metrics module~rdb_ocean_dyn rdb_ocean_dyn module~rdb_ocean_dyn->module~rdb_ocean_metrics module~rdb_ocean_dyn->module~rdb_barotropic_coupling module~rdb_ocean_dyn->module~rdb_barotropic_substep module~rdb_ocean_dyn->module~rdb_continuity module~rdb_ocean_dyn->module~rdb_coriolis_adv module~rdb_ocean_dyn->module~rdb_ocean_bottom_drag module~rdb_ocean_dyn->module~rdb_ocean_bt_wide module~rdb_ocean_dyn->module~rdb_ocean_cavity_flux module~rdb_ocean_dyn->module~rdb_ocean_console_stats module~rdb_ocean_dyn->module~rdb_ocean_gm module~rdb_ocean_hdiff_tracer rdb_ocean_hdiff_tracer module~rdb_ocean_dyn->module~rdb_ocean_hdiff_tracer module~rdb_ocean_dyn->module~rdb_ocean_horizontal_viscosity module~rdb_ocean_isopycnal_slopes rdb_ocean_isopycnal_slopes module~rdb_ocean_dyn->module~rdb_ocean_isopycnal_slopes module~rdb_ocean_ke_probe rdb_ocean_ke_probe module~rdb_ocean_dyn->module~rdb_ocean_ke_probe module~rdb_ocean_lateral_mix rdb_ocean_lateral_mix module~rdb_ocean_dyn->module~rdb_ocean_lateral_mix module~rdb_ocean_meke rdb_ocean_meke module~rdb_ocean_dyn->module~rdb_ocean_meke module~rdb_ocean_dyn->module~rdb_ocean_mle module~rdb_ocean_dyn->module~rdb_ocean_pressure_force module~rdb_ocean_redi rdb_ocean_redi module~rdb_ocean_dyn->module~rdb_ocean_redi module~rdb_ocean_varmix rdb_ocean_varmix module~rdb_ocean_dyn->module~rdb_ocean_varmix module~rdb_ocean_wave_speed rdb_ocean_wave_speed module~rdb_ocean_dyn->module~rdb_ocean_wave_speed module~rdb_ocean_bt_budget_probe rdb_ocean_bt_budget_probe module~rdb_ocean_dyn->module~rdb_ocean_bt_budget_probe module~rdb_ocean_engine rdb_ocean_engine module~rdb_ocean_engine->module~rdb_ocean_metrics module~rdb_ocean_engine->module~rdb_ice_evp module~rdb_ocean_engine->module~rdb_ice_init module~rdb_ocean_engine->module~rdb_ice_ocean_coupler module~rdb_ocean_engine->module~rdb_ice_transport module~rdb_ocean_engine->module~rdb_ocean_cavity_flux module~rdb_ocean_engine->module~rdb_ocean_dyn module~rdb_ocean_setup rdb_ocean_setup module~rdb_ocean_engine->module~rdb_ocean_setup module~rdb_ocean_stability_audit rdb_ocean_stability_audit module~rdb_ocean_engine->module~rdb_ocean_stability_audit module~rdb_ocean_state rdb_ocean_state module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_config rdb_config module~rdb_ocean_engine->module~rdb_config module~rdb_ocean_diag_derived rdb_ocean_diag_derived module~rdb_ocean_engine->module~rdb_ocean_diag_derived module~rdb_ocean_diag_fills rdb_ocean_diag_fills module~rdb_ocean_engine->module~rdb_ocean_diag_fills module~rdb_decomp rdb_decomp module~rdb_ocean_engine->module~rdb_decomp module~rdb_ocean_data_forcing rdb_ocean_data_forcing module~rdb_ocean_engine->module~rdb_ocean_data_forcing module~rdb_ocean_data_input rdb_ocean_data_input module~rdb_ocean_engine->module~rdb_ocean_data_input module~rdb_state rdb_state module~rdb_ocean_engine->module~rdb_state module~rdb_ocean_gm->module~rdb_ocean_metrics module~rdb_ocean_gm->module~rdb_ocean_isopycnal_slopes module~rdb_ocean_hdiff_tracer->module~rdb_ocean_metrics module~rdb_ocean_horizontal_viscosity->module~rdb_ocean_metrics module~rdb_ocean_horizontal_viscosity->module~rdb_ocean_lateral_mix module~rdb_ocean_isopycnal_slopes->module~rdb_ocean_metrics module~rdb_ocean_ke_probe->module~rdb_ocean_metrics module~rdb_ocean_ke_probe->module~rdb_coriolis_adv module~rdb_ocean_lateral_mix->module~rdb_ocean_metrics module~rdb_ocean_meke->module~rdb_ocean_metrics module~rdb_ocean_meke->module~rdb_ocean_gm module~rdb_ocean_meke->module~rdb_ocean_varmix module~rdb_ocean_meke->module~rdb_ocean_wave_speed module~rdb_ocean_mle->module~rdb_ocean_metrics module~rdb_ocean_pressure_force->module~rdb_ocean_metrics module~rdb_ocean_redi->module~rdb_ocean_metrics module~rdb_ocean_setup->module~rdb_ocean_metrics module~rdb_ocean_setup->module~rdb_coriolis_adv module~rdb_ocean_setup->module~rdb_ocean_bottom_drag module~rdb_ocean_setup->module~rdb_ocean_dyn module~rdb_ocean_setup->module~rdb_ocean_horizontal_viscosity module~rdb_ocean_setup->module~rdb_ocean_lateral_mix module~rdb_ocean_setup->module~rdb_ocean_pressure_force module~rdb_ocean_setup->module~rdb_ocean_state module~rdb_ocean_setup->module~rdb_config module~rdb_ocean_setup->module~rdb_decomp module~rdb_ocean_stability_audit->module~rdb_ocean_metrics module~rdb_ocean_stability_audit->module~rdb_config module~rdb_ocean_state->module~rdb_ocean_metrics module~rdb_ocean_state->module~rdb_continuity module~rdb_ocean_state->module~rdb_coriolis_adv module~rdb_ocean_state->module~rdb_ocean_bottom_drag module~rdb_ocean_state->module~rdb_ocean_cavity_flux module~rdb_ocean_state->module~rdb_ocean_dyn module~rdb_ocean_state->module~rdb_ocean_gm module~rdb_ocean_state->module~rdb_ocean_hdiff_tracer module~rdb_ocean_state->module~rdb_ocean_horizontal_viscosity module~rdb_ocean_state->module~rdb_ocean_isopycnal_slopes module~rdb_ocean_state->module~rdb_ocean_lateral_mix module~rdb_ocean_state->module~rdb_ocean_meke module~rdb_ocean_state->module~rdb_ocean_mle module~rdb_ocean_state->module~rdb_ocean_pressure_force module~rdb_ocean_state->module~rdb_ocean_redi module~rdb_ocean_state->module~rdb_ocean_varmix module~rdb_ocean_state->module~rdb_ocean_wave_speed module~rdb_ocean_state->module~rdb_config module~rdb_ocean_state->module~rdb_decomp module~rdb_ocean_state->module~rdb_ocean_data_forcing module~rdb_ocean_state->module~rdb_ocean_data_input module~rdb_ocean_z_init rdb_ocean_z_init module~rdb_ocean_state->module~rdb_ocean_z_init module~rdb_ocean_varmix->module~rdb_ocean_metrics module~rdb_ocean_varmix->module~rdb_ocean_isopycnal_slopes module~rdb_ocean_varmix->module~rdb_ocean_wave_speed module~rdb_ocean_wave_speed->module~rdb_ocean_metrics module~rdb_config->module~rdb_ice_init module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_console_stats module~rdb_driver->module~rdb_ocean_dyn module~rdb_driver->module~rdb_ocean_engine module~rdb_driver->module~rdb_ocean_state module~rdb_driver->module~rdb_config module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_engine module~rdb_handle->module~rdb_ocean_state module~rdb_handle->module~rdb_config module~rdb_ocean_api rdb_ocean_api module~rdb_ocean_api->module~rdb_ocean_dyn module~rdb_ocean_api->module~rdb_ocean_engine module~rdb_ocean_api->module~rdb_config module~rdb_ocean_api->module~rdb_handle module~rdb_ocean_api->module~rdb_ocean_diag_derived module~rdb_ocean_api->module~rdb_ocean_diag_fills module~rdb_ocean_halo_width rdb_ocean_halo_width module~rdb_ocean_api->module~rdb_ocean_halo_width module~rdb_ocean_bt_budget_probe->module~rdb_coriolis_adv module~rdb_ocean_bt_budget_probe->module~rdb_ocean_bottom_drag module~rdb_ocean_bt_budget_probe->module~rdb_ocean_horizontal_viscosity module~rdb_ocean_bt_budget_probe->module~rdb_ocean_pressure_force module~rdb_ocean_diag_derived->module~rdb_ocean_state module~rdb_ocean_diag_derived->module~rdb_ocean_diag_fills module~rdb_ocean_diag_fills->module~rdb_ocean_state module~rdb_ocean_halo_width->module~rdb_coriolis_adv proc~validate_config validate_config proc~validate_config->module~rdb_coriolis_adv proc~validate_config->module~rdb_ocean_bottom_drag proc~validate_config->module~rdb_ocean_horizontal_viscosity proc~validate_config->module~rdb_ocean_lateral_mix proc~validate_config->module~rdb_ocean_pressure_force module~rdb_config_schema rdb_config_schema module~rdb_config_schema->module~rdb_config module~rdb_decomp->module~rdb_config module~rdb_ocean_data_forcing->module~rdb_config module~rdb_ocean_data_forcing->module~rdb_ocean_data_input module~rdb_ocean_data_input->module~rdb_config module~rdb_ocean_z_init->module~rdb_config module~rdb_state->module~rdb_config module~rdb_halo rdb_halo module~rdb_halo->module~rdb_decomp module~rdb_ocean_fold_exchange rdb_ocean_fold_exchange module~rdb_ocean_fold_exchange->module~rdb_decomp module~rdb_ocean_halo rdb_ocean_halo module~rdb_ocean_halo->module~rdb_decomp module~rdb_ocean_restart_io rdb_ocean_restart_io module~rdb_ocean_restart_io->module~rdb_decomp

Functions

public pure function bipolar_pole_lat(phi_join) result(lat)

Latitude (deg) of the two cap poles — they sit ON the join latitude, so this is simply phi_join.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: phi_join

Return Value real(kind=wp)


Subroutines

public pure subroutine bipolar_corner_latlon(lam_deg, s, phi_join, lon_pole, lat, lon)

Map a logical cap location to geographic (lat, lon) in degrees. lam_deg : pseudo-longitude (geographic lon at the join ring), any real (wrapped internally); the i-direction. s : cap-row fraction, 0 = join ring (lat = phi_join), 1 = fold line; the j-direction. phi_join: join latitude (deg); cap covers lat > phi_join. lon_pole: longitude (deg) of the first cap pole; partner at lon_pole + 180.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: lam_deg
real(kind=wp), intent(in) :: s
real(kind=wp), intent(in) :: phi_join
real(kind=wp), intent(in) :: lon_pole
real(kind=wp), intent(out) :: lat
real(kind=wp), intent(out) :: lon