문제의 수렴 내역을 모니터링하고 있습니다. 기록 출력은 다음과 같습니다.
Time = 24
Calculate volume forces from actuator disk
Total thrust = -8.46832
Total torque = 1.03471
ADisk volume = 0.0632799
smoothSolver: Solving for Ux, Initial residual = 0.000447755, Final residual = 2.68745e-05, No Iterations 2
smoothSolver: Solving for Uy, Initial residual = 0.0107909, Final residual = 0.000812227, No Iterations 2
smoothSolver: Solving for Uz, Initial residual = 0.0103399, Final residual = 0.000786661, No Iterations 2
GAMG: Solving for p, Initial residual = 0.123954, Final residual = 0.00958268, No Iterations 6
time step continuity errors : sum local = 7.42808e-05, global = -4.25546e-05, cumulative = 0.000413527
smoothSolver: Solving for epsilon, Initial residual = 0.00197379, Final residual = 0.000172248, No Iterations 1
smoothSolver: Solving for k, Initial residual = 0.000510499, Final residual = 2.78594e-05, No Iterations 2
ExecutionTime = 124.63 s ClockTime = 125 s
Time = 25
Calculate volume forces from actuator disk
Total thrust = -8.49093
Total torque = 1.03723
ADisk volume = 0.0632799
smoothSolver: Solving for Ux, Initial residual = 0.000409002, Final residual = 2.59552e-05, No Iterations 2
smoothSolver: Solving for Uy, Initial residual = 0.0103191, Final residual = 0.00077024, No Iterations 2
smoothSolver: Solving for Uz, Initial residual = 0.00985658, Final residual = 0.000742227, No Iterations 2
GAMG: Solving for p, Initial residual = 0.0390756, Final residual = 0.00247253, No Iterations 7
time step continuity errors : sum local = 5.39785e-05, global = 3.40394e-05, cumulative = 0.000447566
smoothSolver: Solving for epsilon, Initial residual = 0.00182397, Final residual = 0.000157739, No Iterations 1
smoothSolver: Solving for k, Initial residual = 0.000465916, Final residual = 2.75864e-05, No Iterations 2
ExecutionTime = 129.45 s ClockTime = 130 s
Time = 26
Calculate volume forces from actuator disk
Total thrust = -8.51463
Total torque = 1.03953
ADisk volume = 0.0632799
내가 하고 싶은 것은 특정 시간에 값을 복사하는 것입니다. 예를 들어 이 경우 Time=26
값을 복사합니다.
Total thrust = -8.51463
Total torque = 1.03953
다음 형식을 사용하세요.
1.03953 -8.51463.
쉘 스크립트를 사용하여 이 작업을 수행하도록 도와줄 수 있는 사람이 있습니까?
답변1
쉘 스크립트를 요청했지만 다음을 awk
수행할 수 있기를 원합니다.
find_thrust_torque.awk:
/^Total thrust =/ {thrust = $4}
/^Total torque =/ {torque = $4}
/^Time =/ {if (found) exit; if ($3 == time) found=1}
END {print torque " " thrust}
테스트를 받아보세요:
$ awk -v time=25 -f find_thrust_torque.awk file1
1.03723 -8.49093
$ awk -v time=26 -f find_thrust_torque.awk file1
1.03953 -8.51463
답변2
여기서는 슬롯 범위와 다음 슬롯(또는 마지막 슬롯인 경우 eof)을 선택합니다. 이는 현재 슬롯에 토크/추력 수치가 없는 경우 다음 슬롯에 대한 데이터 확보를 방지하기 위해 수행됩니다. 따라서 오래된 데이터를 얻게 되며 오류 보고가 발생하지 않습니다. 이 H
명령은 패턴 공간을 예약된 공간에 추가합니다. g
예약된 영역이 검색되어 패턴 공간에 배치됩니다.
tslot=26; # input the time you want the thrust/torque data for
sed -ne '
/^Time = '"${tslot}"'$/,/^Time =/!d
/^Total thrust =/{H;d;}
/^Total torque =/{H;d;}
g;/\n.*\n/!d
/thrust.*torque/s/\(\n.*\)\(\n.*\)/\2\1/
s/\n[^=]*=//gp;q
' logfile
결과
1.03953 -8.51463