function [mod_bp,i_scale,o_scale]=load_gzwd_bp_mod_paras(mod_opt)
%
% This subroutine is used to load model parameters for calculating zenith
% wet delays based on the BPNN-based GZWD_BP model. It must be placed ahead 
% of the for loop, which runs through all observations in order to avoid 
% time-consuming problem. 
%
% input parameters:
% mod_opt           I   model type (1: gzwd_bp_a; 2: gzwd_bp_b; 3: gzwd_bp_c)
% 
% output parameters:
% mod_bp            O   BPNN-based model coefficients
% i_scale           O   scales for the normalization of the input parameters, class
% o_scale       	O   scales for the normalization of the output parameters, class
%
% (c) Faculty of Geosciences and Environmental Engineering, Southwest
% Jiaotong University, 611756, P.R.China
% (c) Department of Higher Geodesy, Vienna University of Techonology (TU Wien),
% Wien 1040, Austria
%
% Qinzheng Li
% version 1, January 1, 2022
% version 2, Aug 1, 2022, (Global ZWD modeling based on the combination of 
% radiosonde measurements and GPS radio occultations)

switch (mod_opt)
    case (1)
        load(['gzwd_bp_A.mat'],'ipara_scale','opara_scale','net_bp');
        i_scale = ipara_scale; o_scale = opara_scale;
        mod_bp = net_bp;
        clear ipara_scale opara_scale net_bp;
    case (2)
        load(['gzwd_bp_B.mat'],'ipara_scale','opara_scale','net_bp');
        i_scale = ipara_scale; o_scale = opara_scale;
        mod_bp = net_bp;
        clear ipara_scale opara_scale net_bp;
    case {3}
        load(['gzwd_bp_C.mat'],'ipara_scale','opara_scale','net_bp');
        i_scale = ipara_scale; o_scale = opara_scale;
        mod_bp = net_bp;
        clear ipara_scale opara_scale net_bp;
    case {4}
        load(['gzwd_bp_D.mat'],'ipara_scale','opara_scale','net_bp');
        i_scale = ipara_scale; o_scale = opara_scale;
        mod_bp = net_bp;
        clear ipara_scale opara_scale net_bp;
end

end