// 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);
}