%CoBoModel, version 1.0, 2010 %by S. Eidelloth, R. Brendel, U. Eitner, and S. Steingrube %Institut fuer Solarenergieforschung Hameln (ISFH), Am Ohrberg 1, D-31860 Emmerthal, Germany %eidelloth@isfh.de % %This version of the CoBo model has a single rectangle as geometry and contains a basic %set of the model equations. This file might help to get familiar with the basics of the CoBoModel. %A graphical user interface for the CoBoModel (CoBoGUI) is also available at www.isfh.de % %You can open this m-file with COMSOL 3.5a, after connecting to MATLAB (File=>Client/Server/MATLAB...) flclear fem % COMSOL version clear vrsn vrsn.name = 'COMSOL 3.5'; vrsn.ext = 'a'; vrsn.major = 0; vrsn.build = 608; vrsn.rcs = '$Name: v35ap $'; vrsn.date = '$Date: 2009/05/11 07:38:49 $'; fem.version = vrsn; % Constants fem.const = {'GENERAL_PHYSICS','00000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'T','300[K]', ... 'UT','0.025851483 [V]', ... 'q','1.6021773e-19 [C]', ... 'eps0','8.8541878e-14 [F/cm]', ... 'SILICON_PROPERTIES','00000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'ni0','1e10[1/cm^3]', ... 'NcDNv','1.06', ... 'Eg0','1.124[V]*q', ... 'epsr','11.9', ... 'BASE_PROPERTIES','00000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'taup0','1000[us]', ... 'taun0','1000[us]', ... 'ND0','1[1/cm^3]', ... 'NA0','1e16[1/cm^3]', ... 'ELECTRONIC_PARAMETERS','00000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'Rfc','0.001[V/A]', ... 'J0fc','3000[fA/cm^2]', ... 'Jgfc','0[mA/cm^2]', ... 'Rf','100[V/A]', ... 'J0f','80[fA/cm^2]', ... 'Jgf','0[mA/cm^2]', ... 'Rbc','0.001[V/A]', ... 'J0bc','600[fA/cm^2]', ... 'Jgbc','0', ... 'Rb','Rbc', ... 'J0b','J0bc', ... 'Jgb','0', ... 'MODELS','000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'muen0','1200[cm^2/s/V]', ... 'muep0','400[cm^2/s/V]', ... 'gen','2', ... 'mob','2', ... 'G0','1.5e19 [1/(cm^3*s)]', ... 'LambFrac','0.9', ... 'GEOMETRY','0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'yw','200e-6', ... 'xw','500e-6', ... 'xfc','100e-6', ... 'xbc','100e-6', ... 'A','xw[m]*1[m]', ... 'INITIAL_EXCITATION','000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'Ua','0.7[V]', ... 'MESH_PARAMETERS','000000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'blhminfact','0.1', ... 'blstretch','1.12', ... 'blnlayers','8', ... 'hauto','2'}; %Geometry xw=500e-6; yw=200e-6; xfc=100e-6; xbc=100e-6; A=xw*1; clear draw draw.s.name={'bulk'}; draw.s.tags={'g1'}; g1=rect2(num2str(xw),num2str(yw),'base','corner','pos',{'0',num2str(-yw)}); gbase=geomcomp(g1); draw.s.objs={gbase}; pf={}; gpf={}; pf(1)={point2(xfc,0)}; gpf(1)=geomcoerce('point',pf(1)); pb={}; gpb={}; pb(1)={point2(xbc,-yw)}; gpb(1)=geomcoerce('point',pb(1)); draw.p.objs=[gpf gpb]; fem.draw = draw; fem.geom=geomcsg(fem); %Mesh fem.mesh=meshbndlayer(fem, ... 'blbnd',[1,2,3,4,5,6], ... 'blhminfact',0.1, ... 'blstretch',8, ... 'blnlayers',1.12, ... 'hauto',2 ... ); % Application mode 1 clear appl appl.mode.class = 'ConductiveMediaDC'; appl.dim = {'phiFp'}; appl.name = 'dcp'; appl.assignsuffix = '_dcp'; clear pnt pnt.name = {'points_dcp','contact_point_dcp'}; pnt.type = {'Qj0','V0'}; pnt.ind = [2,1,1,1,1,1]; appl.pnt = pnt; clear bnd bnd.Jn = {'(Jrfc-Jgfc)','(Jrf-Jgf)',0,0}; bnd.name = {'frontc','front','Symmetry','back'}; bnd.type = {'nJ','nJ','nJ0','nJ0'}; bnd.ind = [3,4,1,4,2,3]; appl.bnd = bnd; clear equ equ.Qj = '-q*(G-R)'; equ.sigma = 'q*muep*p'; equ.ind = [1]; appl.equ = equ; fem.appl{1} = appl; % Application mode 2 clear appl appl.mode.class = 'ConductiveMediaDC'; appl.dim = {'phiFn'}; appl.name = 'dcn'; appl.assignsuffix = '_dcn'; clear pnt pnt.V0 = {0,'Ua'}; pnt.name = {'points_dcn','contact_point_dcn'}; pnt.type = {'Qj0','V0'}; pnt.ind = [1,2,1,1,1,1]; appl.pnt = pnt; clear bnd bnd.Jn = {0,'-(Jrb-Jgb)','-(Jrbc-Jgbc)',0}; bnd.V0 = {0,0,0,'Ua'}; bnd.name = {'symmetry','back','back_contact_region','front'}; bnd.type = {'nJ0','nJ','nJ','nJ0'}; bnd.ind = [1,2,4,3,4,1]; appl.bnd = bnd; clear equ equ.init = 'Ua'; equ.Qj = 'q*(G-R)'; equ.sigma = 'q*muen*n'; equ.ind = [1]; appl.equ = equ; fem.appl{2} = appl; % Application mode 3 clear appl appl.mode.class = 'Electrostatics'; appl.dim = {'phii'}; appl.name = 'esi'; appl.border = 'on'; appl.assignsuffix = '_esi'; clear pnt pnt.V0 = {0,'phiFp+UT*log(p0/ni)'}; pnt.name = {'points_esi','ref_point_esi'}; pnt.type = {'Q','V'}; pnt.ind = [1,1,1,1,1,1]; appl.pnt = pnt; clear bnd bnd.name = {'front','symmetry','back'}; bnd.rhos = {'rhosf',0,'rhosb'}; bnd.type = {'r','nD0','r'}; bnd.ind = [2,3,1,3,1,2]; appl.bnd = bnd; clear equ equ.epsilonr = '-epsr'; equ.init = 'phiFp+UT*log(p0/ni)+1e-6*sqrt(x^2+y^2)*1[V]'; equ.rho = 'q*(p-n+NRest)'; equ.ind = [1]; appl.equ = equ; fem.appl{3} = appl; fem.frame = {'ref'}; fem.border = 1; clear units; units.basesystem = 'SI'; fem.units = units; % Coupling variable elements clear elemcpl % Integration coupling variables clear elem elem.elem = 'elcplscalar'; elem.g = {'1'}; src = cell(1,1); clear equ equ.expr = {{'te_shape'},{'G'}}; equ.ipoints = {{'4'},{'4'}}; equ.frame = {{'ref'},{'ref'}}; equ.ind = {{'1'}}; src{1} = {{},{},equ}; elem.src = src; geomdim = cell(1,1); geomdim{1} = {}; elem.geomdim = geomdim; elem.var = {'int_te_shape','intG'}; elem.global = {'1','2'}; elem.maxvars = {}; elemcpl{1} = elem; fem.elemcpl = elemcpl; % Global expressions fem.globalexpr = {'BASE_EXPRESSIONS','00000000000000000000000000000000000000000000000000000000000000000.1', ... 'kT','UT*q', ... 'eps0r','eps0*epsr', ... 'FlagSf','1-FlagJ0f', ... 'FlagSb','1-FlagJ0b', ... 'normE','sqrt(phiix^2+phiiy^2)', ... 'DOPING_EXPRESSIONS','00000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'NA','NA0', ... 'ND','ND0', ... 'BANDGAP_NARROWING','000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'slopen','14e-3[V]*q', ... 'slopep','14e-3[V]*q', ... 'Onsetn','1.4e17[1/cm^3]', ... 'Onsetp','1.4e17[1/cm^3]', ... 'dEc','(ND>Onsetn)*slopen*log((ND+1e-12[1/cm^3])/Onsetn)', ... 'dEv','(NA>Onsetp)*slopep*log((NA+1e-12[1/cm^3])/Onsetp)', ... 'Eg','Eg0-( dEc-dEv )', ... 'ni','ni0*exp( (dEc+dEv)/(2*kT) )', ... 'Nc','ni*exp( Eg/(2*kT) )*sqrt(NcDNv)', ... 'Nv','ni*exp( Eg/(2*kT) )/sqrt(NcDNv)', ... 'Vp','0', ... 'Vn','0', ... 'ELECTRON_AND_HOLE_DENSITIES','00000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'NRest','ND-NA', ... 'p0','-NRest/2 + sqrt( (NRest/2)^2+ni^2 )', ... 'n0','NRest/2 + sqrt( (NRest/2)^2+ni^2 )', ... 'p','ni*exp( (phii-phiFp+Vp)/UT )', ... 'n','ni*exp( (phiFn-phii+Vn)/UT )', ... 'dp','p-p0', ... 'dn','n-n0', ... 'CHARGE_DENSITY','000000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'rho','q*(p-n+NRest)', ... 'BAND_EDGES','0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'Chin','4.05 [V]', ... 'phiEc','phii+UT*log(Nc/ni)', ... 'phiEv','phii-UT*log(Nv/ni)', ... 'phiEvac','phiEc+Chin', ... 'GENERATION_MODELS','000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'CONSTANT_GENERATION_G1','000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'G1','G0', ... 'TRIPLE_EXPONENTIAL_GENERATION_G2','00000000000000000000000000000000000000000000000000000000000000000.1', ... 'CUMULATED_GENERATION_CURRENT_DENSITY_ON_LAMBERTIAN_LIGHT_TRAPPING_SCHEME','000000000000000000000000.1', ... 'Lamb_a0','32.95954135', ... 'Lamb_a1','4.01306180', ... 'Lamb_a2','-0.50724887', ... 'Lamb_a3','0.02481872', ... 'J_Lamb','LambFrac*(Lamb_a0+Lamb_a1*log(yw/1e-6)+Lamb_a2*log(yw/1e-6)^2+Lamb_a3*log(yw/1e-6)^3)*1[mA/cm^2]', ... 'SHAPE_OF_TRIPLE_EXPONENTIAL_GENERATION','00000000000000000000000000000000000000000000000000000000000.1', ... 'te_a0','1.173', ... 'te_a1','449.4', ... 'te_y1','0.5e-6[m]', ... 'te_a2','332.4', ... 'te_y2','4e-6[m]', ... 'te_a3','19.23', ... 'te_y3','25e-6[m]', ... 'te_shape','te_a0 + te_a1*exp(y/te_y1) + te_a2*exp(y/te_y2) + te_a3*exp(y/te_y3)', ... 'SCALE_FACTOR_FOR_TRIPLE_EXPONENTIAL_GENERATION','0000000000000000000000000000000000000000000000000.1', ... 'te_G0','(J_Lamb*A/q)/ (1[m]*int_te_shape)', ... 'TRIPLE_EXPONENTIAL_GENERATION','000000000000000000000000000000000000000000000000000000000000000000.1', ... 'G2','te_G0 * te_shape', ... 'GENERATION_FROM_FILES_G3','000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'G3','0', ... 'CHOOSE_GENERATION_MODEL','00000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'G','(gen==1)*G1+(gen==2)*G2+(gen==3)*G3', ... 'MOBILITY_MODELS','00000000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'CONSTANT_MOBILITIES','000000000000000000000000000000000000000000000000000000000000000000000000000000.1', ... 'muen00','muen0', ... 'muep00','muep0', ... 'PC1D_MOBILITIES_FOR_300_K_AND_NO_TOTAL_VELOCITY_SATURATION','000000000000000000000000000000000000000.1', ... 'muemaxn','1417[cm^2/(V*s)]', ... 'muemaxp','470[cm^2/(V*s)]', ... 'mueminn_maj','60[cm^2/(V*s)]', ... 'mueminp_maj','37.4[cm^2/(V*s)]', ... 'Nrefn_maj','9.64e16[1/cm^3]', ... 'Nrefp_maj','2.82e17[1/cm^3]', ... 'alphan_maj','0.664', ... 'alphap_maj','0.642', ... 'mueminn_min','160[cm^2/(V*s)]', ... 'mueminp_min','155[cm^2/(V*s)]', ... 'Nrefn_min','5.6e16[1/cm^3]', ... 'Nrefp_min','1e17[1/cm^3]', ... 'alphan_min','0.647', ... 'alphap_min','0.9', ... 'vmaxn','1e7[cm/s]', ... 'vmaxp','1e7[cm/s]', ... 'muelfn_maj','mueminn_maj + (muemaxn-mueminn_maj)/( 1+ ((ND+NA)/Nrefn_maj)^alphan_maj )', ... 'muelfn_min','mueminn_min + (muemaxn-mueminn_min)/( 1+ ((ND+NA)/Nrefn_min)^alphan_min )', ... 'muelfp_maj','mueminp_maj + (muemaxp-mueminp_maj)/( 1+ ((ND+NA)/Nrefp_maj)^alphap_maj )', ... 'muelfp_min','mueminp_min + (muemaxp-mueminp_min)/( 1+ ((ND+NA)/Nrefp_min)^alphap_min )', ... 'muelfn','(n>=p) * muelfn_maj + (n
=n) * muelfp_maj + (p