src/cvmix/kpp.h

    // Generated automatically by cvmix.awk from
    // /home/basilisk-src/local/src/CVMix-src/src/shared/cvmix_kpp.F90
    
    typedef struct {
      cvmix_r8 opaque0; // ri_crit
      cvmix_r8 opaque1; // minobldepth
      cvmix_r8 opaque2; // maxobldepth
      cvmix_r8 opaque3; // minvtsqr
      cvmix_r8 opaque4; // vonkarman
      cvmix_r8 opaque5; // cstar
      cvmix_r8 opaque6; // nonlocal_coeff
      cvmix_r8 opaque7; // zeta_m
      cvmix_r8 opaque8; // zeta_s
      cvmix_r8 opaque9; // a_m
      cvmix_r8 opaque10; // c_m
      cvmix_r8 opaque11; // a_s
      cvmix_r8 opaque12; // c_s
      cvmix_r8 opaque13; // surf_layer_ext
      integer opaque14; // interp_type
      integer opaque15; // interp_type2
      cvmix_r8 opaque16; // cv
      integer opaque17; // matchtechnique
      integer opaque18; // handle_old_vals
      logical opaque19; // lscalar_cv
      logical opaque20; // lekman
      logical opaque21; // lmonob
      logical opaque22; // lnodgat1
      logical opaque23; // lenhanced_diff
      integer opaque24; // langmuir_mixing_opt
      integer opaque25; // langmuir_entrainment_opt
      logical opaque26; // l_lmd_ws
      cvmix_r8 opaque27; // c_lt
      cvmix_r8 opaque28; // c_st
      cvmix_r8 opaque29; // c_ct
      cvmix_r8 opaque30; // p_lt
      cvmix_r8 opaque31; // rwhgk_entr_coef
      cvmix_r8 opaque32; // rwhgk_entr_exp
    } cvmix_kpp_params_type;
    
    extern void __cvmix_kpp_MOD_cvmix_init_kpp (
      cvmix_r8 * ri_crit,
      cvmix_r8 * minobldepth,
      cvmix_r8 * maxobldepth,
      cvmix_r8 * minvtsqr,
      cvmix_r8 * vonkarman,
      cvmix_r8 * cstar,
      cvmix_r8 * zeta_m,
      cvmix_r8 * zeta_s,
      cvmix_r8 * surf_layer_ext,
      cvmix_r8 * cv,
      char * interp_type,
      char * interp_type2,
      char * matchtechnique,
      char * old_vals,
      logical * lekman,
      logical * lmonob,
      logical * lnodgat1,
      logical * lenhanced_diff,
      logical * lnonzero_surf_nonlocal,
      char * langmuir_mixing_str,
      char * langmuir_entrainment_str,
      logical * l_lmd_ws,
      cvmix_kpp_params_type * cvmix_kpp_params_user,
      long int _slinterp_type,
      long int _slinterp_type2,
      long int _slmatchtechnique,
      long int _slold_vals,
      long int _sllangmuir_mixing_str,
      long int _sllangmuir_entrainment_str
    );
    
    struct _cvmix_init_kpp {
      cvmix_r8 * ri_crit;
      cvmix_r8 * minobldepth;
      cvmix_r8 * maxobldepth;
      cvmix_r8 * minvtsqr;
      cvmix_r8 * vonkarman;
      cvmix_r8 * cstar;
      cvmix_r8 * zeta_m;
      cvmix_r8 * zeta_s;
      cvmix_r8 * surf_layer_ext;
      cvmix_r8 * cv;
      char * interp_type;
      char * interp_type2;
      char * matchtechnique;
      char * old_vals;
      logical * lekman;
      logical * lmonob;
      logical * lnodgat1;
      logical * lenhanced_diff;
      logical * lnonzero_surf_nonlocal;
      char * langmuir_mixing_str;
      char * langmuir_entrainment_str;
      logical * l_lmd_ws;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_init_kpp (struct _cvmix_init_kpp p) {
      __cvmix_kpp_MOD_cvmix_init_kpp (p.ri_crit, p.minobldepth, p.maxobldepth, p.minvtsqr, p.vonkarman, p.cstar, p.zeta_m, p.zeta_s, p.surf_layer_ext, p.cv, p.interp_type, p.interp_type2, p.matchtechnique, p.old_vals, p.lekman, p.lmonob, p.lnodgat1, p.lenhanced_diff, p.lnonzero_surf_nonlocal, p.langmuir_mixing_str, p.langmuir_entrainment_str, p.l_lmd_ws, p.cvmix_kpp_params_user, strlencheck(p.interp_type), strlencheck(p.interp_type2), strlencheck(p.matchtechnique), strlencheck(p.old_vals), strlencheck(p.langmuir_mixing_str), strlencheck(p.langmuir_entrainment_str));
    }
    
    extern void __cvmix_kpp_MOD_cvmix_coeffs_kpp_wrap (
      cvmix_data_type * cvmix_vars,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_coeffs_kpp_wrap {
      cvmix_data_type * cvmix_vars;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_coeffs_kpp_wrap (struct _cvmix_coeffs_kpp_wrap p) {
      __cvmix_kpp_MOD_cvmix_coeffs_kpp_wrap (p.cvmix_vars, p.cvmix_kpp_params_user);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_coeffs_kpp_low (
      cvmix_r8 * mdiff_out,
      cvmix_r8 * tdiff_out,
      cvmix_r8 * sdiff_out,
      cvmix_r8 * zw,
      cvmix_r8 * zt,
      cvmix_r8 * old_mdiff,
      cvmix_r8 * old_tdiff,
      cvmix_r8 * old_sdiff,
      cvmix_r8 * obl_depth,
      cvmix_r8 * kobl_depth,
      cvmix_r8 * tnonlocal,
      cvmix_r8 * snonlocal,
      cvmix_r8 * surf_fric,
      cvmix_r8 * surf_buoy,
      integer * nlev,
      integer * max_nlev,
      cvmix_r8 * langmuir_efactor,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_coeffs_kpp_low {
      cvmix_r8 * mdiff_out;
      cvmix_r8 * tdiff_out;
      cvmix_r8 * sdiff_out;
      cvmix_r8 * zw;
      cvmix_r8 * zt;
      cvmix_r8 * old_mdiff;
      cvmix_r8 * old_tdiff;
      cvmix_r8 * old_sdiff;
      cvmix_r8 * obl_depth;
      cvmix_r8 * kobl_depth;
      cvmix_r8 * tnonlocal;
      cvmix_r8 * snonlocal;
      cvmix_r8 * surf_fric;
      cvmix_r8 * surf_buoy;
      integer * nlev;
      integer * max_nlev;
      cvmix_r8 * langmuir_efactor;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_coeffs_kpp_low (struct _cvmix_coeffs_kpp_low p) {
      __cvmix_kpp_MOD_cvmix_coeffs_kpp_low (p.mdiff_out, p.tdiff_out, p.sdiff_out, p.zw, p.zt, p.old_mdiff, p.old_tdiff, p.old_sdiff, p.obl_depth, p.kobl_depth, p.tnonlocal, p.snonlocal, p.surf_fric, p.surf_buoy, p.nlev, p.max_nlev, p.langmuir_efactor, p.cvmix_kpp_params_user);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_put_kpp_real (
      char * varname,
      cvmix_r8 * val,
      cvmix_kpp_params_type * cvmix_kpp_params_user,
      long int _slvarname
    );
    
    struct _cvmix_put_kpp_real {
      char * varname;
      cvmix_r8 * val;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_put_kpp_real (struct _cvmix_put_kpp_real p) {
      __cvmix_kpp_MOD_cvmix_put_kpp_real (p.varname, p.val, p.cvmix_kpp_params_user, strlencheck(p.varname));
    }
    
    extern void __cvmix_kpp_MOD_cvmix_put_kpp_int (
      char * varname,
      integer * val,
      cvmix_kpp_params_type * cvmix_kpp_params_user,
      long int _slvarname
    );
    
    struct _cvmix_put_kpp_int {
      char * varname;
      integer * val;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_put_kpp_int (struct _cvmix_put_kpp_int p) {
      __cvmix_kpp_MOD_cvmix_put_kpp_int (p.varname, p.val, p.cvmix_kpp_params_user, strlencheck(p.varname));
    }
    
    extern void __cvmix_kpp_MOD_cvmix_put_kpp_logical (
      char * varname,
      logical * val,
      cvmix_kpp_params_type * cvmix_kpp_params_user,
      long int _slvarname
    );
    
    struct _cvmix_put_kpp_logical {
      char * varname;
      logical * val;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_put_kpp_logical (struct _cvmix_put_kpp_logical p) {
      __cvmix_kpp_MOD_cvmix_put_kpp_logical (p.varname, p.val, p.cvmix_kpp_params_user, strlencheck(p.varname));
    }
    
    extern cvmix_r8 __cvmix_kpp_MOD_cvmix_get_kpp_real (
      char * varname,
      cvmix_kpp_params_type * cvmix_kpp_params_user,
      long int _slvarname
    );
    
    struct _cvmix_get_kpp_real {
      char * varname;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    cvmix_r8 cvmix_get_kpp_real (struct _cvmix_get_kpp_real p) {
      return __cvmix_kpp_MOD_cvmix_get_kpp_real (p.varname, p.cvmix_kpp_params_user, strlencheck(p.varname));
    }
    
    extern void __cvmix_kpp_MOD_cvmix_kpp_compute_obl_depth_low (
      cvmix_1d * ri_bulk,
      cvmix_1d * zw_iface,
      cvmix_r8 * obl_depth,
      cvmix_r8 * kobl_depth,
      cvmix_1d * zt_cntr,
      cvmix_r8 * surf_fric,
      cvmix_r8 * surf_buoy,
      cvmix_r8 * coriolis,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_kpp_compute_obl_depth_low {
      cvmix_1d * ri_bulk;
      cvmix_1d * zw_iface;
      cvmix_r8 * obl_depth;
      cvmix_r8 * kobl_depth;
      cvmix_1d * zt_cntr;
      cvmix_r8 * surf_fric;
      cvmix_r8 * surf_buoy;
      cvmix_r8 * coriolis;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_kpp_compute_obl_depth_low (struct _cvmix_kpp_compute_obl_depth_low p) {
      __cvmix_kpp_MOD_cvmix_kpp_compute_obl_depth_low (p.ri_bulk, p.zw_iface, p.obl_depth, p.kobl_depth, p.zt_cntr, p.surf_fric, p.surf_buoy, p.coriolis, p.cvmix_kpp_params_user);
    }
    
    extern cvmix_r8 __cvmix_kpp_MOD_cvmix_kpp_compute_kobl_depth (
      cvmix_1d * zw_iface,
      cvmix_1d * zt_cntr,
      cvmix_r8 * obl_depth
    );
    
    struct _cvmix_kpp_compute_kobl_depth {
      cvmix_1d * zw_iface;
      cvmix_1d * zt_cntr;
      cvmix_r8 * obl_depth;
    };
    cvmix_r8 cvmix_kpp_compute_kobl_depth (struct _cvmix_kpp_compute_kobl_depth p) {
      return __cvmix_kpp_MOD_cvmix_kpp_compute_kobl_depth (p.zw_iface, p.zt_cntr, p.obl_depth);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_kpp_compute_enhanced_diff (
      cvmix_r8 * mdiff_ktup,
      cvmix_r8 * tdiff_ktup,
      cvmix_r8 * sdiff_ktup,
      cvmix_r8 * mdiff,
      cvmix_r8 * tdiff,
      cvmix_r8 * sdiff,
      cvmix_r8 * obl_mdiff,
      cvmix_r8 * obl_tdiff,
      cvmix_r8 * obl_sdiff,
      cvmix_r8 * tnonlocal,
      cvmix_r8 * snonlocal,
      cvmix_r8 * delta,
      logical * lkteqkw
    );
    
    struct _cvmix_kpp_compute_enhanced_diff {
      cvmix_r8 * mdiff_ktup;
      cvmix_r8 * tdiff_ktup;
      cvmix_r8 * sdiff_ktup;
      cvmix_r8 * mdiff;
      cvmix_r8 * tdiff;
      cvmix_r8 * sdiff;
      cvmix_r8 * obl_mdiff;
      cvmix_r8 * obl_tdiff;
      cvmix_r8 * obl_sdiff;
      cvmix_r8 * tnonlocal;
      cvmix_r8 * snonlocal;
      cvmix_r8 * delta;
      logical * lkteqkw;
    };
    void cvmix_kpp_compute_enhanced_diff (struct _cvmix_kpp_compute_enhanced_diff p) {
      __cvmix_kpp_MOD_cvmix_kpp_compute_enhanced_diff (p.mdiff_ktup, p.tdiff_ktup, p.sdiff_ktup, p.mdiff, p.tdiff, p.sdiff, p.obl_mdiff, p.obl_tdiff, p.obl_sdiff, p.tnonlocal, p.snonlocal, p.delta, p.lkteqkw);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_kpp_compute_obl_depth_wrap (
      cvmix_data_type * cvmix_vars,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_kpp_compute_obl_depth_wrap {
      cvmix_data_type * cvmix_vars;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_kpp_compute_obl_depth_wrap (struct _cvmix_kpp_compute_obl_depth_wrap p) {
      __cvmix_kpp_MOD_cvmix_kpp_compute_obl_depth_wrap (p.cvmix_vars, p.cvmix_kpp_params_user);
    }
    
    extern void cvmix_kpp_mod_cvmix_kpp_compute_bulk_richardson_func_ (
      cvmix_r8 * cvmix_kpp_compute_bulk_richardson,
      cvmix_1d * zt_cntr,
      cvmix_1d * delta_buoy_cntr,
      cvmix_1d * delta_vsqr_cntr,
      cvmix_r8 * vt_sqr_cntr,
      cvmix_r8 * ws_cntr,
      cvmix_r8 * n_iface,
      cvmix_r8 * nsqr_iface,
      cvmix_r8 * efactor,
      cvmix_r8 * lasl,
      cvmix_r8 * bfsfc,
      cvmix_r8 * ustar,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_kpp_compute_bulk_richardson {
      cvmix_r8 * cvmix_kpp_compute_bulk_richardson;
      cvmix_1d * zt_cntr;
      cvmix_1d * delta_buoy_cntr;
      cvmix_1d * delta_vsqr_cntr;
      cvmix_r8 * vt_sqr_cntr;
      cvmix_r8 * ws_cntr;
      cvmix_r8 * n_iface;
      cvmix_r8 * nsqr_iface;
      cvmix_r8 * efactor;
      cvmix_r8 * lasl;
      cvmix_r8 * bfsfc;
      cvmix_r8 * ustar;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_kpp_compute_bulk_richardson (struct _cvmix_kpp_compute_bulk_richardson p) {
      cvmix_kpp_mod_cvmix_kpp_compute_bulk_richardson_func_ (p.cvmix_kpp_compute_bulk_richardson, p.zt_cntr, p.delta_buoy_cntr, p.delta_vsqr_cntr, p.vt_sqr_cntr, p.ws_cntr, p.n_iface, p.nsqr_iface, p.efactor, p.lasl, p.bfsfc, p.ustar, p.cvmix_kpp_params_user);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_kpp_compute_turbulent_scales_0d (
      cvmix_r8 * sigma_coord,
      cvmix_r8 * obl_depth,
      cvmix_r8 * surf_buoy_force,
      cvmix_r8 * surf_fric_vel,
      cvmix_r8 * w_m,
      cvmix_r8 * w_s,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_kpp_compute_turbulent_scales_0d {
      cvmix_r8 * sigma_coord;
      cvmix_r8 * obl_depth;
      cvmix_r8 * surf_buoy_force;
      cvmix_r8 * surf_fric_vel;
      cvmix_r8 * w_m;
      cvmix_r8 * w_s;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_kpp_compute_turbulent_scales_0d (struct _cvmix_kpp_compute_turbulent_scales_0d p) {
      __cvmix_kpp_MOD_cvmix_kpp_compute_turbulent_scales_0d (p.sigma_coord, p.obl_depth, p.surf_buoy_force, p.surf_fric_vel, p.w_m, p.w_s, p.cvmix_kpp_params_user);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_kpp_compute_turbulent_scales_1d_sigma (
      cvmix_1d * sigma_coord,
      cvmix_r8 * obl_depth,
      cvmix_r8 * surf_buoy_force,
      cvmix_r8 * surf_fric_vel,
      cvmix_r8 * w_m,
      cvmix_r8 * w_s,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_kpp_compute_turbulent_scales_1d_sigma {
      cvmix_1d * sigma_coord;
      cvmix_r8 * obl_depth;
      cvmix_r8 * surf_buoy_force;
      cvmix_r8 * surf_fric_vel;
      cvmix_r8 * w_m;
      cvmix_r8 * w_s;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_kpp_compute_turbulent_scales_1d_sigma (struct _cvmix_kpp_compute_turbulent_scales_1d_sigma p) {
      __cvmix_kpp_MOD_cvmix_kpp_compute_turbulent_scales_1d_sigma (p.sigma_coord, p.obl_depth, p.surf_buoy_force, p.surf_fric_vel, p.w_m, p.w_s, p.cvmix_kpp_params_user);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_kpp_compute_turbulent_scales_1d_obl (
      cvmix_r8 * sigma_coord,
      cvmix_1d * obl_depth,
      cvmix_1d * surf_buoy_force,
      cvmix_r8 * surf_fric_vel,
      cvmix_r8 * w_m,
      cvmix_r8 * w_s,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_kpp_compute_turbulent_scales_1d_obl {
      cvmix_r8 * sigma_coord;
      cvmix_1d * obl_depth;
      cvmix_1d * surf_buoy_force;
      cvmix_r8 * surf_fric_vel;
      cvmix_r8 * w_m;
      cvmix_r8 * w_s;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_kpp_compute_turbulent_scales_1d_obl (struct _cvmix_kpp_compute_turbulent_scales_1d_obl p) {
      __cvmix_kpp_MOD_cvmix_kpp_compute_turbulent_scales_1d_obl (p.sigma_coord, p.obl_depth, p.surf_buoy_force, p.surf_fric_vel, p.w_m, p.w_s, p.cvmix_kpp_params_user);
    }
    
    extern void cvmix_kpp_mod_cvmix_kpp_compute_unresolved_shear_func_ (
      cvmix_r8 * cvmix_kpp_compute_unresolved_shear,
      cvmix_1d * zt_cntr,
      cvmix_1d * ws_cntr,
      cvmix_r8 * n_iface,
      cvmix_r8 * nsqr_iface,
      cvmix_r8 * efactor,
      cvmix_r8 * lasl,
      cvmix_r8 * bfsfc,
      cvmix_r8 * ustar,
      cvmix_kpp_params_type * cvmix_kpp_params_user
    );
    
    struct _cvmix_kpp_compute_unresolved_shear {
      cvmix_r8 * cvmix_kpp_compute_unresolved_shear;
      cvmix_1d * zt_cntr;
      cvmix_1d * ws_cntr;
      cvmix_r8 * n_iface;
      cvmix_r8 * nsqr_iface;
      cvmix_r8 * efactor;
      cvmix_r8 * lasl;
      cvmix_r8 * bfsfc;
      cvmix_r8 * ustar;
      cvmix_kpp_params_type * cvmix_kpp_params_user;
    };
    void cvmix_kpp_compute_unresolved_shear (struct _cvmix_kpp_compute_unresolved_shear p) {
      cvmix_kpp_mod_cvmix_kpp_compute_unresolved_shear_func_ (p.cvmix_kpp_compute_unresolved_shear, p.zt_cntr, p.ws_cntr, p.n_iface, p.nsqr_iface, p.efactor, p.lasl, p.bfsfc, p.ustar, p.cvmix_kpp_params_user);
    }
    
    extern void __cvmix_kpp_MOD_cvmix_kpp_compute_shape_function_coeffs (
      cvmix_r8 * gat1,
      cvmix_r8 * dgat1,
      cvmix_r8 * coeffs
    );
    
    struct _cvmix_kpp_compute_shape_function_coeffs {
      cvmix_r8 * gat1;
      cvmix_r8 * dgat1;
      cvmix_r8 * coeffs;
    };
    void cvmix_kpp_compute_shape_function_coeffs (struct _cvmix_kpp_compute_shape_function_coeffs p) {
      __cvmix_kpp_MOD_cvmix_kpp_compute_shape_function_coeffs (p.gat1, p.dgat1, p.coeffs);
    }
    
    extern cvmix_r8 __cvmix_kpp_MOD_cvmix_kpp_compute_nu_at_obl_depth_lmd94 (
      cvmix_r8 * depths_cntr,
      cvmix_r8 * layer_widths,
      cvmix_r8 * diffs_iface,
      cvmix_r8 * obl_depth,
      cvmix_r8 * diff_2above,
      cvmix_r8 * dnu_dz
    );
    
    struct _cvmix_kpp_compute_nu_at_obl_depth_lmd94 {
      cvmix_r8 * depths_cntr;
      cvmix_r8 * layer_widths;
      cvmix_r8 * diffs_iface;
      cvmix_r8 * obl_depth;
      cvmix_r8 * diff_2above;
      cvmix_r8 * dnu_dz;
    };
    cvmix_r8 cvmix_kpp_compute_nu_at_obl_depth_lmd94 (struct _cvmix_kpp_compute_nu_at_obl_depth_lmd94 p) {
      return __cvmix_kpp_MOD_cvmix_kpp_compute_nu_at_obl_depth_lmd94 (p.depths_cntr, p.layer_widths, p.diffs_iface, p.obl_depth, p.diff_2above, p.dnu_dz);
    }
    
    extern cvmix_r8 __cvmix_kpp_MOD_cvmix_kpp_efactor_model (
      cvmix_r8 * u10,
      cvmix_r8 * ustar,
      cvmix_r8 * hbl,
      cvmix_global_params_type * cvmix_params_in
    );
    
    struct _cvmix_kpp_efactor_model {
      cvmix_r8 * u10;
      cvmix_r8 * ustar;
      cvmix_r8 * hbl;
      cvmix_global_params_type * cvmix_params_in;
    };
    cvmix_r8 cvmix_kpp_efactor_model (struct _cvmix_kpp_efactor_model p) {
      return __cvmix_kpp_MOD_cvmix_kpp_efactor_model (p.u10, p.ustar, p.hbl, p.cvmix_params_in);
    }
    
    extern cvmix_r8 __cvmix_kpp_MOD_cvmix_kpp_ustokes_sl_model (
      cvmix_r8 * u10,
      cvmix_r8 * hbl,
      cvmix_global_params_type * cvmix_params_in
    );
    
    struct _cvmix_kpp_ustokes_sl_model {
      cvmix_r8 * u10;
      cvmix_r8 * hbl;
      cvmix_global_params_type * cvmix_params_in;
    };
    cvmix_r8 cvmix_kpp_ustokes_sl_model (struct _cvmix_kpp_ustokes_sl_model p) {
      return __cvmix_kpp_MOD_cvmix_kpp_ustokes_sl_model (p.u10, p.hbl, p.cvmix_params_in);
    }