**t_interpolation_state**
| name | state | dependencies, | usage |
|:-------------------- | ------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------------------------------------------------------- |
| rbf_vec_coeff_e | | [large] subroutine solve_chol_v, we should use a python library for it | mo_solve_nonhydro.f90, mo_velocity_advection.f89, mo_nh_deepatmo_solve.f90, `subroutine rbf_vec_compute_coeff_edge `in `mo_intp_rbf.f90` |
| rbf_vec_coeff_v | | [large]edges%cartesian_center,edges%center, (uses linear solver, we should use a python library call for this) | mo_intp_rbf.f90: inside `SUBROUTINE rbf_vec_interpol_vertex`, could be kept local |
| e_bln_c_s | | [unclear] where is that computed ? | |
| c_bln_avg | started | [medium] uses rotated lat, lon from subroutine rotate_latlon in mo_math_utilities.f90 , also there use python functionality, (implementation is not very diffucult though) | |
| pos_on_tplane_e_x, y | | [large]uses projections, can those be taken from a python library? | |
| cells_aw_verts | | [small]verts%dual_area, edges%edge_vert_length, edges%edge_vert_length (big loop with some boundary edge cases) | in a lot of interpolation calculations, diffusion , diagnostics sgs_turbulence |
**t_metric_state**
* **metric state** `mo_nonhydro_types.f90`>`t_nh_metrics`
cacluated in `atm_dyn_iconam/mo_vertical_grid.f90`
| Field | state | dependencies | used in |
|:----------------------- |:----- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------- |
| wgtfacq_c,wgtfacq_c_dsl | | metrics%z_ifc | dycore |
| wgtfacq_e_dsl | | | dycore |
| wgtfac_e | | exner_expol (config param), z_maxslp (ddxn_z_full), z_maxhgtd (ddxn_z_full, dual_edge_length): calculation straight forward | dycore |
| exner_exfac | | metrics%ddxn_z_full, metrics%z_ifc | dycore |
| d2dexdz2_fac1_mc | | [small] theta_ref_mc, inv_ddqz_z_full | |
| zdiff_gradp_dsl | | [medium]z_me, z_mc , computation simple but, conditions might be a bit complicated | |
| d2dexdz2_fac2_mc | | [small]theta_ref_mc, exner_ref_mc, z_mc, | |
| ddxn_z_half_e | | [small]z_ddxn_z_half_e = grad_fd_norm (z_ifc, inv_dual_edge_length):mo_math_gradients.f90, which is a simple finite difference gradient stencil | |
| ddxn_z_full | | [small]z_ddxn_z_half_e = grad_fd_norm (z_ifc) | |
| ddqz_z_full_e | | [medium]cells2edges(ddqz_z_full, c_lin_e): has some special lateral boundary handling otherwise does c_line_e * ddqz_z_full(C2E)) | |
| z_ifv | | [small] z_ifv = cells2verts_scalar(z_ifc,cells_aw_verts) | |
| ddxt_z_full | | [small]z_ddxt_z_half_e = grad_fd_tang(z_ifv, tangent_orientation, primal_edge_length):mo_math_gradients.f90, again finite difference gradient , z_ifv = cells2verts(z_ifc) | |
| coeff2_dwdz | | [small]ddqz_z_full, z_ifc | |
| coeff1_dwdz | | [ small]ddqz_z_full, z_ifc | only velocity_advection |
| scalfac_dd3d | | [medium]vct_a, depends on configuration: divdamp_type, divdamp_trans_start, divdamp_trans_end | |
| kstart_dd3d | | [small]scalar on patch, calculated together with scalfac_dd3d | |
| hmask_dd3d | | [large] refin_ctrl, grf_nudgezone_width, grf_nudge_start_e always a bit tedious, requires understanding the refin_ctrl thing , this is actually a boolean mask... | |
| vwind_impl_wgt | | [medium] depends on config vwind_offctr, z_ddxn_z_half_e. | |
| vwind_expl_wgt | | [small], 1 - vwind_impl_wgt | |
| rayleigh_w | | [large] depends a_vct, damping heights | |
| coeff_gradekin | | [small]edges%edge_cell_length, edges%inv_dual_edge_length(je,jb) , simple stencil | |
| pg_edgeidx_dsl | metrics: z_ifc , z_me = cells2edges_scalar(z_mc) | [large, but needed] index list computed together with pg_exdist_dsl | |
| pg_exdist_dsl | | [large, but needed]mask out of index list, those mask are normally constructed out of the index lists, we need to build them directly | |
| bdy_halo_c | | [large] mask from index list, check the difference between the halo_c masks | dycore |
| mask_prog_halo_c | | [large] mask from index list | |
| mask_hdiff | | [large] mask from index list | diffusion |
| zd_diffcoef_dsl | | [large] mask from index list, same list as for all the zd fields, some not-so-easy to understand loop | diffusion |
| zd_intcoef_dsl | | [small] | |
| zd_vertoffset_dsl | | [medium] | diffusion |
| vertoffset_gradp_dsl | | [large?] in same loop as z_mc vertical offset for vertidx_gradp , flat_idx | |
| | | | |
| | | | |