---
# System prepended metadata

title: '  interpolation fields'
tags: [icon4py]

---



**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                                                                                                  |                         |
|                         |       |                                                                                                                                                                              |                         |
|                         |       |                                                                                                                                                                              |                         |

