function Direct_Steam_Linear_Fresnel
	function [result] = ssccall(action, arg0, arg1, arg2 )
    [pathstr, fn, fext] = fileparts(mfilename('fullpath'));
        ssclibpath = './';
        ssclib = 'ssc';
    if ~libisloaded(ssclib)
        oldFolder = cd(pathstr);
        loadlibrary(strcat(ssclibpath,ssclib),strcat(ssclibpath,'sscapi.h'));
        cd(oldFolder);
    end
    if strcmp(action,'load')
        if ~libisloaded(ssclib)
            oldFolder = cd(pathstr);
            loadlibrary(strcat(ssclibpath,ssclib),strcat(ssclibpath,'../sscapi.h'));
            cd(oldFolder);
        end
    elseif strcmp(action,'unload')
        if libisloaded(ssclib)
            unloadlibrary(ssclib)    
        end
    elseif strcmp(action,'version')
        result = calllib(ssclib,'ssc_version');
    elseif strcmp(action,'build_info')
        result = calllib(ssclib, 'ssc_build_info');
    elseif strcmp(action,'data_create')
        result = calllib(ssclib, 'ssc_data_create');
        if ( isnullpointer(result) )
            result = 0;
        end
    elseif strcmp(action,'data_free')
        result = calllib(ssclib, 'ssc_data_free', arg0);
    elseif strcmp(action,'data_unassign')
        result = calllib(ssclib, 'ssc_data_unassign', arg0, arg1);
    elseif strcmp(action,'data_query')
        result = calllib(ssclib, 'ssc_data_query', arg0, arg1 );
    elseif strcmp(action,'data_first')
        result = calllib(ssclib, 'ssc_data_first', arg0 );
    elseif strcmp(action,'data_next')
        result = calllib(ssclib, 'ssc_data_next', arg0 );
    elseif strcmp(action,'data_set_string')
        result = calllib(ssclib, 'ssc_data_set_string', arg0, arg1, arg2 );
    elseif strcmp(action,'data_set_number')
        result = calllib(ssclib, 'ssc_data_set_number', arg0, arg1, single(arg2) );
    elseif strcmp(action,'data_set_array')
        len = length(arg2);
        arr = libpointer( 'singlePtr', arg2 );
        result = calllib(ssclib,'ssc_data_set_array',arg0,arg1,arr,len);
    elseif strcmp(action,'data_set_matrix')
        [nr nc] = size(arg2);
        mat = zeros(nr*nc, 1);
        ii = 1;
        for r=1:nr,
            for c=1:nc,
                mat(ii) = arg2(r,c);
                ii=ii+1;
            end
        end
        arr = libpointer( 'singlePtr', mat );
        result = calllib(ssclib,'ssc_data_set_matrix',arg0,arg1,arr,nr,nc);
    elseif strcmp(action,'data_set_table')
        result = calllib(ssclib,'ssc_data_set_table',arg0,arg1,arg2);
    elseif strcmp(action,'data_get_string')
        result = calllib(ssclib,'ssc_data_get_string',arg0,arg1);
    elseif strcmp(action,'data_get_number')
         p = libpointer('singlePtr',0);
         calllib(ssclib,'ssc_data_get_number', arg0,arg1,p);
         result = get(p,'Value');
    elseif strcmp(action,'data_get_array')
        p_count = libpointer('int32Ptr',0);   
        [xobj] = calllib(ssclib,'ssc_data_get_array',arg0,arg1,p_count);
        setdatatype(xobj,'int32Ptr',p_count.Value,1);
        len = p_count.Value;
        result = zeros( len, 1 );
        for i=1:len,
            pidx = xobj+(i-1);
            setdatatype(pidx,'singlePtr',1,1);
            result(i) = pidx.Value;
        end
    elseif strcmp(action,'data_get_matrix')
        p_rows = libpointer('int32Ptr',0);
        p_cols = libpointer('int32Ptr',0);
        [xobj] = calllib(ssclib,'ssc_data_get_matrix',arg0,arg1,p_rows,p_cols);
        setdatatype(xobj,'int32Ptr',p_rows.Value*p_cols.Value,1);
        nrows = p_rows.Value;
        ncols = p_cols.Value;
        if ( nrows*ncols > 0 )
            result = zeros( nrows, ncols );
            ii=1;
            for r=1:nrows,
                for c=1:ncols,
                    pidx = xobj+(ii-1);
                    setdatatype(pidx,'singlePtr',1,1);
                    result(r,c) = pidx.Value;
                    ii=ii+1;
                end
            end
        end
    elseif strcmp(action,'data_get_table')
        result = calllib(ssclib,'ssc_data_get_table',arg0,arg1);
    elseif strcmp(action,'module_entry')
        result = calllib(ssclib,'ssc_module_entry',arg0);
        if isnullpointer( result ),
            result = 0;
        end
    elseif strcmp(action,'entry_name')
        result = calllib(ssclib,'ssc_entry_name',arg0);
    elseif strcmp(action,'entry_description')
        result = calllib(ssclib,'ssc_entry_description',arg0);
    elseif strcmp(action,'entry_version')
        result = calllib(ssclib,'ssc_entry_version',arg0);
    elseif strcmp(action,'module_var_info')
        result = calllib(ssclib,'ssc_module_var_info',arg0,arg1);
        if isnullpointer( result ),
            result = 0;
        end
    elseif strcmp(action,'info_var_type')
        ty = calllib(ssclib,'ssc_info_var_type',arg0);
        if (ty == 1)
            result = 'input';
        elseif ( ty==2 )
            result = 'output';
        else
            result = 'inout';
        end
    elseif strcmp(action,'info_data_type')
        dt = calllib(ssclib,'ssc_info_data_type',arg0);
        if (dt == 1)
            result = 'string';
        elseif (dt == 2)
            result = 'number';
        elseif (dt == 3)
            result = 'array';
        elseif (dt == 4)
            result = 'matrix';
        elseif (dt == 5)
            result = 'table';
        else
            result = 'invalid';
        end
    elseif strcmp(action,'info_name')
        result = calllib(ssclib,'ssc_info_name',arg0);
    elseif strcmp(action,'info_label')
        result = calllib(ssclib,'ssc_info_label',arg0);
    elseif strcmp(action,'info_units')
        result = calllib(ssclib,'ssc_info_units',arg0);
    elseif strcmp(action,'info_meta')
        result = calllib(ssclib,'ssc_info_meta',arg0);
    elseif strcmp(action,'info_group')
        result = calllib(ssclib,'ssc_info_group',arg0);
    elseif strcmp(action,'info_required')
        result = calllib(ssclib,'ssc_info_required',arg0);
    elseif strcmp(action,'info_constraints')
        result = calllib(ssclib,'ssc_info_constraints',arg0);
    elseif strcmp(action,'info_uihint')
        result = calllib(ssclib,'ssc_info_uihint',arg0);
    elseif strcmp(action,'exec_simple')
        result = calllib(ssclib,'ssc_module_exec_simple',arg0,arg1);
    elseif strcmp(action,'exec_simple_nothread')
        result = calllib(ssclib,'ssc_module_exec_simple_nothread',arg0,arg1);
    elseif strcmp(action,'module_create')
        result = calllib(ssclib,'ssc_module_create',arg0);
        if ( isnullpointer(result) )
            result = 0;
        end
    elseif strcmp(action,'module_free')
        result = calllib(ssclib,'ssc_module_free',arg0);
    elseif strcmp(action,'module_exec_set_print')
        calllib(ssclib,'ssc_module_exec_set_print',arg0);
        result = 0;
    elseif strcmp(action,'module_exec')
        result = calllib(ssclib,'ssc_module_exec',arg0,arg1);
    elseif strcmp(action,'module_log')
        p_type = libpointer('int32Ptr',1);
        p_time = libpointer('singlePtr',1);
        result = calllib(ssclib,'ssc_module_log', arg0, arg1, p_type, p_time);
    elseif strcmp(action,'module_log_detailed')
        p_type = libpointer('int32Ptr',1);
        p_time = libpointer('singlePtr',1);
        text = calllib(ssclib,'ssc_module_log', arg0, arg1, p_type, p_time);
        typetext = 'notice';
        if (p_type.Value == 2)
            typetext = 'warning';
        elseif (p_type.Value == 3)
            typetext = 'error';
        end
        if ( strcmp(text,'') )
            result = 0;
        else
            result = {text , typetext , p_time.Value};
        end
    else
        disp( sprintf('ssccall: invalid action %s', action) );        
        result = 0;
    end
	end
	function bb = isnullpointer(p)
    bb = false;
    try
        setdatatype(p, 'voidPtr', 1, 1);
        deref = get(p);
    catch
        e = lasterror();
        if strcmp(e.identifier, 'MATLAB:libpointer:ValueNotDefined')
            bb = true;
        end
    end
	end
	clear
	ssccall('load');
	disp('Current folder = G:/Thesis/SAM Steam Model');
	disp(sprintf('SSC Version = %d', ssccall('version')));
	disp(sprintf('SSC Build Information = %s', ssccall('build_info')));
	ssccall('module_exec_set_print',0);
	data = ssccall('data_create');
	ssccall('data_set_string', data, 'file_name', 'C:/SAM/2018.11.11/solar_resource/blythe_ca_33.617773_-114.588261_psmv3_60_tmy.csv');
	ssccall('data_set_number', data, 'track_mode', 1);
	ssccall('data_set_number', data, 'tilt', 0);
	ssccall('data_set_number', data, 'azimuth', 0);
	ssccall('data_set_number', data, 'system_capacity', 18800);
	weekday_schedule =[ 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ; 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ; 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ; 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ; 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ; 3   3   3   3   3   3   3   3   2   2   2   2   1   1   1   1   1   1   2   2   2   3   3   3 ; 3   3   3   3   3   3   3   3   2   2   2   2   1   1   1   1   1   1   2   2   2   3   3   3 ; 3   3   3   3   3   3   3   3   2   2   2   2   1   1   1   1   1   1   2   2   2   3   3   3 ; 3   3   3   3   3   3   3   3   2   2   2   2   1   1   1   1   1   1   2   2   2   3   3   3 ; 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ; 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ; 6   6   6   6   6   6   5   5   4   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5 ];
	ssccall( 'data_set_matrix', data, 'weekday_schedule', weekday_schedule );
	weekend_schedule =[ 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ; 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ; 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ; 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ; 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ; 3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3 ; 3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3 ; 3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3 ; 3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3   3 ; 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ; 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ; 6   6   6   6   6   6   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5   5 ];
	ssccall( 'data_set_matrix', data, 'weekend_schedule', weekend_schedule );
	ssccall('data_set_number', data, 'tes_hours', 0);
	ssccall('data_set_number', data, 'q_max_aux', 7.8857564926147461);
	ssccall('data_set_number', data, 'LHV_eff', 0.89999997615814209);
	ssccall('data_set_number', data, 'x_b_des', 0.89999997615814209);
	ssccall('data_set_number', data, 'P_turb_des', 100);
	ssccall('data_set_number', data, 'fP_hdr_c', 0.0099999997764825821);
	ssccall('data_set_number', data, 'fP_sf_boil', 0.075000002980232239);
	ssccall('data_set_number', data, 'fP_boil_to_sh', 0.004999999888241291);
	ssccall('data_set_number', data, 'fP_sf_sh', 0.05000000074505806);
	ssccall('data_set_number', data, 'fP_hdr_h', 0.02500000037252903);
	ssccall('data_set_number', data, 'q_pb_des', 53.908355712890625);
	ssccall('data_set_number', data, 'cycle_max_fraction', 1.0499999523162842);
	ssccall('data_set_number', data, 'cycle_cutoff_frac', 0.20000000298023224);
	ssccall('data_set_number', data, 't_sby', 2);
	ssccall('data_set_number', data, 'q_sby_frac', 0.10000000149011612);
	ssccall('data_set_number', data, 'solarm', 0.14628078043460846);
	ssccall('data_set_number', data, 'PB_pump_coef', 0);
	ssccall('data_set_number', data, 'PB_fixed_par', 0.0054999999701976776);
	bop_array =[ 0; 1; 0.4830000102519989; 0.57099997997283936; 0 ];
	ssccall( 'data_set_array', data, 'bop_array', bop_array );
	aux_array =[ 0; 1; 0.4830000102519989; 0.57099997997283936; 0 ];
	ssccall( 'data_set_array', data, 'aux_array', aux_array );
	ssccall('data_set_number', data, 'fossil_mode', 2);
	ssccall('data_set_number', data, 'I_bn_des', 950);
	ssccall('data_set_number', data, 'is_sh', 1);
	ssccall('data_set_number', data, 'is_oncethru', 1);
	ssccall('data_set_number', data, 'is_multgeom', 1);
	ssccall('data_set_number', data, 'nModBoil', 13);
	ssccall('data_set_number', data, 'nModSH', 0);
	ssccall('data_set_number', data, 'nLoops', 2);
	ssccall('data_set_number', data, 'eta_pump', 0.85000002384185791);
	ssccall('data_set_number', data, 'latitude', 33.610000610351563);
	ssccall('data_set_number', data, 'theta_stow', 10);
	ssccall('data_set_number', data, 'theta_dep', 10);
	ssccall('data_set_number', data, 'm_dot_min', 0.52999997138977051);
	ssccall('data_set_number', data, 'T_fp', 10);
	ssccall('data_set_number', data, 'Pipe_hl_coef', 0.0035000001080334187);
	ssccall('data_set_number', data, 'SCA_drives_elec', 0.10000000149011612);
	ssccall('data_set_number', data, 'ColAz', 0);
	ssccall('data_set_number', data, 'e_startup', 2.7000000476837158);
	ssccall('data_set_number', data, 'T_amb_des_sf', 32);
	ssccall('data_set_number', data, 'V_wind_max', 20);
	ssccall('data_set_number', data, 'csp.lf.sf.water_per_wash', 0.039999999105930328);
	ssccall('data_set_number', data, 'csp.lf.sf.washes_per_year', 120);
	ffrac =[ 0; 0; 0; 0; 0; 0; 0; 0; 0 ];
	ssccall( 'data_set_array', data, 'ffrac', ffrac );
	A_aperture =[ 513.5999755859375 ; 513.5999755859375 ];
	ssccall( 'data_set_matrix', data, 'A_aperture', A_aperture );
	L_col =[ 44.799999237060547 ; 44.799999237060547 ];
	ssccall( 'data_set_matrix', data, 'L_col', L_col );
	OptCharType =[ 3 ; 2 ];
	ssccall( 'data_set_matrix', data, 'OptCharType', OptCharType );
	IAM_T =[ 0.98960000276565552   0.043999999761581421   -0.072099998593330383   -0.23270000517368317   0 ; 0.98960000276565552   0.043999999761581421   -0.072099998593330383   -0.23270000517368317   0 ];
	ssccall( 'data_set_matrix', data, 'IAM_T', IAM_T );
	IAM_L =[ 1.0031000375747681   -0.22589999437332153   0.53680002689361572   -1.6433999538421631   0.72219997644424438 ; 1.0031000375747681   -0.22589999437332153   0.53680002689361572   -1.6433999538421631   0.72219997644424438 ];
	ssccall( 'data_set_matrix', data, 'IAM_L', IAM_L );
	TrackingError =[ 1 ; 1 ];
	ssccall( 'data_set_matrix', data, 'TrackingError', TrackingError );
	GeomEffects =[ 0.72399997711181641 ; 0.72399997711181641 ];
	ssccall( 'data_set_matrix', data, 'GeomEffects', GeomEffects );
	rho_mirror_clean =[ 0.93500000238418579 ; 0.93500000238418579 ];
	ssccall( 'data_set_matrix', data, 'rho_mirror_clean', rho_mirror_clean );
	dirt_mirror =[ 0.94999998807907104 ; 0.94999998807907104 ];
	ssccall( 'data_set_matrix', data, 'dirt_mirror', dirt_mirror );
	error =[ 1 ; 1 ];
	ssccall( 'data_set_matrix', data, 'error', error );
	HLCharType =[ 1 ; 2 ];
	ssccall( 'data_set_matrix', data, 'HLCharType', HLCharType );
	HL_dT =[ 0   0.67199999094009399   0.0025559999048709869   0   0 ; 0   0.67199999094009399   0.0025559999048709869   0   0 ];
	ssccall( 'data_set_matrix', data, 'HL_dT', HL_dT );
	HL_W =[ 1   0   0   0   0 ; 1   0   0   0   0 ];
	ssccall( 'data_set_matrix', data, 'HL_W', HL_W );
	D_2 =[ 0.065999999642372131 ; 0.065999999642372131 ];
	ssccall( 'data_set_matrix', data, 'D_2', D_2 );
	D_3 =[ 0.070000000298023224 ; 0.070000000298023224 ];
	ssccall( 'data_set_matrix', data, 'D_3', D_3 );
	D_4 =[ 0.11500000208616257 ; 0.11500000208616257 ];
	ssccall( 'data_set_matrix', data, 'D_4', D_4 );
	D_5 =[ 0.11999999731779099 ; 0.11999999731779099 ];
	ssccall( 'data_set_matrix', data, 'D_5', D_5 );
	D_p =[ 0 ; 0 ];
	ssccall( 'data_set_matrix', data, 'D_p', D_p );
	Rough =[ 4.5000000682193786e-05 ; 4.5000000682193786e-05 ];
	ssccall( 'data_set_matrix', data, 'Rough', Rough );
	Flow_type =[ 2 ; 2 ];
	ssccall( 'data_set_matrix', data, 'Flow_type', Flow_type );
	AbsorberMaterial =[ 1 ; 3 ];
	ssccall( 'data_set_matrix', data, 'AbsorberMaterial', AbsorberMaterial );
	HCE_FieldFrac =[ 0.98500001430511475   0.0099999997764825821   0.004999999888241291   0 ; 0.98500001430511475   0.0099999997764825821   0.004999999888241291   0 ];
	ssccall( 'data_set_matrix', data, 'HCE_FieldFrac', HCE_FieldFrac );
	alpha_abs =[ 0.95999997854232788   0.95999997854232788   0.80000001192092896   0 ; 0.95999997854232788   0.95999997854232788   0.80000001192092896   0 ];
	ssccall( 'data_set_matrix', data, 'alpha_abs', alpha_abs );
	b_eps_HCE1 =[ 0 ; 0.13840000331401825 ];
	ssccall( 'data_set_matrix', data, 'b_eps_HCE1', b_eps_HCE1 );
	b_eps_HCE2 =[ 0 ; 0.64999997615814209 ];
	ssccall( 'data_set_matrix', data, 'b_eps_HCE2', b_eps_HCE2 );
	b_eps_HCE3 =[ 0 ; 0.64999997615814209 ];
	ssccall( 'data_set_matrix', data, 'b_eps_HCE3', b_eps_HCE3 );
	b_eps_HCE4 =[ 0 ; 0.13840000331401825 ];
	ssccall( 'data_set_matrix', data, 'b_eps_HCE4', b_eps_HCE4 );
	sh_eps_HCE1 =[ 0 ; 0.13840000331401825 ];
	ssccall( 'data_set_matrix', data, 'sh_eps_HCE1', sh_eps_HCE1 );
	sh_eps_HCE2 =[ 0 ; 0.64999997615814209 ];
	ssccall( 'data_set_matrix', data, 'sh_eps_HCE2', sh_eps_HCE2 );
	sh_eps_HCE3 =[ 0 ; 0.64999997615814209 ];
	ssccall( 'data_set_matrix', data, 'sh_eps_HCE3', sh_eps_HCE3 );
	sh_eps_HCE4 =[ 0 ; 0.13840000331401825 ];
	ssccall( 'data_set_matrix', data, 'sh_eps_HCE4', sh_eps_HCE4 );
	alpha_env =[ 0.019999999552965164   0.019999999552965164   0   0 ; 0.019999999552965164   0.019999999552965164   0   0 ];
	ssccall( 'data_set_matrix', data, 'alpha_env', alpha_env );
	EPSILON_4 =[ 0.86000001430511475   0.86000001430511475   1   0 ; 0.86000001430511475   0.86000001430511475   1   0 ];
	ssccall( 'data_set_matrix', data, 'EPSILON_4', EPSILON_4 );
	Tau_envelope =[ 0.96299999952316284   0.96299999952316284   1   0 ; 0.96299999952316284   0.96299999952316284   1   0 ];
	ssccall( 'data_set_matrix', data, 'Tau_envelope', Tau_envelope );
	GlazingIntactIn =[ 1   1   0   1 ; 1   1   0   1 ];
	ssccall( 'data_set_matrix', data, 'GlazingIntactIn', GlazingIntactIn );
	AnnulusGas =[ 1   1   1   1 ; 1   1   1   1 ];
	ssccall( 'data_set_matrix', data, 'AnnulusGas', AnnulusGas );
	P_a =[ 9.9999997473787516e-05   750   750   0 ; 9.9999997473787516e-05   750   750   0 ];
	ssccall( 'data_set_matrix', data, 'P_a', P_a );
	Design_loss =[ 150   1100   1500   0 ; 150   1100   1500   0 ];
	ssccall( 'data_set_matrix', data, 'Design_loss', Design_loss );
	Shadowing =[ 0.95999997854232788   0.95999997854232788   0.95999997854232788   0 ; 0.95999997854232788   0.95999997854232788   0.95999997854232788   0 ];
	ssccall( 'data_set_matrix', data, 'Shadowing', Shadowing );
	Dirt_HCE =[ 0.98000001907348633   0.98000001907348633   1   0 ; 0.98000001907348633   0.98000001907348633   1   0 ];
	ssccall( 'data_set_matrix', data, 'Dirt_HCE', Dirt_HCE );
	b_OpticalTable =[ -180   -160   -140   -120   -100   -80   -60   -40   -20   0   20   40   60   80   100   120   140   160   180   -999.9000244140625 ; 0   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 ; 10   0.98000001907348633   0.97444498538970947   0.97197598218917847   0.97284698486328125   0.97690999507904053   0.97690999507904053   0.97284698486328125   0.97197598218917847   0.97444498538970947   0.98000001907348633   0.97444498538970947   0.97197598218917847   0.97284698486328125   0.97690999507904053   0.97690999507904053   0.97284698486328125   0.97197598218917847   0.97444498538970947   0.98000001907348633 ; 20   0.93000000715255737   0.92297601699829102   0.92892998456954956   0.94600498676300049   0.95401901006698608   0.95401901006698608   0.94600498676300049   0.92892998456954956   0.92297601699829102   0.93000000715255737   0.92297601699829102   0.92892998456954956   0.94600498676300049   0.95401901006698608   0.95401901006698608   0.94600498676300049   0.92892998456954956   0.92297601699829102   0.93000000715255737 ; 30   0.8399999737739563   0.83861798048019409   0.87069100141525269   0.9130210280418396   0.94091099500656128   0.94091099500656128   0.9130210280418396   0.87069100141525269   0.83861798048019409   0.8399999737739563   0.83861798048019409   0.87069100141525269   0.9130210280418396   0.94091099500656128   0.94091099500656128   0.9130210280418396   0.87069100141525269   0.83861798048019409   0.8399999737739563 ; 40   0.72000002861022949   0.72994697093963623   0.80368697643280029   0.86696100234985352   0.90003901720046997   0.90003901720046997   0.86696100234985352   0.80368697643280029   0.72994697093963623   0.72000002861022949   0.72994697093963623   0.80368697643280029   0.86696100234985352   0.90003901720046997   0.90003901720046997   0.86696100234985352   0.80368697643280029   0.72994697093963623   0.72000002861022949 ; 50   0.55000001192092896   0.59125500917434692   0.70745402574539185   0.79350900650024414   0.83955997228622437   0.83955997228622437   0.79350900650024414   0.70745402574539185   0.59125500917434692   0.55000001192092896   0.59125500917434692   0.70745402574539185   0.79350900650024414   0.83955997228622437   0.83955997228622437   0.79350900650024414   0.70745402574539185   0.59125500917434692   0.55000001192092896 ; 60   0.34000000357627869   0.43217799067497253   0.59747797250747681   0.66400599479675293   0.69351100921630859   0.69351100921630859   0.66400599479675293   0.59747797250747681   0.43217799067497253   0.34000000357627869   0.43217799067497253   0.59747797250747681   0.66400599479675293   0.69351100921630859   0.69351100921630859   0.66400599479675293   0.59747797250747681   0.43217799067497253   0.34000000357627869 ; 70   0.12999999523162842   0.26525399088859558   0.42558598518371582   0.46449598670005798   0.4771060049533844   0.4771060049533844   0.46449598670005798   0.42558598518371582   0.26525399088859558   0.12999999523162842   0.26525399088859558   0.42558598518371582   0.46449598670005798   0.4771060049533844   0.4771060049533844   0.46449598670005798   0.42558598518371582   0.26525399088859558   0.12999999523162842 ; 80   0.0099999997764825821   0.11369399726390839   0.20891000330448151   0.23325499892234802   0.23882800340652466   0.23882800340652466   0.23325499892234802   0.20891000330448151   0.11369399726390839   0.0099999997764825821   0.11369399726390839   0.20891000330448151   0.23325499892234802   0.23882800340652466   0.23882800340652466   0.23325499892234802   0.20891000330448151   0.11369399726390839   0.0099999997764825821 ; 90   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 ];
	ssccall( 'data_set_matrix', data, 'b_OpticalTable', b_OpticalTable );
	sh_OpticalTable =[ -180   -160   -140   -120   -100   -80   -60   -40   -20   0   20   40   60   80   100   120   140   160   180   -999.9000244140625 ; 0   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 ; 10   0.98000001907348633   0.97444498538970947   0.97197598218917847   0.97284698486328125   0.97690999507904053   0.97690999507904053   0.97284698486328125   0.97197598218917847   0.97444498538970947   0.98000001907348633   0.97444498538970947   0.97197598218917847   0.97284698486328125   0.97690999507904053   0.97690999507904053   0.97284698486328125   0.97197598218917847   0.97444498538970947   0.98000001907348633 ; 20   0.93000000715255737   0.92297601699829102   0.92892998456954956   0.94600498676300049   0.95401901006698608   0.95401901006698608   0.94600498676300049   0.92892998456954956   0.92297601699829102   0.93000000715255737   0.92297601699829102   0.92892998456954956   0.94600498676300049   0.95401901006698608   0.95401901006698608   0.94600498676300049   0.92892998456954956   0.92297601699829102   0.93000000715255737 ; 30   0.8399999737739563   0.83861798048019409   0.87069100141525269   0.9130210280418396   0.94091099500656128   0.94091099500656128   0.9130210280418396   0.87069100141525269   0.83861798048019409   0.8399999737739563   0.83861798048019409   0.87069100141525269   0.9130210280418396   0.94091099500656128   0.94091099500656128   0.9130210280418396   0.87069100141525269   0.83861798048019409   0.8399999737739563 ; 40   0.72000002861022949   0.72994697093963623   0.80368697643280029   0.86696100234985352   0.90003901720046997   0.90003901720046997   0.86696100234985352   0.80368697643280029   0.72994697093963623   0.72000002861022949   0.72994697093963623   0.80368697643280029   0.86696100234985352   0.90003901720046997   0.90003901720046997   0.86696100234985352   0.80368697643280029   0.72994697093963623   0.72000002861022949 ; 50   0.55000001192092896   0.59125500917434692   0.70745402574539185   0.79350900650024414   0.83955997228622437   0.83955997228622437   0.79350900650024414   0.70745402574539185   0.59125500917434692   0.55000001192092896   0.59125500917434692   0.70745402574539185   0.79350900650024414   0.83955997228622437   0.83955997228622437   0.79350900650024414   0.70745402574539185   0.59125500917434692   0.55000001192092896 ; 60   0.34000000357627869   0.43217799067497253   0.59747797250747681   0.66400599479675293   0.69351100921630859   0.69351100921630859   0.66400599479675293   0.59747797250747681   0.43217799067497253   0.34000000357627869   0.43217799067497253   0.59747797250747681   0.66400599479675293   0.69351100921630859   0.69351100921630859   0.66400599479675293   0.59747797250747681   0.43217799067497253   0.34000000357627869 ; 70   0.12999999523162842   0.26525399088859558   0.42558598518371582   0.46449598670005798   0.4771060049533844   0.4771060049533844   0.46449598670005798   0.42558598518371582   0.26525399088859558   0.12999999523162842   0.26525399088859558   0.42558598518371582   0.46449598670005798   0.4771060049533844   0.4771060049533844   0.46449598670005798   0.42558598518371582   0.26525399088859558   0.12999999523162842 ; 80   0.0099999997764825821   0.11369399726390839   0.20891000330448151   0.23325499892234802   0.23882800340652466   0.23882800340652466   0.23325499892234802   0.20891000330448151   0.11369399726390839   0.0099999997764825821   0.11369399726390839   0.20891000330448151   0.23325499892234802   0.23882800340652466   0.23882800340652466   0.23325499892234802   0.20891000330448151   0.11369399726390839   0.0099999997764825821 ];
	ssccall( 'data_set_matrix', data, 'sh_OpticalTable', sh_OpticalTable );
	ssccall('data_set_number', data, 'dnifc', 0);
	ssccall('data_set_number', data, 'I_bn', 0);
	ssccall('data_set_number', data, 'T_db', 15);
	ssccall('data_set_number', data, 'T_dp', 10);
	ssccall('data_set_number', data, 'P_amb', 930.5);
	ssccall('data_set_number', data, 'V_wind', 0);
	ssccall('data_set_number', data, 'm_dot_htf_ref', 0);
	ssccall('data_set_number', data, 'm_pb_demand', 0);
	ssccall('data_set_number', data, 'shift', 0);
	ssccall('data_set_number', data, 'SolarAz_init', 0);
	ssccall('data_set_number', data, 'SolarZen', 0);
	ssccall('data_set_number', data, 'T_pb_out_init', 290);
	ssccall('data_set_number', data, 'eta_ref', 0.37099999189376831);
	ssccall('data_set_number', data, 'T_cold_ref', 280);
	ssccall('data_set_number', data, 'dT_cw_ref', 10);
	ssccall('data_set_number', data, 'T_amb_des', 42);
	ssccall('data_set_number', data, 'P_boil_des', 100);
	ssccall('data_set_number', data, 'P_rh_ref', 50);
	ssccall('data_set_number', data, 'rh_frac_ref', 0);
	ssccall('data_set_number', data, 'CT', 2);
	ssccall('data_set_number', data, 'startup_time', 0.34999999403953552);
	ssccall('data_set_number', data, 'startup_frac', 0.34999999403953552);
	ssccall('data_set_number', data, 'T_approach', 5);
	ssccall('data_set_number', data, 'T_ITD_des', 16);
	ssccall('data_set_number', data, 'P_cond_ratio', 1.0027999877929688);
	ssccall('data_set_number', data, 'pb_bd_frac', 0.019999999552965164);
	ssccall('data_set_number', data, 'P_cond_min', 1.25);
	ssccall('data_set_number', data, 'n_pl_inc', 8);
	F_wc =[ 0; 0; 0; 0; 0; 0; 0; 0; 0 ];
	ssccall( 'data_set_array', data, 'F_wc', F_wc );
	ssccall('data_set_number', data, 'pc_mode', 1);
	ssccall('data_set_number', data, 'T_hot', 310);
	ssccall('data_set_number', data, 'm_dot_st', 0);
	ssccall('data_set_number', data, 'T_wb', 12.800000190734863);
	ssccall('data_set_number', data, 'demand_var', 20);
	ssccall('data_set_number', data, 'standby_control', 0);
	ssccall('data_set_number', data, 'T_db_pwb', 12.800000190734863);
	ssccall('data_set_number', data, 'P_amb_pwb', 960);
	ssccall('data_set_number', data, 'relhum', 0.25);
	ssccall('data_set_number', data, 'f_recSU', 1);
	ssccall('data_set_number', data, 'dp_b', 0);
	ssccall('data_set_number', data, 'dp_sh', 5);
	ssccall('data_set_number', data, 'dp_rh', 0);
	ssccall('data_set_number', data, 'adjust:constant', 4);
	module = ssccall('module_create', 'tcslinear_fresnel'); 
	ok = ssccall('module_exec', module, data);
	if ~ok,
		disp('tcslinear_fresnel errors:'); 
		ii=0;
		while 1,
			err = ssccall('module_log', module, ii);
			if strcmp(err,''),
			      break;
			end
			disp( err );
			ii=ii+1;
		end
		return 
	end
	ssccall('module_free', module);
	annual_energy = ssccall('data_get_number', data, 'annual_energy' );
	disp(sprintf('%s = %g', 'Annual energy (year 1)', annual_energy));
	capacity_factor = ssccall('data_get_number', data, 'capacity_factor' );
	disp(sprintf('%s = %g', 'Capacity factor (year 1)', capacity_factor));
	annual_total_water_use = ssccall('data_get_number', data, 'annual_total_water_use' );
	disp(sprintf('%s = %g', 'Annual Water Usage', annual_total_water_use));
	ssccall('data_free', data);
	ssccall('unload');
end