def misfit(args, n_slices, n_iterations, moho_depth, T_pot, perplex_mantle_file):
     cmb_depth, core_density_deficit = args
     core_density_deficit = core_density_deficit / 1000.
     if core_density_deficit < -3000. or core_density_deficit > 5000. or cmb_depth < 100.e3:
         misfit = 1.e12
     else:
         mars = Planet(n_slices, moho_depth, cmb_depth, observed_mean_radius, core_density_deficit, core_Vp_fraction, T_pot, perplex_mantle_file)
         mars.generate_profiles( n_iterations )
         misfit = np.sqrt((1. - mars.mass/observed_mass)*(1. - mars.mass/observed_mass)
                         + (1. - mars.moment_of_inertia_factor/observed_moment)*(1. - mars.moment_of_inertia_factor/observed_moment))
     print(args, misfit)
     return misfit
        
        mFeO = 71.844
        mMgO = 40.3044
        Mg_numbers[i] = 100.*(NCFMAS_compositions[i][3]/mMgO) / ((NCFMAS_compositions[i][2]/mFeO) + (NCFMAS_compositions[i][3]/mMgO))
        Si_contents[i] = NCFMAS_compositions[i][5]
        
        print('Processing composition', str(i+1)+'/'+str(len(perplex_mantle_files))+':', NCFMAS_compositions[i], Mg_numbers[i])
    
        
        res = minimize(misfit, [1700.e3, 2000.e3], method='Nelder-Mead', tol=1.e4,
                       args=(n_slices, n_iterations, moho_depth, T_pot, perplex_mantle_file)) # tol is depth in m
                      
        cmb_depths[i] = res.x[0]
        core_density_deficits[i] = res.x[1]/1000.
        mars = Planet(n_slices, moho_depth, cmb_depths[i], observed_mean_radius, core_density_deficits[i], core_Vp_fraction, T_pot, perplex_mantle_file)
        mars.generate_profiles( n_iterations )
        cmb_pressures[i] = mars.cmb_pressure
        cmb_temperatures[i] = mars.cmb_temperature
        misfits[i] = res.fun

        data_to_print = NCFMAS_compositions[i]
        data_to_print.extend([Mg_numbers[i], cmb_depths[i]/1000., cmb_pressures[i]/1.e9, cmb_temperatures[i], core_density_deficits[i], misfits[i]])

        print(data_to_print)
        output.append(data_to_print)
        
    
    np.savetxt(fname=outfile, header='NCFMAS, Mg number, CMB depth, CMB pressure, CMB temperature, Core density deficit, misfit', fmt="%.4f", X=output)

    '''
    extent = (min(Mg_numbers),max(Mg_numbers),min(Si_contents),max(Si_contents))