Find the desirable string and read data below them
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Miguel Cardoso
il 23 Mar 2019
Commentato: Miguel Cardoso
il 23 Mar 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 Commenti
Risposta accettata
dpb
il 23 Mar 2019
Modificato: dpb
il 23 Mar 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 Commenti
dpb
il 23 Mar 2019
Modificato: dpb
il 23 Mar 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Data Import and Analysis in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!