function out = model % % ichichaa.m % % Model exported on Nov 16 2015, 19:13 by COMSOL 4.4.0.150. DIR = 'C:\Users\Annisanurf\Documents\SIMULASI\Latihan\'; FIL = 'icichaa'; EXT = '.mphbin'; %ne = 8; %jumlah koil ////belum ke pake nx = 32; %voxel sb x ny = 32; %voxel sb y nz = 32; %voxel sb z %er = 70; %konduktivitas material uji ////belum ke pake nj = 8; %iterasi j pertamakali sebanyak jumlah koil (8) untuk mendapatkan matriks sensitivitas masing2 koil. Berikutnya cukup 7 kali (nj-1) Ve = 50; %tegangan eksitasi frek = 100; %frekuensi dalam satuan KHz domain_sekitar = [1]; domain_isi = [6]; domain_bola = [9]; domain_koil = [2 3 4 5 7 8 10 11 12 13 14 15 16 17 18 19]; koil_domain = cell(4,1); koil_domain{1} = [2 3 4 5]; koil_domain{2} = [7 8 12 13]; koil_domain{3} = [16 17 18 19]; koil_domain{4} = [10 11 14 15]; koil_boundary = cell(4,1); koil_boundary{1} = [6 7 9 10 11 12 13 15 16 17 19 20 22 23 24 25]; koil_boundary{2} = [31 32 33 34 35 36 48 49 53 54 55 57 58 59 60 61]; koil_boundary{3} = [80 81 83 84 85 86 87 89 90 91 93 94 96 97 98 99]; koil_boundary{4} = [42 43 44 45 46 47 50 51 69 70 71 73 74 75 76 77]; koil_terminal = cell(4,1); koil_terminal{1} = [14]; koil_terminal{2} = [52]; koil_terminal{3} = [88]; koil_terminal{4} = [68]; import com.comsol.model.* import com.comsol.model.util.* model = ModelUtil.create('Model'); model.modelPath(DIR); model.modelNode.create('comp1'); model.geom.create('geom1', 3); model.mesh.create('mesh1', 'geom1'); model.physics.create('mf', 'InductionCurrents', 'geom1'); model.physics.create('cir', 'Circuit', 'geom1'); model.study.create('std1'); model.geom('geom1').feature.create('imp1', 'Import'); model.geom('geom1').feature.create('sph1', 'Sphere'); model.material.create('mat1'); model.material.create('mat2'); model.material.create('mat3'); model.material.create('mat4'); model.sol.create('sol1'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% model.result.create('pg1', 'PlotGroup3D'); model.result('pg1').feature.create('mslc1', 'Multislice'); model.result.export.create('data1', 'Data'); model.result.numerical.create('gev1', 'EvalGlobal'); model.result.table.create('tbl1', 'Table'); model.result.export.create('tbl1', 'Table'); model.geom('geom1').lengthUnit('mm'); model.geom('geom1').feature('imp1').set('filename', strcat(DIR, FIL, EXT)); model.geom('geom1').feature('imp1').importData; model.geom('geom1').run('imp1'); model.geom('geom1').feature('sph1').set('r', '20'); model.geom('geom1').runPre('fin'); model.geom('geom1').run; model.mesh('mesh1').run; model.physics('mf').prop('ShapeProperty').set('order_magneticvectorpotential', 1, '1'); %untuk sumber tegangan model.physics('cir').feature.create('V1', 'VoltageSource', -1); model.physics('cir').feature('V1').set('Connections', 1, 1, '5'); model.physics('cir').feature('V1').set('sourceType', 1, 'SineSource'); model.physics('cir').feature('V1').set('value', 1, strcat(num2str(Ve),'[V]')); model.physics('cir').feature('V1').set('freq', 1, strcat(num2str(frek),'[kHz]')); for i=1:4 model.sol('sol1').feature.create(strcat('st',num2str(i)), 'StudyStep'); model.sol('sol1').feature.create(strcat('v',num2str(i)), 'Variables'); model.sol('sol1').feature.create(strcat('e',num2str(i)), 'Eigenvalue'); model.sol('sol1').feature.create(strcat('su',num2str(i)), 'StoreSolution'); model.physics('mf').feature.create(strcat('mtcd',num2str(i)), 'MultiTurnCoilDomain', 3); model.physics('mf').feature(strcat('mtcd',num2str(i))).selection.set(koil_domain{i}); model.physics('mf').feature(strcat('mtcd',num2str(i))).set('CoilType', 1, 'Numeric'); model.physics('mf').feature(strcat('mtcd',num2str(i))).set('N', 1, '30'); model.physics('mf').feature(strcat('mtcd',num2str(i))).set('CoilExcitation', 1, 'CircuitCurrent'); model.physics('mf').feature(strcat('mtcd',num2str(i))).feature.create('ccc1', 'CoilCurrentCalculation', 3); model.physics('mf').feature(strcat('mtcd',num2str(i))).feature('ccc1').selection.set(koil_domain{i}); model.physics('mf').feature(strcat('mtcd',num2str(i))).feature('ccc1').feature.create('ci1', 'CoilInsulation', 2); model.physics('mf').feature(strcat('mtcd',num2str(i))).feature('ccc1').feature('ci1').selection.set(koil_boundary{i}); model.physics('mf').feature(strcat('mtcd',num2str(i))).feature('ccc1').feature.create('ct1', 'CoilTerminal', 2); model.physics('mf').feature(strcat('mtcd',num2str(i))).feature('ccc1').feature('ct1').selection.set(koil_terminal{i}); model.physics('mf').feature.create(strcat('gfa',num2str(i)), 'GaugeFixingA', 3); model.physics('mf').feature(strcat('gfa',num2str(i))).selection.set(koil_domain{i}); model.physics('mf').feature(strcat('gfa',num2str(i))).set('SetPointConstraint', 1, '1'); %untuk koil model.physics('cir').feature.create(strcat('IvsU',num2str(i)), 'ModelDeviceIV', -1); model.physics('cir').feature(strcat('IvsU',num2str(i))).set('V_src', 1, strcat('root.comp1.mf.VCoil_',num2str(i))); model.physics('cir').feature(strcat('IvsU',num2str(i))).set('Connections', 1, 1,num2str(i)); %positif %untuk resistor model.physics('cir').feature.create(strcat('R',num2str(i)), 'Resistor', -1); model.physics('cir').feature(strcat('R',num2str(i))).set('Connections', 1, 1, '0'); %positif model.physics('cir').feature(strcat('R',num2str(i))).set('Connections', 2, 1, num2str(i)); %negatif model.physics('cir').feature(strcat('R',num2str(i))).set('R', 1, ['50[' 'ohm' ']']); model.study('std1').feature.create(strcat('ccc',num2str(i)), 'CoilCurrentCalculation'); model.study('std1').feature(strcat('ccc',num2str(i))).set('CoilName', num2str(i)); end model.study('std1').feature.create('time', 'Transient'); model.study('std1').feature('time').activate('mf', true); model.study('std1').feature('time').activate('cir', true); model.study('std1').feature('time').set('tlist', 'range(0,5.0e-8,3.0e-5)'); model.study('std1').feature('time').set('rtolactive', 'on'); model.study('std1').feature('time').set('rtol', '0.001'); model.sol('sol1').feature.create('st5', 'StudyStep'); model.sol('sol1').feature.create('v5', 'Variables'); model.sol('sol1').feature.create('t1', 'Time'); model.sol('sol1').feature('t1').feature.create('se1', 'Segregated'); model.sol('sol1').feature('t1').feature('se1').feature.create('ss1', 'SegregatedStep'); model.sol('sol1').feature('t1').feature('se1').feature.create('ss2', 'SegregatedStep'); model.sol('sol1').feature('t1').feature.create('i1', 'Iterative'); model.sol('sol1').feature('t1').feature('i1').feature.create('mg1', 'Multigrid'); model.sol('sol1').feature('t1').feature('i1').feature('mg1').feature('pr').feature.create('va1', 'Vanka'); model.sol('sol1').feature('t1').feature('i1').feature('mg1').feature('po').feature.create('va1', 'Vanka'); model.sol('sol1').feature('t1').feature.create('fc1', 'FullyCoupled'); model.material('mat3').name('Koil'); %koil tembaga model.material('mat3').propertyGroup('def').set('relpermeability', '1'); model.material('mat3').propertyGroup('def').set('electricconductivity', '5.998e7[S/m]'); model.material('mat3').propertyGroup('def').set('relpermittivity', '1'); model.material('mat3').selection.set(domain_koil); model.material('mat4').name('Udara Sekitar'); %(Udara) model.material('mat4').propertyGroup('def').set('relpermeability', '1'); model.material('mat4').propertyGroup('def').set('relpermittivity', '1'); model.material('mat4').propertyGroup('def').set('electricconductivity', '10[S/m]'); model.material('mat4').selection.set(domain_sekitar); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%stop for k=1:3 model.material('mat1').name('isi sensor'); if(k==1) model.material('mat1').propertyGroup('def').set('relpermeability', '1'); model.material('mat1').propertyGroup('def').set('relpermittivity', '1'); model.material('mat1').propertyGroup('def').set('electricconductivity', '10[S/m]'); %untuk kalibrasi 1 udara elseif(k==2) model.material('mat1').propertyGroup('def').set('relpermeability', '4000'); model.material('mat1').propertyGroup('def').set('relpermittivity', '1'); model.material('mat1').propertyGroup('def').set('electricconductivity', '1.12e7[S/m]'); %untuk kalibrasi 2 besi elseif(k==3) model.material('mat1').propertyGroup('def').set('relpermeability', '1'); model.material('mat1').propertyGroup('def').set('relpermittivity', '1'); model.material('mat1').propertyGroup('def').set('electricconductivity', '10[S/m]'); %untuk uji udara end model.material('mat1').selection.set(domain_isi); model.material('mat2').name('Bola Uji'); if(k==1) model.material('mat2').propertyGroup('def').set('relpermeability', '1'); model.material('mat2').propertyGroup('def').set('relpermittivity', '1'); model.material('mat2').propertyGroup('def').set('electricconductivity', '10[S/m]'); %untuk kalibrasi 1 udara elseif(k==2) model.material('mat2').propertyGroup('def').set('relpermeability', '4000'); model.material('mat2').propertyGroup('def').set('relpermittivity', '1'); model.material('mat2').propertyGroup('def').set('electricconductivity', '1.12e7[S/m]'); %untuk kalibrasi 2 besi elseif(k==3) model.material('mat2').propertyGroup('def').set('relpermeability', '4000'); model.material('mat2').propertyGroup('def').set('relpermittivity', '1'); model.material('mat2').propertyGroup('def').set('electricconductivity', '1.12e7[S/m]'); %untuk uji besi end model.material('mat2').selection.set(domain_bola); for j=1:nj for i=1:4 if (i==j) %untuk node negatif model.physics('cir').feature(strcat('IvsU',num2str(i))).set('Connections', 2, 1, '5'); else model.physics('cir').feature(strcat('IvsU',num2str(i))).set('Connections', 2, 1, '0'); end end model.sol('sol1').study('std1'); model.sol('sol1').feature('st1').set('study', 'std1'); model.sol('sol1').feature('st1').set('studystep', 'ccc1'); model.sol('sol1').feature('v1').set('control', 'ccc1'); model.sol('sol1').feature('e1').set('shift', '0'); model.sol('sol1').feature('e1').set('neigs', 1); model.sol('sol1').feature('e1').set('control', 'ccc1'); for i=2:4 model.sol('sol1').feature(strcat('st',num2str(i))).set('study', 'std1'); model.sol('sol1').feature(strcat('st',num2str(i))).set('studystep', strcat('ccc',num2str(i))); model.sol('sol1').feature(strcat('v',num2str(i))).set('initmethod', 'sol'); model.sol('sol1').feature(strcat('v',num2str(i))).set('initsol', 'sol1'); model.sol('sol1').feature(strcat('v',num2str(i))).set('notsolmethod', 'sol'); model.sol('sol1').feature(strcat('v',num2str(i))).set('notsol', 'sol1'); model.sol('sol1').feature(strcat('v',num2str(i))).set('control', strcat('ccc',num2str(i))); model.sol('sol1').feature(strcat('e',num2str(i))).set('shift', '0'); model.sol('sol1').feature(strcat('e',num2str(i))).set('neigs', 1); model.sol('sol1').feature(strcat('e',num2str(i))).set('control', strcat('ccc',num2str(i))); end model.sol('sol1').feature('st5').set('study', 'std1'); model.sol('sol1').feature('st5').set('studystep', 'time'); model.sol('sol1').feature('v5').set('initmethod', 'sol'); model.sol('sol1').feature('v5').set('initsol', 'sol1'); model.sol('sol1').feature('v5').set('notsolmethod', 'sol'); model.sol('sol1').feature('v5').set('notsol', 'sol1'); model.sol('sol1').feature('v5').set('control', 'time'); model.shape('shape1').feature('shfun1'); model.sol('sol1').feature('t1').set('tlist', 'range(0,5.0e-8,3.0e-5)'); model.sol('sol1').feature('t1').set('plot', 'off'); model.sol('sol1').feature('t1').set('plotfreq', 'tout'); model.sol('sol1').feature('t1').set('probesel', 'all'); model.sol('sol1').feature('t1').set('probes', {}); model.sol('sol1').feature('t1').set('probefreq', 'tsteps'); model.sol('sol1').feature('t1').set('control', 'time'); model.sol('sol1').feature('t1').feature('se1').feature.remove('ssDef'); model.sol('sol1').feature('t1').feature('se1').feature('ss1').set('segvar', {'comp1_currents'}); model.sol('sol1').feature('t1').feature('se1').feature('ss1').set('linsolver', 'dDef'); model.sol('sol1').feature('t1').feature('se1').feature('ss2').set('segvar', {'comp1_A' 'comp1_mf_psi'}); model.sol('sol1').feature('t1').feature('i1').set('linsolver', 'gmres'); model.sol('sol1').feature('t1').feature('i1').set('prefuntype', 'right'); model.sol('sol1').feature('t1').feature('i1').feature('mg1').feature('pr').feature('va1').set('vankavars', {'comp1_mf_psi'}); model.sol('sol1').feature('t1').feature('i1').feature('mg1').feature('po').feature('va1').set('vankavars', {'comp1_mf_psi'}); model.sol('sol1').feature('t1').feature('se1').feature('ss2').set('linsolver', 'i1'); model.sol('sol1').feature('t1').feature.remove('fcDef'); for i=2:5 model.sol('sol1').feature(strcat('v',num2str(i))).set('notsolnum', 'auto'); model.sol('sol1').feature(strcat('v',num2str(i))).set('notsolvertype', 'solnum'); model.sol('sol1').feature(strcat('v',num2str(i))).set('solnum', 'auto'); model.sol('sol1').feature(strcat('v',num2str(i))).set('solvertype', 'solnum'); end model.sol('sol1').feature('t1').feature('fc1').set('linsolver', 'dDef'); model.sol('sol1').feature('t1').feature('fc1').set('jtech', 'onevery'); model.sol('sol1').feature('t1').feature('fc1').set('maxiter', '25'); model.sol('sol1').attach('std1'); model.result('pg1').name('Magnetic Flux Density Norm (mf)'); model.result('pg1').set('oldanalysistype', 'noneavailable'); model.result('pg1').set('data', 'dset1'); model.result('pg1').feature('mslc1').set('oldanalysistype', 'noneavailable'); model.result('pg1').feature('mslc1').set('data', 'parent'); model.sol('sol1').runAll; model.result('pg1').run; model.result.export('data1').set('expr', {'mf.Bx' 'mf.By' 'mf.Bz'}); model.result.export('data1').set('descr', {'Magnetic flux density, x component' 'Magnetic flux density, y component' 'Magnetic flux density, z component'}); model.result.export('data1').set('location', 'regulargrid'); model.result.export('data1').set('regulargridx3', num2str(nx)); model.result.export('data1').set('regulargridy3', num2str(ny)); model.result.export('data1').set('regulargridz3', num2str(nz)); model.result.dataset('dset1').selection.geom('geom1', 3); %pemilihan ROI (selection) model.result.dataset('dset1').selection.set([6 9]); %pemilihan ROI (selection) if (k==1) %matriks sensitifitas masing2 koil hanya diambil sekali saat kosong (berisi udara saja) model.result.export('data1').set('solnum', {'114'}); model.result.export('data1').set('filename', strcat(DIR, FIL,'_medan_port_',num2str(j),'.txt')); model.result.export('data1').run; if (j==4) nj=nj-1; %setelah matriks sensitifitas semua koil diperoleh, iterasi j berkurang 1 (cukup sampai koil ke nj-1) end end if (j~=4) model.result.numerical('gev1').set('descr', ' Coil voltage'); model.result.numerical('gev1').set('dataseries', 'maximum'); model.result.table('tbl1').comments('Global Evaluation 1 (mf.VCoil_2)'); model.result.numerical('gev1').set('expr', strcat('mf.VCoil_',num2str(j+1))); model.result.numerical('gev1').set('table', 'tbl1'); model.result.numerical('gev1').setResult; for i=(j+2):4 model.result.numerical('gev1').set('expr', strcat('mf.VCoil_',num2str(i))); model.result.numerical('gev1').set('table', 'tbl1'); model.result.numerical('gev1').appendResult; end if(k==1) model.result.export('tbl1').set('filename', strcat(DIR, FIL, '_konduktivitas_udara_port_', num2str(j),'.txt')); elseif(k==2) model.result.export('tbl1').set('filename', strcat(DIR, FIL, '_konduktivitas_air_port_', num2str(j),'.txt')); elseif(k==3) model.result.export('tbl1').set('filename', strcat(DIR, FIL, '_konduktivitas_mat70_port_', num2str(j),'.txt')); end model.result.export('tbl1').run; end end if (k==1) model.result.export('data1').set('solnum', {'1'}); model.result.export('data1').set('filename', strcat(DIR, FIL, '_crop.txt')); model.result.export('data1').run; end end out = model;