diff --git a/applications/lfric_atm/example/configuration.nml b/applications/lfric_atm/example/configuration.nml index 1e117100ae..f4e582a3e9 100644 --- a/applications/lfric_atm/example/configuration.nml +++ b/applications/lfric_atm/example/configuration.nml @@ -1,5 +1,5 @@ &base_mesh -f_lat_deg=14.94, +f_lat_deg=37.65, file_prefix='mesh_BiP2x2-50000x50000', fplane=.false., geometry='planar', @@ -20,7 +20,7 @@ dec_thres_cu=0.05, dyn_diag='zi_l_cu', dzrad_disc_opt='level_ntm1', entr_smooth_dec='on', -flux_bc_opt='specified_scalars_tstar', +flux_bc_opt='interactive', free_atm_mix='to_sharp', fric_heating=.true., improved_tke_diag=.false., @@ -54,14 +54,14 @@ cloud='um', convection='um', dynamics='none', electric='none', -external_forcing=.true., +external_forcing=.false., iau=.false., iau_sst=.false., iau_surf=.false., methane_oxidation=.false., microphysics='um', -orographic_drag='none', -radiation='none', +orographic_drag='um', +radiation='socrates', spectral_gwd='none', stochastic_physics='none', surface='jules', @@ -77,7 +77,7 @@ dbsdtbs_turb_0=1.5E-4, ez_max=400.0, falliceshear_method='real', filter_optical_depth=.true., -fsd_conv_const=3.5, +fsd_conv_const=2.81, fsd_min_conv_frac=0.0, fsd_nonconv_ice_const=0.75, fsd_nonconv_liq_const=1.0, @@ -93,18 +93,18 @@ pc2_homog_g_method='cf', pc2_init_logic='original', pc2_init_method='bimodal', pc2_turb_horiz=.false., -rh_crit=0.920,0.918,0.916,0.912,0.908,0.903,79*0.9, +rh_crit=0.920,0.918,0.916,0.912,0.908,0.903,64*0.9, rh_crit_opt='tke', scheme='pc2', subgrid_qv=.true., turb_var_fac_bm=1.0, -two_d_fsd_factor=1.6, +two_d_fsd_factor=1.62, use_fsd_eff_res=.true., / &convection c_mass_sh=0.03, cape_timescale=1800.0, -cca_md_scaling=0.8, +cca_md_scaling=1.2, cpress_term=0.3, cv_scheme='gregory_rowntree', efrac=1.0, @@ -121,12 +121,17 @@ prog_ent_int=-2.9, prog_ent_max=2.5, prog_ent_min=0.3, qlmin=4.0e-4, -r_det=0.5, +r_det=0.66, thpixs_mid=0.5, / &cosp l_cosp=.false., / +&damping_layer +dl_base=30000.0, +dl_str=0.05, +dl_type='standard', +/ &departure_points horizontal_limit='cap', horizontal_method='ffsl', @@ -140,29 +145,20 @@ vertical_sorting=.false., encorr_usage='none', integral_method='fd', / -&external_forcing -geostrophic_forcing=.false., -pc2_force_response=.true., -theta_forcing='temp_tend', -theta_relaxation=.false., -vapour_forcing='none', -vertadvect_forcing=.false., -wind_forcing='none', -/ &extrusion -domain_height=85000, -method='um_L85_50t_35s_85km', -number_of_layers=85, +domain_height=40000, +method='um_L70_61t_9s_40km', +number_of_layers=70, planet_radius=6371229.0, stretching_height=16641.984, stretching_method='smooth', / &files ancil_directory='', -checkpoint_stem_name='restartLfricAtm', +checkpoint_stem_name='/home/users/alan.j.hewitt/cylc-run/command_line/run2/share/data/restart_lfric_atm_scm_gal10_dice2-BiP2x2-50000x50000_azspice_gnu_fast-debug-32bit_tstep', diag_stem_name='diagLfricAtm', -start_dump_directory='', -start_dump_filename='', +start_dump_directory='/data/users/lfricadmin/data/start_dumps/nwp-gal9/apps1.1', +start_dump_filename='nwp-gal9_N320L70_BiP2x2-50000x50000L70', / &finite_element cellshape='quadrilateral', @@ -191,8 +187,8 @@ p2theta_vert=.true., rotating=.true., shallow=.true., si_momentum_equation=.false., -solver_moisture_conservation=.true., -theta_moist_source=.true. +solver_moisture_conservation=.false., +theta_moist_source=.true., use_multires_coupling=.false., use_physics=.true., use_wavedynamics=.false., @@ -222,7 +218,7 @@ si_pressure_tolerance=1.0e-4, &iau / &idealised -f_lon_deg=300.0, +f_lon_deg=263.265, perturb_init=.false., test='specified_profiles', / @@ -236,8 +232,9 @@ snow_layer_temp=27*273.0, snow_layer_thickness=27*0.0, soil_moisture=15.86,98.861,274.35,862.27, soil_temperature=284.508,286.537,289.512,293.066, -surf_tile_fracs=9*0.0,1.0,0.0, -surf_tile_temps=9*295.0,300.0,265.0, +surf_tile_fracs=0.0,0.0,0.66,0.157,0.048,0.0,0.0,0.135,0.0,0.0,0.0, +surf_tile_temps=286.0,286.0,290.516,290.596,290.136,286.0,286.0,292.984, +286.0,293.750,265.0, tile_snow_mass=11*0.0, / &initialization @@ -248,7 +245,6 @@ coarse_ozone_ancil=.false., init_option='analytic', lbc_option='none', ls_option='none', -read_w2h_wind=.false., sea_ice_source='ancillary', snow_source='start_dump', zero_w2v_wind=.false., @@ -267,80 +263,78 @@ z2=0.0, / &initial_pressure method='balanced', -surface_pressure=101500.0, +surface_pressure=97500.0, / &initial_temperature bvf_square=0.0001, pert_centre=60.0, pert_width_scaling=1.0, perturb='none', -profile_data=8*298.7,298.75138895,299.23958304,299.77916644,300.37014011, -301.01249981,301.70625077,302.54872037,304.85384615, -307.30768729,308.75966563,309.65999872,310.60899763, -311.60666545,312.65450571,313.75155966,314.89737383, -316.09194513,317.33527045,318.6273591,319.96820178, -321.35780468,322.79616471,324.28328186,325.81915925, -327.40379376,329.03718539,330.71934037,332.45026801, -334.22993723,336.0584071,347.01310455,362.86359705, -379.11645253,395.77243837,412.83257775,430.29840543, -448.17222355,466.45684584,485.15687657,504.27692003, -523.82490581,543.80953089,564.24281755,585.13934602, -606.51804502,628.40142434,650.81762128,673.80142372, -697.3940144,721.64578462,746.61633424,772.3767738, -799.01074776,826.61724813,855.31189355,885.22923131, -916.52529538,949.38093168,984.00384443,1020.63268886, -1059.53988491,1101.03647733,1145.47571677,1193.25766409, -1244.83456197,1300.71569504,1361.47352886,1427.75036062, -1500.26394654,1579.81619885,1667.29983645,1763.70657027, -1870.137335,1987.80996293,2118.0709504,2262.40594535, -2422.44972326,2600.0, -profile_heights=86*0.0, -profile_size=86, +profile_data=288.701,288.701,288.454,287.592,287.153,286.972,286.703, +286.591,286.517,286.560,286.595,286.601,286.692,286.701, +286.787,287.673,291.119,292.707,294.273,295.673,296.442, +297.973,298.818,299.523,300.547,301.750,302.791,304.648, +306.742,308.190,309.318,309.987,310.607,311.311,311.737, +312.323,313.251,314.646,315.881,316.334,317.106,318.678, +319.948,320.471,321.504,322.138,322.517,323.582,324.256, +325.002,325.967,326.935,327.998,329.585,331.967,339.170, +348.401,357.888,368.659,381.288,398.022,417.302,441.208, +464.917,490.465,518.704,549.981,584.742,623.670,667.365, +716.713, +profile_heights=71*0.0, +profile_size=71, theta_surf=300.0, / &initial_vapour -profile_data=1.69730769e-02,1.69730769e-02,1.69282051e-02,1.68653846e-02, -1.67846154e-02,1.66858974e-02,1.65692308e-02,1.64346154e-02, -1.62222221e-02,1.54833338e-02,1.46666670e-02,1.37722204e-02, -1.28000003e-02,1.17499988e-02,1.05333306e-02,7.95000000e-03, -5.20000563e-03,4.01600034e-03,3.72000042e-03,3.40800078e-03, -3.08000040e-03,2.84160018e-03,2.62560029e-03,2.39999995e-03, -2.16479978e-03,1.92000040e-03,1.66559995e-03,1.40160029e-03, -1.17459214e-03,1.07465432e-03,9.71328836e-04,8.64615474e-04, -7.54514447e-04,6.41025755e-04,5.24148968e-04,4.03883437e-04, -2.80231322e-04,1.53188519e-04,1.02974456e-04,9.21976056e-05, -8.11471857e-05,6.98226748e-05,5.82233774e-05,4.63482500e-05, -3.41957272e-05,2.17638961e-05,9.04962608e-06,3.38255188e-06, -3.35100186e-06,3.31874710e-06,3.28576822e-06,3.25204167e-06, -3.21753691e-06,3.18221761e-06,3.14603835e-06,3.10894299e-06, -3.07086506e-06,3.03172322e-06,2.99142129e-06,2.94984450e-06, -2.90685784e-06,2.86230154e-06,2.81598900e-06,2.76770306e-06, -2.71719189e-06,2.66416360e-06,2.60828297e-06,2.54916480e-06, -2.48636943e-06,2.41939482e-06,2.34767084e-06,2.27055181e-06, -2.18730781e-06,2.09711687e-06,1.99905503e-06,1.89208565e-06, -1.77505029e-06,1.64665467e-06,1.50545796e-06,1.34985957e-06, -1.17808261e-06,9.88161526e-07,7.77923099e-07,5.44969528e-07, -2.86662320e-07,1.00000000e-10, -profile_heights=86*0.0, -profile_size=86, +profile_data=0.00275358,0.00275358,0.00250702,0.00247921,0.00249053, +0.00245508,0.00251553,0.00250019,0.00247915,0.00250315, +0.00247096,0.00249753,0.00249475,0.00252159,0.00252143, +0.00197728,0.000725101,0.000440095,0.000463667,0.00167558, +0.00300598,0.00345398,0.00396986,0.00429183,0.00398681, +0.00379379,0.00329526,0.00273338,0.00208931,0.00221501, +0.00215267,0.00212377,0.00194903,0.00176969,0.00168117, +0.00147175,0.00126355,0.000870132,0.000584783,0.000515035, +0.000442860,0.000300832,0.000188208,0.000199049,6.61931e-05, +6.69641e-05,9.43093e-05,4.87241e-05,3.85208e-05,4.03693e-05, +3.71684e-05,3.56379e-05,2.72910e-05,1.94003e-05,1.64081e-05, +1.22004e-05,6.94345e-06,2.92046e-06,1.35341e-06,8.42154e-07, +5.22935e-07,2.36414e-07,2.75319e-07,4.26621e-07, +7*1.00000e-06, +profile_heights=71*0.0, +profile_size=71, / &initial_wind nl_constant=0.0, profile='pw_linear', -profile_data_u=9*-8.75,-8.69600004,-8.43199931,-8.14399976,-7.83200063, --7.49600039,-7.13600057,-6.75199964,-6.34400066,-5.91200057, --5.4560009,-4.97600012,65*-4.61, -profile_data_v=85*0.0, -profile_data_w=0.00000000e+00,-8.66666602e-05,-2.31111118e-04, --4.33333485e-04,-6.93333355e-04,-1.01111110e-03, --1.38666671e-03,-1.81999983e-03,-2.31111118e-03, --2.85999967e-03,-3.46666641e-03,-4.13111248e-03, --4.85333312e-03,-5.63333420e-03,-6.47111205e-03, --4.33333333e-03,-1.95000488e-03,69*0.00000000e+00, -profile_heights_uv=85*0.0, -profile_heights_w=86*0.0, -profile_size_uv=85, -profile_size_w=86, +profile_data_u=2.88149,2.78436,2.64099,2.44365,2.19934,1.87782,1.68390, +1.83909,2.19477,2.53318,2.70702,2.37799,1.63166,1.02456, +-0.192832,-0.779557,1.21256,2.76564,2.89021,3.44659,4.12999, +4.95999,5.28000,5.20001,5.46126,5.64751,6.18625,5.97499, +4.65000,4.00001,3.92501,3.82766,3.50280,3.21609,3.83039, +4.31339,3.85521,3.65463,3.91336,4.05451,3.96621,3.74101, +28*3.62864, +profile_data_v=-2.94449,-2.65314,-2.22304,-1.63108,-1.69690,-3.45514, +-6.09874,-7.61258,-7.12245,-6.23792,-6.47588,-6.88160, +-6.63959,-6.19585,-6.10223,-6.55132,-7.06277,-7.44759, +-8.32134,-9.61125,-10.6353,-11.1759,-11.5121,-12.0429, +-12.1862,-11.3779,-10.5909,-10.3639,-9.96957,-9.37679, +-8.92033,-8.45116,-7.89880,-7.33572,-6.92775,-6.70233, +-6.69843,-7.09636,-7.74326,-8.31742,-8.70967,-8.90080, +28*-8.94229, +profile_data_w=0.0,-2.50000e-05,-0.000108334,-0.000225000,-0.000375000, +-0.000558333,-0.000775000,-0.00102500,-0.00130833, +-0.00162500,-0.00197500,-0.00235833,-0.00277500,-0.00322500, +-0.00370833,-0.00422500,-0.00477500,-0.00535833,-0.00597500, +-0.00662500,-0.00730833,-0.00802500,-0.00877500,-0.00955833, +-0.0103750,-0.0112250,-0.0121083,-0.0130250,-0.0139750, +-0.0149583,-0.0144150,-0.0137850,-0.0131350,-0.0124650, +-0.0117750,-0.0110650,-0.0103350,-0.00958500,-0.00881500, +-0.00802500,-0.00721500,-0.00638500,-0.00553498,-0.00466456, +-0.00377252,-0.00285655,-0.00191292,-0.000936240,23*0.00000, +profile_heights_uv=70*0.0, +profile_heights_w=71*0.0, +profile_size_uv=70, +profile_size_w=71, sbr_angle_lat=0.0, sbr_angle_lon=0.0, smp_init_wind=.true., @@ -850,23 +844,26 @@ viscosity_mu=0.0, &esm_couple l_esm_couple_test=.false., / +&orbit +elements='earth_fixed', +observer_lat=0.0, +observer_lon=0.0, +spin='earth_day', +/ &orography +n_orog_smooth=0, orog_init_option='none', orography_order=2, -n_orog_smooth=0, -w0_multigrid_mapping=.true. +w0_multigrid_mapping=.false., / &partitioning generate_inner_halos=.false., +inner_halo_tiles=.false., panel_decomposition='auto', panel_xproc=1, panel_yproc=1, partitioner='planar', -tile_size_x = 1 -tile_size_y = 1 -inner_halo_tiles = .false. / - &physics bl_segment=16, blayer_placement='fast', @@ -879,7 +876,9 @@ lowest_level='gradient', ls_ppn_segment=0, lw_segment_limit=32, microphysics_placement='slow', +orographic_drag_placement='slow', pmsl_halo_calcs=.true., +radiation_placement='slow', sample_physics_scalars=.true., sample_physics_winds=.true., sample_physics_winds_correction=.false., @@ -894,6 +893,29 @@ p_zero=100000.0, rd=287.05, scaling_factor=1.0, / +&radiation +cloud_inhomogeneity='mcica', +cloud_overlap='exponential_random', +cloud_representation='combined', +cloud_vertical_decorr=10000.0, +droplet_effective_radius='liu', +i_cloud_ice_type_lw=11, +i_cloud_ice_type_sw=11, +i_cloud_liq_type_lw=5, +i_cloud_liq_type_sw=5, +l_inc_radstep=.false., +l_planet_grey_surface=.false., +l_rayleigh_sw=.true., +l_trans_zen_correction=.true., +liu_aparam=0.077, +liu_bparam=-0.1365, +mcica_data_file='spec/mcica_data', +n_radstep=6, +scatter_method_lw='hybrid', +spectral_file_lw='spec/sp_lw_ga9', +spectral_file_sw='spec/sp_sw_ga9', +topography='flat', +/ &radiative_gases cfc113_rad_opt='off', cfc11_mix_ratio=1.110e-09, @@ -928,6 +950,17 @@ so2_rad_opt='off', tio_rad_opt='off', vo_rad_opt='off', / +&orographic_drag +cd_flow_blocking=4.0, +fr_crit_gwd=4.0, +fr_sat_gwd=0.25, +gwd_scaling=0.7, +include_moisture='lowmoist', +mountain_height_scaling=3.1, +orographic_blocking_heating=.true., +orographic_gwd_heating=.true., +vertical_smoothing=.true., +/ &solver gcrk=18, maximum_iterations=7, @@ -937,36 +970,27 @@ preconditioner='diagonal', tolerance=1.0e-6, / &specified_surface -function_name_fluxes='constant', -function_name_sst='constant', -profile_size=1, -specified_flux_e=130.052, -specified_flux_h=8.04, +/ +&star +stellar_constant=1361.0, +stellar_radius=6.957e8, / &surface emis_method_sea='fixed', emis_method_soil='fixed', lake_water_conservation=.false., / -&temp_tend_data -coordinate='height', -heights=1500.0,2500.0, -number_heights=2, -number_times=1, -profile_data=-2.314814e-5,0.0, -times=0.0, -/ &time calendar='timestep', -calendar_origin='2021-03-24 00:00:00', -calendar_start='2021-03-24 00:00:00', +calendar_origin='1999-10-23 19:00:00', +calendar_start='1999-10-23 19:00:00', calendar_type='gregorian', -timestep_end='72', +timestep_end='432', timestep_start='1', / ×tepping alpha=0.55, -dt=1200, +dt=600, inner_iterations=2, method='semi_implicit', outer_iterations=1, @@ -1030,6 +1054,5 @@ vertical_method=6*2, vertical_monotone=1,5,1,5,5,5, vertical_monotone_order=6*3, vertical_sl_order='cubic', -wind_mono_top=.true., -wind_mono_top_depth=5, +wind_mono_top=.false., / diff --git a/dependencies.yaml b/dependencies.yaml index 3d597dc0e8..12adcd2b74 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -23,7 +23,7 @@ casim: jules: source: git@github.com:MetOffice/jules.git - ref: 2026.07.1 + ref: de9b713b5afb179fc97f926fb66ce2ff9bb69d02 lfric_apps: source: diff --git a/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 b/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 index 72ca14262d..1609174fee 100644 --- a/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 +++ b/interfaces/jules_interface/source/algorithm/jules_exp_alg_mod.x90 @@ -74,7 +74,7 @@ contains snow_fields, aerosol_fields, recip_l_mo_sea, & rhostar, t1_sd_2d, q1_sd_2d) - use psykal_lite_phys_mod, only: invoke_jules_exp_kernel_type + use jules_exp_kernel_mod, only: jules_exp_kernel_type use xios, only: xios_date, xios_get_current_date, & xios_date_get_day_of_year, xios_date_get_second_of_day @@ -402,53 +402,130 @@ contains ! Switch UM to running i-first on whole domain call um_sizes_init(ncells) ! Call explicit Jules scheme - call invoke_jules_exp_kernel_type(ncells, ncells_halo, theta, exner_in_wth,& - u_in_w3, v_in_w3, & - mr_n(imr_v), mr_n(imr_cl), mr_ice, & - height_w3, height_wth, zh, z0msea, z0m, & - tile_fraction, leaf_area_index, & - canopy_height, peak_to_trough_orog, & - silhouette_area_orog, soil_albedo, & - soil_roughness, soil_moist_wilt, & - soil_moist_crit, soil_moist_sat, & - soil_thermal_cond, soil_suction_sat, & - clapp_horn_b, soil_respiration, & + + ! AJH pro tip + ! When we update this module - put one argument on each line + ! It will let you put kernel and algorithm editors side by side + ! so you can easily see if the argument lists match each other + + ! According to notes, each stencil field need to be followed by extent +! https://psyclone.readthedocs.io/en/latest/user_guide/lfric.html#stencil-extent + + call invoke( jules_exp_kernel_type( & + theta, & + exner_in_wth, & + u_in_w3, & + stencil_depth, & ! this is extent + v_in_w3, & + stencil_depth, & ! this is extent + mr_n(imr_v), & + mr_n(imr_cl), & + mr_ice, & + height_w3, & + height_wth, & + zh, & + z0msea, & + z0m, & + tile_fraction, & + stencil_depth, & ! this is extent + leaf_area_index, & + canopy_height, & + peak_to_trough_orog, & + silhouette_area_orog, & + soil_albedo, & + soil_roughness, & + soil_moist_wilt, & + soil_moist_crit, & + soil_moist_sat, & + soil_thermal_cond, & + soil_suction_sat, & + clapp_horn_b, & + soil_respiration, & thermal_cond_wet_soil, & - sea_u_current_ptr,sea_v_current_ptr, & + sea_u_current_ptr,& + stencil_depth, & ! this is extent + sea_v_current_ptr, & + stencil_depth, & ! this is extent sea_ice_temperature, & - sea_ice_conductivity, sea_ice_pensolar, & + sea_ice_conductivity, & + sea_ice_pensolar, & sea_ice_pensolar_frac_direct, & sea_ice_pensolar_frac_diffuse, & tile_temperature, & - tile_snow_mass, n_snow_layers, snow_depth, & - snow_layer_thickness, snow_layer_ice_mass, & - snow_layer_liq_mass, snow_layer_temp, & - surface_conductance, canopy_water, & - soil_temperature, soil_moisture, & - unfrozen_soil_moisture, frozen_soil_moisture, & - tile_heat_flux, tile_moisture_flux, & - net_prim_prod, cos_zenith_angle, skyview, & - sw_up_tile, tile_lw_grey_albedo, & - sw_down_surf, lw_down_surf, & - sw_down_blue_surf, sw_direct_blue_surf, & - dd_mf_cb, ozone, cf_bulk, & - cf_liquid, rhokm_bl, surf_interp, rhokh_bl, & - moist_flux_bl, heat_flux_bl, gradrinr, & - alpha1_tile, ashtf_prime_tile, dtstar_tile, & - fracaero_t_tile, fracaero_s_tile, & - z0h_tile, z0m_tile, rhokh_tile, & - chr1p5m_tile, resfs_tile, gc_tile, canhc_tile, & - tile_water_extract, blend_height_tq, z0m_eff, & - ustar, soil_moist_avail, snow_unload_rate, & - albedo_obs_scaling, soil_clay, soil_sand, & - dust_mrel, dust_flux, & - day_of_year, second_of_day, & - flux_e, flux_h, urbwrr, & - urbhwr, urbhgt, urbztm, urbdisp, & - rhostar, recip_l_mo_sea, & - t1_sd_2d, q1_sd_2d, & - gross_prim_prod, z0h_eff, ocn_cpl_point, & - stencil_depth) + tile_snow_mass, & + n_snow_layers, & + snow_depth, & + snow_layer_thickness, & + snow_layer_ice_mass, & + snow_layer_liq_mass, & + snow_layer_temp, & + surface_conductance, & + canopy_water, & + soil_temperature, & + soil_moisture, & + unfrozen_soil_moisture, & + frozen_soil_moisture, & + tile_heat_flux, & + tile_moisture_flux, & + net_prim_prod, & + cos_zenith_angle, & + skyview, & + sw_up_tile, & + tile_lw_grey_albedo, & + sw_down_surf, & + lw_down_surf, & + sw_down_blue_surf, & + sw_direct_blue_surf, & + dd_mf_cb, & + ozone, & + cf_bulk, & + cf_liquid, & + rhokm_bl, & + surf_interp, & + rhokh_bl, & + moist_flux_bl, & + heat_flux_bl, & + gradrinr, & + alpha1_tile, & + ashtf_prime_tile, & + dtstar_tile, & + fracaero_t_tile, & + fracaero_s_tile, & + z0h_tile, & + z0m_tile, & + rhokh_tile, & + chr1p5m_tile, & + resfs_tile, & + gc_tile, & + canhc_tile, & + tile_water_extract, & + blend_height_tq, & + z0m_eff, & + ustar, & + soil_moist_avail, & + snow_unload_rate, & + albedo_obs_scaling, & + soil_clay, & + soil_sand, & + dust_mrel, & + dust_flux, & + day_of_year, & + second_of_day, & + ncells_halo, & ! here + flux_e, & + flux_h, & + urbwrr, & + urbhwr, & + urbhgt, & + urbztm, & + urbdisp, & + rhostar, & + recip_l_mo_sea, & + t1_sd_2d, & + q1_sd_2d, & + gross_prim_prod, & + z0h_eff, & + ocn_cpl_point ) ) ! Switch UM back to columns call um_sizes_init(1_i_def) @@ -470,4 +547,5 @@ contains end subroutine jules_exp_alg +! make a not that I may need to edit this module end module jules_exp_alg_mod diff --git a/interfaces/jules_interface/source/kernel/jules_exp_kernel_mod.F90 b/interfaces/jules_interface/source/kernel/jules_exp_kernel_mod.F90 index 180db6b243..b353bbbcd6 100644 --- a/interfaces/jules_interface/source/kernel/jules_exp_kernel_mod.F90 +++ b/interfaces/jules_interface/source/kernel/jules_exp_kernel_mod.F90 @@ -46,7 +46,9 @@ module jules_exp_kernel_mod !> type, public, extends(kernel_type) :: jules_exp_kernel_type private - type(arg_type) :: meta_args(108) = (/ & + ! its looking for 113 arguments + ! missing u_w3_stencil / v_w3_stencil / tile_stencil / sea_u_w3_stencil / sea_v_w3_stencil + type(arg_type) :: meta_args(109) = (/ & arg_type(GH_FIELD, GH_REAL, GH_READ, WTHETA), &! theta_in_wth arg_type(GH_FIELD, GH_REAL, GH_READ, WTHETA), &! exner_in_wth arg_type(GH_FIELD, GH_REAL, GH_READ, W3, STENCIL(REGION)), &! u_in_w3 @@ -141,6 +143,7 @@ module jules_exp_kernel_mod arg_type(GH_FIELD, GH_REAL, GH_WRITE, ANY_DISCONTINUOUS_SPACE_10),&! dust_div_flux arg_type(GH_SCALAR, GH_INTEGER, GH_READ ), &! day_of_year arg_type(GH_SCALAR, GH_INTEGER, GH_READ ), &! second_of_day + arg_type(GH_SCALAR, GH_INTEGER, GH_READ ), &! seg_len_halo arg_type(GH_SCALAR, GH_REAL, GH_READ ), &! flux_e arg_type(GH_SCALAR, GH_REAL, GH_READ ), &! flux_h arg_type(GH_FIELD, GH_REAL, GH_READ, ANY_DISCONTINUOUS_SPACE_1), &! urbwrr @@ -263,6 +266,7 @@ module jules_exp_kernel_mod !> @param[in,out] dust_div_flux Dust emission fluxes in CLASSIC size divisions (kg m-2 s-1) !> @param[in] day_of_year The day of the year !> @param[in] second_of_day The second of the day + !> @param[in] seg_len_halo seg_len_halo !> @param[in] flux_e Latent heat flux !> @param[in] flux_h Sensible heat flux !> @param[in] urbwrr Urban repeating width ratio @@ -313,13 +317,18 @@ module jules_exp_kernel_mod !> @param[in] ndf_dust Number of DOFs per cell for dust divisions !> @param[in] undf_dust Number of total DOFs for dust divisions !> @param[in] map_dust Dofmap for cell for dust divisions - subroutine jules_exp_code(nlayers, seg_len, seg_len_halo, & + ! AJH pro tip + ! put each argument on a separate line so that its easy to + ! compare the kernel and algorithm with side by side editors + subroutine jules_exp_code(nlayers, seg_len, & theta_in_wth, & exner_in_wth, & u_in_w3, & - u_w3_stencil_size, u_w3_stencil, & + u_w3_stencil_size, & + u_w3_stencil, & v_in_w3, & - v_w3_stencil_size, v_w3_stencil, & + v_w3_stencil_size, & + v_w3_stencil, & m_v_n, & m_cl_n, & m_cf_n, & @@ -329,7 +338,8 @@ subroutine jules_exp_code(nlayers, seg_len, seg_len_halo, & z0msea_2d, & z0m_2d, & tile_fraction, & - tile_stencil_size, tile_stencil, & + tile_stencil_size, & + tile_stencil, & leaf_area_index, & canopy_height, & peak_to_trough_orog, & @@ -344,9 +354,11 @@ subroutine jules_exp_code(nlayers, seg_len, seg_len_halo, & clapp_horn_b, & soil_respiration, & thermal_cond_wet_soil, & - sea_u_current, sea_u_w3_stencil_size, & + sea_u_current, & + sea_u_w3_stencil_size, & sea_u_w3_stencil, & - sea_v_current, sea_v_w3_stencil_size, & + sea_v_current, & + sea_v_w3_stencil_size, & sea_v_w3_stencil, & sea_ice_temperature, & sea_ice_conductivity, & @@ -413,6 +425,7 @@ subroutine jules_exp_code(nlayers, seg_len, seg_len_halo, & dust_div_flux, & day_of_year, & second_of_day, & + seg_len_halo, & ! here flux_e, & flux_h, & urbwrr, & @@ -426,7 +439,7 @@ subroutine jules_exp_code(nlayers, seg_len, seg_len_halo, & q1_sd_2d, & gross_prim_prod, & z0h_eff, & - ocn_cpl_point, & + ocn_cpl_point, &!!!!!!!!! ndf_wth, undf_wth, map_wth, & ndf_w3, undf_w3, map_w3, & ndf_2d, undf_2d, map_2d, & @@ -572,6 +585,7 @@ subroutine jules_exp_code(nlayers, seg_len, seg_len_halo, & integer(kind=i_def), intent(in) :: ndf_dust, undf_dust integer(kind=i_def), intent(in) :: map_dust(ndf_dust,seg_len) + ! should these be called map_u_w3_stencil_size and map_v_w3_stencil_size ??? integer(kind=i_def), intent(in) :: u_w3_stencil_size(seg_len), v_w3_stencil_size(seg_len) integer(kind=i_def), dimension(ndf_w3,maxval(u_w3_stencil_size),seg_len_halo), intent(in) :: u_w3_stencil integer(kind=i_def), dimension(ndf_w3,maxval(v_w3_stencil_size),seg_len_halo), intent(in) :: v_w3_stencil @@ -1927,4 +1941,5 @@ subroutine jules_exp_code(nlayers, seg_len, seg_len_halo, & end subroutine jules_exp_code +! make a note that i may need to edit this module end module jules_exp_kernel_mod diff --git a/interfaces/physics_schemes_interface/source/psy/psykal_lite_phys_mod.F90 b/interfaces/physics_schemes_interface/source/psy/psykal_lite_phys_mod.F90 index b9adc98af6..36de594796 100644 --- a/interfaces/physics_schemes_interface/source/psy/psykal_lite_phys_mod.F90 +++ b/interfaces/physics_schemes_interface/source/psy/psykal_lite_phys_mod.F90 @@ -322,413 +322,9 @@ end subroutine invoke_spectral_2_cs_kernel_type !--------------------------------------------------------------------- ! PSyclone currently doesn't work for DOMAIN kernels with stencil fields ! See PSyclone #1948 - SUBROUTINE invoke_jules_exp_kernel_type(ncells, ncells_halo, theta, exner_in_wth, u_in_w3, v_in_w3, mr_n, mr_n_1, mr_n_2, height_w3, height_wth, & -&zh, z0msea, z0m, tile_fraction, leaf_area_index, canopy_height, peak_to_trough_orog, silhouette_area_orog, soil_albedo, & -&soil_roughness, soil_moist_wilt, soil_moist_crit, soil_moist_sat, soil_thermal_cond, soil_suction_sat, clapp_horn_b, & -&soil_respiration, thermal_cond_wet_soil, sea_u_current_ptr, sea_v_current_ptr, sea_ice_temperature, sea_ice_conductivity, sea_ice_pensolar, & -&sea_ice_pensolar_frac_direct, sea_ice_pensolar_frac_diffuse, tile_temperature, tile_snow_mass, n_snow_layers, snow_depth, & -&snow_layer_thickness, snow_layer_ice_mass, snow_layer_liq_mass, snow_layer_temp, surface_conductance, canopy_water, & -&soil_temperature, soil_moisture, unfrozen_soil_moisture, frozen_soil_moisture, tile_heat_flux, tile_moisture_flux, net_prim_prod, & -&cos_zenith_angle, skyview, & -sw_up_tile, tile_lw_grey_albedo, & -sw_down_surf, lw_down_surf, sw_down_blue_surf, sw_direct_blue_surf, dd_mf_cb, ozone, cf_bulk, cf_liquid, rhokm_bl, & -&surf_interp, rhokh_bl, moist_flux_bl, heat_flux_bl, gradrinr, & -&alpha1_tile, ashtf_prime_tile, dtstar_tile, fracaero_t_tile, fracaero_s_tile, z0h_tile, & -&z0m_tile, rhokh_tile, chr1p5m_tile, resfs_tile, gc_tile, canhc_tile, tile_water_extract, blend_height_tq, z0m_eff, ustar, & -&soil_moist_avail, snow_unload_rate, albedo_obs_scaling, soil_clay, soil_sand, dust_mrel, dust_flux, day_of_year, second_of_day, & -flux_e, flux_h, urbwrr, urbhwr, urbhgt, urbztm, urbdisp, & -&rhostar, recip_l_mo_sea, & -&t1_sd_2d, q1_sd_2d, gross_prim_prod, z0h_eff, ocn_cpl_point, stencil_depth) - USE jules_exp_kernel_mod, ONLY: jules_exp_code - USE mesh_mod, ONLY: mesh_type - USE stencil_dofmap_mod, ONLY: STENCIL_REGION - USE stencil_dofmap_mod, ONLY: stencil_dofmap_type - implicit none - TYPE(field_type), intent(in) :: theta, exner_in_wth, u_in_w3, v_in_w3, mr_n, mr_n_1, mr_n_2, height_w3, height_wth, zh, & -&z0msea, z0m, tile_fraction, leaf_area_index, canopy_height, peak_to_trough_orog, silhouette_area_orog, soil_albedo, & -&soil_roughness, soil_moist_wilt, soil_moist_crit, soil_moist_sat, soil_thermal_cond, soil_suction_sat, clapp_horn_b, & -&soil_respiration, thermal_cond_wet_soil, sea_u_current_ptr, sea_v_current_ptr, sea_ice_temperature, sea_ice_conductivity, & -sea_ice_pensolar, sea_ice_pensolar_frac_direct, sea_ice_pensolar_frac_diffuse, tile_temperature, tile_snow_mass, snow_depth, snow_layer_thickness, & -&snow_layer_ice_mass, snow_layer_liq_mass, snow_layer_temp, surface_conductance, canopy_water, soil_temperature, soil_moisture, & -&unfrozen_soil_moisture, frozen_soil_moisture, tile_heat_flux, tile_moisture_flux, net_prim_prod, cos_zenith_angle, & -skyview, sw_up_tile, tile_lw_grey_albedo,& -&sw_down_surf, lw_down_surf, sw_down_blue_surf, sw_direct_blue_surf, dd_mf_cb, ozone, cf_bulk, cf_liquid, rhokm_bl, surf_interp, rhokh_bl, & -&moist_flux_bl, heat_flux_bl, gradrinr, & -&alpha1_tile, ashtf_prime_tile, dtstar_tile, fracaero_t_tile, fracaero_s_tile, z0h_tile, z0m_tile, rhokh_tile, & -&chr1p5m_tile, resfs_tile, gc_tile, canhc_tile, tile_water_extract, z0m_eff, ustar, soil_moist_avail, snow_unload_rate, & -&albedo_obs_scaling, soil_clay, soil_sand, dust_mrel, dust_flux, & -urbwrr, urbhwr, urbhgt, urbztm, urbdisp, & -rhostar, recip_l_mo_sea, t1_sd_2d, q1_sd_2d, & -&gross_prim_prod, z0h_eff - TYPE(integer_field_type), intent(in) :: n_snow_layers, blend_height_tq, ocn_cpl_point - INTEGER(KIND=i_def), intent(in) :: stencil_depth, ncells, ncells_halo, day_of_year, second_of_day - REAL(KIND=r_def), intent(in) :: flux_e, flux_h - INTEGER(KIND=i_def) :: nlayers - TYPE(integer_field_proxy_type) :: n_snow_layers_proxy, blend_height_tq_proxy, ocn_cpl_point_proxy - TYPE(field_proxy_type) :: theta_proxy, exner_in_wth_proxy, u_in_w3_proxy, v_in_w3_proxy, mr_n_proxy, mr_n_1_proxy, & -&mr_n_2_proxy, height_w3_proxy, height_wth_proxy, zh_proxy, z0msea_proxy, z0m_proxy, tile_fraction_proxy, leaf_area_index_proxy, & -&canopy_height_proxy, peak_to_trough_orog_proxy, silhouette_area_orog_proxy, soil_albedo_proxy, soil_roughness_proxy, & -&soil_moist_wilt_proxy, soil_moist_crit_proxy, soil_moist_sat_proxy, soil_thermal_cond_proxy, soil_suction_sat_proxy, & -&clapp_horn_b_proxy, soil_respiration_proxy, thermal_cond_wet_soil_proxy, & -sea_u_current_ptr_proxy, sea_v_current_ptr_proxy, sea_ice_temperature_proxy, sea_ice_conductivity_proxy, & -sea_ice_pensolar_proxy, sea_ice_pensolar_frac_direct_proxy, sea_ice_pensolar_frac_diffuse_proxy, tile_temperature_proxy, & -&tile_snow_mass_proxy, snow_depth_proxy, snow_layer_thickness_proxy, snow_layer_ice_mass_proxy, snow_layer_liq_mass_proxy, & -&snow_layer_temp_proxy, surface_conductance_proxy, canopy_water_proxy, soil_temperature_proxy, soil_moisture_proxy, & -&unfrozen_soil_moisture_proxy, frozen_soil_moisture_proxy, tile_heat_flux_proxy, tile_moisture_flux_proxy, net_prim_prod_proxy, & -&cos_zenith_angle_proxy, skyview_proxy, & -sw_up_tile_proxy, tile_lw_grey_albedo_proxy, & -sw_down_surf_proxy, lw_down_surf_proxy, sw_down_blue_surf_proxy, sw_direct_blue_surf_proxy, dd_mf_cb_proxy, & -&ozone_proxy, cf_bulk_proxy, cf_liquid_proxy, rhokm_bl_proxy, surf_interp_proxy, rhokh_bl_proxy, moist_flux_bl_proxy, & -&heat_flux_bl_proxy, gradrinr_proxy, alpha1_tile_proxy, ashtf_prime_tile_proxy, dtstar_tile_proxy, & -&fracaero_t_tile_proxy, fracaero_s_tile_proxy, & -&z0h_tile_proxy, z0m_tile_proxy, rhokh_tile_proxy, chr1p5m_tile_proxy, resfs_tile_proxy, gc_tile_proxy, canhc_tile_proxy, & -&tile_water_extract_proxy, z0m_eff_proxy, ustar_proxy, soil_moist_avail_proxy, snow_unload_rate_proxy, albedo_obs_scaling_proxy, & -&soil_clay_proxy, soil_sand_proxy, dust_mrel_proxy, dust_flux_proxy, & -urbwrr_proxy, urbhwr_proxy, urbhgt_proxy, urbztm_proxy, urbdisp_proxy, & -rhostar_proxy, recip_l_mo_sea_proxy, & -&t1_sd_2d_proxy, q1_sd_2d_proxy, gross_prim_prod_proxy, z0h_eff_proxy - INTEGER(KIND=i_def), pointer :: map_adspc10_dust_mrel(:,:) => null(), map_adspc1_zh(:,:) => null(), & -&map_adspc2_tile_fraction(:,:) => null(), map_adspc3_leaf_area_index(:,:) => null(), & -&map_adspc4_sea_ice_temperature(:,:) => null(), map_adspc5_snow_layer_thickness(:,:) => null(), & -&map_adspc6_soil_temperature(:,:) => null(), map_adspc7_surf_interp(:,:) => null(), map_adspc8_tile_water_extract(:,:) => null(), & -&map_adspc9_albedo_obs_scaling(:,:) => null(), map_w3(:,:) => null(), map_wtheta(:,:) => null() - INTEGER(KIND=i_def) :: ndf_wtheta, undf_wtheta, ndf_w3, undf_w3, ndf_adspc1_zh, undf_adspc1_zh, ndf_adspc2_tile_fraction, & -&undf_adspc2_tile_fraction, ndf_adspc3_leaf_area_index, undf_adspc3_leaf_area_index, ndf_adspc4_sea_ice_temperature, & -&undf_adspc4_sea_ice_temperature, ndf_adspc5_snow_layer_thickness, undf_adspc5_snow_layer_thickness, ndf_adspc6_soil_temperature, & -&undf_adspc6_soil_temperature, ndf_adspc7_surf_interp, undf_adspc7_surf_interp, ndf_adspc8_tile_water_extract, & -&undf_adspc8_tile_water_extract, ndf_adspc9_albedo_obs_scaling, undf_adspc9_albedo_obs_scaling, ndf_adspc10_dust_mrel, & -&undf_adspc10_dust_mrel - INTEGER(KIND=i_def) :: max_halo_depth_mesh - TYPE(mesh_type), pointer :: mesh => null() - INTEGER(KIND=i_def), pointer :: tile_fraction_stencil_size(:) => null() - INTEGER(KIND=i_def), pointer :: tile_fraction_stencil_dofmap(:,:,:) => null() - TYPE(stencil_dofmap_type), pointer :: tile_fraction_stencil_map => null() - INTEGER(KIND=i_def), pointer :: u_in_w3_stencil_size(:) => null() - INTEGER(KIND=i_def), pointer :: u_in_w3_stencil_dofmap(:,:,:) => null() - TYPE(stencil_dofmap_type), pointer :: u_in_w3_stencil_map => null() - INTEGER(KIND=i_def), pointer :: sea_u_current_ptr_stencil_size(:) => null() - INTEGER(KIND=i_def), pointer :: sea_u_current_ptr_stencil_dofmap(:,:,:) => null() - TYPE(stencil_dofmap_type), pointer :: sea_u_current_ptr_stencil_map => null() - INTEGER(KIND=i_def), pointer :: sea_v_current_ptr_stencil_size(:) => null() - INTEGER(KIND=i_def), pointer :: sea_v_current_ptr_stencil_dofmap(:,:,:) => null() - TYPE(stencil_dofmap_type), pointer :: sea_v_current_ptr_stencil_map => null() - ! - ! Initialise field and/or operator proxies - ! - theta_proxy = theta%get_proxy() - exner_in_wth_proxy = exner_in_wth%get_proxy() - u_in_w3_proxy = u_in_w3%get_proxy() - v_in_w3_proxy = v_in_w3%get_proxy() - mr_n_proxy = mr_n%get_proxy() - mr_n_1_proxy = mr_n_1%get_proxy() - mr_n_2_proxy = mr_n_2%get_proxy() - height_w3_proxy = height_w3%get_proxy() - height_wth_proxy = height_wth%get_proxy() - zh_proxy = zh%get_proxy() - z0msea_proxy = z0msea%get_proxy() - z0m_proxy = z0m%get_proxy() - tile_fraction_proxy = tile_fraction%get_proxy() - leaf_area_index_proxy = leaf_area_index%get_proxy() - canopy_height_proxy = canopy_height%get_proxy() - peak_to_trough_orog_proxy = peak_to_trough_orog%get_proxy() - silhouette_area_orog_proxy = silhouette_area_orog%get_proxy() - soil_albedo_proxy = soil_albedo%get_proxy() - soil_roughness_proxy = soil_roughness%get_proxy() - soil_moist_wilt_proxy = soil_moist_wilt%get_proxy() - soil_moist_crit_proxy = soil_moist_crit%get_proxy() - soil_moist_sat_proxy = soil_moist_sat%get_proxy() - soil_thermal_cond_proxy = soil_thermal_cond%get_proxy() - soil_suction_sat_proxy = soil_suction_sat%get_proxy() - clapp_horn_b_proxy = clapp_horn_b%get_proxy() - soil_respiration_proxy = soil_respiration%get_proxy() - thermal_cond_wet_soil_proxy = thermal_cond_wet_soil%get_proxy() - sea_u_current_ptr_proxy = sea_u_current_ptr%get_proxy() - sea_v_current_ptr_proxy = sea_v_current_ptr%get_proxy() - sea_ice_temperature_proxy = sea_ice_temperature%get_proxy() - sea_ice_conductivity_proxy = sea_ice_conductivity%get_proxy() - sea_ice_pensolar_proxy = sea_ice_pensolar%get_proxy() - sea_ice_pensolar_frac_direct_proxy = sea_ice_pensolar_frac_direct%get_proxy() - sea_ice_pensolar_frac_diffuse_proxy = sea_ice_pensolar_frac_diffuse%get_proxy() - tile_temperature_proxy = tile_temperature%get_proxy() - tile_snow_mass_proxy = tile_snow_mass%get_proxy() - n_snow_layers_proxy = n_snow_layers%get_proxy() - snow_depth_proxy = snow_depth%get_proxy() - snow_layer_thickness_proxy = snow_layer_thickness%get_proxy() - snow_layer_ice_mass_proxy = snow_layer_ice_mass%get_proxy() - snow_layer_liq_mass_proxy = snow_layer_liq_mass%get_proxy() - snow_layer_temp_proxy = snow_layer_temp%get_proxy() - surface_conductance_proxy = surface_conductance%get_proxy() - canopy_water_proxy = canopy_water%get_proxy() - soil_temperature_proxy = soil_temperature%get_proxy() - soil_moisture_proxy = soil_moisture%get_proxy() - unfrozen_soil_moisture_proxy = unfrozen_soil_moisture%get_proxy() - frozen_soil_moisture_proxy = frozen_soil_moisture%get_proxy() - tile_heat_flux_proxy = tile_heat_flux%get_proxy() - tile_moisture_flux_proxy = tile_moisture_flux%get_proxy() - net_prim_prod_proxy = net_prim_prod%get_proxy() - cos_zenith_angle_proxy = cos_zenith_angle%get_proxy() - skyview_proxy = skyview%get_proxy() - sw_up_tile_proxy = sw_up_tile%get_proxy() - tile_lw_grey_albedo_proxy = tile_lw_grey_albedo%get_proxy() - sw_down_surf_proxy = sw_down_surf%get_proxy() - lw_down_surf_proxy = lw_down_surf%get_proxy() - sw_down_blue_surf_proxy = sw_down_blue_surf%get_proxy() - sw_direct_blue_surf_proxy = sw_direct_blue_surf%get_proxy() - dd_mf_cb_proxy = dd_mf_cb%get_proxy() - ozone_proxy = ozone%get_proxy() - cf_bulk_proxy = cf_bulk%get_proxy() - cf_liquid_proxy = cf_liquid%get_proxy() - rhokm_bl_proxy = rhokm_bl%get_proxy() - surf_interp_proxy = surf_interp%get_proxy() - rhokh_bl_proxy = rhokh_bl%get_proxy() - moist_flux_bl_proxy = moist_flux_bl%get_proxy() - heat_flux_bl_proxy = heat_flux_bl%get_proxy() - gradrinr_proxy = gradrinr%get_proxy() - alpha1_tile_proxy = alpha1_tile%get_proxy() - ashtf_prime_tile_proxy = ashtf_prime_tile%get_proxy() - dtstar_tile_proxy = dtstar_tile%get_proxy() - fracaero_t_tile_proxy = fracaero_t_tile%get_proxy() - fracaero_s_tile_proxy = fracaero_s_tile%get_proxy() - z0h_tile_proxy = z0h_tile%get_proxy() - z0m_tile_proxy = z0m_tile%get_proxy() - rhokh_tile_proxy = rhokh_tile%get_proxy() - chr1p5m_tile_proxy = chr1p5m_tile%get_proxy() - resfs_tile_proxy = resfs_tile%get_proxy() - gc_tile_proxy = gc_tile%get_proxy() - canhc_tile_proxy = canhc_tile%get_proxy() - tile_water_extract_proxy = tile_water_extract%get_proxy() - blend_height_tq_proxy = blend_height_tq%get_proxy() - z0m_eff_proxy = z0m_eff%get_proxy() - ustar_proxy = ustar%get_proxy() - soil_moist_avail_proxy = soil_moist_avail%get_proxy() - snow_unload_rate_proxy = snow_unload_rate%get_proxy() - albedo_obs_scaling_proxy = albedo_obs_scaling%get_proxy() - soil_clay_proxy = soil_clay%get_proxy() - soil_sand_proxy = soil_sand%get_proxy() - dust_mrel_proxy = dust_mrel%get_proxy() - dust_flux_proxy = dust_flux%get_proxy() - urbwrr_proxy = urbwrr%get_proxy() - urbhwr_proxy = urbhwr%get_proxy() - urbhgt_proxy = urbhgt%get_proxy() - urbztm_proxy = urbztm%get_proxy() - urbdisp_proxy = urbdisp%get_proxy() - rhostar_proxy = rhostar%get_proxy() - recip_l_mo_sea_proxy = recip_l_mo_sea%get_proxy() - t1_sd_2d_proxy = t1_sd_2d%get_proxy() - q1_sd_2d_proxy = q1_sd_2d%get_proxy() - gross_prim_prod_proxy = gross_prim_prod%get_proxy() - z0h_eff_proxy = z0h_eff%get_proxy() - ocn_cpl_point_proxy = ocn_cpl_point%get_proxy() - ! - ! Initialise number of layers - ! - nlayers = theta_proxy%vspace%get_nlayers() - ! - ! Create a mesh object - ! - mesh => theta_proxy%vspace%get_mesh() - max_halo_depth_mesh = mesh%get_halo_depth() - ! - ! Initialise stencil dofmaps - ! - u_in_w3_stencil_map => u_in_w3_proxy%vspace%get_stencil_dofmap(STENCIL_REGION,stencil_depth) - u_in_w3_stencil_dofmap => u_in_w3_stencil_map%get_whole_dofmap() - u_in_w3_stencil_size => u_in_w3_stencil_map%get_stencil_sizes() - tile_fraction_stencil_map => tile_fraction_proxy%vspace%get_stencil_dofmap(STENCIL_REGION,stencil_depth) - tile_fraction_stencil_dofmap => tile_fraction_stencil_map%get_whole_dofmap() - tile_fraction_stencil_size => tile_fraction_stencil_map%get_stencil_sizes() - sea_u_current_ptr_stencil_map => sea_u_current_ptr_proxy%vspace%get_stencil_dofmap(STENCIL_REGION,stencil_depth) - sea_u_current_ptr_stencil_dofmap => sea_u_current_ptr_stencil_map%get_whole_dofmap() - sea_u_current_ptr_stencil_size => sea_u_current_ptr_stencil_map%get_stencil_sizes() - sea_v_current_ptr_stencil_map => sea_v_current_ptr_proxy%vspace%get_stencil_dofmap(STENCIL_REGION,stencil_depth) - sea_v_current_ptr_stencil_dofmap => sea_v_current_ptr_stencil_map%get_whole_dofmap() - sea_v_current_ptr_stencil_size => sea_v_current_ptr_stencil_map%get_stencil_sizes() - ! - ! Look-up dofmaps for each function space - ! - map_wtheta => theta_proxy%vspace%get_whole_dofmap() - map_w3 => u_in_w3_proxy%vspace%get_whole_dofmap() - map_adspc1_zh => zh_proxy%vspace%get_whole_dofmap() - map_adspc2_tile_fraction => tile_fraction_proxy%vspace%get_whole_dofmap() - map_adspc3_leaf_area_index => leaf_area_index_proxy%vspace%get_whole_dofmap() - map_adspc4_sea_ice_temperature => sea_ice_temperature_proxy%vspace%get_whole_dofmap() - map_adspc5_snow_layer_thickness => snow_layer_thickness_proxy%vspace%get_whole_dofmap() - map_adspc6_soil_temperature => soil_temperature_proxy%vspace%get_whole_dofmap() - map_adspc7_surf_interp => surf_interp_proxy%vspace%get_whole_dofmap() - map_adspc8_tile_water_extract => tile_water_extract_proxy%vspace%get_whole_dofmap() - map_adspc9_albedo_obs_scaling => albedo_obs_scaling_proxy%vspace%get_whole_dofmap() - map_adspc10_dust_mrel => dust_mrel_proxy%vspace%get_whole_dofmap() - ! - ! Initialise number of DoFs for wtheta - ! - ndf_wtheta = theta_proxy%vspace%get_ndf() - undf_wtheta = theta_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for w3 - ! - ndf_w3 = u_in_w3_proxy%vspace%get_ndf() - undf_w3 = u_in_w3_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc1_zh - ! - ndf_adspc1_zh = zh_proxy%vspace%get_ndf() - undf_adspc1_zh = zh_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc2_tile_fraction - ! - ndf_adspc2_tile_fraction = tile_fraction_proxy%vspace%get_ndf() - undf_adspc2_tile_fraction = tile_fraction_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc3_leaf_area_index - ! - ndf_adspc3_leaf_area_index = leaf_area_index_proxy%vspace%get_ndf() - undf_adspc3_leaf_area_index = leaf_area_index_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc4_sea_ice_temperature - ! - ndf_adspc4_sea_ice_temperature = sea_ice_temperature_proxy%vspace%get_ndf() - undf_adspc4_sea_ice_temperature = sea_ice_temperature_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc5_snow_layer_thickness - ! - ndf_adspc5_snow_layer_thickness = snow_layer_thickness_proxy%vspace%get_ndf() - undf_adspc5_snow_layer_thickness = snow_layer_thickness_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc6_soil_temperature - ! - ndf_adspc6_soil_temperature = soil_temperature_proxy%vspace%get_ndf() - undf_adspc6_soil_temperature = soil_temperature_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc7_surf_interp - ! - ndf_adspc7_surf_interp = surf_interp_proxy%vspace%get_ndf() - undf_adspc7_surf_interp = surf_interp_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc8_tile_water_extract - ! - ndf_adspc8_tile_water_extract = tile_water_extract_proxy%vspace%get_ndf() - undf_adspc8_tile_water_extract = tile_water_extract_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc9_albedo_obs_scaling - ! - ndf_adspc9_albedo_obs_scaling = albedo_obs_scaling_proxy%vspace%get_ndf() - undf_adspc9_albedo_obs_scaling = albedo_obs_scaling_proxy%vspace%get_undf() - ! - ! Initialise number of DoFs for adspc10_dust_mrel - ! - ndf_adspc10_dust_mrel = dust_mrel_proxy%vspace%get_ndf() - undf_adspc10_dust_mrel = dust_mrel_proxy%vspace%get_undf() - ! - ! Call kernels and communication routines - ! - IF (u_in_w3_proxy%is_dirty(depth=stencil_depth)) THEN - CALL u_in_w3_proxy%halo_exchange(depth=stencil_depth) - END IF - ! - IF (v_in_w3_proxy%is_dirty(depth=stencil_depth)) THEN - CALL v_in_w3_proxy%halo_exchange(depth=stencil_depth) - END IF - ! - IF (tile_fraction_proxy%is_dirty(depth=stencil_depth)) THEN - CALL tile_fraction_proxy%halo_exchange(depth=stencil_depth) - END IF - ! - IF (sea_u_current_ptr_proxy%is_dirty(depth=stencil_depth)) THEN - CALL sea_u_current_ptr_proxy%halo_exchange(depth=stencil_depth) - END IF - ! - IF (sea_v_current_ptr_proxy%is_dirty(depth=stencil_depth)) THEN - CALL sea_v_current_ptr_proxy%halo_exchange(depth=stencil_depth) - END IF - ! - CALL jules_exp_code(nlayers, ncells, ncells_halo, theta_proxy%data, exner_in_wth_proxy%data, u_in_w3_proxy%data, u_in_w3_stencil_size, & -&u_in_w3_stencil_dofmap, v_in_w3_proxy%data, u_in_w3_stencil_size, u_in_w3_stencil_dofmap, & -&mr_n_proxy%data, mr_n_1_proxy%data, mr_n_2_proxy%data, height_w3_proxy%data, height_wth_proxy%data, zh_proxy%data, & -&z0msea_proxy%data, z0m_proxy%data, tile_fraction_proxy%data, tile_fraction_stencil_size, & -&tile_fraction_stencil_dofmap, leaf_area_index_proxy%data, canopy_height_proxy%data, peak_to_trough_orog_proxy%data, & -&silhouette_area_orog_proxy%data, soil_albedo_proxy%data, soil_roughness_proxy%data, soil_moist_wilt_proxy%data, & -&soil_moist_crit_proxy%data, soil_moist_sat_proxy%data, soil_thermal_cond_proxy%data, soil_suction_sat_proxy%data, & -&clapp_horn_b_proxy%data, soil_respiration_proxy%data, thermal_cond_wet_soil_proxy%data, & -sea_u_current_ptr_proxy%data,sea_u_current_ptr_stencil_size,sea_u_current_ptr_stencil_dofmap, & -sea_v_current_ptr_proxy%data,sea_v_current_ptr_stencil_size,sea_v_current_ptr_stencil_dofmap, & -sea_ice_temperature_proxy%data, sea_ice_conductivity_proxy%data, sea_ice_pensolar_proxy%data, sea_ice_pensolar_frac_direct_proxy%data, & -sea_ice_pensolar_frac_diffuse_proxy%data, & -&tile_temperature_proxy%data, tile_snow_mass_proxy%data, n_snow_layers_proxy%data, snow_depth_proxy%data, & -&snow_layer_thickness_proxy%data, snow_layer_ice_mass_proxy%data, snow_layer_liq_mass_proxy%data, snow_layer_temp_proxy%data, & -&surface_conductance_proxy%data, canopy_water_proxy%data, soil_temperature_proxy%data, soil_moisture_proxy%data, & -&unfrozen_soil_moisture_proxy%data, frozen_soil_moisture_proxy%data, tile_heat_flux_proxy%data, tile_moisture_flux_proxy%data, & -&net_prim_prod_proxy%data, cos_zenith_angle_proxy%data, skyview_proxy%data, & -sw_up_tile_proxy%data, tile_lw_grey_albedo_proxy%data, sw_down_surf_proxy%data, lw_down_surf_proxy%data, & -&sw_down_blue_surf_proxy%data, sw_direct_blue_surf_proxy%data, dd_mf_cb_proxy%data, ozone_proxy%data, cf_bulk_proxy%data, cf_liquid_proxy%data, & -&rhokm_bl_proxy%data, surf_interp_proxy%data, rhokh_bl_proxy%data, moist_flux_bl_proxy%data, heat_flux_bl_proxy%data, & -&gradrinr_proxy%data, alpha1_tile_proxy%data, ashtf_prime_tile_proxy%data, dtstar_tile_proxy%data, & -&fracaero_t_tile_proxy%data, fracaero_s_tile_proxy%data, & -&z0h_tile_proxy%data, z0m_tile_proxy%data, rhokh_tile_proxy%data, chr1p5m_tile_proxy%data, resfs_tile_proxy%data, & -&gc_tile_proxy%data, canhc_tile_proxy%data, tile_water_extract_proxy%data, blend_height_tq_proxy%data, z0m_eff_proxy%data, & -&ustar_proxy%data, soil_moist_avail_proxy%data, snow_unload_rate_proxy%data, albedo_obs_scaling_proxy%data, soil_clay_proxy%data, & -&soil_sand_proxy%data, dust_mrel_proxy%data, dust_flux_proxy%data, day_of_year, second_of_day, & -flux_e, flux_h, & -urbwrr_proxy%data, urbhwr_proxy%data, urbhgt_proxy%data, urbztm_proxy%data, & -urbdisp_proxy%data, & -rhostar_proxy%data, recip_l_mo_sea_proxy%data, & -&t1_sd_2d_proxy%data, q1_sd_2d_proxy%data, gross_prim_prod_proxy%data, & -z0h_eff_proxy%data, ocn_cpl_point_proxy%data, ndf_wtheta, & -&undf_wtheta, map_wtheta, ndf_w3, undf_w3, map_w3, ndf_adspc1_zh, undf_adspc1_zh, map_adspc1_zh, & -&ndf_adspc2_tile_fraction, undf_adspc2_tile_fraction, map_adspc2_tile_fraction, ndf_adspc3_leaf_area_index, & -&undf_adspc3_leaf_area_index, map_adspc3_leaf_area_index, ndf_adspc4_sea_ice_temperature, undf_adspc4_sea_ice_temperature, & -&map_adspc4_sea_ice_temperature, ndf_adspc5_snow_layer_thickness, undf_adspc5_snow_layer_thickness, & -&map_adspc5_snow_layer_thickness, ndf_adspc6_soil_temperature, undf_adspc6_soil_temperature, & -&map_adspc6_soil_temperature, ndf_adspc7_surf_interp, undf_adspc7_surf_interp, map_adspc7_surf_interp, & -&ndf_adspc8_tile_water_extract, undf_adspc8_tile_water_extract, map_adspc8_tile_water_extract, & -&ndf_adspc9_albedo_obs_scaling, undf_adspc9_albedo_obs_scaling, map_adspc9_albedo_obs_scaling, ndf_adspc10_dust_mrel, & -&undf_adspc10_dust_mrel, map_adspc10_dust_mrel) - ! - ! Set halos dirty/clean for fields modified in the above loop - ! - CALL z0msea_proxy%set_dirty() - CALL z0m_proxy%set_dirty() - CALL soil_respiration_proxy%set_dirty() - CALL thermal_cond_wet_soil_proxy%set_dirty() - CALL tile_temperature_proxy%set_dirty() - CALL surface_conductance_proxy%set_dirty() - CALL tile_heat_flux_proxy%set_dirty() - CALL tile_moisture_flux_proxy%set_dirty() - CALL net_prim_prod_proxy%set_dirty() - CALL rhokm_bl_proxy%set_dirty() - CALL surf_interp_proxy%set_dirty() - CALL rhokh_bl_proxy%set_dirty() - CALL moist_flux_bl_proxy%set_dirty() - CALL heat_flux_bl_proxy%set_dirty() - CALL gradrinr_proxy%set_dirty() - CALL alpha1_tile_proxy%set_dirty() - CALL ashtf_prime_tile_proxy%set_dirty() - CALL dtstar_tile_proxy%set_dirty() - CALL fracaero_t_tile_proxy%set_dirty() - CALL fracaero_s_tile_proxy%set_dirty() - CALL z0h_tile_proxy%set_dirty() - CALL z0m_tile_proxy%set_dirty() - CALL rhokh_tile_proxy%set_dirty() - CALL chr1p5m_tile_proxy%set_dirty() - CALL resfs_tile_proxy%set_dirty() - CALL gc_tile_proxy%set_dirty() - CALL canhc_tile_proxy%set_dirty() - CALL tile_water_extract_proxy%set_dirty() - CALL blend_height_tq_proxy%set_dirty() - CALL z0m_eff_proxy%set_dirty() - CALL ustar_proxy%set_dirty() - CALL soil_moist_avail_proxy%set_dirty() - CALL snow_unload_rate_proxy%set_dirty() - CALL dust_flux_proxy%set_dirty() - CALL rhostar_proxy%set_dirty() - CALL recip_l_mo_sea_proxy%set_dirty() - CALL t1_sd_2d_proxy%set_dirty() - CALL q1_sd_2d_proxy%set_dirty() - CALL gross_prim_prod_proxy%set_dirty() - CALL z0h_eff_proxy%set_dirty() - ! - ! - END SUBROUTINE invoke_jules_exp_kernel_type + ! Dumb first try, but does it work without this + ! or do i need to modify the kernel / algorithm as well ? !--------------------------------------------------------------------- !> Contains the PSy-layer to build the pressure level diagnostics diff --git a/rose-stem/site/meto/common/suite_config_azspice.cylc b/rose-stem/site/meto/common/suite_config_azspice.cylc index 945d6a636b..f4c079334c 100644 --- a/rose-stem/site/meto/common/suite_config_azspice.cylc +++ b/rose-stem/site/meto/common/suite_config_azspice.cylc @@ -9,7 +9,9 @@ 'module purge ; '~ 'module use /home/users/lfricadmin/lmod' %} -{% set azspice_compiler_gnu = 'module load lfric/vn3.2' %} +{% set azspice_compiler_gnu = 'module load lfric/vn3.2;' ~ + 'module unload py-psyclone/3.3.1;' ~ + 'source /data/users/alan.j.hewitt/branches/Github/PSyclone/.venv/bin/activate' %} {% set azspice_coupled_gnu = 'module load xios/2.2701-oasis ; '~ 'module load oasis' %}