# grid_manager,icon4py: t_patch fields needed in dycore, diffusion, interpolation | Field | category | grid manager | icon4py | namelist | |:----------------------------------------------------------------------- |:-------- |:-------------------------------- |:----------------------------- | -------- | | num_cells, (for global and local patch) | | available, tbd for global ones | | | | nlev | | | | y | | num_edges (for global and local patch) | | available, tbd for global ones | | | | num_verts (for global and local patch) | | available, tbd for global ones | | | | cell_areas=p_patch(jg)%cells%area(:,:) | derived | available, derived | | | | mean_cell_area | derived | | y , involves global reduction | | | c2e=p_patch(jg)%cells%edge_idx | | available | | | | c2e2c=p_patch(jg)%cells%neighbor_idx | | available | | | | c2v=p_patch(jg)%cells%vertex_idx | | available | | | | c,e,v_start_index | | available | | | | c, e, v_end_index | | available | | | | c, e, v_refin_ctl | | tbd, needed? | | | | c_owner_mask | | available | | | | e, v_owner_mask | | tbd | | | | c_glb_index | | available | | | | e,v_glb_index | | available | | | | c_decomp_domain | | available | | | | e,v_decomp_domain | | avaible | | | | cells%center | | availble | | | | cells_edge_orientation=cells%edge_orientation | | available, derived | | | | edges%area_edge | | | y | | | tangent_orientation=p_patch(jg)%edges%tangent_orientation | | == 1 everywhere, in grid_manager | | | | edges%inv_primal_edge_length | | | y | | | edges%primal_edge_length | | available, derived | | | | edges%edge_cell_length | | available, derived | | | | edges%cartesian_center | | available, derived | y | | | edges%edge_vert_length | | | y | | | edges%edge_cell_length | | tbd, derived | | y | | edges%center | | available | | | | edges%dual_edge_length | | available, derived | | | | edges%inv_dual_edge_length | | | y | | | edges%vert_vert_length | | | y | | | edges%inv_vert_vert_length | | | y | | | edges%primal_normal_vert_x,y | | | y | | | edges%dual_normal_vert_x,y | | | y | | | edges%dual_normal_cell_x,y | | | y | | | edges%primal_normal_cell | | | y | | | edges%dual_normal | | available, derived | | | | edges%primal_cart_normal (cartesian verions for edges%primal_normal) | | available, derived | y | | | edges%primal_normal | | available, derived | | | | edges%primal_cart_normal | | tbd, derived | | | | e2v, e2c2v=p_patch(jg)%edges%vertex_idx(:,1,:) | | available | | | | e2c | | available | | | | e2c2e , edges%quad_idx( | | tbd | | | | edges%f_e | | | y | | | v2e | | tbd | | | | v2c | | | tbd | | | verts%num_edges | | tbd | | | | verts%dual_area | | | y | | | verts%edge_orientation | | tbd | | | | verts%cartesian | | available, derived | y | | | verts%vertex | | available, | | | | p_patch(jg)%boundary_depth_index | | | | y | | | | | | | | | | | | | ## open !$ser data nshift_total=p_patch(jg)%nshift_total !$ser data nshift=p_patch(jg)%nshift - can this 2 be set to 0 for exclaim, are they ever going to be used ### all fields from t_patch ``` !$ser data num_cells=p_patch(jg)%n_patch_cells !$ser data num_edges=p_patch(jg)%n_patch_edges !$ser data num_vert=p_patch(jg)%n_patch_verts !$ser data nlev=p_patch(jg)%nlev !$ser data nshift_total=p_patch(jg)%nshift_total !$ser data nshift=p_patch(jg)%nshift !$ser data mean_cell_area=p_patch(jg)%geometry_info%mean_cell_area !$ser data cell_areas=p_patch(jg)%cells%area(:,:) !$ser data c2e=p_patch(jg)%cells%edge_idx(:,1,:) !$ser data c2e2c=p_patch(jg)%cells%neighbor_idx(:,1,:) !$ser data c2v=p_patch(jg)%cells%vertex_idx(:,1,:) !$ser data c_start_index=p_patch(jg)%cells%start_index !$ser data c_end_index=p_patch(jg)%cells%end_index !$ser data c_refin_ctl=p_patch(jg)%cells%refin_ctrl !$ser data c_owner_mask=p_patch(jg)%cells%decomp_info%owner_mask !$ser data c_glb_index=p_patch(jg)%cells%decomp_info%glb_index !$ser data c_decomp_domain=p_patch(jg)%cells%decomp_info%decomp_domain !$ser data cells_edge_orientation=p_patch(jg)%cells%edge_orientation !$ser data edge_areas=p_patch(jg)%edges%area_edge(:,:) !$ser data tangent_orientation=p_patch(jg)%edges%tangent_orientation(:,:) !$ser data inv_primal_edge_length=p_patch(jg)%edges%inv_primal_edge_length(:,:) !$ser data edge_cell_length=p_patch(jg)%edges%edge_cell_length !$ser data primal_edge_length=p_patch(jg)%edges%primal_edge_length(:,:) !$ser data inv_dual_edge_length=p_patch(jg)%edges%inv_dual_edge_length(:,:) !$ser data dual_edge_length=p_patch(jg)%edges%dual_edge_length(:,:) !$ser data inv_vert_vert_length=p_patch(jg)%edges%inv_vert_vert_length(:,:) !$ser data primal_normal_vert_x=p_patch(jg)%edges%primal_normal_vert_x(:,:,:) !$ser data primal_normal_vert_y=p_patch(jg)%edges%primal_normal_vert_y(:,:,:) !$ser data dual_normal_vert_x=p_patch(jg)%edges%dual_normal_vert_x(:,:,:) !$ser data dual_normal_vert_y=p_patch(jg)%edges%dual_normal_vert_y(:,:,:) !$ser data e2v=p_patch(jg)%edges%vertex_idx(:,1,:) !$ser data e2c2v=p_patch(jg)%edges%vertex_idx(:,1,:) !$ser data e2c=p_patch(jg)%edges%cell_idx(:,1,:) !$ser data e_owner_mask=p_patch(jg)%edges%decomp_info%owner_mask !$ser data e_glb_index=p_patch(jg)%edges%decomp_info%glb_index !$ser data e_decomp_domain=p_patch(jg)%edges%decomp_info%decomp_domain !$ser data e_start_index=p_patch(jg)%edges%start_index !$ser data e_end_index=p_patch(jg)%edges%end_index !$ser data e_refin_ctl=p_patch(jg)%edges%refin_ctrl !$ser data e2c2e=p_patch(jg)%edges%quad_idx(:,1,:) !$ser data f_e=p_patch(jg)%edges%f_e !$ser data dual_normal_cell_x=p_patch(jg)%edges%dual_normal_cell_x !$ser data dual_normal_cell_y=p_patch(jg)%edges%dual_normal_cell_y !$ser data primal_normal_cell_x=p_patch(jg)%edges%primal_normal_cell_x !$ser data primal_normal_cell_y=p_patch(jg)%edges%primal_normal_cell_y !$ser data v2e=p_patch(jg)%verts%edge_idx(:,1,:) !$ser data v2c=p_patch(jg)%verts%cell_idx(:,1,:) !$ser data v_num_edges=p_patch(jg)%verts%num_edges !$ser data v_dual_area=p_patch(jg)%verts%dual_area !$ser data v_edge_orientation=p_patch(jg)%verts%edge_orientation !$ser data v_start_index=p_patch(jg)%verts%start_index !$ser data v_end_index=p_patch(jg)%verts%end_index !$ser data v_refin_ctl=p_patch(jg)%verts%refin_ctrl !$ser data v_owner_mask=p_patch(jg)%verts%decomp_info%owner_mask !$ser data v_glb_index=p_patch(jg)%verts%decomp_info%glb_index !$ser data v_decomp_domain=p_patch(jg)%verts%decomp_info%decomp_domain !$ser data boundary_depth_index=p_patch(jg)%boundary_depth_index !$ser data n_patch_cells_g=p_patch(jg)%n_patch_cells_g !$ser data n_patch_edges_g=p_patch(jg)%n_patch_edges_g !$ser data n_patch_verts_g=p_patch(jg)%n_patch_verts_g ``` ### interpolation | Field | dimensions | dependencies | icon4py | |:--------------------------------------------------------- |:------------------------------ |:----------------------------------- |:--------- | | ~p_int_state(jg)%rbf_vec_idx_v_1, v_2~~ | [VertexDim, V2EDim] | | | | p_int_state(jg)%rbf_vec_coeff_v_1, v_2 | [VertexDim, V2EDim] | edges%cartesian_center,edges%center | | | p_int_state(jg)%rbf_vec_coeff_e_dsl | [EdgeDim, E2C2EDim] | | | | p_int_state(jg)%geofac_div | [CEDim] = [CellDim, C2EDim] | | | | p_int_state(jg)%geofac_n2s, separate into centers and nbh | [CellDim], [CellDim, C2E2CDim] | | | | p_int_state(jg)%geofac_grg | 2x [CellDim, C2E2CODim] | | | | p_int_state(jg)%geofac_rot | [VertexDim, V2EDim] | | | | p_int_state(jg)%geofac_grdiv | [EdgeDim, E2C2EODim] | | | | p_int_state(jg)%nudgecoeff_e | [EdgeDim] | | | | p_int_state(jg)%c_lin_e | | | available | | p_int_state(jg)%cells_aw_verts | | | | | p_int_state(jg)%pos_on_tplane_e_x, y | [ECDim] = [EdgeDim, E2CDim] | | | | p_int_state(jg)%e_flx_avg | [EdgeDim, E2C2EODim] | | | | p_int_state(jg)%e_bln_c_s | [CellDim, C2EDim] | | | ### metrics | Field | Dimensions | dependencies | used in | |:----------------------- |:---------------------- |:--------------------------------------------------------- |:---------- | | wgtfac_c | [CellDim, KDim] nlevp1 | metrics%z_ifc, | diffusion, | | wgtfacq_c,wgtfacq_c_dsl | [CellDim, KDim] | metrics%z_ifc | dycore | | wgtfacq_e_dsl | [EdgeDim, KDim] | | dycore | | wgtfac_e | [EdgeDim, KDim] | | dycore | | exner_exfac | [CellDim, KDim] | metrics%ddxn_z_full, metrics%z_ifc | dycore | | exner_ref_mc | [CellDim, KDim] | | | | rho_ref_mc | [CellDim, KDim] | | | | rho_ref_me | [CellDim, KDim] | | | | theta_ref_mc | [CellDim, KDim] | | | | theta_ref_me | [EdgeDim, KDim] | | | | theta_ref_ic | [CellDim, KDim] | | | | d_exner_dz_ref_ic | [CellDim, KDim] | | | | ddqz_z_half | [CellDim, KDim] | | | | d2dexdz2_fac1_mc | [CellDim, KDim] | | | | ddxn_z_full | [EdgeDim, KDim] | | | | ddqz_z_full_e | [EdgeDim, KDim] | | | | ddxt_z_full | [EdgeDim, KDim] | | | | inv_ddqz_z_full | [CellDim, KDim] | | | | coeff1_dwdz | [CellDim, KDim] | | | | scalfac_dd3d | [KDim] | | | | hmask_dd3d | [EdgeDim] | | | | vwind_impl_wgt | [CellDim] | | | | vwind_expl_wgt | [CellDim] | | | | pg_exdist | [EdgeDim, KDim] | | | | ipeidx_dsl | [EdgeDim, KDim] | | | | mask_hdiff | [CellDim, KDim] | | diffusion | | zd_diffcoef | [CellDim, KDim] | | diffusion | | theta_ref_mc | [CellDim, KDim] | T | diffusion | | bdy_halo_c | [CellDim] | | dycore | | mask_prog_halo_c | [CellDim, KDim] | | | | coeff2_dwdz | [CellDim, KDim] | | | | rayleigh_w | [KDim] | | | | | | | | | zd_intcoef | [CECDim, KDim] | | | | zd_vertoffset | [CECDim, KDim] | | diffusion | | coeff_gradekin | [ECDim] | edges%edge_cell_length, edges%inv_dual_edge_length(je,jb) | | | vertoffset_gradp | [ECDim, KDim] | | | | zdiff_gradp | [ECDim, KDim] | | | | | | | | | | | | | ## serialization metrics%z_ifc