|
Hi everybody,
I have a "parent" text file called reference, which is:
VERSION 3.82
CALCULATION 3
OPTIONS 0
PROJNAME
DATE
ENGINEER
NOTES ""
PASSWORD
MSTART CONSTANTS
RHO 1.225
RHOW 1027
VISCOS .0000182
GRAVITY 9.81
MEND
MSTART WINDND
SPMODEL 7
NLAT 31
NVER 45
LATDIM 150
VERDIM 220
LONGLS 340.2
LATLS 0
VERTLS 0
XLV 113.4
YLV 0
ZLV 0
XLW 27.72
YLW 0
ZLW 0
LAMBDA1 0
CohScale 12
COHDEC 3
SCALE 33.6
GAMMA 3.9
YDIML 0
N2 32
YDIMS 0
K1MIN 3
LENGTH 1830
STEP .2233888
UBAR 3
SEED 12
OUTFILE None
DIAM 0
HUBHT 0
TURBHTTYPE 0
TURBBOTTOM 0
GUSTAVT 0
GUSTSPEED 0
TOLERANCE 0
DLONGMIN 0
DLONGMAX 0
Z0MIN 0
Z0MAX 0
MAXITER 14
MAXSEED 100
NFILES 1
UseWindShear 0
WVMODEL 0
MATCHFILE ''
SPACING 0
SAMPLEFREQ 0
MEANSPEED 0
ILAT 0
IVERT 0
GUSTMETHOD 0
DLONG 0
ILAT 0
IVERT 0
LONGGUST 0
LATGUST 0
VERTGUST 0
iLONGGUST 0
iLATGUST 0
iVERTGUST 0
PEAKINESS 0
MAXFRAN 0
MEND
0CONSTANTS
0WINDND
The idea is to generate a set similar files, only changing 4 determined lines of the above file (LENGTH,STEP,UBAR,SEED).
Currently I am using this code:
clc
clear all
close all
V = [4 6 8 10 12 14 16 18 20 22 24 26 28 29];
for j = 1:6
f1 = ['D:\01_department\DLC1-2']
if exist(f1,'dir') ~= 7
mkdir(f1);
end
fname = [f1 '\' 's0' num2str(j)];
if exist(fname,'dir') ~= 7
mkdir(fname);
end
for i = 1:length(V),
filename = [fname '\' num2str(V(i)) '.$PJ'];
fid = fopen(filename,'w');
fprintf(fid, 'VERSION 3.82\r\n')
fprintf(fid, 'CALCULATION 3\r\n')
fprintf(fid, 'OPTIONS 0\r\n')
fprintf(fid, 'PROJECTNAME\t\r\n')
fprintf(fid, 'DATE\t\r\n')
fprintf(fid, 'ENGINEER\t\r\n')
fprintf(fid, 'NOTES\t""\r\n')
fprintf(fid, 'PASSWORD\t\r\n')
fprintf(fid, 'MSTART CONSTANTS\r\n')
fprintf(fid, 'RHO 1.225\r\n')
fprintf(fid, 'RHOW 1027\r\n')
fprintf(fid, 'VISCOS 0.0000182\r\n')
fprintf(fid, 'GRAVITY 9.81\r\n')
fprintf(fid, 'MEND\r\n')
fprintf(fid, '\r\n')
fprintf(fid, 'MSTART WINDND\r\n')
fprintf(fid, 'SPMODEL 7\r\n')
fprintf(fid, 'NLAT 31\r\n')
fprintf(fid, 'NVER 45\r\n')
fprintf(fid, 'LATDIM 150\r\n')
fprintf(fid, 'VERDIM 220\r\n')
fprintf(fid, 'LONGLS 340.2\r\n')
fprintf(fid, 'LATLS 0\r\n')
fprintf(fid, 'VERTLS 0\r\n')
fprintf(fid, 'XLV 113.4\r\n')
fprintf(fid, 'YLV 0\r\n')
fprintf(fid, 'ZLV 0\r\n')
fprintf(fid, 'XLW 27.72\r\n')
fprintf(fid, 'YLW 0\r\n')
fprintf(fid, 'ZLW 0\r\n')
fprintf(fid, 'LAMBDA1 0\r\n')
fprintf(fid, 'CohScale 12\r\n')
fprintf(fid, 'COHDEC 3\r\n')
fprintf(fid, 'SCALE 33.6\r\n')
fprintf(fid, 'GAMMA 3.9\r\n')
fprintf(fid, 'YDIML 0\r\n')
fprintf(fid, 'N2 32\r\n')
fprintf(fid, 'YDIMS 0\r\n')
fprintf(fid, 'K1MIN 3\r\n')
fprintf(fid, 'LENGTH %g\r\n', V(i)*610)
fprintf(fid, 'STEP %g\r\n', V(i)/13.4295)
fprintf(fid, 'UBAR %g\r\n', V(i))
fprintf(fid, 'SEED %i\r\n', randi(999,1))
fprintf(fid, 'OUTFILE None\r\n')
fprintf(fid, 'DIAM 0\r\n')
fprintf(fid, 'HUBHT 0\r\n')
fprintf(fid, 'TURBHTTYPE 0\r\n')
fprintf(fid, 'TURBBOTTOM 0\r\n')
fprintf(fid, 'GUSTAVT 0\r\n')
fprintf(fid, 'GUSTSPEED 0\r\n')
fprintf(fid, 'TOLERANCE 0\r\n')
fprintf(fid, 'DLONGMIN 0\r\n')
fprintf(fid, 'DLONGMAX 0\r\n')
fprintf(fid, 'Z0MIN 0\r\n')
fprintf(fid, 'Z0MAX 0\r\n')
fprintf(fid, 'MAXITER 14\r\n')
fprintf(fid, 'MAXSEED 100\r\n')
fprintf(fid, 'NFILES 1\r\n')
fprintf(fid, 'UseWindShear 0\r\n')
fprintf(fid, 'WVMODEL 0\r\n')
fprintf(fid, 'MATCHFILE %c\r\n', '')
fprintf(fid, 'SPACING 0\r\n')
fprintf(fid, 'SAMPLEFREQ 0\r\n')
fprintf(fid, 'MEANSPEED 0\r\n')
fprintf(fid, 'ILAT 0\r\n')
fprintf(fid, 'IVERT 0\r\n')
fprintf(fid, 'GUSTMETHOD 0\r\n')
fprintf(fid, 'DLONG 0\r\n')
fprintf(fid, 'ILAT 0\r\n')
fprintf(fid, 'IVERT 0\r\n')
fprintf(fid, 'LONGGUST 0\r\n')
fprintf(fid, 'LATGUST 0\r\n')
fprintf(fid, 'VERTGUST 0\r\n')
fprintf(fid, 'iLONGGUST 0\r\n')
fprintf(fid, 'iLATGUST 0\r\n')
fprintf(fid, 'iVERTGUST 0\r\n')
fprintf(fid, 'PEAKINESS 0\r\n')
fprintf(fid, 'MAXFRAN 0\r\n')
fprintf(fid, ' MEND\r\n')
fprintf(fid, '\r\n')
fprintf(fid, '0CONSTANTS\r\n')
fprintf(fid, '0WINDND\r\n')
fclose(fid)
end
end
But this way, the code spends most of the time in writing the output. I would like more doing the same only reading the reference file (with fopen() or other commands) and the changing(printing) only
fprintf(fid, 'LENGTH %g\r\n', V(i)*610)
fprintf(fid, 'STEP %g\r\n', V(i)/13.4295)
fprintf(fid, 'UBAR %g\r\n', V(i))
fprintf(fid, 'SEED %i\r\n', randi(999,1))
within the new files.
Does anybody have an idea how to achieve this result? If possible I also would like to vectorize instead of using for loops.
I thank you all in advance.
Kindest regards,
Francesco
|