Skip to content

Commit 7e28f13

Browse files
committed
add caseid to statefile name by passing case metadata in to vic_cesm_run function
1 parent 95d6983 commit 7e28f13

File tree

5 files changed

+12
-11
lines changed

5 files changed

+12
-11
lines changed

vic/drivers/cesm/cpl_mct/lnd_comp_mct.F90

+1-1
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ SUBROUTINE lnd_run_mct(EClock, cdata, x2l, l2x, cdata_s, x2s, s2x)
381381
CALL lnd_import_mct(x2l)
382382

383383
!--- run vic
384-
errno = vic_cesm_run(vclock)
384+
errno = vic_cesm_run(vclock, cmeta)
385385
IF (errno /= 0) THEN
386386
CALL shr_sys_abort(subname//' ERROR: vic_cesm_run returned a errno /= 0')
387387
ENDIF

vic/drivers/cesm/include/vic_driver_cesm.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ int vic_cesm_init_mpi(int MPI_COMM_VIC_F);
180180
int vic_cesm_init(vic_clock *vclock, case_metadata *cmeta);
181181
int vic_cesm_final(void);
182182
void vic_cesm_finalize(void);
183-
int vic_cesm_run(vic_clock *vclock);
183+
int vic_cesm_run(vic_clock *vclock, case_metadata *cmeta);
184184
void vic_force(void);
185185
void vic_cesm_put_data(void);
186186
void vic_cesm_run_model(void);

vic/drivers/cesm/src/cesm_interface_c.c

+7-2
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,17 @@ vic_cesm_init(vic_clock *vclock,
106106
timer_stop(&(global_timers[TIMER_VIC_INIT]));
107107
// stop vic all timer
108108
timer_stop(&(global_timers[TIMER_VIC_ALL]));
109-
110109
return EXIT_SUCCESS;
111110
}
112111

113112
/******************************************************************************
114113
* @brief Run function for CESM driver
115114
*****************************************************************************/
116115
int
117-
vic_cesm_run(vic_clock *vclock)
116+
vic_cesm_run(vic_clock *vclock,
117+
case_metadata *cmeta)
118118
{
119+
extern filenames_struct filenames;
119120
char state_filename[MAXSTRING];
120121

121122
// continue vic all timer
@@ -140,6 +141,10 @@ vic_cesm_run(vic_clock *vclock)
140141

141142
// if save:
142143
if (vclock->state_flag) {
144+
// assign case name to state file name
145+
strncpy(filenames.statefile, trim(cmeta->caseid),
146+
sizeof(filenames.statefile));
147+
// write state file
143148
vic_store(&dmy_current, state_filename);
144149
write_rpointer_file(state_filename);
145150
}

vic/drivers/cesm/src/cesm_interface_f.F90

+2-1
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,12 @@ END FUNCTION vic_cesm_init
7777
!> @brief Run Interface
7878
!--------------------------------------------------------------------------
7979
INTERFACE
80-
INTEGER(C_INT) FUNCTION vic_cesm_run(vclock) BIND(C, name='vic_cesm_run')
80+
INTEGER(C_INT) FUNCTION vic_cesm_run(vclock, cmeta) BIND(C, name='vic_cesm_run')
8181
USE, INTRINSIC :: ISO_C_BINDING
8282
USE vic_cesm_def_mod
8383
IMPLICIT NONE
8484
TYPE(vic_clock), INTENT(in) :: vclock
85+
TYPE(case_metadata), INTENT(in) :: cmeta
8586
END FUNCTION vic_cesm_run
8687
END INTERFACE
8788

vic/drivers/shared_image/src/vic_store.c

+1-6
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,12 @@
2525
*****************************************************************************/
2626

2727
#include <vic_driver_shared_image.h>
28-
#include <vic_driver_cesm.h>
2928

3029
/******************************************************************************
3130
* @brief Save model state.
3231
*****************************************************************************/
3332
void
3433
vic_store(dmy_struct *dmy_current,
35-
case_metadata *cmeta,
3634
char *filename)
3735
{
3836
extern filenames_struct filenames;
@@ -76,20 +74,17 @@ vic_store(dmy_struct *dmy_current,
7674
end_time_num = time_num + offset;
7775

7876
// allocate dmy struct for end of current time step
79-
// end_time_date = calloc(1, sizeof(*dmy_struct));
8077
num2date(global_param.time_origin_num, end_time_num, 0.,
8178
global_param.calendar, global_param.time_units,
8279
&end_time_date);
8380

84-
8581
// only open and initialize the netcdf file on the first thread
8682
if (mpi_rank == VIC_MPI_ROOT) {
8783
// create netcdf file for storing model state
8884
sprintf(filename, "%s.%04i%02i%02i_%05u.nc",
89-
cmeta->caseid, end_time_date.year,
85+
filenames.statefile, end_time_date.year,
9086
end_time_date.month, end_time_date.day,
9187
end_time_date.dayseconds);
92-
9388
initialize_state_file(filename, &nc_state_file, dmy_current);
9489

9590
debug("writing state file: %s", filename);

0 commit comments

Comments
 (0)