Find the desirable string and read data below them
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Miguel Cardoso
am 23 Mär. 2019
Kommentiert: Miguel Cardoso
am 23 Mär. 2019
I just started working in my master thesis with SPR-KKR and I need to get the XC-coupling constants J_ij [eV]. I would like to create a script where I could get out each value of DR, J_ij [Ry] and J_ij [eV]. My main problem is that those strings repeat, they appear always above a new value. Below, I leave a small example how the output file is, although the full output file example is attached.
*******************************************************************************
<XCPLJIJ>
XC-coupling constants J_ij
*******************************************************************************
IQ = 1 IT = 1 JQ = 2 JT = 2
->Q = ( 0.289, 0.500, 0.403) ->Q = ( 0.577, 1.000, -0.403)
ITAUIJ ITAUJI N1 N2 N3 DRX DRY DRZ DR J_ij [Ry] J_ij [eV]
117 194 0 -1 0 0.289 -0.500 -0.806 0.992 0.001122 0.015261
IQ = 1 IT = 1 JQ = 2 JT = 2
->Q = ( 0.289, 0.500, 0.403) ->Q = ( 0.577, 1.000, -0.403)
ITAUIJ ITAUJI N1 N2 N3 DRX DRY DRZ DR J_ij [Ry] J_ij [eV]
101 210 -1 -1 0 -0.577 0.000 -0.806 0.992 0.001122 0.015261
IQ = 1 IT = 1 JQ = 2 JT = 2
->Q = ( 0.289, 0.500, 0.403) ->Q = ( 0.577, 1.000, -0.403)
ITAUIJ ITAUJI N1 N2 N3 DRX DRY DRZ DR J_ij [Ry] J_ij [eV]
121 190 0 0 0 0.289 0.500 -0.806 0.992 0.001122 0.015261
0 Kommentare
Akzeptierte Antwort
dpb
am 23 Mär. 2019
Bearbeitet: dpb
am 23 Mär. 2019
function data=readTAUIJ(file)
MAGIC_LINE_1='<INIT_MOD_TAUIJ_STAR>';
MAGIC_LINE_2='<XCPLJIJ>';
fid=fopen(file,'r');
% find number elements to read
while ~contains(fgetl(fid),MAGIC_LINE_1), end
N=cell2mat(textscan(fid,'number of TAU(I,J)''s to be calculated: %f','headerlines',2));
while ~contains(fgetl(fid),MAGIC_LINE_2), end
for i=1:4,fgetl(fid);end
data=cell(N,1);
for i=1:N
data(i)=textscan(fid,repmat('%f',1,11),'headerlines',3,'collectoutput',1);
end
fid=fclose(fid);
data=cell2mat(data);
end
4 Kommentare
dpb
am 23 Mär. 2019
Bearbeitet: dpb
am 23 Mär. 2019
No problem...it's entertainment and teaching...just remember the acknowledgement in the thesis... <VBG>
BTW: As "exercise for Student", look at reading the variable name header line before one of the data sections and then creating a table using those names instead of just the data array. Going forward with the thesis code work, that could be a much more maintainable approach.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!